python で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')