terraform конфигурация AWS CodePipeline для исходной стадии CodeBuild

Я пытаюсь использовать 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, которые мне здесь могут понадобиться.


person Peter Lyons    schedule 22.05.2017    source источник


Ответы (2)


Оказывается, мне нужны настройки для источника:

RepositoryName = "my-project"
BranchName = "master"
person Peter Lyons    schedule 22.05.2017

Это может помочь, если вам понадобится доступ к токену 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://[email protected]/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 

подать заявление

person Eric Nord    schedule 15.07.2017