はじめに
Cloudianは、AWSのS3完全互換のAPIを持ったオブジェクトストレージです。
前回は、Python(boto3)で、作成済みバケットをいろんなパターンで表示してみました。
今回は、Python(boto3)で、オブジェクトストレージのバケットを新規作成してみたいと思います。
バケットの新規作成 / create_bucket()
オブジェクトストレージ/Cloudianにバケットを新規作成します。
1. シンプルなバケット作成例(属性は全てデフォルト)
以下の例では、create_bucket() の引数に作成するバケット名( Bucket=’pythonbucket1’ )のみを設定し、属性値は全てデフォルトを使用してバケットを作成しています。
import boto3
client = boto3.client(
's3',
endpoint_url='https://xxx.yyy.com'
)
# バケットの新規作成
client.create_bucket(Bucket='pythonbucket1')
{'ResponseMetadata': {'RequestId': '9dad4484-0e30-1dbc-a754-06bdfcde1d5e',
'HostId': '3d5c05376530a2eb49e3e90576f83c5b',
'HTTPStatusCode': 200,
'HTTPHeaders': {'date': 'Mon, 14 Dec 2020 01:51:29 GMT',
'x-amz-request-id': '9dad4484-0e30-1dbc-a754-06bdfcde1d5e',
'location': 'http://pythonbucket1.s3-region1.admin-tech.tokyo',
'x-amz-id-2': '3d5c05376530a2eb49e3e90576f83c5b',
'content-length': '0',
'server': 'CloudianS3'},
'RetryAttempts': 0},
'Location': 'http://pythonbucket1.s3-region1.admin-tech.tokyo'}
list_buckets()からは非常に多くの情報が返されるため、以降の例では出力を絞り込んで 表示させていきます。
2. 属性を指定したバケット作成例①
以下の例では 、create_bucket() の引数に作成するバケット名 ( Bucket=’pythonbucket1’ )とそのバケットの ACL( ACL=’public-read’ )を設定して、バケットを作成しています。
import boto3
client = boto3.client(
's3',
endpoint_url='https://xxx.yyy.com'
)
# バケットの新規作成
client.create_bucket(
ACL='public-read',
Bucket='pythonbucket1'
)
{'ResponseMetadata': {'RequestId': '9dad4487-0e30-1dbc-a754-06bdfcde1d5e',
'HostId': '3d5c05376530a2eb49e3e90576f83c5b',
'HTTPStatusCode': 200,
'HTTPHeaders': {'date': 'Mon, 14 Dec 2020 01:51:30 GMT',
'x-amz-request-id': '9dad4487-0e30-1dbc-a754-06bdfcde1d5e',
'location': 'http://pythonbucket1.s3-region1.admin-tech.tokyo',
'x-amz-id-2': '3d5c05376530a2eb49e3e90576f83c5b',
'content-length': '0',
'server': 'CloudianS3'},
'RetryAttempts': 0},
'Location': 'http://pythonbucket1.s3-region1.admin-tech.tokyo'}
3. 属性を指定したバケット作成例②
以下の例では、create_bucket() の引数に作成するバケット名( Bucket=’bucket2’ )とバケットのACL( ACL=’private’ )、およびロケーションコンストレイント ( CreateBucketConfiguration={‘LocationConstraint’: ‘region1’} )を設定してバケットを作成しています。
import boto3
client = boto3.client(
's3',
endpoint_url='https://xxx.yyy.com'
)
# バケットの新規作成
client.create_bucket(
ACL='private',
Bucket='pythonbucket1',
CreateBucketConfiguration={
'LocationConstraint': 'region1'
}
)
{'ResponseMetadata': {'RequestId': '9dad448a-0e30-1dbc-a754-06bdfcde1d5e',
'HostId': '3d5c05376530a2eb49e3e90576f83c5b',
'HTTPStatusCode': 200,
'HTTPHeaders': {'date': 'Mon, 14 Dec 2020 01:51:31 GMT',
'x-amz-request-id': '9dad448a-0e30-1dbc-a754-06bdfcde1d5e',
'location': 'http://pythonbucket1.s3-region1.admin-tech.tokyo',
'x-amz-id-2': '3d5c05376530a2eb49e3e90576f83c5b',
'content-length': '0',
'server': 'CloudianS3'},
'RetryAttempts': 0},
'Location': 'http://pythonbucket1.s3-region1.admin-tech.tokyo'}
datetime 型で戻される作成日付(CreationDate)を、Python 標準モジュールに含まれる strftime()を使って見やすいように整形して出力しています。
4. まとめ
Python(boto3)で、いろんなパターンでバケットを新規作成してみました。
次回も、Pythonでオブジェクトストレージ/Cloudianをいろいろ操作していきたいと思います。