2016-08-26 19 views
1

リソースマネージャテンプレートを使用して、AzureでストレージアカウントのAPI接続を自動作成しようとしています。ARMテンプレートのAzureストレージアカウントキーを動的に取得

ARMのlistKeysメソッドを使用して、ストレージアカウントのアクセスキーを取得しています。私はこのquestionを通過し、それは私のために働いていません。 テンプレートのoutputsセクションでメソッドを使用すると、正常に動作し、アクセスキーが正常に取得され、表示されます。

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

Iは、(以下に示すように)接続リソースの内部に同じ機能を使用しようとすると、しかし、テンプレートは、エラーなしで実行します。しかし、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

2つのこと:

  1. API接続がストレージアカウント
  2. への依存性は、「アクセスキー」のキーを大文字にしていることを確認し(テンプレートにいくつかのものは、大文字と小文字が区別されます)
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

私は数ヶ月前に同じような経験を持っていたし、私のコード内で直接、接続文字列を使用して、その後の接続に接続文字列を渡すことによってそれを解決しました。あなたはどんな名前か、あなたのコード内で使用し、可変機能をvariables('storageConfigs')[0].nameを置き換えることができ、上記のように見える理由ですので、私は、入力として、ストレージconfigオブジェクトを使用

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

:値はこのように見えました。上記のように見えるかもしれませんstoragename

0

依存関係は実際には、api接続の展開が開始される前に既に作成されているため、必須です。

OPテンプレートコードの問題は、accesskeyの使用ですが、Azure Blob API接続リソースの正しいパラメータ名はaccessKeyです(大文字のKに注意してください)。APIの接続リソースの必要なパラメータのドキュメントの欠如と戦う人のため

- このAPIコールを開始:<API TYPE>は、例えばチェックするために、接続のAPIタイプでなければなりません

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

azureblob,azurequeuesまたはdocumentdbである。

予想されるすべてのパラメータの説明が、そのリソースのその他の記述的情報とともに表示されます。

関連する問題