次の方法で共有


マネージド ID 認証を使用して Azure Container Registry からイメージをプルできない

この記事では、マネージド ID を使用して Azure Container Registry (ACR) から Azure Container Instances (ACI) にデプロイするときのイメージ プル エラーのトラブルシューティング方法について説明します。

現象

マネージド ID を使用してプライベート エンドポイントの背後で実行される Azure コンテナー レジストリからコンテナー グループをデプロイし、イメージをプルしようとすると、イメージプルは失敗します。

原因

イメージプルエラーの原因を次に示します。

  • ACI 側から:

    • コンテナー グループのデプロイ時に使用される ACI API バージョンに基づいて、 コンテナー グループ ARM テンプレートで提供される資格情報の形式 が無効である可能性があります。
    • コンテナー グループでマネージド ID を使用すると、ACI の制限に違反する可能性があります。
    • ARM テンプレート内のコンテナー グループ定義の形式が正しくない可能性があります。
  • ACR 側から:

    • 以前のバージョンの API を使用している可能性があります。
    • コンテナー レジストリにプライベート DNS ゾーンを使用している可能性があります。

ACI 側からのトラブルシューティング

  1. 2021-07-01 より前の ACI API バージョンを使用しているかどうかを確認します。

    その場合は、"InvalidImageRegistryCredentialType" エラーが表示されることがあります。

    $ az deployment group create -g <resourcegroupname> --template-file containergroup_trusted.json 
    Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
        "code": "InvalidImageRegistryCredentialType", 
        "message": "Identity in 'imageRegistryCredentials' of container group 'acrtestcontainergroup' is not supported." 
      } 
    } 
    

    この問題を解決するには、ACI API バージョン 2021-07-01 以降を使用します。

  2. ACI の制限に違反しているかどうかを確認します。

    制限事項は次のとおりです。

    • 仮想ネットワークによって挿入されたコンテナー グループ。
    • Windows Server 2016 コンテナー グループ。
    • ACR のプライベート DNS ゾーンを解決しようとしています。

    この問題を解決するには、これらの制限に違反していないことを確認します。

  3. コンテナー グループ定義の形式が正しいかどうかを確認します。

    そうでない場合は、次のエラーが表示されることがあります。

    • エラー コード "AmbiguousImageResitryCredentialType":

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "AmbiguousImageResitryCredentialType", 
          "message": "The registry credential type in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' cannot be detected. Please set exactly one of username or identity" 
      } 
      } 
      
    • エラー コード "InvalidImageRegistryIdentity":

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "InvalidImageRegistryIdentity", 
          "message": "The identity in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' not found in container group identity list." 
      } 
      } 
      
    • エラー コード "InvalidRequestContent":

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "InvalidRequestContent", 
          "message": "The request content was invalid and could not be deserialized: 'Required property 'server' not found in JSON. Path 'properties.imageRegistryCredentials[0]', line 1, position 586.'." 
      } 
      }
      

    この問題を解決するには、ARM テンプレートで次のプロパティを指定する必要があります。

ACR 側からのトラブルシューティング

  1. マネージド ID に AcrPull ロールが割り当てられているかどうかを確認します。

    そうでない場合は、"InaccessibleImage" エラーが表示されることがあります。

    Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
        "code": "InaccessibleImage", 
        "message": "The image 'myacr.azurecr.io/pythonworker:v1' in container group 'acrtestcontainergroup' is not accessible. Please check the image and registry credential." 
      } 
    } 
    

    この問題を解決するには、マネージド ID に AcrPull ロールを付与します。 詳細については、「 他の Azure リソースにアクセスするための ID アクセス許可を付与する」を参照してください。

  2. ACR で 信頼されたサービス 有効になっているかどうかを確認します。 有効でない場合は、信頼できるサービスを有効にします。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。