0

我在将 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 中的存储桶,因为我设置了存储桶策略和角色。如您所知.. 如果角色是问题,控制台将显示不同的消息。

提前致谢。

新年快乐。

4

0 回答 0