アラサー転職組の新米エンジニア日記

2017年に未経験からエンジニアになったアラサーです。

python でS3にファイルを転送

pythonの学習の一環としてAWS S3をいじるコード。

S3の任意のバケットスクリプト実行日の日付のフォルダが存在することを確認し、
存在すればそのフォルダの直下にファイルを転送、
存在しなければフォルダを作成したのちそのフォルダにファイルを転送する。
S3にはそもそもフォルダという概念はなくプレフィックスを使用した論理的な階層のためあえてフォルダを準備するという処理はせずファイル名にフォルダ名を連ねる形のプレフィックスで良かったかも

import boto3
import datetime

s3_client = boto3.client('s3',
           aws_access_key_id='XXXXXXXXXXXXXX',
              aws_secret_access_key='XXXXXXXXXXXXXXXXX',
                 region_name='ap-northeast-1')


now = datetime.datetime.now()
dt_now = now.strftime('%Y%m%d')
date_time = str(dt_now) + '/'
bucket_name = 'python-test-XXXX'

result = s3_client.list_objects(Bucket=bucket_name, Prefix=date_time)

if "Contents" in result:
    exists = True
    print('there is a directory')
    print('upload local files')
    s3_client.upload_file('/home/vagrant/test-upload.txt', bucket_name , date_time+ 'test-upload.txt')
else:
    exists = False
    print('nothing a directory')
    print('making directory before transfer local files')
    s3_client.put_object(Bucket=bucket_name, Key=date_time)
    s3_client.upload_file('/home/vagrant/test-upload.txt', bucket_name , date_time + 'test-upload.txt')