[英]AWS codebuild fails cant download source when initiated from codepipeline
我有一個AWS codebuild作業,當我以root用戶身份手動啟動時,它可以正常工作。
我有一個codepipe行,當codecommit合並到master時,它應該啟動構建作業。 它會觸發作業和構建開始,但在嘗試下載源時失敗。
我已經將完整的S3 / codebuild / codecommit策略附加到管道,但它仍然會拒絕訪問。
我錯過了哪些權限?
當您已經擁有CodeBuild項目並將其集成到CodePipeline項目時,通常會發生這種情況。 Codebuild現在不從CodeCommit / Github repo下載源代碼。 相反,它將嘗試下載在S3中的codepipeline存儲桶中創建的源工件。 因此,您需要提供CodeBuild角色的權限才能訪問S3中的codepipline存儲桶。
您可以通過修改Codebuild角色的附加策略 (或附加新策略)來執行此操作,該策略可以訪問以下操作
s3:ListObjects
s3:GetObject
s3:ListBucket
為您的Codepipeline桶及其對象
"arn:aws:s3:::codepipeline-bucket",
"arn:aws:s3:::codepipeline-bucket/*"
或者您可以選擇添加此存儲桶及其對象的所有操作。 您可以發布更改,它可以工作。 Lmk如果沒有。
原因是CodeBuild服務角色需要訪問CodePipeline S3存儲桶的權限。 要修復它,您可以附加內聯策略或修改現有策略以允許這些操作訪問CodePipeline S3存儲桶中的對象(以指定策略的資源)
s3:GetObject
s3:GetObjectVersion
s3:PutObject
這是json中的策略,記得將S3-BUCKET-NAME替換為您的實際codepipeline s3存儲桶名稱。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::S3-BUCKET-NAME/*"
}
]
}
要查找S3存儲桶名稱,您可以在AWS控制台上執行以下操作以跟蹤錯誤來源:
CLIENT_ERROR: AccessDenied: Access Denied status code: 403, request id:
requestId, host id: hostId for primary source and source version
arn:aws:s3:::S3-BUCKET-NAME/path
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.