スポンサーリンク

[python] AWSのS3にboto3で転送するときに、MD5チェックサムを行う

pythonのスクリプトで、AWSのS3にboto3でファイルを転送するときに、MD5チェックをして転送するやり方をメモします。

 

boto3のインストール

pipコマンドでboto3をインストールします。

pip install boto3

 

ファイルの転送

putで転送するときに、

ContentMD5オプションに、チェックサム値を入れて破損を確認できます。

 

破損エラーが起きた場合は、ClientErrorが発生し、response[‘Error’][‘Code’]のBadDigestが入っています。

import boto3
from botocore.exceptions import ClientError

# バケット名
BUCKET_NAME = 'bucket'
# バケットのファイルの転送先
BUCKET_FILE_PATH = 'test.txt'

# S3へ接続
s3 = boto3.resource('s3')
# バケット取得
bucket = s3.Bucuket(BUCKET_NAME)
# オブジェクト取得(ファイルの転送先)
obj = bucket.Object(BUCKET_FILE_PATH)

# S3へ送るファイル
file = open('test.txt', 'rb')
# チェックサム値
checksum = 'EI39GNB02H974B0F8QLB'

try:
    # ContentMD5にチェックサム値入れて破損チェックを行う。
    response = obj.put(
        Body=file,
        ContentMD5=checksum,
    )
except ClientError as e:
    if e.response['Error']['Code'] == 'BadDigest':
        # ContentMD5のエラーコードはBadDigest
        print('breaked transfer file')

 

 

参考

Error Responses – Amazon Simple Storage Service