使用Terraform创建CodePipeline时遇EU_WEST_3区域源操作不可用错误
解决AWS CodePipeline在eu-west-3区域的源操作不可用问题
错误原因
你遇到的InvalidActionDeclarationException是因为AWS CodePipeline的GitHubEnterpriseServer v2源操作在eu-west-3(巴黎)区域未提供支持,该区域目前不兼容这个特定的操作类型版本。
解决方案
方案1:改用公共GitHub源操作(若仓库为公共GitHub而非自托管GitHub Enterprise Server)
如果代码托管在公共GitHub,直接修改Source阶段的action配置,将provider改为GitHub,并确保参数正确:
stage { name = "Source" action { name = "Source" category = "Source" owner = "AWS" provider = "GitHub" # 修改为公共GitHub的provider version = "2" output_artifacts = ["SourceArtifact"] namespace = "SourceVariables" configuration = { ConnectionArn = "你的连接ARN" # 确保该连接是针对公共GitHub创建的 FullRepositoryId = "用户名/仓库名" # 格式必须为「用户名/仓库名」,例如 "octocat/hello-world" BranchName = "main" OutputArtifactFormat = "CODE_ZIP" } } }
方案2:使用GitHubEnterpriseServer v1版本(若为自托管GitHub Enterprise Server)
如果是自托管的GitHub Enterprise Server,尝试将version改为1,同时调整配置字段(v1版本使用OAuth Token而非Connection ARN):
stage { name = "Source" action { name = "Source" category = "Source" owner = "AWS" provider = "GitHubEnterpriseServer" version = "1" # 切换到v1版本 output_artifacts = ["SourceArtifact"] namespace = "SourceVariables" configuration = { Owner = "你的GitHub Enterprise组织/用户名" Repo = "仓库名" Branch = "main" OAuthToken = "你的GitHub Enterprise OAuth Token" OutputArtifactFormat = "CODE_ZIP" } } }
方案3:切换到支持GitHubEnterpriseServer v2的区域
如果必须使用GitHubEnterpriseServer v2版本,可将CodePipeline部署到支持该操作的区域,比如eu-west-1(爱尔兰)、us-east-1(弗吉尼亚北部)等AWS官方支持的区域。
额外注意事项
- 确保CodePipeline服务角色(
role_arn)拥有对应源操作的权限,比如访问连接、读取仓库内容的权限; - 若之前切换到
GitHubprovider时出错,检查:- Connection ARN对应的连接是否为公共GitHub类型(而非GitHub Enterprise Server);
FullRepositoryId的格式是否符合「用户名/仓库名」要求;- 连接是否已完成授权验证。
内容的提问来源于stack exchange,提问作者Mike D Hovhannisyan
相关产品推荐
相关产品推荐

