原因と対処

IAM で S3 を操作できるロールを Lambda に付与しているのに、いざ Lambda を実行すると lambda AccessDenied: Access Denied となる場合について。

自分のケースの原因は、「S3 のパブリックアクセスブロックが On」だった。

パブリックアクセスブロックを Off にしたら、Lambda が正常に実行できるようになった。

コメント・シェア

はじめに

AWS S3 バケットをリネームする方法を調べた。

TL;DR

  • リネームはできないので、「新規バケット作成」&「ファイルコピー」で実現する
  • AWS CLIaws s3 sync s3://my-old-bucket s3://my-new-bucket で内容コピー
  • アプリケーションなどでバケットの参照先の変更漏れがないように注意
続きを読む

はじめに

AWS S3 Bucket 内のオブジェクトの ACL(アクセス権限) を一括で変更する方法を調べた。

S3のパーミッションの設定を一括変更する | ハックノート の通り

TL;DR

  • 事前に aws コマンド(AWS CLI) を設定
  • aws s3 ls --recursive s3://my-bucket/ でバケット内のオブジェクトを再帰的に取得
  • aws s3api put-object-acl --acl private でパブリックアクセス不可に設定
  • awk, xargs と組み合わせて、1件ずつ処理を行う
続きを読む

はじめに

docker-lambda + sharp で画像変換する AWS Lambda Function 作ったのでそのメモ。

TL;DR

続きを読む

はじめに

AWS lambda で S3 の画像を圧縮する チュートリアル を試したので、それに関するメモ。

TL;DR

  • チュートリアル 通りにやれば OK
  • 事前に aws-cli のセットアップをしておく必要あり
    • インストール: pip install awscli
    • 設定: aws configure
  • 調子に乗ってランタイムを Node.js 8.10 から Node.js 10.x に変えると動かないので注意
続きを読む

はじめに

Python boto3 で AWS S3 を操作する では、ローカルに保存されているファイルや画像をアップロードする方法などを調べた。

また、Python requests で画像をダウンロードして保存する方法 では、requests を使って、画像をダウンロードする方法を調べた。

今回は requests でダウンロードした画像を、ローカルに保存することなく 直接 S3 にアップロードする方法をまとめた。

TL;DR

  • res = requests.get(image_url, stream=True) でダウンロード
  • bucket.upload_fileobj(res.raw, "key/of/file") でアップロード
  • 必要に応じて ExtraArgs={"ContentType": res.headers["Content-Type"]} を付与

目的・やったこと

requests でダウンロードした画像を、ローカルに保存することなく 直接 S3 にアップロードする方法を調べた。

続きを読む

Python boto3 で AWS S3 を操作する



カテゴリー Programming

はじめに

Python boto3 を使って、AWS S3 にファイルのアップロードや削除方法を調べた。

TL;DR

  • アップロードは boto3.resource("s3").Bucket("your-bucket").upload_file
    • 公開状態にしたい場合は、Bucket そのもののブロックパブリックアクセスをオフにして、ExtraArgs={"ACL": "public-read"} を付ける
    • 画像をブラウザで開きたい場合は、ExtraArgs={"ContentType": "image/jpeg"} などを付ける
  • 削除は boto3.resource("s3").Bucket("your-bucket").delete_objects

目的・やったこと

Python boto3 を使って、AWS S3 にファイルのアップロードや削除方法を調べた。

続きを読む
  • page 1 of 1

r17n


Softwear Engineer


Fukuoka