Terraform позволяет вам интерполировать известные ему значения, такие как переменные или выходные данные из источников данных, ресурсов или модулей.
В вашем случае вы можете использовать aws_caller_identity
источник данных чтобы динамически получить идентификатор учетной записи вызывающего абонента и вставить его в свою политику IAM с помощью чего-то вроде этого:
data "aws_caller_identity" "current" {}
resource "aws_iam_role" "aws-admin-role" {
name = "AWS-AdminAccess"
description = "Administration of Account from AWSxx"
assume_role_policy = <<EOF
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"
},
"Action":"sts:AssumeRole",
"Condition":{
}
}
]
}
EOF
}
Если вместо этого вы хотите использовать переменную для ссылки на другую учетную запись AWS, которую вы можете сделатькак то так:
variable "account_id" {}
resource "aws_iam_role" "aws-admin-role" {
name = "AWS-AdminAccess"
description = "Administration of Account from AWSxx"
assume_role_policy = <<EOF
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::${var.account_id}:root"
},
"Action":"sts:AssumeRole",
"Condition":{
}
}
]
}
EOF
}