バケット所有者とユーザーの親アカウントが同じであるため、 AWS アカウント は、
バケットポリシー、ユーザーポリシー、またはその両方を使用してユーザーにアクセス許可を付与できます。
この例では、両方を使用します。
オブジェクトの所有者も同じアカウントである場合は、
バケット所有者はバケットポリシー (または IAM ポリシー) でオブジェクトのアクセス権を付与することもできます。
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 2. S3 バケットを作成する
aws s3 mb s3://bucket123
aws s3 ls
-- 3. IAMユーザ(testiamuser)を作成する
aws iam create-user --user-name testiamuser
aws iam create-access-key --user-name testiamuser
-- 4. バケットポリシーでtestiamuserへGetアクセス許可を付与
vim a.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999999:user/testiamuser"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket123"
]
},
{
"Sid": "statement2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999999:user/testiamuser"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucket123/*"
]
}
]
}
aws s3api put-bucket-policy \
--bucket bucket123 \
--policy file://a.json
-- 5. IAMポリシーでtestiamuserへPutアクセス許可を付与
-- 5.1 IAMポリシー作成
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermissionForObjectOperations",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bucket123/*"
]
}
]
}
aws iam create-policy \
--policy-name policy01 \
--policy-document file://policy01.json
-- 5.2 IAMポリシーをIAMユーザにアタッチ
aws iam attach-user-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01 \
--user-name testiamuser
-- 6. 動作確認 [testiamuserで実施]
echo test01 > test01.txt
aws s3api put-object --bucket bucket123 --key test01.txt --body test01.txt
aws s3api get-object --bucket bucket123 --key test01.txt test11.txt
-- 7. クリーンアップ
-- IAMユーザ一覧
aws iam list-users
-- IAMユーザ削除
aws iam detach-user-policy \
--user-name testiamuser \
--policy-arn arn:aws:iam::999999999999:policy/policy01
aws iam delete-access-key \
--user-name testiamuser \
--access-key-id XXXXXXXXXXXXXXXXXXXX
aws iam delete-user --user-name testiamuser
-- IAMポリシーの一覧
aws iam list-policies | grep policy01
-- IAMポリシーの削除
aws iam delete-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01
aws s3 rb s3://bucket123 --force