Terraform для получения данных AWS из учетной записи A и использования их в учетной записи B

#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 о ролях:

На основе этого в 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

  # ...
}