PythonでBoto3を用いてAmazon S3バケットにファイルをアップロードする際に暗号化する

スポンサーリンク

PythonでBoto3を用いてAmazon S3バケットにファイルをアップロードする際に暗号化してみます。

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

■Python

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

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

Boto3を用いてAmazon S3バケットにファイルをアップロードする際に暗号化してみますが、その前にAmazon S3バケットを作成します。

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

作成する際に「デフォルトの暗号化」で「サーバー側の暗号化」を、今回は「無効にする」に選択し作成を行いました。

■アップロードするファイルを用意する

S3バケットを作成後、Amazon S3バケットにアップロードするファイルを用意します。

今回は「C:\Users\user_\test(フォルダパス)」内に「test.txt」というテキストファイルを用意しました。

■Boto3を用いてAmazon S3バケットにファイルをアップロードする

ファイルを用意しましたので、Boto3を用いてAmazon S3バケットにファイルをアップロードする際に暗号化するスクリプトを書いていきます。

■コード

import boto3

AWS_REGION ="us-east-2"

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

bucket_name = "s-test-0001"

upload_file = r"C:\Users\user_\test\test.txt"

object_name = "test.txt"

client.upload_file(upload_file,bucket_name,object_name,ExtraArgs={"ServerSideEncryption": "AES256"})

print("s3バケットへのアップロードが完了しました!")

コードの内容は「PythonでBoto3を用いてAmazon S3バケットにファイルをアップロードする」で公開されている内容とほぼ同じなのですが、client.upload_file()を用いる際に、括弧内に引数,パラメータとして「ExtraArgs={“ServerSideEncryption”: “AES256”}」を渡します。これでサーバー側に暗号化設定が「ASE256」に変更されます。

■実行・検証

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

実行してみると、「s3バケットへのアップロードが完了しました」と出力されました。これでファイルのアップロードは完了となります。

完了後、S3バケットを確認すると、「test.txt」というテキストファイルがアップロードされたことが確認できます。さらにこのファイルの「名前」をクリックします。

クリックすると、「オブジェクトの概要」などが表示され、ページの下の方に「サーバー側の暗号化設定」という項目があり、こちらを確認すると「デフォルトの暗号化」が「有効」になり、「サーバー側の暗号化」が「Amazon S3 マネージドキー (SSE-S3)」となっていることが確認できました。

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>Q20T13PT8GARR0BC</RequestId>
<HostId>E1ZIGP5u8FcanWGixhTvBuaYQnl582AtViuTKj7pJjsbhybj7OupakuNSi0ETGQWUiZImRZM3cI3VpvpIpV5EA==</HostId>
</Error>

確認後、実際に「オブジェクト URL」のURLをコピーし、Webブラウザのアドレスバーに貼り付けてアクセスしてみます。アクセスすると、ファイル内の情報が上記のようになっており、中身が確認できないようになっていました。

コメント

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