Невозможно создать роль IAM в регионе AWS China Ningxia - PullRequest
1 голос
/ 18 октября 2019

Я пытаюсь использовать terraform для создания роли IAM в регионе AWS China Ningxia.

Вот моя структура папок

.
├── main.tf
└── variables.tf

Вот содержимое main.tf

provider "aws" {
  access_key = var.access_key
  secret_key = var.secret_key
  region  = var.region
}

resource "aws_iam_role" "role" {
  name               = "TestRole"
  assume_role_policy = data.aws_iam_policy_document.policy_doc.json
}

data "aws_iam_policy_document" "policy_doc" {
  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type        = "Service"
      identifiers = ["ec2.amazonaws.com"]
    }
  }
}

А вот файл variables.tf:

variable "access_key" {}
variable "secret_key" {}
variable "region" {}

После выполнения следующей команды

terraform apply \
  -var 'access_key=<my_access_key>' \
  -var 'secret_key=<my_secret_key>' \
  -var 'region=cn-northwest-1'

Я получил сообщение об ошибке: Error: Error creating IAM Role TestRole: MalformedPolicyDocument: Invalid principal in policy: "SERVICE":"ec2.amazonaws.com".

Этот скрипт terraform корректно работает в других регионах AWS (Токио, Сингапур, ...),Похоже, что AWS China немного отличается от других регионов.

Перед тем, как я наберу yes для терраформирования, вы получите следующее сообщение:

Terraform will perform the following actions:

  # aws_iam_role.role will be created
  + resource "aws_iam_role" "role" {
      + arn                   = (known after apply)
      + assume_role_policy    = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "sts:AssumeRole"
                      + Effect    = "Allow"
                      + Principal = {
                          + Service = "ec2.amazonaws.com"
                        }
                      + Sid       = ""
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + create_date           = (known after apply)
      + force_detach_policies = false
      + id                    = (known after apply)
      + max_session_duration  = 3600
      + name                  = "TestRole"
      + path                  = "/"
      + unique_id             = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

Кто-нибудь знает, как создать IAM? роль как у меня с терраформой в AWS China?

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Я использую aws iam get-account-authorization-details для просмотра текущих ролей IAM в моих учетных записях AWS China, которые созданы с помощью консоли AWS.

Затем я нашел строки, содержащие "Service": "ec2.amazonaws.com.cn".

ec2.amazonaws.com.cn для замены ec2.amazonaws.com работает без проблем.

0 голосов
/ 18 октября 2019

Китай отличается от того, что вы сказали.

ec2.amazonaws.com не будет работать в Китае, вместо этого вы должны использовать что-то вроде ec2.cn-northwest-1.amazonaws.com.cn

Здесь у вас есть списоквсе конечные точки https://docs.amazonaws.cn/en_us/aws/latest/userguide/endpoints-Ningxia.html

Также рекомендуется прочитать о IAM в Китае: https://docs.amazonaws.cn/en_us/aws/latest/userguide/iam.html#general-info

...