我在将 CodeBuild 项目的源设置为 S3 bucket 时遇到问题。
我正在通过 AWS CDK 制作跨区域和账户 CI/CD 管道,
并希望在管道中的 CodeBuild 项目中使用单个源存储桶。
- 具有构建文件的S3 存储桶位于REGION_A / ACCOUNT_A
- CodeBuild项目位于REGION_B / ACCOUNT_B
(CDK 2.0 版/打字稿)
我通过bucket属性得到了如下的bucket,
const bucket_X = s3.Bucket.fromBucketAttributes(
this,
"ImportedBucketByAttr",
{
bucketArn: "arn:aws:s3:::BUCKET_NAME",
region: REGION_A,
}
)
并将其用于 CodeBuild 项目源属性。
const project_X = new codebuild.Project(this, PROJECT_ID, {
projectName: PROJECT_NAME,
source: Source.s3({
bucket: bucket_X,
path: "",
}),
environment: {
buildImage: LinuxBuildImage.STANDARD_5_0,
},
timeout: Duration.minutes(30),
queuedTimeout: Duration.minutes(240),
role: ROLE_X,
})
但 codebuild 项目返回存储桶区域错误。
[Container] 2021/12/26 14:42:43 Waiting for agent ping
[Container] 2021/12/26 14:42:44 Waiting for DOWNLOAD_SOURCE
BucketRegionError: incorrect region, the bucket is not in 'REGION_B' region at endpoint ''
status code: 301, request id: , host id: for primary source
如果我没记错的话,第一次,“fromBucketAttributes”的道具region: REGION_A
是有效的。(codebuild 项目可以从不同区域获取源代码)
所以我转移到其他部分并更新了多个东西而不关心这个。
但是在堆栈上进行了一些更新之后......它开始返回那个错误
我什至删除了堆栈并重新部署了它,但没有运气。
你能给我一点提示吗?
如何使用其他地区的存储桶作为 CodeBuild 的来源?
(或者让我知道我的记忆是否错误...... CodeBuild 不能使用不同区域的存储桶作为源吗??)
- 在我看来,角色不是问题。我可以通过代码构建源信息链接看到 ACCOUNT_B 中的存储桶,因为我设置了存储桶策略和角色。如您所知.. 如果角色是问题,控制台将显示不同的消息。
提前致谢。
新年快乐。