Chapter 04

バケットを新規作成してみる / create_bucket()

Akane
Akane
2021.02.21に更新

Cloudianは、AWSのS3完全互換のAPIを持ったオブジェクトストレージです。

今回は、Python(boto3)で、オブジェクトストレージのバケットを新規作成してみたいと思います。

バケットの新規作成 / create_bucket()

オブジェクトストレージ/Cloudianにバケットを新規作成します。

1. シンプルなバケット作成例(属性は全てデフォルト)

以下の例では、create_bucket() の引数に作成するバケット名( Bucket=’pythonbucket1’ )のみを設定し、属性値は全てデフォルトを使用してバケットを作成しています。

test1.py
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’ )を設定して、バケットを作成しています。

test2.py
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’} )を設定してバケットを作成しています。

test3.py
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()を使って見やすいように整形して出力しています。

まとめ

Python(boto3)で、いろんなパターンでバケットを新規作成してみました。