ディレクトリ構成
s3で以下のようにファイルが用意されている前提。
line/
└── diagonal/
└── hoge.csv
同バケット内でファイルをフォルダ間でコピー
line/diagonal/hoge.csv
を新たにline
フォルダ下にstraight
フォルダを作成しそこにコピー
import os
import boto3
BUCKET_NAME = 'your_bucket' # バケット名
COPY_FROM = 'line/diagonal' # コピー元ディレクトリパス
COPY_TO = 'line/straight' # コピー先ディレクトリパス]
FILE_NAME = 'hoge.csv' # ファイル名
s3 = boto3.client('s3')
copy_from_path = os.path.join(COPY_FROM, FILE_NAME)
copy_to_path = os.path.join(COPY_TO, FILE_NAME)
s3.copy_object(Bucket=BUCKET_NAME, Key=copy_to_path, CopySource={'Bucket': BUCKET_NAME, 'Key': COPY_FROM_PATH})
実行するとline
フォルダ下にstraight
フォルダが作成されそこにhoge.csv
がコピーされる。
line/
├── diagonal/
│ └── hoge.csv
└── straight/
└── hoge.csv
ディレクトリからファイルを削除
diagonal
フォルダからhoge.csv
を削除する。
import os
import boto3
BUCKET_NAME = 'your_bucket' # バケット名
DELETE_DIR_PATH = 'line/diagonal' # コピー元ディレクトリパス
FILE_NAME = 'hoge.csv' # ファイル名
s3 = boto3.client('s3')
delete_file_path = os.path.join(DELETE_DIR_PATH, FILE_NAME)
s3.delete_object(Bucket=BUCKET_NAME, Key=delete_file_path)
実行するとdiagonal
フォルダ下のhoge.csv
がcsvが削除される。
line/
├── diagonal/
│
└── straight/
└── hoge.csv
S3からローカルにダウンロード
import os
import boto3
BUCKET_NAME = 'your_bucket' # バケット名
S3_PATH = 'line/straight'
LOCAL_PATH = 'hogehoge'
FILE_NAME = 'hoge.csv'
s3_resource = boto3.resource('s3')
bucket = s3_resource.Bucket(BUCKET_NAME)
downlod_from_path = os.path.join(S3_PATH, FILE_NAME)
download_to_path = os.path.join(LOCAL_PATH, FILE_NAME)
bucket.download_file(downlod_from_path, download_to_path)
PandasデータフレームをcsvとしてS3に保存
import os
import pandas as pd
from io import StringIO
import boto3
S3_PATH = 'line/diagonal'
FILE_NAME = 'diagonal.csv'
df = pd.DataFrame([[1, 10], [2, 20], [3, 30]])
upload_path = os.path.join(S3_PATH, FILE_NAME)
csv_buffer = StringIO()
df.to_csv(csv_buffer)
s3_resource = boto3.resource('s3')
s3_resource.Object(S3_BUCKET, upload_path.put(Body=csv_buffer.getvalue())
実行するとdiagonal
フォルダ下にdiagonl.csv
が作成される
line/
├── diagonal/
│ └── diagonal.csv
└── straight/
└── hoge.csv