0
0

S3のバケットのリストを返す方法

Posted at

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: バケットの名前。
    • Owner: バケットの所有者。
      • DisplayName: 所有者の表示名。
      • ID: 所有者のID。

レスポンス例

以下は、リクエストが成功した場合のサンプルレスポンスです。

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0