Как автоматически масштабировать экземпляры EC2 с зашифрованным корневым томом?

Как автоматически масштабировать экземпляры EC2 с зашифрованным корневым томом?

Я пытаюсь настроить автоматическое масштабирование в AWS, где шаблон запуска узла включает шифрование корневого тома (EBS). Я настроил связанную с сервисом роль и CMK в Amazon KMS с политикой IAM в соответствии сдокументация.

Однако при попытке ASG создать экземпляры я получаю следующую ошибку:

Launching a new EC2 instance: i-0123456789xxx. Status Reason: Instance became unhealthy while waiting for instance to be in InService state. Termination Reason: Client.InternalError: Client error on launch

Theдокументация по устранению неполадокпросто указывает на исходную документацию и предполагает, что политика IAM настроена неправильно — хотя я и пытаюсь понять, что именно не так.

Связанная с сервисом роль настраивается на ASG:SLR на ASGи у SLR есть правильные разрешения в политике IAM для ключа, который использовался для шифрования тома:

{
        "Sid": "Allow use of the key",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms: Encrypt",
            "kms: Decrypt",
            "kms: ReEncrypt*",
            "kms: GenerateDataKey*",
            "kms: DescribeKey"
        ],
        "Resource": "*"
    },
    {
        "Sid": "Allow attachment of persistent resources",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms: CreateGrant",
            "kms: ListGrants",
            "kms: RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }

Обратите внимание, что запуск того же AMI вручную, указав, что корневой том зашифрован тем же ключом, работает. Это говорит о проблеме с SLR, возможно?

Или мне нужно создать AMI, где корневой том уже зашифрован?

ОБНОВЛЕНИЕ 11/05/2020:

Оказалось, что была ошибка форматирования - после каждого двоеточия в разделе Действия есть пробел. Удалив его, я исправил ошибку, и теперь все работает как надо.

{
        "Sid": "Allow use of the key",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
        ],
        "Resource": "*"
    },
    {
        "Sid": "Allow attachment of persistent resources",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms:CreateGrant",
            "kms:ListGrants",
            "kms:RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }

решение1

Оказалось, что была ошибка форматирования - после каждого двоеточия в разделе Действия есть пробел. Удалив его, я исправил ошибку, и теперь все работает как надо.

{
        "Sid": "Allow use of the key",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
        ],
        "Resource": "*"
    },
    {
        "Sid": "Allow attachment of persistent resources",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms:CreateGrant",
            "kms:ListGrants",
            "kms:RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }

решение2

У меня была та же проблема, и я решил еедобавление роли, связанной с сервисом, для автоматического масштабирования вКлючевая политикасоответствующего ключа(Консоль AWS -> KMS -> Ключи, управляемые клиентом -> YOUR_KEY -> «изменить» на вкладке «Политика ключей») следующее:

{
    "Version": "2012-10-17",
    "Id": "key-default-1",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::READCTED:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling",
                    "arn:aws:iam::REDACTED:root"
                ]
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}

Связанный контент