2016-11-27 7 views
1

ロックを含むVSTSを使用してARMテンプレートを配備しています(私の場合、ストレージアカウントのロック関数アプリケーションの場合)タイプが「Microsoft.Storage/storageAccounts/providers/locks」の認証に失敗しました... "

{ 
    "parameters": { 
     "name": { 
      "type": "string" 
     }, 
     "storageName": { 
      "type": "string" 
     }, 
     "location": { 
      "type": "string" 
     } 
    }, 
    "resources": [ 
     { 
      "apiVersion": "2015-05-01-preview", 
      "type": "Microsoft.Storage/storageAccounts", 
      "name": "[parameters('storageName')]", 
      "location": "[parameters('location')]", 
      "properties": { 
       "accountType": "Standard_LRS" 
      }, 
      "resources": [ 
       { 
        "type": "Microsoft.Storage/storageAccounts/providers/locks", 
        "name": "[concat(parameters('storageName'), '/Microsoft.Authorization/', parameters('storageName'))]", 
        "apiVersion": "2015-01-01", 
        "dependsOn": [ 
         "[concat('Microsoft.Storage/storageAccounts/', parameters('storageName'))]" 
        ], 
        "properties": { 
         "level": "CannotDelete", 
         "notes": "One or more function apps were linked to this storage account. You can see all the function apps linked to the account under 'files' or 'shares'." 
        } 
       } 
      ] 
     },... 

これは、VSから、またはコマンドラインから資格情報を使用して配置するときに問題なく動作します。 VSTSのリリース定義から導入、展開がで失敗しかし :

Resource Microsoft.Resources/deployments 'myFunctionApp' failed with message '{ 
    "error": { 
    "code": "InvalidTemplateDeployment", 
    "message": "The template deployment failed with error: 'Authorization failed for template resource 'myFunctionAppStorage/Microsoft.Authorization/myFunctionAppStorage' of type 'Microsoft.Storage/storageAccounts/providers/locks'. The client '***VSTS service principal Id***' with object id '***VSTS service principal Id***' does not have permission to perform action 'Microsoft.Authorization/locks/write' at scope '/subscriptions/*** subscription ***/resourceGroups/*** resource group ***/providers/Microsoft.Storage/storageAccounts/myFunctionAppStorage/providers/Microsoft.Authorization/locks/myFunctionAppStorage'.'." 
    } 
} 

私はテンプレートからMicrosoft.Storage/storageAccounts/providers/locksセクションを削除すると、VSTSの展開が動作します。しかし、ストレージアカウントには削除を防ぐロックはありません。

+2

ロック機能を持つストレージアカウントを作成するだけで、機能アプリを使わずに同じエラーが表示される可能性があります。私は、関数の問題ではなく、純粋なARM/Storageの問題に取り組んでいることを明確にするために質問を言い換えることをお勧めします。他の質問については、できるだけVSTSから離れてください。質問がより分離されればするほど、それについての理由が簡単になります:) –

+0

問題を分類するのを手伝ってくれてありがとう@DavidEbbo。 –

+0

ロール「Owner」に追加する必要があった手作業で作成されたService Principalでロックを含めて手動で展開することができました。デフォルトでVSTSがサービスプリンシパルに割り当てている役割「Contributor」では機能しませんでした。そこで、私はVSTS SPから役割「Contributor」を削除し、役割「Owner」を割り当てました。これにより、VSTSでの展開も実現しました。それに基づいて、私の答えはVSTS SPで正確に行うことです。なぜなら、ロックの設定には明らかに 'Owner'の権利が必要だからです。 –

答えて

2

Contributorロール(VSTSがリソースグループサブスクリプションに接続されたAADにサービスプリンシパルを作成するときに割り当てられる)は、ロックを配置するのには不十分です。 Ownerを割り当て、VSTS展開プロセスでロックを適用することができます。

関連する問題