2016-08-26 2 views
1

리소스 관리자 템플릿을 사용하여 Azure에서 스토리지 계정에 대한 API 연결을 자동화하려고합니다.ARM 템플릿의 azure storage account 키를 동적으로 검색합니다.

ARM에서 listKeys 메서드를 사용하여 저장소 계정의 액세스 키를 검색하고 있습니다. 나는이 question을 통해 갔고 그것은 나를 위해 작동하지 않습니다. 템플릿의 outputs 섹션에이 메서드를 사용하면 올바르게 작동하고 액세스 키를 성공적으로 검색하고 표시합니다. (아래와 같이) I가 연결 자원 안에 동일한 기능을 사용하려고 할 때

"outputs": { "listKeysOutput": { "type": "string", "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storagename')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]" } }

그러나, 상기 템플릿은 오류없이 실행한다. 그러나 Azure 포털에서 API 연결에 액세스하면 '매개 변수가 없습니다.'라는 메시지가 표시됩니다.

"parameterValues": { "accesskey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storagename')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]", "accountName": "[parameters('storagename')]" }

enter image description here

enter image description here

내가 여기서 뭔가를 놓치고 있습니까? 또는 listKeys의 출력이 'accesskey'속성에 의해 허용되지 않습니다? 문제의 원인이 될 수

+0

이 나머지 API (https://msdn.microsoft.com/en-us/library/mt163589.aspx)를 사용해보실 수 있습니까? –

답변

0

두 가지 :

  1. 이 API 연결을 확인는 "액세스 키"의 키를 (템플릿에서 몇 가지 경우를 구분)
  2. 대문자로 저장 계정
  3. 에 종속
1

@Naren, 난 당신이

당신의 저장 키를 얻기 위해이 API 함수를 사용하는 것이 좋습니다 POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/listKeys?api-version={api-version}

템플릿과 동일한 결과를 얻을 수 있습니다. 그냥 참조 용

{ 
    “keys”: [ 
    { 
     “keyName”: “key1”, 
     “value”: "key1Value”, 
     “permissions”: “FULL” 
    }, 
    { 
     “keyName”: “key2”, 
     “value”: "key2Value”, 
     “permissions”: “FULL” 
    }, 
    ] 
} 

는 : https://msdn.microsoft.com/en-us/library/mt163589.aspx

+0

은 해결책으로 받아 들여야합니다. –

2

나는 몇 달 전에 비슷한 경험을했다, 내 코드에서 직접 연결 문자열을 사용하여 다음 연결로 연결 문자열을 전달하여 그것을 해결. 값은이처럼 보였다 :

[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageConfigs')[0].name,';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts/', variables('storageConfigs')[0].name), variables('defaultStorageApiVersion')).key1)] 

내가 입력으로 저장 구성 오브젝트를 사용, 그래서 당신은 당신이 당신의 코드에서 사용하는 어떤 이름이나 변수 기능을 variables('storageConfigs')[0].name를 대체 할 수있는 위처럼 보이는 이유입니다. 위와 같은 모양 일 수도 있습니다 storagename

0

실제로는 api 연결 배포가 시작되기 전에 저장소 계정이 이미 만들어 지도록 종속성이 필요합니다.

OP 템플릿 코드의 문제점은 accesskey입니다. 올바른 매개 변수 이름은 Azure Blob API 연결 리소스에 대해 accessKey (대문자 K에 유의하십시오)입니다.

https://management.azure.com/subscriptions/<YOUR SUBSCRIPTION ID>/providers/Microsoft.Web/locations/<YOUR LOCATION>/managedApis/<API TYPE>?api-version=2016-06-01

<API TYPE> 예를 들어 확인하는 연결의 API 유형이어야한다 : -

API 연결 자원을 필요한 매개 변수에 대한 문서의 부족으로 어려움을 겪고있는 사람들을위한

이 API 호출을 시작 azureblob, azurequeues 또는 documentdb.

모든 예상 매개 변수에 대한 설명이 해당 자원에 대한 다른 설명 정보와 함께 반환됩니다.

관련 문제