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

Bitbucket Pipeline运行Terraform访问S3后端初始化报错问题咨询

问题根因
  • Bitbucket Pipelines 的每个step都是独立运行的隔离容器,前序step的工作目录切换、生成的临时文件不会自动传递到后续step,你的现有配置存在两个路径问题:
    1. 第一步执行的cd terraform/environments/dev仅对当前step生效,第二步执行terraform init时实际处于仓库根目录,没有读取到dev路径下的provider.tf配置
    2. 第三步执行terraform workspace select同样在根目录运行,找不到terraform init生成的.terraform缓存目录,就触发了需要重新初始化的报错
  • 你推测的AWS/S3访问权限问题也需要同步处理,初始化S3后端、调用AWS资源都需要有效鉴权凭证
解决方案

你不需要主动在bitbucket-pipelines.yml中引用provider.tf,terraform执行命令时会自动读取当前工作目录下的所有.tf配置文件,按以下步骤调整即可:

1. 调整流水线配置

推荐直接将关联操作合并为同一个step,避免多step的文件传递开销,修正后的bitbucket-pipelines.yml参考如下:

image: hashicorp/terraform

pipelines:
  branches:
    test:
      - step:
          name: 'Terraform Dev Environment Operations'
          script:
            # 先切换到dev环境目录,所有后续命令都在该目录下执行
            - cd terraform/environments/dev
            - terraform init
            - terraform workspace select default
          condition:
            changesets:
              includePaths:
                - "terraform/modules"
                - "terraform/environments/dev"

如果你需要保留多step拆分的结构,需要给初始化step配置artifacts传递缓存目录,同时每个step都先切换工作目录:

image: hashicorp/terraform

pipelines:
  branches:
    test:
      - step:
          name: 'Initialize Terraform'
          script:
            - cd terraform/environments/dev
            - terraform init
          artifacts:
            # 将init生成的缓存目录传递给后续step
            - terraform/environments/dev/.terraform/**
          condition:
            changesets:
              includePaths:
                - "terraform/modules"
                - "terraform/environments/dev"
      - step:
          name: 'Select workspace'
          script:
            - cd terraform/environments/dev
            - terraform workspace select default

2. 配置AWS鉴权凭证

进入对应Bitbucket仓库的 Repository settings → Repository variables 页面,添加两个变量:

  • AWS_ACCESS_KEY_ID:有权限assume你配置的arn:aws:iam::123:role/terraform-access角色的访问密钥ID
  • AWS_SECRET_ACCESS_KEY:对应访问密钥的Secret

terraform的AWS provider会自动读取这两个环境变量完成鉴权,顺利访问S3后端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:06:08