EC2インスタンスにIAM Roleを割り当てる

EC2内部からAWSの各種サービスにアクセスする際に、AccessIdとSecretKeyをコピーして渡していました。

IAM roles for EC2 instancesは、EC2インスタンス自身が何かAWSの各種サービスにアクセスする際の権限を設定できる仕組みです。通常、IAMは、グループとユーザに関連づけていましたが、IAM Roleは、EC2インスタンスに割り当てます。

[centos@host_name ~]$ aws sts get-caller-identity
Unable to locate credentials. You can configure credentials by running "aws configure".

[centos@host_name ~]$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
product-codes
profile
public-keys/
reservation-id
security-groups
services/

EC2インスタンスの情報を見るとIAMロールが設定されていない状態です。

EC2の「インスタンスの設定」から「IAMロールの割り当て/置換」を選びます。

作成したIAMロールを選択してアタッチします。

[centos@host_name ~]$ aws sts get-caller-identity
{
  "Account": "1234567890123",
  "UserId": "AAAAAAAAA:i-BBBBBBBBB",
  "Arn": "arn:aws:sts::1234567890:assumed-role/ec2-management-role/i-BBBBBBBBB"
}
[centos@host_name ~]$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
iam/  ←追加された
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
product-codes
profile
public-keys/
reservation-id
security-groups
services/

iam が追加されているのでその中身を確認

[centos@host_name ~]$curl http://169.254.169.254/latest/meta-data/iam/
info
security-credentials/
[centos@host_name ~]$ curl http://169.254.169.254/latest/meta-data/iam/info
{
"Code" : "Success",
"LastUpdated" : "2017-06-11T16:44:54Z",
"InstanceProfileArn" : "arn:aws:iam::1234567890:instance-profile/ec2-management-role",
"InstanceProfileId" : "AAAAAAAAAAAAA"
}

これで、EC2インスタンス内でawscliコマンドが使えるようになります。

[centos@host_name ~]$ aws s3 ls --region ap-northeast-1 --recursive s3://buket_name
2017-06-11 20:28:51 158217 黒島の豊年祭.jpg

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • ad