S3にオブジェクトとメタデータをPythonで保存

Pythonのboto3を使って、S3にオブジェクトとユーザ定義のメタデータを保存するサンプルコードです。

import boto3

# default以外のprofileを使う場合はここで指定
profile = "default"

session = boto3.session.Session(profile_name = profile)
client = session.client("s3")

s3_bucket = "example"
s3_key = "sample.txt"

meta_aaa = "AAA"
meta_bbb = "BBB"

client.put_object(
    Bucket = s3_bucket,
    Key = s3_key,
    Body = "Hello",
    Metadata = {
        "aaa": meta_aaa,
        "bbb": meta_bbb,
    },
)

このPythonスクリプトを実行するとS3に1つオブジェクトが保存されて、それにメタデータが付与されます。

$ python store_to_s3.py

awscliを使って付与されたメタデータを確認できます。

$ aws s3api head-object --bucket example --key sample.txt
{
    "AcceptRanges": "bytes",
    "Expiration": "expiry-date=\"Sun, 13 Dec 2020 00:00:00 GMT\", rule-id=\"trash old files\"",
    "LastModified": "Sat, 07 Nov 2020 12:48:18 GMT",
    "ContentLength": 5,
    "ETag": "\"8b1a9953c4611296a827abf8c47804d7\"",
    "ContentType": "binary/octet-stream",
    "Metadata": {
        "bbb": "BBB",
        "aaa": "AAA"
    }
}

バージョン情報

$ pip list | grep boto 
boto3                   1.14.63
botocore                1.17.63