2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【S3】PythonをつかってS3でCRUDする【Python】

Last updated at Posted at 2020-07-20

#アクセスするのに必要なキーを取得する
1.AWSのセキュリティ認証情報ページへ移動。
2.アクセス管理タグの「ユーザー」をクリック
3.「ユーザーを追加」を押して、ユーザー名を入力し、プログラムによるアクセスにチェック。
グループが無ければ作成し、AmazonS3FullAccessを選択する。
4.タグの追加はそのまま何も入力せずに次のステップへ
5.「ユーザー作成」で作成完了。CSVダウンロードやアクセスキーIDとシークレットアクセスキーのメモをしておく。

#boto3のインストール

pip install boto3

#CRUD
ここで利用されるaccesskey及びsecretkeyは、環境変数によって指定してください。
誰かに知られると大変なことになります。
regionは利用している地域名です。例)オハイオならus-east-2
##Create(ファイルの保存)

def create_img_s3(path, img):#画像の保存
    s3 = boto3.client('s3', aws_access_key_id=accesskey, aws_secret_access_key=secretkey, region_name=region)
    img.thumbnail((900, 1200), Image.ANTIALIAS)
    out = BytesIO()
    img.save(out, "PNG")

    s3.put_object(Bucket=bucket_name, Key=path, Body=out.getvalue())

    url = "https://"+bucket_name+".s3-"+region+".amazonaws.com/"+path
    return url

def create_csv_s3(path, dataframe):#DataFrameからCSVに変換し、CSV保存
    out2 = StringIO()
    dataframe.to_csv(out2, encoding='utf_8_sig')
    s3 = boto3.client('s3', aws_access_key_id=accesskey, aws_secret_access_key=secretkey, region_name=region)
    s3.put_object(Bucket=bucket_name, Key=path, Body=out2.getvalue().encode("utf-8_sig"))

    url = "https://" + bucket_name + ".s3-" + region + ".amazonaws.com/" + path
    return url

##Read(ファイルの読み込み)

def readFile_s3(path):
    url = "https://" + bucket_name + ".s3-" + region + ".amazonaws.com/" + path
    return url

def readDir_s3(dirpath):#特定のフォルダにあるデータをリストで取得する
    s3 = boto3.client('s3', aws_access_key_id=accesskey, aws_secret_access_key=secretkey, region_name=region)
    res = s3.list_objects_v2(Bucket=bucket_name, Prefix=dirpath, Delimiter='/')
    urls = []
    for data in res["Contents"]:
        data_url = data["Key"]
        if dirpath != data_url:
            url = "https://" + bucket_name + ".s3-" + region + ".amazonaws.com/" + data_url
            urls.append(url)

    return urls
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?