pythonを使ってs3のファイルを扱う方法がわからなかったのでここに調査内容をまとめました。
メモ
- aws_access_key_id / aws_secret_access_key はマスク
- sample.txt は事前にtouchコマンドで作成
サンプルコード
アップロード
import boto3 s3 = boto3.resource( 's3', aws_access_key_id='xxxxxxxxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxx', ) bucket_name = 'sample_bucket_name' file_name = 'sample.txt' bucket = s3.Bucket(bucket_name) bucket.put_object( Key=file_name, Body=open(file_name, 'rb') )
or
import boto3 s3 = boto3.resource( 's3', aws_access_key_id='xxxxxxxxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxx', ) bucket_name = 'sample_bucket_name' file_name = 'sample.txt' bucket = s3.Bucket(bucket_name) bucket.upload_file(file_name, f"sample_path/{file_name}")
ファイル確認
import boto3 s3 = boto3.resource( 's3', aws_access_key_id='xxxxxxxxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxx', ) bucket_name = 'sample_bucket_name' bucket = s3.Bucket(bucket_name) objs = bucket.objects.all() for i,obj in enumerate(iter(objs)): print(f'{i}: {obj.key}')
ファイルダウンロード
import boto3 s3 = boto3.resource( 's3', aws_access_key_id='xxxxxxxxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxx', ) bucket_name = 'sample_bucket_name' bucket = s3.Bucket(bucket) file_name = 'sample.txt' bucket.download_file(file_name, file_name)
ファイル削除
import boto3 s3 = boto3.resource( 's3', aws_access_key_id='xxxxxxxxxxxxxxxxxxxxx', aws_secret_access_key='xxxxxxxxxxxxxxxxxxxxx', ) bucket_name = 'sample_bucket_name' file_name = 'sample.txt' s3.Object(bucket_name, file_name).delete()