LoginSignup
5
0

More than 3 years have passed since last update.

s3:ObjectCreated:*でお手軽クラウド死

Posted at

どうも170万円爆死男です。

170万円について詳しくはこちら

さて、また死にそうでした。
前回はボーナス査定の直前でしたが、今回は直後ということもあり気持ちも穏やかに死にそうになったのでシェアします。


手順

  1. s3:ObjectCreated:* なイベントでLambdaとS3をつなぐ
  2. Lambda内で s3.upload() する
  3. 無限ループ!

さて、冒頭で死に そう と表現したのは死ななかったからなんですが、いくつか繰り返すうちに止まりました。
Amazonたん素敵な配慮をサンキュ♡と思ったんですが、厳密には違う理由です。

今回は幸運にも元ファイル名のサフィックスをつける仕様でつくっていたため、何回か実行した後に KeyTooLongError を吐いて死んでました。

ソースはこんだけ

new S3().upload(
  Bucket: bucket,
  Key: `${org.Key}.lock`
).promise()

もうおわかりだと思いますが、

  1. originalFilenameをUpload
  2. originalFilename.lockがつくられ
  3. それが原因でoriginalFilename.lock.lockがつくられ
  4. それが原因でoriginalFilename.lock.lock......

ってことです。
もし同名ファイル作ってたら発覚も遅れるしログだけガリガリ増えて死ぬところでした。
そうなったら一応Lambda消せばとまりますが、マジで気をつけろよ!!!!!!!!!!!!

5
0
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
5
0