EC2 から s3 バケットを操作したいです。
例えば、バケットを新規作成してみます。
$ aws s3 mb s3://<バケット名>
make_bucket failed: s3://<バケット名> Unable to locate credentials
ここで、aws configure コマンドを実行して credentials を設定するかと思います。
しかしながら、.aws/config に記録されてしまい、セキュリティ的によろしくないです。
以下を実行します。
要すれば、Access Key を設定しないことが大事です。
$ aws configure
AWS Access Key ID [None]: <そのまま Enter>
AWS Secret Access Key [None]: <そのまま Enter>
Default region name [None]: ap-northeast-1
Default output format [None]: <そのまま Enter>
ファイルの中身を確認します。
$ less ./aws/config
[default]
region = ap-northeast-1
アクセスキーの記述はありません。
ここで、ロールを作成して、EC2 にアタッチします。
「IAM」-「ロール」-「ロールの作成」-「このロールを使用するサービスを選択」-「EC2」-「次のステップ:アクセス権限」-「ポリシーのフィルタ」- 「検索窓に s3 と入力」-「AmazonS3FullAccess にレ点を入れる」-「ポリシーの作成」
(細部省略)
要すれば、S3FullAccess(一例)という名前でロールを作成します。
では、作成したロールを EC2 インスタンスにアタッチします。
EC2 でインスタンスを選択し、以下を確認します。
IAMロール (空白)
設定
「アクション」-「インスタンスの設定」-「IAMロールの割り当て/置換」-「IAMロール」ー「作成したロール(S3FullAccess)を選択し適用」
試しに、ロールをアタッチしたインスタンス で以下を実行して、バケットを作成してみます。
$ aws s3 mb s3://<バケット名>
make_bucket: <バケット名>
成功しました。