Python(Boto3)APIを用いてS3バケットにデータを書き込む

スポンサーリンク

Python(Boto3)APIを用いてS3バケットにデータを書き込んでみます。

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

■Python

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

■Amazon S3バケットを作成する

Python(Boto3)APIを用いてS3バケットにデータを書き込んでみますが、その前にAmazon S3バケットを作成します。

今回は「s3-test-x01」という名前のS3バケットを作成しました。

■Boto3,APIを用いてS3バケットにデータを書き込む

S3バケットが用意できましたので、Boto3,APIを用いてS3バケットにデータを書き込むスクリプトを書いていきます。

■コード

import boto3
import json

AWS_REGION ="us-east-2"

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

data = {"名前":"田中テスト太郎"}
data = json.dumps(data).encode('utf-8')

responce = client.put_object(Body=data,Bucket="s3-test-x01",Key='new_file')

print(responce)
print("S3バケットへのデータの書き込みが完了しました")

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

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

クライアントを作成後、dataという変数を定義し、その中でS3バケットに書き込むデータを格納します。今回は波括弧”{ }”などを用いてJSON形式のデータとします。

このデータをjson.dump()を用います。括弧内には引数,パラメータとしてdata変数を渡して辞書をJSONファイルとして保存します。保存する際にencode()を用います。括弧内には引数,パラメータとして「utf-8」を渡しutf-8でエンコードします。

エンコードし保存後、responceという変数を定義し、その中でclient.put_object()を用います。括弧内には、第1の引数,パラメータ(Body=)してオブジェクトデータを渡します。今回はdata変数となります。第2の引数,パラメータ(Bucket=)してPutアクションが開始されたバケット名を渡します。今回は作成した「s3-test-x01」となります。第3の引数,パラメータ(Key=)してPutアクションが開始されたオブジェクトキーを渡します。今回は「new_file」とします。これでオブジェクトがS3バケットに追加されます。なお、追加する際には、S3バケットに対する書き込み権限が必要となります。

最後にprint()を用いてresponce変数内の情報を出力させます。また「S3バケットへのデータの書き込みが完了しました」という文字列を出力させます。

■実行・検証

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

{'ResponseMetadata': {'RequestId': '**********', 'HostId': '**********', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amz-id-2': '**********', 'x-amz-request-id': '**********', 'date': 'Fri, 24 Jun 2022 03:26:33 GMT', 'etag': '"**********"', 'server': 'AmazonS3', 'content-length': '0'}, 'RetryAttempts': 1}, 'ETag': '"**********"'}

実行してみると「ResponseMetadata」と「S3バケットへのデータの書き込みが完了しました」という文字列が出力されました。これでS3バケットへのデータの書き込みは完了となります。

完了後、Webブラウザを起動し、Amazonの「S3 Management Console」を表示し、「バケット」から、今回作成したバケット「s3-test-x01」を選択します。選択すると、オブジェクトとして「new_file」が追加されていることが確認できます。

確認後、さらに表示されている「new_file」を選択します。クリックすると、「オブジェクトの概要」などが表示されます。ここで「new_file」の中身を確認してみますので、画面右上側の「オブジェクトアクション」をクリックします。

クリックすると、プルダウンメニューが表示されますので、このメニューから「S3 Selectを使用したクエリ」をクリックします。

クリックすると、「S3 Select を使用したクエリ」ページが表示されますので、「入力設定」の「形式」を「JSON」に選択します。選択後、「JSON コンテンツタイプ」を「行」に選択します。選択後、「圧縮」は「なし」に選択します。

選択後、ページの下に移動し「出力設定」で「形式」を「JSON」に選択します。選択後、「SQL クエリ」の「SQL クエリの実行」ボタンをクリックします。

クリックすると、「クエリ結果」に「ステータス」が出力されます。出力された結果を確認すると、今回書き込んだデータが確認できました。

コメント

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