を作成中。いちおう動いたっぽい。
以下のような方向け。
- 本家のs3sがなにをしてるかある程度わかっている
- Lambda へ zip で manual upload して必要な設置ができる
- Setupには Local な Python3 環境が必要
- S3 や LambdaからS3の操作に必要な IAM 権限についてある程度分かってる前提(ここでは詳しく書かない)
※セットアップは、 S3 への config.txt の保存を想定しているので、aws EC2 上で使うと楽かも。t3.nano の spot とかだい>ぶ安価のはず(それでtest済み) ※S3テスト部分を省くのであれば、どのような環境でもダイジョブのはず。
- Local の python3 環境に git clone
- ごそごそと必要なことをして zip で固める
- zip を Lambda に上げて動かす
- それだけ
-
git clone
して requirement.txt を install (pip3 install -r requirements.txt
) -
s3s.py -t
でconfig.txt 生成 (本来は同じディレクトリにできるが、ここでは /tmp 配下にできる) ※手順は本家と同じ- (念のため
s3s.py -r
で自分の stat.ink を更新できるか確認してもよい)
- (念のため
-
S3 bucket のディレクトリ内に config.txt を upload しておく
-
lambda_function.py の中の と を部分を、自身S3のものに変更する
- 例:
S3_BUCKET = "uranekoS3bucket"
S3_DIR = "s3s-config"
-
Lambda で動くように、 必要な package をカレントディレクトリに置く (
pip3 install -r requirements.txt -t .
) -
(この時点で lambda_function.py のテストをする場合、boto3 の install が必要 (
pip3 install boto3
)- ※Lambda 上では boto3 不要なので
-t .
不要
- ※Lambda 上では boto3 不要なので
-
zip で固める (
zip -r ../myLambdaS3sPack.zip ./*
) -
できた zip を Lambda に上げて、ハンドラ指定して(lambda_function.main) 、ロールにS3操作権限付与して、トリガー設定>して、timeout を2分に変えておく(1分でもたぶんダイジョブ)
※Local環境が共有環境の場合には、テストがおわったら/tmp/config.txtは消しておくと良いでしょう。
- app_path を /tmp に変更
- これにより config.txt の保存先が /tmp/config.txt になる
- (Lambda 上でのファイルの読み書きを可能にするため)
- lambda 用のハンドラ
- S3 bucket から config.txt をダウンロードして /tmp に置く
- s3s.py 実行
- /tmp/config.txt を S3 bucket へアップロード
- それだけ
frozenpandaman/s3s