如何让 Terraform 读取 AWS 凭证文件?
How to make Terraform to read AWS Credentials file?
我正在尝试使用 terraform 创建一个 AWS S3 存储桶,这是我的代码:
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
时,我得到一个错误
ERROR: error configuring Terraform AWS Provider: no valid credential sources for Terraform AWS Provider found
然后,我还尝试通过安装 AWS CLI 创建“凭据”文件,我 运行 命令
aws configure --profile terraform
其中 terraform
是我的用户名。所以,它要求我输入 aws_access_key_id
和 aws_secret_access_key
。在输入所有凭据后,我 运行 命令 terraform init
成功 运行 但是当我 运行 terraform plan
时,它再次显示错误,它说:
ERROR: error configuring Terraform AWS Provider: no valid credential sources for Terraform AWS Provider found
当您手动创建配置文件时
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"
}
我花了很多时间试图弄清楚如何让 Terraform 读取 ~/.aws/credentials。唯一对我有用的选项是指定 AWS_PROFILE 环境变量以将其指向凭证文件的特定部分。
AWS_PROFILE=prod terraform plan
或
export AWS_PROFILE=prod
terraform plan
提供商部分中的 shared_credentials_file and/or profile 选项被忽略的事实看起来像对我来说是个错误。
您存储凭据文件的路径错误。
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 将自动找到所需的凭据文件。
您必须使用以下命令在您的凭据文件中设置自定义部分
aws configure --profile=prod
为了像这样使用环境变量。
当您已经在本地安装了 AWS cli 时,请转到配置文件路径:%USERPROFILE%\.aws\credentials
更新凭据如下:
[default]
aws_access_key_id = "xxxxx"
aws_secret_access_key = "xxxxx"
region= us-east-1
我正在尝试使用 terraform 创建一个 AWS S3 存储桶,这是我的代码:
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
时,我得到一个错误
ERROR: error configuring Terraform AWS Provider: no valid credential sources for Terraform AWS Provider found
然后,我还尝试通过安装 AWS CLI 创建“凭据”文件,我 运行 命令
aws configure --profile terraform
其中 terraform
是我的用户名。所以,它要求我输入 aws_access_key_id
和 aws_secret_access_key
。在输入所有凭据后,我 运行 命令 terraform init
成功 运行 但是当我 运行 terraform plan
时,它再次显示错误,它说:
ERROR: error configuring Terraform AWS Provider: no valid credential sources for Terraform AWS Provider found
当您手动创建配置文件时
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"
}
我花了很多时间试图弄清楚如何让 Terraform 读取 ~/.aws/credentials。唯一对我有用的选项是指定 AWS_PROFILE 环境变量以将其指向凭证文件的特定部分。
AWS_PROFILE=prod terraform plan
或
export AWS_PROFILE=prod
terraform plan
提供商部分中的 shared_credentials_file and/or profile 选项被忽略的事实看起来像对我来说是个错误。
您存储凭据文件的路径错误。
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 将自动找到所需的凭据文件。
您必须使用以下命令在您的凭据文件中设置自定义部分
aws configure --profile=prod
为了像这样使用环境变量。
当您已经在本地安装了 AWS cli 时,请转到配置文件路径:%USERPROFILE%\.aws\credentials
更新凭据如下:
[default]
aws_access_key_id = "xxxxx"
aws_secret_access_key = "xxxxx"
region= us-east-1