如何在 Terraform 中实现导出值
How to implement export values in terraform
我尝试在 AWS 环境中创建一个简单的示例。一开始,我导出 2 个值:
export AWS_ACCESS_KEY_ID= something
export AWS_SECRET_ACCESS_KEY= something
之后,我写了一个简单的代码。
provider "aws" {
region = "us-east-1"
access_key = AWS_ACCESS_KEY_ID
secret_key = AWS_SECRET_ACCESS_KEY
}
resource "aws_instance" "example" {
ami = "ami-40d28157"
instance_type = "t2.micro"
tags = {
Name = "terraform-example"
}
}
当我定义值而不是参数 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 时,一切正常,但是提供的代码,我看到以下错误
on main.tf line 4, in provider "aws":
4: secret_key = AWS_SECRET_ACCESS_KEY
A reference to a resource type must be followed by at least one attribute
access, specifying the resource name.
关于如何解决这个问题的一些想法?
您无需执行任何操作。正如 AWS 提供商的 terraform
authentication 文档中所述,terraform
将按以下顺序自动使用凭证:
- 静态凭据
- 环境变量
- 共享credentials/configuration文件
- CodeBuild、ECS 和 EKS 角色
- EC2 实例元数据服务(IMDS 和 IMDSv2)
因此,一旦您导出密钥(确保正确导出):
export AWS_ACCESS_KEY_ID="something"
export AWS_SECRET_ACCESS_KEY="something"
在您的配置文件中您将使用(在 docs 中示例):
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-40d28157"
instance_type = "t2.micro"
tags = {
Name = "terraform-example"
}
}
我尝试在 AWS 环境中创建一个简单的示例。一开始,我导出 2 个值:
export AWS_ACCESS_KEY_ID= something
export AWS_SECRET_ACCESS_KEY= something
之后,我写了一个简单的代码。
provider "aws" {
region = "us-east-1"
access_key = AWS_ACCESS_KEY_ID
secret_key = AWS_SECRET_ACCESS_KEY
}
resource "aws_instance" "example" {
ami = "ami-40d28157"
instance_type = "t2.micro"
tags = {
Name = "terraform-example"
}
}
当我定义值而不是参数 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 时,一切正常,但是提供的代码,我看到以下错误
on main.tf line 4, in provider "aws":
4: secret_key = AWS_SECRET_ACCESS_KEY
A reference to a resource type must be followed by at least one attribute
access, specifying the resource name.
关于如何解决这个问题的一些想法?
您无需执行任何操作。正如 AWS 提供商的 terraform
authentication 文档中所述,terraform
将按以下顺序自动使用凭证:
- 静态凭据
- 环境变量
- 共享credentials/configuration文件
- CodeBuild、ECS 和 EKS 角色
- EC2 实例元数据服务(IMDS 和 IMDSv2)
因此,一旦您导出密钥(确保正确导出):
export AWS_ACCESS_KEY_ID="something"
export AWS_SECRET_ACCESS_KEY="something"
在您的配置文件中您将使用(在 docs 中示例):
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-40d28157"
instance_type = "t2.micro"
tags = {
Name = "terraform-example"
}
}