0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

[Cloudian #3] Python(boto3)で、オブジェクトストレージのバケットを新規作成してみる

はじめに

Cloudianは、AWSのS3完全互換のAPIを持ったオブジェクトストレージです。
前回は、Python(boto3)で、作成済みバケットをいろんなパターンで表示してみました。

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

4. まとめ

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

次回も、Pythonでオブジェクトストレージ/Cloudianをいろいろ操作していきたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?