Python の boto3 で S3 の操作を行うサンプル
Python から boto3 を使って S3 上のファイルを操作するサンプルを書いたのでメモしておきます。
表示
Bucket を一覧表示する
| #!/usr/bin/env python
"""List existing buckets."""
import boto3
S3 = boto3.client('s3')
RESPONSE = S3.list_buckets()
for bucket in RESPONSE['Buckets']:
print(f'{bucket["Name"]}')
|
Bucket 内のオブジェクトを一覧表示する (list_objects_v2()
バージョン)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | #!/usr/bin/env python
"""List objects."""
import sys
import boto3
ARGS = sys.argv
if len(ARGS) != 3:
print('Usage: python list_objects.py [BUCKET] [FOLDER]')
sys.exit(1)
S3 = boto3.resource('s3')
BUCKET = S3.Bucket(ARGS[1])
FOLDER = ARGS[2]
RESPONSE = BUCKET.meta.client.list_objects_v2(Bucket=BUCKET.name, Prefix=FOLDER)
for obj in RESPONSE['Contents']:
print(f'{obj["Key"]}')
|
Bucket 内のオブジェクトを一覧表示する (objects.all()
バージョン)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | #!/usr/bin/env python
"""List objects."""
import sys
import boto3
ARGS = sys.argv
if len(ARGS) != 2:
print('Usage: python list_objects.py [BUCKET]')
sys.exit(1)
S3 = boto3.resource('s3')
S3BUCKET = S3.Bucket(ARGS[1])
KEYS = [obj.key for obj in S3BUCKET.objects.all()]
for key in KEYS:
print(key)
|
Bucket 内のオブジェクトを一覧表示する (正規表現指定可能バージョン))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | #!/usr/bin/env python
"""List objects."""
import sys
import boto3
import re
ARGS = sys.argv
if len(ARGS) > 3:
print('Usage: python list_objects.py [BUCKET] [PATTERN]')
sys.exit(1)
S3 = boto3.resource('s3')
S3BUCKET = S3.Bucket(ARGS[1])
if(len(ARGS) == 2):
PATTERN = '.*'
else:
PATTERN = ARGS[2]
KEYS = [obj.key for obj in S3BUCKET.objects.all()]
for key in KEYS:
if re.compile(PATTERN).search(key):
print(key)
|
削除
オブジェクトを削除する (指定 1 オブジェクト削除バージョン)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | #!/usr/bin/env python
"""Delete object."""
import sys
import boto3
ARGS = sys.argv
if len(ARGS) != 3:
print('Usage: python delete_object.py [BUCKET] [KEY]')
sys.exit(1)
S3 = boto3.client('s3')
S3BUCKET = ARGS[1]
KEY = ARGS[2]
S3.delete_object(Bucket=S3BUCKET, Key=KEY)
print(key + " deleted.")
|
オブジェクトを削除する (正規表現指定可能バージョン))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | #!/usr/bin/env python
"""Delete objects."""
import sys
import boto3
import re
ARGS = sys.argv
if len(ARGS) != 3:
print('Usage: python delete_objects.py [BUCKET] [PATTERN]')
sys.exit(1)
S3 = boto3.resource('s3')
S3CLIENT = boto3.client('s3')
S3BUCKET = S3.Bucket(ARGS[1])
PATTERN = ARGS[2]
KEYS = [obj.key for obj in S3BUCKET.objects.all()]
for key in KEYS:
if re.compile(PATTERN).search(key):
S3CLIENT.delete_object(Bucket=S3BUCKET.name, Key=key)
print(key + " deleted.")
|