こんにちは、与儀です。
EC2インスタンスにIAMロールを適用することにより、AWSの認証情報(アクセスキーとシークレットキー)をインスタンス上にべた書きしなくても、AWSのリソースへアクセスする権限を付与できるようになります。
Amazon EC2 の IAM ロール
ここでは例として、S3へのフルアクセス権限をもったIAMロールを作成して、EC2インスタンスへ付与してみます。
※EC2インスタンスへIAMロールを適用する場合は、EC2インスタンス作成時に適用しなければなりません。一度作成したEC2インスタンスへ、IAMロールを後から適用することはできませんので注意が必要です。もし、すでに作成しているEC2インスタンスへIAMロールを適応したい場合は、AMIコピーを取得してEC2インスタンスを作成し直す必要があります。
こちらの過去記事、[AWS] EC2インスタンスを作成してログインする の「ステップ 3: インスタンスの詳細の設定」の場面から、「新しい IAM ロールの作成」をしていく方法で実施したいと思います。
すると、IAMの作成画面が表示されます。「新しいロールの作成」を選択します。
ロールタイプの選択で、今回はEC2インスタンスにIAMロールを適応するので、「Amazon EC2」を選択します。
IAMロールに付与する権限(ポリシー)を選択します。ここでは、「AmazonS3FullAccess」を選択します。
以上で、IAMロールの作成が完了しました。先ほどのEC2作成途中の画面へ戻ります。
矢印の更新ボタンを押して、プルダウンを押すと、先ほど追加したIAMロールが見えるようになってますので、これを選択します。以上で、IAMロールの作成と適応は完了です。
その後は、[AWS] EC2インスタンスを作成してログインすると同じように、EC2作成まで実施してください。
サーバへログインして、AWS CLI コマンドでS3を操作してみます。
[ec2-user@ip-172-31-26-2 ~]$ aws s3 ls 2015-09-05 05:51:08 s3-backet-test-yogi [ec2-user@ip-172-31-26-2 ~]$ |
S3バケットが見えました。ファイルをアップロードしてみます。
[ec2-user@ip-172-31-26-2 ~]$ touch test.txt [ec2-user@ip-172-31-26-2 ~]$ aws s3 cp test.txt s3://s3-backet-test-yogi/ upload: ./test.txt to s3://s3-backet-test-yogi/test.txt [ec2-user@ip-172-31-26-2 ~]$ aws s3 ls s3://s3-backet-test-yogi/ 2015-09-05 05:52:31 0 test.txt [ec2-user@ip-172-31-26-2 ~]$ |
S3ファイルがアップロードできました!
※注意点として、AWS CLI コマンドによって、APIアクセスをするためには、セキュリティグループでアウトバウンドのHTTPS通信が許可されている必要があります。
以上のように、EC2インスタンスにIAMロールを適応することで、手軽にS3などのAWSリソースへアクセスすることができました。