【问题标题】:terraform AWS CodePipeline configuration for CodeBuild source stageCodeBuild 源阶段的 terraform AWS CodePipeline 配置
【发布时间】:2017-07-15 15:47:48
【问题描述】:

我正在尝试使用 terraform 创建 CodePipeline 作业。我已经有一个工作的 CodeBuild 项目。这是我的资源:

resource "aws_codepipeline" "my-project" {
  name     = "my-project"
  role_arn = "${aws_iam_role.my-project-codepipeline.arn}"

  artifact_store {
    location = "${aws_s3_bucket.my-artifacts.bucket}"
    type     = "S3"
  }

  stage {
    name = "Source"

    action {
      name     = "Source"
      category = "Source"
      owner    = "AWS"
      provider = "CodeCommit"
      version  = "1"

      configuration {
        ProjectName = "my-project"
        Branch      = "master"
      }
    }
  }

  stage {
    name = "Build"

    action {
      name     = "Build"
      category = "Build"
      owner    = "AWS"
      provider = "CodeBuild"
      version  = "1"

      configuration {
        ProjectName = "my-project"
      }
    }
  }
}

当我尝试terraform apply 时,我得到的错误是Error creating CodePipeline: InvalidActionDeclarationException: Action configuration for action 'Source' contains unknown configuration 'ProjectName'。我在哪里可以找到此配置部分的正确架构?到目前为止,我发现的所有文档和示例都是通用的,并且在此处省略了我需要的特定 CodeBuild 设置/架构。

【问题讨论】:

    标签: terraform aws-codepipeline aws-codebuild


    【解决方案1】:

    原来我需要的 Source 设置是

    RepositoryName = "my-project"
    BranchName = "master"
    

    【讨论】:

      【解决方案2】:

      如果您最终需要访问 CodeBuild sts 令牌,这可能会有所帮助。

      version: 0.2
      env:
        variables:
          AWS_DEFAULT_REGION: "us-west-2"
      phases:
        install:
          commands:
            - apt-get -y update
            - apt-get -y install jq
        pre_build:
            commands:
      
            # load acs submodule (since codebuild doesn't pull the .git folder from the repo
            - cd common 
            - git clone https://gituser@gitlab.com/aws-account-tools/acs.git
            - cd ../
      
            #install terraform
            - other/install-tf-linux64.sh
            - terraform --version
      
            #set env variables for terraform provider
            - curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI | jq 'to_entries | [ .[] | select(.key | (contains("Expiration") or contains("RoleArn"))  | not) ] |  map(if .key == "AccessKeyId" then . + {"key":"AWS_ACCESS_KEY_ID"} else . end) | map(if .key == "SecretAccessKey" then . + {"key":"AWS_SECRET_ACCESS_KEY"} else . end) | map(if .key == "Token" then . + {"key":"AWS_SESSION_TOKEN"} else . end) | map("export \(.key)=\(.value)") | .[]' -r > /tmp/cred.txt # work around https://github.com/hashicorp/terraform/issues/8746
            - chmod +x /tmp/cred.txt
            - . /tmp/cred.txt
        build:
          commands:
            - ls
            - cd your/repo's/folder/with/main.tf 
            - terraform init 
            - terraform plan 
            - terraform 
      

      申请

      【讨论】:

        猜你喜欢
        • 2018-07-18
        • 2019-05-23
        • 2019-12-15
        • 2019-10-25
        • 1970-01-01
        • 2020-05-21
        • 2022-09-24
        • 2015-12-15
        • 2020-07-14
        相关资源
        最近更新 更多