はじめに
Cloudianは、AWSのS3完全互換のAPIを持ったオブジェクトストレージです。
前回は、AWS SDKのクレデンシャル設定をして、Python(boto3)で、とりあえずオブジェクトストレージにアクセスしてみました
今回は、Python(boto3)で、作成済みバケットをいろんなパターンで表示してみたいと思います。
作成済みバケットの表示 / list_buckets()
アクセスキーとシークレットキーで認証されたユーザーが所有する、全てのバケットの情報を返します。
戻り値は、Python の辞書(dict)型として返されます。
1. 加工せずに表示
以下の例では、list_buckets()を単純に呼び出して、全ての戻り値を表示しています。
import boto3
client = boto3.client(
's3',
endpoint_url='https://xxx.yyy.com'
)
# バケット一覧を取得
response = client.list_buckets()
print(response)
{'ResponseMetadata': {'RequestId': '9dad38b7-0e30-1dbc-a754-06bdfcde1d5e',
'HostId': '',
'HTTPStatusCode': 200,
'HTTPHeaders': {'date': 'Sun, 13 Dec 2020 21:58:07 GMT',
'x-amz-request-id': '9dad38b7-0e30-1dbc-a754-06bdfcde1d5e',
'content-type': 'application/xml;charset=UTF-8',
'content-length': '519',
'server': 'CloudianS3'},
'RetryAttempts': 0},
'Buckets': [{'Name': 'bucket1',
'CreationDate': datetime.datetime(2020, 12, 1, 3, 2, 25, 876000, tzinfo=tzutc())},
{'Name': 'pythonbucket2',
'CreationDate': datetime.datetime(2020, 12, 13, 19, 51, 20, 267000, tzinfo=tzutc())},
{'Name': 'pythonbucket3',
'CreationDate': datetime.datetime(2020, 12, 13, 21, 41, 8, 495000, tzinfo=tzutc())}],
'Owner': {'DisplayName': '', 'ID': '27b8e84694ca0b529d5379049564ebe1'}}
list_buckets()からは非常に多くの情報が返されるため、以降の例では出力を絞り込んで 表示させていきます。
2. バケットに関する情報を絞り込んで表示(各バケット名と作成日時)
list_buckets()で返された辞書型の戻り値から、辞書キー「Buckets」の値を抽出し、さらに「Name」(バケット名)と「CreationDate」(作成日付)に絞り込んで表示させています。
import boto3
client = boto3.client(
's3',
endpoint_url='https://xxx.yyy.com'
)
# バケット一覧を取得
for bucket in client.list_buckets()['Buckets']:
print(bucket['Name'], bucket['CreationDate'])
bucket1 2020-12-01 03:02:25.876000+00:00
pythonbucket2 2020-12-13 19:51:20.267000+00:00
pythonbucket3 2020-12-13 21:41:08.495000+00:00
list_buckets()は辞書(dict)型で作成済みバケット に関する情報を戻しますので、プログラムで必要となるデータのみを Python プログラムで抽出することができます。
string 型のバケット名と、datetime 型の作成日付のみを抽出してます
3. バケットに関する情報に絞り込んで表示し、作成日時を整形(各バケット名と作成日時)
バケット名とその作成日付に絞り込み、表示される作成日付を整形しています。
import boto3
client = boto3.client(
's3',
endpoint_url='https://xxx.yyy.com'
)
# バケット一覧を取得
for bucket in client.list_buckets()['Buckets']:
print(bucket['Name'],bucket['CreationDate'].strftime("%Y/%m/%d %H:%M:%S"))
bucket1 2020/12/01 03:02:25
pythonbucket2 2020/12/13 19:51:20
pythonbucket3 2020/12/13 21:41:08
datetime 型で戻される作成日付(CreationDate)を、Python 標準モジュールに含まれる strftime()を使って見やすいように整形して出力しています。
4. バケットに関する情報を見やすく表示(各バケット名と作成日時)
出力されるバケット作成日付に+9時間して、日本時間で表示しています。
import boto3
# 追加モジュール
import datetime
client = boto3.client(
's3',
endpoint_url='https://xxx.yyy.com'
)
# バケット一覧を取得
for bucket in client.list_buckets()['Buckets']:
print('%s (%s)' % (bucket['Name'], (bucket['CreationDate'] + datetime.timedelta(hours=9)).strftime("%Y/%m/%d %H:%M:%S")))
bucket1 (2020/12/01 12:02:25)
pythonbucket2 (2020/12/14 04:51:20)
pythonbucket3 (2020/12/14 06:41:08)
5. まとめ
Python(boto3)で、作成済みバケットをいろんなパターンで表示してみました。
次回も、Pythonでオブジェクトストレージ/Cloudianをいろいろ操作していきたいと思います。