Python の boto3 でファイルを作らず、S3 上へオブジェクトを作成する
Python の boto3 から S3 へ「存在するファイルをアップロードする」サンプルはよく見かけるのですが、ファイルは生成せずに直接、オブジェクトをアップロードするサンプルは少ないように思えたので書いてみました。
オブジェクトを作成する (指定した名前で作成バージョン)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | #!/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
|
オブジェクトを作成する (オブジェクト名を時刻にするバージョン)
テスト時はファイル名も適当に、例えば時刻から生成すると便利な場合があると思います。 そのようなケース用に「時刻をオブジェクト名にする」バージョンも作成してみました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | #!/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
|