I want access to my AWS Account ID in terraform. I am able to get at it with aws_caller_identity
per the documentation. How do I then use the variable I created? In the below case I am trying to use it in an S3 bucket name:
data "aws_caller_identity" "current" {}
output "account_id" {
value = data.aws_caller_identity.current.account_id
}
resource "aws_s3_bucket" "test-bucket" {
bucket = "test-bucket-${account_id}"
}
Trying to use the account_id
variable in this way gives me the error A reference to a resource type must be followed by at least one attribute access, specifying the resource name.
I expect I'm not calling it correctly?
If you have a
data "aws_caller_identity" "current" {}
then you need to define a local
for that value:
locals {
account_id = data.aws_caller_identity.current.account_id
}
and then use it like
output "account_id" {
value = local.account_id
}
resource "aws_s3_bucket" "test-bucket" {
bucket = "test-bucket-${local.account_id}"
}
Terraform resolves the locals
based on their dependencies so you can create locals
that depend on other locals
, on resources
, on data
blocks, etc.