既存のEC2インスタンスにIAMロールを割り当てる

ようやく既存のEC2インスタンスにIAMロールを割り当てることができるようになった。

新しくIAMロールを割り当てる

$ aws ec2 associate-iam-instance-profile --instance-id インスタンスID --iam-instance-profile Name=ロール名

結果

{
    "IamInstanceProfileAssociation": {
        "InstanceId": "yourInstanceId",
        "State": "associating",
        "AssociationId": "iip-assoc-07489a9421ef8d9a6",
        "IamInstanceProfile": {
            "Id": "AIPAJ2DEFUOROSIDJV7OS",
            "Arn": "arn:aws:iam::943601058350:instance-profile/myRole"
        }
    }
}

IAMロールを置き換える

差し替える場合は、まずIAMロールとEC2インスタンスのアソシエーションIDを取得する必要がある。

アソシエーションIDの取得

$ aws ec2 describe-iam-instance-profile-associations | jq '.IamInstanceProfileAssociations[] | select(.InstanceId == "インスタンスID") | .AssociationId'

IAMロールの置き換え

$ aws ec2 replace-iam-instance-profile-association --association-id アソシエーションID --iam-instance-profile Name=ロール名

結果

{
    "IamInstanceProfileAssociation": {
        "InstanceId": "yourInstanceId",
        "State": "associating",
        "AssociationId": "iip-assoc-0061ce7a881874983",
        "IamInstanceProfile": {
            "Id": "AIPAIDQS4HLWPEA6C2P4O",
            "Arn": "arn:aws:iam::943601058350:instance-profile/replaceRole"
        }
    }
}

参考

New! Attach an AWS IAM Role to an Existing Amazon EC2 Instance by Using the AWS CLI