
S3初心者向け『例 1: バケット所有者がユーザーにバケットのアクセス許可を付与』をやってみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
概要
大阪オフィスのちゃだいんです。
手を動かして学ぶために、公式ドキュメントのチュートリアルをやってみました。
今回は、Amazon S3です。内容は以下のものです。
例 1: バケット所有者がユーザーにバケットのアクセス許可を付与 - Amazon Simple Storage Service
この演習では、AWS アカウントがバケットを所有し、アカウントに IAM ユーザーが存在します。ユーザーはデフォルトでは何のアクセス許可も持ちません。ユーザーが何らかのタスクを実行するには、親アカウントがそのためのアクセス許可をユーザーに付与する必要があります。バケット所有者とユーザーが属する親アカウントは同じです。したがって、AWS アカウントは、バケットポリシー、ユーザーポリシー、またはその両方を使用して、バケットへのアクセス許可をユーザーに付与できます。一部のアクセス許可はバケットポリシーを使用し、他のアクセス許可はユーザーポリシーを使用して付与します。
前提条件
AWS CLIが使用できる環境で行ってます。
早速やってみた
1.S3バケット と IAMユーザー を作成する
- まずはS3バケットを作成します。

- 基本追加設定を入れずにシンプルなバケット190820testbucketを作成しました。
- 次に、IAMユーザーの
tutorialuserを作成します。

- アクセス許可の設定では、一旦何もせずに次に進めます。

- 作成前の確認画面では「このユーザーにはアクセス権限がありません」と表示されていてOKです。

- IAMユーザーが作成できました。

2.アクセス許可を与える
- ここでは、S3バケットにバケットポリシーを追加し、IAMユーザーにインラインポリシーを追加してアクセス許可を与えます。
-
まずは、S3バケットにバケットポリシーを付与します。
-
S3コンソールから見ると今はまだ空の状態です。

- ドキュメントに記載のものを一部変更してます。AWSアカウントはダミーで
123456789012、IAMユーザー名をtutorialuser、バケット名を190821testbucketにしています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/tutorialuser"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::190821testbucket"
]
},
{
"Sid": "statement2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/tutorialuser"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::190821testbucket/*"
]
}
]
}
- こんな感じで挿入できました。

- 次はIAMユーザーのインラインポリシーです。
-
ドキュメントに記載のものを一部変更してます。バケット名を
190821testbucketにしています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermissionForObjectOperations",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::190821testbucket/*"
]
}
]
}
- 登録するとこんな感じになりました。

- ポリシーの名前は
tutorialusers3accessと付けます。

3.アクセス許可をテストする
- 準備は整いましたのでテストしてみます。
-
まずは
~/.aws/credentialsの設定ファイルにtutorialuserのプロファイルを追加します。(***はダミーです)
[profile tutorialuser] aws_access_key_id = *********** aws_secret_access_key = *************** region = ap-northeast-1
- 次に、
s3api put-objectコマンドを実行して、画像ファイルがアップロードされるか確認します。 -
ちなみに対象の画像はカレーの画像です。ここ最近食べた中で一番辛かったです。

- CLIコマンドはこちらです。
$ aws s3api put-object --bucket 190821testbucket --key TooHotCurry.jpg --body TooHotCurry.jpg --profile tutorialuser --region ap-northeast-1
- すると、ちゃんと画像がアップロードされました。

感想
今回は、初心者向けの中でもかなり簡単な方のチュートリアルだったと思います。S3は奥が深いので、他のものも一通りやってみたいと感じました。
誰かのお役に立てば幸いです。それではまた、大阪オフィスのちゃだいんでした。






