web-dev-qa-db-ja.com

コードパイプライン:アクセス許可が不十分Amazon S3オブジェクトキーでアーティファクトにアクセスできない

こんにちは私は次の構成でコードパイプラインプロジェクトを作成しました:

  • Bitbucketから取得したS3のソースコード。
  • CodeBuildでビルドし、Dockerイメージを生成して、Amazon ECSリポジトリに保存します。
  • デプロイプロバイダーのAmazon ECS。

何らかの理由で展開中に次のエラーが発生するまで、展開を試行するまですべてのプロセスが正常に機能します。

アクセス許可が不十分Amazon S3アーティファクトバケット「codepipeline-us-west-2-913731893217」にあるAmazon S3オブジェクトキー「FailedScanSubscriber/MyAppBuild/Wmu5kFy」でアーティファクトにアクセスできません。提供された役割には十分な権限がありません。

構築フェーズでは、ECSリポジトリに新しいDockerイメージを作成することもできます。

私はすべてを試し、IAMのロールとポリシーを変更し、S3へのフルアクセスを追加しました。S3バケットをパブリックとして設定しましたが、何も機能しませんでした。私には選択肢がないので、誰かが私を助けてくれて素晴らしいと思うなら、私はAWSでの経験が乏しいので、どんな助けでもありがたいです。

11
Abraao Carmo

解決策を見つけることができました。本当の問題は、デプロイメントプロバイダーがAmazon ECSとして設定されている場合、タスク定義の名前とイメージURIを示す出力アーティファクトを生成する必要があることです。次に例を示します。

post_build:
    commands:
      - printf '[{"name":"your.task.definition.name","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json

artifacts:
    files: imagedefinitions.json
13
Abraao Carmo

これは、AWS CodeDeployがAWS CodeBuildからビルドアーティファクトを見つけられない場合に発生します。 S3バケットに移動してパスを確認すると、実際にはアーティファクトオブジェクトが存在しないことがわかります。

エラーは許可の問題について述べていますが。これは、アーティファクトオブジェクトがないために発生する可能性があります。

解決策:buildspec.ymlartifactsセクションを適切に構成し、入力および出力アーティファクト名を適切に指定してAWS Codepipelineステージを構成します。

artifacts:
  files:
    - '**/*'
  base-directory: base_dir
  name: build-artifact-name
  discard-paths: no

この記事を参照してください-https://medium.com/@shanikae/insufficient-permissions-unable-to-access-the-artifact -with-Amazon-s3-247f27e6cdc

0