PythonでBoto3を用いて作成したAmazon S3バケットの作成する

PythonでBoto3を用いて作成したAmazon S3バケットの作成してみます。

Amazon S3(Amazon Simple Storage Service)とは、Amazon Web Services(AWS)が提供するデータを格納・管理できるオブジェクトストレージを提供しているサービスです。Amazon S3には、テキストファイル、オーディオファイル、ビデオファイル、画像などの好きな種類のファイルを保存できます。

なお、バケットとは、Amazon S3に保存されるオブジェクトのコンテナを指します。バケットにはオブジェクトをいくつでも保存することが可能で、アカウントにはバケットを100個まで保存可能。

ちなみに、今回はBoto3を用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。また、Boto3を用いる場合には、クレデンシャル(資格情報)などの設定が必要になりますので、こちらを参考にしていただければと思います。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■Boto3を用いて作成したAmazon S3バケットの作成する

では、早速Boto3を用いて作成したAmazon S3バケットの作成するスクリプトを書いていきます。

■コード

import boto3

AWS_REGION ="us-east-2"

client = boto3.client('s3',region_name=AWS_REGION)

bucket_name = "test001aqksi"

location = {'LocationConstraint':AWS_REGION}

response = client.create_bucket(Bucket=bucket_name, CreateBucketConfiguration=location)

print("Amazon S3のバケットの作成は完了しました!")

importでboto3を呼び出します。その後、AWS_REGIONという変数を定義し、その中で、特定のAWSリージョンを指定し格納します。今回は「us-east-2」とします。Amazon S3サービスでの作業中に様々な例外を回避します。

格納後、clientという変数を定義し、その中でboto3.client()を用います。括弧内には第1の引数,パラメータとしてs3を渡します。その後、第2の引数,パラメータとして「region_name=AWS_REGION」を渡します。これでクライアントが作成されました。

その後、bucket_nameという変数を定義し、その中でAmazon S3で作成するバケットの名前を指定します。今回はtest001とします。

次にlocationという変数を定義し、その中で「’LocationConstraint’:AWS_REGION」とし、バケットが存在するリージョンを指定します。

最後に、responseという変数を定義し、その中でclient.create_bucket()を用います。括弧内には第1の引数,パラメータとして「Bucket(作成するバケット)=bucket_name」を渡します。その後、第2の引数,パラメータとして「CreateBucketConfiguration(作成するバケットの構成)=location」を渡します。これでAmazon S3バケットが作成されます。

作成後、print()で作成の完了を伝えるために文字列を出力させます。

■実行・検証

このスクリプトを「a_s3_bucket.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

Traceback (most recent call last):
File "a_s3_bucket.py", line 11, in <module>
response = client.create_bucket(Bucket=bucket_name, CreateBucketConfiguration=location)
File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\botocore\client.py", line 401, in _api_call
return self._make_api_call(operation_name, kwargs)
File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\botocore\client.py", line 731, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.BucketAlreadyExists: An error occurred (BucketAlreadyExists) when calling the CreateBucket operation: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.

実行してみると「botocore.errorfactory.BucketAlreadyExists」というエラーが出力されました。内容を確認してみると、「バケット名前空間はシステムのすべてのユーザーによって共有されています。別の名前を選択して、もう一度やり直してください。」というもので、Amazon S3(Simple Storage Service)で、すでに使用されている名前でバケットの名前を指定したので、作成されないことが原因だと判明しました。そこでスクリプト内のバケットの名前を「test001」から「kobayashi-test-cloud-a」という名前に変更してみます。バケットの名前付けに関しては、こちらを参考にしてください。

変更後、再度スクリプトを実行してみると、「バケットの作成は完了しました」と出力されました。

出力後、念の為に、AWSにログインし、「Amazon S3」の左側メニューから「バケット」をクリックしてみます。すると、今回作成したバケットが表示されていることが確認できました。

コメント

タイトルとURLをコピーしました