我想在EC2上使用terraform并指定aws的配置文件

当在 EC2 上使用 terraform 时,即使指定了 –backend-config=”profile=プロファイル名”,实例上附加的 IAM 角色仍然会被优先考虑。

$ TF_LOG=DEBUG terraform init --backend-config="profile=terraform_profile"

# - 省略 -

[DEBUG] [aws-sdk-go] <GetCallerIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
  <GetCallerIdentityResult>
    <Arn>arn:aws:sts::xxxxxxxxxx:assumed-role/ec2-sample-instance-role/i-0bb01f7be2c61dc01</Arn>
    <UserId> …

可以使用var传递access_key等参数或使用.tfvars文件,但如果已经创建了profile,则可以使用AWS_PROFILE。

$ aws configure list --profile terraform_profile
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                  terraform_profile           manual    --profile
access_key     ****************UOJ5 shared-credentials-file    
secret_key     ****************eNBm shared-credentials-file    
    region           ap-northeast-1      config-file    ~/.aws/config

# これから作成する場合は--profileオプションで指定
$ aws configure --profile terraform_profile
AWS Access Key ID [None]: xxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]:

在运行 terraform init(验证版本号为 0.12)时。

$ AWS_PROFILE=terraform_profile terraform init

事情就是这样顺利进行了。

广告
将在 10 秒后关闭
bannerAds