#amazon-web-services #terraform #terraform-provider-aws
#amazon-веб-сервисы #terraform #terraform-поставщик-aws
Вопрос:
Я использую два набора скриптов terraform, которые создают инфраструктуру приложений в AWS для учетной записи A и codepipeline для учетной записи B, скриптам TF, которые создают codepipeline в учетной записи B, Потребуются некоторые параметры конфигурации (ALB, ECS .. etc) Из учетной записи A, Которая уже настроена, я знаком с получением данных, если все размещено в одной учетной записи AWS, возможно ли получить данные одной учетной записи из другой с помощью Terraform? Есть ли какая-либо документация для этого сценария?
Ответ №1:
Да, это возможно. Поскольку вопрос довольно общий, я могу предоставить только общую информацию.
Как правило, для доступа между учетными записями используются роли IAM между учетными записями. Это хорошая практика, а не требование. Информация в документе AWS о ролях:
-
Предоставление доступа пользователю IAM из другой учетной записи AWS, которой вы владеете
-
Руководство: Делегирование доступа между учетными записями AWS с использованием ролей IAM
На основе этого в Account A
вам нужно будет настроить предполагаемую роль с доверительными отношениями, позволяющими учетной записи B выполнять эту роль. В учетной записи B пользователь IAM, который используется для terraform, должен иметь разрешения IAM, чтобы взять на себя эту роль.
После настройки роли в terraform вы бы использовали aws
провайдера, который бы присваивал себе роль, например, из документов:
provider "aws" {
alias = "assumed_role_provider"
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.assumed_role_provider
# ...
}