如何在 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_IDAWS_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"
  }
}