この記事は公開されてから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は奥が深いので、他のものも一通りやってみたいと感じました。
誰かのお役に立てば幸いです。それではまた、大阪オフィスのちゃだいんでした。