GitLab、Terraform和字符串插值

GitLab、Terraform和字符串插值,gitlab,terraform,Gitlab,Terraform,我想使用GitLab Runner部署到带有Terraform的AWS。我在GitLab“Variables”中设置了AWS凭据(AWS\u ACCESS\u KEY\u ID和AWS\u SECRET\u ACCESS\u KEY)。我一定是误解了.gitlab-cy.yml如何执行字符串插值,因为我无法获取要填充的凭据 所讨论的阶段如下所示: validate: stage: validate dependencies: - lint - unit image:

我想使用GitLab Runner部署到带有Terraform的AWS。我在GitLab“Variables”中设置了AWS凭据(
AWS\u ACCESS\u KEY\u ID
AWS\u SECRET\u ACCESS\u KEY
)。我一定是误解了
.gitlab-cy.yml
如何执行字符串插值,因为我无法获取要填充的凭据

所讨论的阶段如下所示:

validate:
  stage: validate
  dependencies:
    - lint
    - unit
  image:
    name: hashicorp/terraform:light
    entrypoint:
      - "/usr/bin/env"
      - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      - "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}"
      - "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"
  before_script:
    - rm -rf terraform/test/.terraform
    - terraform --version
    - terraform init -input=false -backend-config="access_key=${AWS_ACCESS_KEY_ID}" -backend-config="secret_key=${AWS_SECRET_ACCESS_KEY}" terraform/test
  script:
    - terraform validate
管道在
terraform init
命令中失败。然而,为了证实我并没有发疯,我确实尝试了一个管道运行,并使用了硬编码的凭证,它成功了(我还立即学会了如何永久地和管道连接)

从表面上看,我没有看到任何明显的错误

错误消息:

Initializing the backend...
 Error: error using credentials to get account ID: error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid.

问题原来是受保护的分支。如果您“保护”一个变量,那么该变量对未指定为受保护的分支不可用。我很确定您不应该在Docker入口点中设置环境变量。@MattSchuchard很公平,但您有推荐的替代方案吗?我是从这些示例开始工作的:您是否尝试过使用
环境
Gitlab键呢?我看不出与我在这里所做的有什么不同