You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置CodePipeline阶段,跟踪CodeCommit并部署CloudFormation模板?

配置CodePipeline跟踪CodeCommit并部署CloudFormation模板

我来帮你完善这个CloudFormation模板里的Pipeline Stages配置,同时把缺失的IAM角色权限也补上——毕竟没有合适的权限,Pipeline根本跑不起来。

完整的模板补充内容

首先把你的PipelineRole补全,它需要信任CodePipeline服务,并且拥有访问CodeCommit、S3以及调用CloudFormation的权限:

PipelineRole:
  Type: AWS::IAM::Role
  Properties:
    AssumeRolePolicyDocument:
      Version: '2012-10-17'
      Statement:
        - Effect: Allow
          Principal:
            Service: codepipeline.amazonaws.com
          Action: sts:AssumeRole
    Policies:
      - PolicyName: PipelineExecutionPolicy
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action:
                - codecommit:GitPull
                - codecommit:GetBranch
                - codecommit:GetCommit
              Resource: !GetAtt PipelineRepo.Arn
            - Effect: Allow
              Action:
                - s3:GetObject
                - s3:PutObject
                - s3:GetBucketVersioning
              Resource:
                - !Sub "${PipelineArtifacts.Arn}"
                - !Sub "${PipelineArtifacts.Arn}/*"
            - Effect: Allow
              Action:
                - cloudformation:CreateStack
                - cloudformation:DescribeStacks
                - cloudformation:UpdateStack
                - cloudformation:DeleteStack
                - cloudformation:ExecuteChangeSet
              Resource: "*"
            - Effect: Allow
              Action: iam:PassRole
              Resource: !Sub "${CloudFormationExecutionRole.Arn}"

接下来是核心的Stages配置,我们需要两个关键阶段:源阶段(拉取CodeCommit代码)和部署阶段(用CloudFormation执行模板):

Pipeline:
  Type: AWS::CodePipeline::Pipeline
  Properties:
    Name: pipeline-pipeline
    ArtifactStore:
      Type: S3
      Location: !Ref PipelineArtifacts
    RoleArn: !GetAtt PipelineRole.Arn
    Stages:
      # 源阶段:从CodeCommit拉取代码
      - Name: Source
        Actions:
          - Name: PullFromCodeCommit
            ActionTypeId:
              Category: Source
              Owner: AWS
              Provider: CodeCommit
              Version: '1'
            Configuration:
              RepositoryName: !Ref PipelineRepo
              BranchName: main # 替换成你要跟踪的分支,比如master
            OutputArtifacts:
              - Name: SourceCode
            RunOrder: 1

      # 部署阶段:用CloudFormation部署仓库中的模板
      - Name: Deploy
        Actions:
          - Name: DeployWithCloudFormation
            ActionTypeId:
              Category: Deploy
              Owner: AWS
              Provider: CloudFormation
              Version: '1'
            Configuration:
              ActionMode: CREATE_UPDATE # 每次执行都创建或更新堆栈
              StackName: MyDeployedStack # 替换成你的CloudFormation堆栈名称
              TemplatePath: SourceCode::templates/main.yml # 替换成你仓库中模板的路径
              RoleArn: !GetAtt CloudFormationExecutionRole.Arn # 需要一个给CloudFormation用的执行角色
            InputArtifacts:
              - Name: SourceCode
            RunOrder: 1

另外,你还需要添加一个CloudFormation执行角色,让CloudFormation有足够权限创建你模板里的资源:

CloudFormationExecutionRole:
  Type: AWS::IAM::Role
  Properties:
    AssumeRolePolicyDocument:
      Version: '2012-10-17'
      Statement:
        - Effect: Allow
          Principal:
            Service: cloudformation.amazonaws.com
          Action: sts:AssumeRole
    ManagedPolicyArns:
      - arn:aws:iam::aws:policy/AdministratorAccess # 生产环境建议缩小权限,这里是测试用的全权限

关键部分解释

  1. 源阶段:

    • 用CodeCommit作为源提供者,指定你创建的仓库和目标分支
    • OutputArtifacts会把仓库里的代码打包成一个工件,存储到你定义的S3桶中,供后续阶段使用
  2. 部署阶段:

    • ActionMode: CREATE_UPDATE表示如果堆栈不存在就创建,存在就更新
    • TemplatePath格式是[工件名称]::[仓库内模板路径],比如你的模板在仓库的templates文件夹下的main.yml,就写SourceCode::templates/main.yml
    • CloudFormationExecutionRole是CloudFormation用来创建资源的角色,必须有对应资源的创建权限(生产环境别用全权限,根据你的模板内容缩小范围)

注意事项

  • 确保你的CodeCommit仓库里已经有指定路径的CloudFormation模板文件
  • 分支名称要和你配置的一致(比如上面用的main,如果是旧仓库可能是master)
  • IAM权限要最小化,上面的全权限是为了快速测试,生产环境一定要根据实际需求裁剪权限

内容的提问来源于stack exchange,提问作者user3002273

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:13:42