Amazon web services 如何使Terraform读取AWS凭据文件?

Amazon web services 如何使Terraform读取AWS凭据文件?,amazon-web-services,amazon-s3,terraform-provider-aws,aws-credentials,terraform-aws-modules,Amazon Web Services,Amazon S3,Terraform Provider Aws,Aws Credentials,Terraform Aws Modules,我正在尝试使用terraform创建AWS S3 bucket,以下是我的代码: provider "aws" { profile = "default" region = "ap-south-1" } resource "aws_s3_bucket" "first_tf" { bucket = "svk-pl-2909202022" acl = &q

我正在尝试使用terraform创建AWS S3 bucket,以下是我的代码:

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

resource "aws_s3_bucket" "first_tf" {
  bucket = "svk-pl-2909202022"
  acl    = "private"
}
我使用记事本手动创建了凭据文件,还使用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
aws configure --profile=prod 
terraform是我的用户名。所以,它要求我输入aws_访问密钥和aws_机密密钥。输入所有凭据后,我运行了命令terraform init,该命令成功运行,但当我运行terraform plan时,它再次显示错误,显示:

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


当您手动创建配置文件时

provider "aws" {
  region                  = "your region"
  shared_credentials_file = "path_file_credentials like C:\Users\terraform\.aws\credentials"
  profile                 = "profile_name"
}
当您不想手动放置共享文件时

provider "aws" {
  region                  = "your region"
  shared_credentials_file = "path_file_credentials like C:\Users\terraform\.aws\credentials"
  profile                 = "profile_name"
}
需要在此路径%USERPROFILE%.aws\credentials中

如果您想将您的凭据放入tf文件中

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

当您手动创建配置文件时

provider "aws" {
  region                  = "your region"
  shared_credentials_file = "path_file_credentials like C:\Users\terraform\.aws\credentials"
  profile                 = "profile_name"
}
当您不想手动放置共享文件时

provider "aws" {
  region                  = "your region"
  shared_credentials_file = "path_file_credentials like C:\Users\terraform\.aws\credentials"
  profile                 = "profile_name"
}
需要在此路径%USERPROFILE%.aws\credentials中

如果您想将您的凭据放入tf文件中

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

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

AWS_PROFILE=prod terraform plan


共享凭证文件和/或provider部分中的概要文件选项被忽略这一事实对我来说似乎是个错误。

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

AWS_PROFILE=prod terraform plan


在我看来,忽略“提供程序”部分中的共享凭据文件和/或配置文件选项似乎是一个错误。

存储凭据文件的路径错误

C:\Users\your username\.aws

您可以将以下文件添加到上述位置

证书

配置


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

存储凭据文件的路径错误

AWS_PROFILE=prod terraform plan
C:\Users\your username\.aws

您可以将以下文件添加到上述位置

证书

配置


如果使用boto3,则不需要将任何东西配置到terraform或python中。Terraform和boto3将自动找到所需的凭证文件。

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

aws configure --profile terraform
AWS_PROFILE=prod terraform plan
aws configure --profile=prod 

为了像这样使用env变量。

您必须使用命令在凭证文件中设置一个自定义节

aws configure --profile terraform
aws configure --profile=prod 

为了像这样使用env变量。

即使在答案中,也没有理由写粗体大写文字。即使在答案中,也没有理由写粗体大写文字。