【问题标题】:How to make Terraform to read AWS Credentials file?如何让 Terraform 读取 AWS 凭证文件?
【发布时间】:2021-01-15 07:52:09
【问题描述】:

我正在尝试使用 terraform 创建一个 AWS S3 存储桶,这是我的代码:

provider "aws" {
  profile = "default"
  region  = "ap-south-1"
}

resource "aws_s3_bucket" "first_tf" {
  bucket = "svk-pl-2909202022"
  acl    = "private"
}

我已经使用记事本手动创建了“Credentials”文件,还使用 ​​Powershell 删除了“.txt”扩展名并将该文件存储在C:\Users\terraform\.aws,该文件是这样的:

[default]
aws_access_key_id=**************
aws_secret_access_key=************

但是当我尝试运行 terraform plan 时,我收到一个错误提示

错误:配置 Terraform AWS 提供程序时出错:找不到 Terraform AWS 提供程序的有效凭证源

然后,我还尝试通过安装 AWS CLI 创建该“凭据”文件,我运行了命令

aws configure --profile terraform

terraform 是我的用户名。所以,它要求我输入aws_access_key_idaws_secret_access_key。输入所有凭据后,我运行了命令terraform init,该命令运行成功,但是当我运行terraform plan 时,它再次显示错误:

错误:配置 Terraform AWS 提供程序时出错:找不到 Terraform AWS 提供程序的有效凭证源

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform-provider-aws aws-credentials terraform-aws-modules


    【解决方案1】:

    我花了很多时间试图弄清楚如何让 Terraform 读取 ~/.aws/credentials。对我有用的唯一选项是指定 AWS_PROFILE 环境变量以将其指向凭证文件的特定部分。

    AWS_PROFILE=prod terraform plan
    

    export AWS_PROFILE=prod 
    terraform plan
    

    提供者部分中的 shared_credentials_file 和/或 profile 选项被忽略的事实对我来说似乎是一个错误。

    【讨论】:

    • 我得出了同样的结论。有这方面的更新吗?
    • 如果您的问题与状态文件的后端配置有关,我遇到过这个问题:github.com/hashicorp/terraform/issues/13589;运行terraform init -reconfigure 为我解决了这个问题
    【解决方案2】:

    当您手动创建配置文件时

    provider "aws" {
      region                  = "your region"
      shared_credentials_file = "path_file_credentials like C:\Users\terraform\.aws\credentials"
      profile                 = "profile_name"
    }
    

    当您不想手动放置共享文件时

    需要在这条路径%USERPROFILE%.aws\credentials

    provider "aws" {
      region                  = "your region"
      profile                 = "profile_name"
    }
    

    如果你想把你的凭据放在一个 tf 文件中

    provider "aws" {
      region     = "us-west-2"
      access_key = "my-access-key"
      secret_key = "my-secret-key"
    }
    

    【讨论】:

    • 真的没有理由写粗体所有大写文本,即使是在答案中。
    【解决方案3】:

    您存储凭据文件的路径错误。

    C:\Users\your-username\.aws

    您可以在上述位置添加以下这些文件。

    凭据

    [default]
    aws_access_key_id = your access key
    aws_secret_access_key = your secret key
    

    配置

    [default]
    region=ap-south-1
    

    如果您使用的是 boto3,则无需在 terraform 或 python 中配置任何东西。 Terraform 和 boto3 将自动找到所需的凭据文件。

    【讨论】:

      【解决方案4】:

      您必须使用命令在凭据文件中设置自定义部分

      aws configure --profile=prod 
      

      为了像这样使用环境变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-12
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        相关资源
        最近更新 更多