AWSで自動スケーリング設定を構成しようとしています。ノード起動テンプレートにはルートボリューム(EBS)の暗号化が含まれています。サービスにリンクされたロールと、Amazon KMSのCMKを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
のトラブルシューティングドキュメント単に元のドキュメントを指して、IAM ポリシーが適切に構成されていないことを示唆していますが、何が正しくないのかを突き止めるのに苦労しています。
サービスリンクロールは ASG 上で構成されます。ASG の SLRSLR には、ボリュームの暗号化に使用されたキーに対する 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 を作成する必要がありますか?
2020年11月5日更新:
フォーマット エラーが発生していたことが判明しました。アクション セクションの各コロンの後にスペースがあります。これを削除すると、問題は修正され、期待どおりに動作するようになりました。
{
"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": "*"
}
]
}