Resourceで指定するリソースの種類はActionごとに決まっていて、s3:GetObject、s3:PutObject、s3:DeleteObject はオブジェクトですが、s3:ListBucket はバケットなのです。従って、s3:ListBucket だけResourceは arn:aws:s3:::BUCKET のようにバケット単位での指定が必要です。ここにプレフィックスを書くことはできません。
ListBuckets
は、Amazon S3 において、認証されたリクエスト送信者が所有するすべてのバケットのリストを返す操作です。この操作を使用するには、s3:ListAllMyBuckets
権限が必要です。
以下に ListBuckets
のリクエストとレスポンスの詳細について説明します。
リクエスト構文
HTTP リクエスト
GET / HTTP/1.1
Host: s3.amazonaws.com
- URI パラメータ: なし
- リクエストボディ: なし
レスポンス構文
HTTP レスポンス
HTTP/1.1 200
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult>
<Buckets>
<Bucket>
<CreationDate>timestamp</CreationDate>
<Name>string</Name>
</Bucket>
</Buckets>
<Owner>
<DisplayName>string</DisplayName>
<ID>string</ID>
</Owner>
</ListAllMyBucketsResult>
-
ListAllMyBucketsResult: ルートレベルタグで、以下の要素を含みます。
-
Buckets: リクエスト送信者が所有するバケットのリスト。
Bucket
データ型の配列。-
Bucket: 各バケットの情報。
- CreationDate: バケットの作成日時(タイムスタンプ)。
- Name: バケットの名前。
-
Bucket: 各バケットの情報。
-
Owner: バケットの所有者。
- DisplayName: 所有者の表示名。
- ID: 所有者のID。
-
Buckets: リクエスト送信者が所有するバケットのリスト。
レスポンス例
以下は、リクエストが成功した場合のサンプルレスポンスです。
HTTP/1.1 200 OK
<ListAllMyBucketsResult>
<Buckets>
<Bucket>
<CreationDate>2019-12-11T23:32:47+00:00</CreationDate>
<Name>DOC-EXAMPLE-BUCKET</Name>
</Bucket>
<Bucket>
<CreationDate>2019-11-10T23:32:13+00:00</CreationDate>
<Name>DOC-EXAMPLE-BUCKET2</Name>
</Bucket>
</Buckets>
<Owner>
<DisplayName>Account+Name</DisplayName>
<ID>AIDACKCEVSQ6C2EXAMPLE</ID>
</Owner>
</ListAllMyBucketsResult>
使用例
AWS SDK を使用して ListBuckets
操作を実行することで、プログラム内で S3 バケットのリストを取得できます。例えば、Python で Boto3 ライブラリを使用する場合のコード例は以下の通りです。
import boto3
# クライアントの作成
s3_client = boto3.client('s3')
# バケットのリストを取得
response = s3_client.list_buckets()
# レスポンスの表示
for bucket in response['Buckets']:
print(f'Bucket Name: {bucket["Name"]}, Creation Date: {bucket["CreationDate"]}')
このコードを実行すると、認証されたユーザーが所有するすべてのバケット名と作成日時が表示されます。
参考資料
詳細は公式ドキュメントを参照してください: AWS S3 ListBuckets API
この API の利用方法については、以下の各言語の AWS SDK ドキュメントも参照できます。
- AWS Command Line Interface
- AWS SDK for .NET
- AWS SDK for C++
- AWS SDK for Go v2
- AWS SDK for Java V2
- AWS SDK for JavaScript V3
- AWS SDK for PHP V3
- AWS SDK for Python
- AWS SDK for Ruby V3