如何在CloudFormation Pipeline YAML模板中配置GitHub v2连接?
AWS CodePipeline GitHub v2 配置指南(解决v1配置报错问题)
原GitHub v1的CodePipeline源配置已无法使用,执行时会报以下错误:
CREATE_FAILED "Encountered unsupported property Configuration"
"ResourceStatusReason": "The following resource(s) failed to create: [Pipeline]."
这是因为GitHub升级到v2后,CodePipeline的GitHub源动作配置逻辑发生根本性变化,不再支持v1的OAuthToken方式,转而使用AWS CodeStar Connections进行授权。以下是完整替代配置方案:
核心变化点
- 不再使用GitHub个人访问令牌(Personal Access Token),改用AWS CodeStar Connections完成GitHub授权
- 源动作的
ActionTypeId中,Owner从ThirdParty改为AWS,Version改为2 - 配置项字段完全替换,例如用
ConnectionArn、FullRepositoryId替代原有的Owner、Repo、OAuthToken
完整CloudFormation配置示例
1. 定义GitHub连接资源
先创建CodeStar Connection资源,建立AWS与GitHub的授权关联:
GitHubConnection: Type: AWS::CodeStarConnections::Connection Properties: ConnectionName: !Sub ${AWS::StackName}-github-connection ProviderType: GitHub
2. 修改Pipeline的Source阶段配置
更新Pipeline的源动作,适配GitHub v2要求:
Pipeline: Type: AWS::CodePipeline::Pipeline Properties: Name: !Ref AWS::StackName ArtifactStore: Location: !Ref CodePipelineBucket Type: S3 RoleArn: !GetAtt DeploymentRole.Arn Stages: - Name: Source Actions: - Name: Source ActionTypeId: Category: Source Owner: AWS Version: 2 Provider: GitHub OutputArtifacts: - Name: Source Configuration: ConnectionArn: !Ref GitHubConnection FullRepositoryId: !Sub ${GitHubOwner}/${GitHubRepo} BranchName: !Ref GitHubBranch PollForSourceChanges: false RunOrder: 1
关键注意事项
- 必须完成连接授权:创建
GitHubConnection资源后,需登录AWS控制台,进入「CodeStar Connections」页面,找到该连接并点击「连接到GitHub」,按指引完成GitHub账号授权,否则Pipeline会因连接未授权执行失败 - 原v1中的
OAuthToken参数已移除,无需再生成和配置GitHub个人访问令牌 FullRepositoryId格式为用户名/仓库名,对应原v1中的Owner+Repo组合
内容的提问来源于stack exchange,提问作者Chuck Matías
相关产品推荐
相关产品推荐

