[AWS] EC2インスタンスにIAMロールを適用して、S3へファイルアップロードする。

こんにちは、与儀です。

EC2インスタンスにIAMロールを適用することにより、AWSの認証情報(アクセスキーとシークレットキー)をインスタンス上にべた書きしなくても、AWSのリソースへアクセスする権限を付与できるようになります。
Amazon EC2 の IAM ロール

ここでは例として、S3へのフルアクセス権限をもったIAMロールを作成して、EC2インスタンスへ付与してみます。
※EC2インスタンスへIAMロールを適用する場合は、EC2インスタンス作成時に適用しなければなりません。一度作成したEC2インスタンスへ、IAMロールを後から適用することはできませんので注意が必要です。もし、すでに作成しているEC2インスタンスへIAMロールを適応したい場合は、AMIコピーを取得してEC2インスタンスを作成し直す必要があります。

こちらの過去記事、[AWS] EC2インスタンスを作成してログインする の「ステップ 3: インスタンスの詳細の設定」の場面から、「新しい IAM ロールの作成」をしていく方法で実施したいと思います。

「新しい 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リソースへアクセスすることができました。