如何通过Terraform配置对接GitHub Enterprise的CodePipeline并解决区域报错?
报错原因
- 区域支持限制:AWS CodePipeline 的 GitHub Enterprise Server 源接入能力未在亚太南部(孟买,
AP_SOUTH_1)区域开放,你当前选择的部署区域不在该功能的支持范围内,因此抛出操作类型不可用的异常。 - 配置取值不匹配:你在Terraform中填写的provider值
GITHUB_ENTERPRISE为过时写法,当前AWS Provider要求GHE源的provider取值为GitHubEnterpriseServer,不正确的取值会被后端识别为无效的GITHUB_ENTERPRISESERVER v2类型,进一步放大报错。
解决方案
- 切换部署区域:将CodePipeline及关联资源迁移到支持GitHub Enterprise Server源的区域部署,目前支持该功能的主流区域包括美东1(us-east-1)、美东2(us-east-2)、欧洲1(eu-west-1)、亚太东北1(ap-northeast-1)、亚太东南1(ap-southeast-1)、亚太东南2(ap-southeast-2)等。
- 修正Terraform配置:切换到支持区域后,同步补充完整的源阶段配置,参考示例如下:
stage { name = "Source" action { name = "Source" category = "Source" owner = "ThirdParty" provider = "GitHubEnterpriseServer" version = "1" configuration = { Owner = "<GHE组织/用户名>" Repo = "<代码仓库名称>" Branch = "<触发流水线的分支名>" GitHubEnterpriseServerConnectionArn = "<你提前在CodeStar Connections中创建的GHE连接ARN>" } output_artifacts = ["source_artifact"] } }
- 区域受限场景替代方案:如果必须在
AP_SOUTH_1区域部署流水线,可配置GHE仓库的自动同步规则,将代码实时同步到同区域的CodeCommit仓库,再将CodeCommit设置为流水线的源阶段,即可规避区域支持限制。
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

