Python の boto3 から S3 へ「存在するファイルをアップロードする」サンプルはよく見かけるのですが、ファイルは生成せずに直接、オブジェクトをアップロードするサンプルは少ないように思えたので書いてみました。
オブジェクトを作成する (指定した名前で作成バージョン)
#!/usr/bin/env python """Create new object.""" import datetime import sys import boto3 ARGS = sys.argv if len(ARGS) != 3: print('Usage: python create_object.py [BUCKET] [KEY]') sys.exit(1) S3 = boto3.resource('s3') S3BUCKET = ARGS[1] KEY = ARGS[2] TIME = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S") S3.Object(S3BUCKET, KEY).put(Body=TIME) print(KEY + " created.")
以下のように実行します。
python create_object.py s3.example.com folder/file.txt
オブジェクトを作成する (オブジェクト名を時刻にするバージョン)
テスト時はファイル名も適当に、例えば時刻から生成すると便利な場合があると思います。 そのようなケース用に「時刻をオブジェクト名にする」バージョンも作成してみました。
#!/usr/bin/env python """Create new object.""" import datetime import sys import boto3 ARGS = sys.argv if len(ARGS) != 3: print('Usage: python create_object.py [BUCKET] [FOLDER]') sys.exit(1) S3 = boto3.resource('s3') S3BUCKET = ARGS[1] TIME = datetime.datetime.now().strftime('%Y-%m-%d_%H%M') KEY = ARGS[2] + '/' + TIME S3.Object(S3BUCKET, KEY).put(Body=TIME) print(KEY + " created.")
以下のように実行します。
python create_object.py s3.example.com folder