如何自定义 AWS Codestar / Cloudformation 模板来创建特定的代码构建项目?

Posted

技术标签:

【中文标题】如何自定义 AWS Codestar / Cloudformation 模板来创建特定的代码构建项目?【英文标题】:How to customize AWS Codestar / Cloudformation template to create specific codebuild project? 【发布时间】:2019-07-03 14:23:56 【问题描述】:

如何自定义 AWS Codestar / Cloudformation 模板以创建特定的代码构建项目

像 lambda 这样的资源很好,SAM > Codestar 项目模板工作正常

问题是当我尝试添加带有特定 docker 映像的 CodeBuild 设置时(需要使用 Python 3.7 而不是默认的 2.7) 将 Yaml 用于 template.yml + buildspec.yml

    AWSTemplateFormatVersion: 2010-09-09
    Transform:
    - AWS::Serverless-2016-10-31
    - AWS::CodeStar

    Parameters:
      ProjectId:
        Type: String
        Description: CodeStar projectId used to associate new resources to team members
    Resources:
      HelloWorld:
        Type: AWS::Serverless::Function
        Properties:
          Handler: index.lambda_handler
          Runtime: python3.7
          Layers:
          - arn:aws:lxxxxxxxxxxxxxxxxxxxxxx:1
          Role:
          - arn:aws:iam::xxxxxxxxxxxxxxxxxxxxxx

      CodeBuildProject:
        Type: AWS::CodeBuild::Project
        Properties:
          Description: Codebuild project Validate Packer Template
          Artifacts:
            Type: CODEPIPELINE
          Environment:
            Type: LINUX_CONTAINER
            ComputeType: BUILD_GENERAL1_SMALL
            Image: aws/codebuild/python:3.7.1
        Source:
          Type: CODEPIPELINE
        TimeoutInMinutes: 1

Lambda 已成功创建,但 Codebuild 部分被忽略并且没有任何反应

编辑 2 我能够编辑 CF 模板以强制创建另一个 CodeBuild 项目。不幸的是,它的功能就像完全独立的组件

从文档看来,创建后可以更改资源,应该是更改更改集 CF 部署。

但是在使用默认模板(sam + Python)之后,通过代码更改管道呢? 有没有办法在 CodeStar 的 pipiline 中覆盖 codebuild env(更改要使用的 docker 映像)? 通过 COnsole,您当然可以更改和更新任何内容 + 覆盖。但是文档中没有关于如何通过 template.yml / template.json 文件来做到这一点

【问题讨论】:

【参考方案1】:

根据我的发现,有几层组件 通过控制台创建 Codestar 项目时,选择默认模板。这是您需要编辑的,以更改底层 CodePupeline

我找到了一个解决方法:通过 CLI 创建项目 这样,您可以使用 toolchain.yml(也可以通过控制台编辑,这与 IAC 原则相矛盾)并对其进行编辑,以获得所需的任何类型的自定义管道

【讨论】:

以上是关于如何自定义 AWS Codestar / Cloudformation 模板来创建特定的代码构建项目?的主要内容,如果未能解决你的问题,请参考以下文章

AWS CodeStar

使用AWS CodeStar Python项目和JetBrain PyCharm

用于自动扩展的 AWS Codestar 设置 Beanstalk 策略错误

大咖专栏 | 云端开发工具AWS CodeStar快速入门

使用 Lambda 在 AWS Codestar 中安装 Python 依赖项

AWS Fargate 容器中的持久性