この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、菊池です。
本日(2017/2/10)、既存のEC2に後からIAM Roleを適用することができるようになったのは既報の通りです。
- New! Attach an AWS IAM Role to an Existing Amazon EC2 Instance by Using the AWS CLI
- Attach an IAM role to your existing Amazon EC2 instance
- [アップデート]既存のEC2にIAM Roleを付与できるようになりました!
このアップデートを利用することで、すでに適用してあったIAM Roleを別のIAM Roleに変更することも可能になっています。ユースケースとしては、複数のインスタンスで同じIAM Roleを適用して作成したものの、運用していくうちに権限を分けたい場合などがあると思います。
やってみた
今回のアップデートで、disassociate-iam-instance-profile
コマンドでIAM Roleを後から外すことも可能になっています。これを利用して、一度IAM Roleを外し、associate-iam-instance-profile
で別のIAM Roleを付与することで実現します。
まずは、describe-iam-instance-profile-associations
コマンドで現状のIAM Roleを確認してみます。
$ aws ec2 describe-iam-instance-profile-associations
{
"IamInstanceProfileAssociations": [
{
"InstanceId": "i-07e43f94a47957f26",
"State": "associated",
"AssociationId": "iip-assoc-0615cf5022780f806",
"IamInstanceProfile": {
"Id": "AIPAIRFJJEGGGFLSNXII4",
"Arn": "arn:aws:iam::xxxxxxxxxxxx:instance-profile/test"
}
}
]
}
このインスタンスのIAM Roleを外します。disassociate-iam-instance-profile
ではAssociationIdを指定して実行します。
$ aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-0615cf5022780f806
{
"IamInstanceProfileAssociation": {
"InstanceId": "i-07e43f94a47957f26",
"State": "disassociating",
"AssociationId": "iip-assoc-0615cf5022780f806",
"IamInstanceProfile": {
"Id": "AIPAIRFJJEGGGFLSNXII4",
"Arn": "arn:aws:iam::xxxxxxxxxxxx:instance-profile/test"
}
}
}
これでIAM Roleが非適用になりました。
$ aws ec2 describe-iam-instance-profile-associations
{
"IamInstanceProfileAssociations": []
}
次に、別のIAM Roleを適用します。
$ aws ec2 associate-iam-instance-profile --instance-id i-07e43f94a47957f26 --iam-instance-profile Name=NewRole
{
"IamInstanceProfileAssociation": {
"InstanceId": "i-07e43f94a47957f26",
"State": "associating",
"AssociationId": "iip-assoc-0164a7f896ad1c219",
"IamInstanceProfile": {
"Id": "AIPAI4TBBJV7RZCLVXMBS",
"Arn": "arn:aws:iam::xxxxxxxxxxxxx:instance-profile/NewRole"
}
}
}
これでIAM Roleの変更が完了です!
最後に
いかがでしょうか。今回のアップデートで、IAM Roleの後からの適用だけでなく、変更も可能になりました。柔軟性が上がる素晴らしいアップデートですね!