
Я пытаюсь настроить автоматическое масштабирование в 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": "*"
}
]
}