LoginSignup
5
3

More than 5 years have passed since last update.

AWS LambdaでS3イベントを処理する時の例の処理は何をしているのか

Posted at

概要

AWS LambdaでS3イベントを処理する時に、イベントデータからオブジェクト名を取り出す時の処理を解説しました。

例の処理

S3イベントをトリガーに実行する Lambda Function で、イベントデータからオブジェクトのキーを取得する時のこの処理、

const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));

これは何をしてるんでしょう。

試してみる

こんな感じで処理の途中経過をログに出力するようにして、いくつかファイルをバケットに入れてみます。

console.log('original = ' + event.Records[0].s3.object.key);
console.log('replaced = ' + event.Records[0].s3.object.key.replace(/\+/g, ' '));
console.log('decoded = ' + decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')));

結果

その1

original = readme.txt
replaced = readme.txt
decoded = readme.txt

その2

original = %E3%81%93%E3%81%93%E3%81%AB%E2%86%92+%E2%86%90%E7%A9%BA%E7%99%BD.txt
replaced = %E3%81%93%E3%81%93%E3%81%AB%E2%86%92 %E2%86%90%E7%A9%BA%E7%99%BD.txt
decoded = ここに→ ←空白.txt

まとめ

ということで、

  • replace(/\+/g, ' ') は「+」に変換されていた空白を元に戻す処理
  • decodeURIComponent() はURLエンコードされていたマルチバイト文字のファイル名をデコードする処理

でした。

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