У меня есть субаккаунты AWS для разработки, контроля качества и производства под основной учетной записью, которая контролирует все наши зоны route53. Я все управляю с Terraform. Я использую роли перекрестных учетных записей STSAssumeRole из этой основной учетной записи для доступа к дополнительным учетным записям. Я использую роль arn в моем файле .aws / config и говорю провайдеру aws использовать профиль учетной записи, которую я хочу использовать.
В настоящее время я пытаюсь выяснить, как разрешить terraform создавать или изменять зоны route53 в этой родительской учетной записи при работе с использованием профиля одной вспомогательной учетной записи (которая предполагает роль sts).
Когда я пытаюсь применить свой ресурс route53, я получаю следующую ошибку: «aws_route53_record.default: AccessDenied: User: arn: aws: sts :: ID-OF-SUB-ACCOUNT: loaded-role / Cross-Production / COMPANYNAME-prod- 01-awsume-session не авторизован для доступа к этому коду состояния ресурса: 403, идентификатор запроса: BLAHBLAHBLAH "
Я использую awsume для замены env моего профиля на лету, когда я не хочу указывать --profile в командной строке.
Мне нужно найти способ указать terraform принять на себя другую роль или перестать предполагать текущую роль (что вернет ее пользователю администратора в основной учетной записи). Не совсем уверен, как это сделать. Какие-либо предложения?
Terraform поддерживает несколько провайдеров
# default provider
provider "aws" {
access_key = "foo"
secret_key = "bar"
region = "us-east-1"
}
provider "aws" {
alias = "aws-assume"
assume_role {
role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
session_name = "SESSION_NAME"
external_id = "EXTERNAL_ID"
}
}
и в использовании ресурсов
resource "aws_instance" "foo" {
provider = "aws.aws-assume"
# ...
}