node8のdockerイメージ を使用するCodeBuildプロジェクトを作成しました。このCodeBuildプロジェクトの目的は、単体テストを行うことです。 CodeCommitから入力アーティファクトを取ります。そしてbuildspec.ymlでテストコマンドを実行します。
これは私の(単純な)buildspecファイルです:
version: 0.2
phases:
install:
commands:
- echo "install phase started"
- npm install
- echo "install phase ended"
pre_build:
commands:
- echo "pre_build aka test phase started"
- echo "mocha unit test"
- npm test
- echo "mocha unit test ended"
build:
commands:
- echo "build phase started"
- echo "build complete"
ビルドはDOWNLOAD_SOURCEフェーズで次のように失敗します。
フェーズ-DOWNLOAD_SOURCE
開始時間2分前
終了時間2分前
Messageアクセスが拒否されました
ビルドログの唯一のログは次のとおりです
[コンテナ] 2018/01/12 11:30:22エージェントのpingを待っています
[コンテナ] 2018/01/12 11:30:22 DOWNLOAD_SOURCEを待機しています
前もって感謝します。
CodeBuildポリシーのスクリーンショット。
修正を見つけました。それは私の許可の問題でした。これを機能させるために追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:logs:eu-west-1:723698621383:log-group:/aws/codebuild/project",
"arn:aws:logs:eu-west-1:723698621383:log-group:/aws/codebuild/project:*"
],
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-eu-west-1-*"
],
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:GetParameters"
],
"Resource": "arn:aws:ssm:eu-west-1:723698621383:parameter/CodeBuild/*"
}
]
}
同様のエラーが発生したため、他の人に役立つ場合に備えて修正を投稿します。私はCodePipelineを使用していて、2つの別々のビルドが行われていました。ビルド#1はそのビルドを完了し、その出力アーティファクトはビルド#2の入力アーティファクトになります。ビルド2は、DOWNLOAD_SOURCEフェーズで次のエラーで失敗していました。
AccessDenied: Access Denied status code: 403
問題は、ビルド#1のビルド仕様で、アーティファクトが定義されていないことでした。ビルド#1でアーティファクトファイル/フォルダーを呼び出した後、ビルド#2は問題なくソースをダウンロードできました。