SNSによる後続処理の定義
LightFile Lambda関数がファイルを軽量化した直後に、指定したSNSトピックにメッセージを送信することができます。
メッセージはJSON形式で軽量化の処理結果が格納されています。
環境変数SNS_TOPIC_ARN
メッセージを送信する宛先となるSNSトピックのARNを指定します。
指定しない場合、SNSメッセージは送信されません。
SNS連携機能を利用する場合、Lambda関数の実行ロールに対してSNSトピックへのSNS:Publish
アクセス権限を追加してください。
環境変数SNS_DEFAULT_VALUES
SNSメッセージにはJSON形式として軽量化されたファイルの元のファイルサイズや、軽量化後のファイルサイズなどの実行結果が格納されていますが、独自の値を追加することも可能です。
それらの値にマージしたい値を環境変数SNS_DEFAULT_VALUES
に指定できます。
SNS_DEFAULT_VALUES
には次の例のようにJSON形式でオブジェクトを記述してください。
{"myKey1": "myValue1","myKey2": "myValue2"}
簡略化されたJsonic形式で記述することもできます。
{myKey1: myValue1,myKey2: myValue2}
LightFile独自の情報が優先
環境変数SNS_DEFAULT_VALUES
に指定したキーと、LightFileが独自に渡すキーが重複する場合は、LightFileの値が優先されます。
SNSに送信されるメッセージ
SNSには次の情報を含むJSON文字列が送信されます。
S3からLambda関数に渡されたイベント
について詳しくは「AWS Lambda を Amazon S3 に使用する」を参照ください。Lambda関数に渡されたコンテキスト
について詳しくは「Node.js での AWS Lambda Context オブジェクト」を参照ください。
{
"s3Event": { // S3からLambda関数に渡されたイベント
"Records": [
[...]
]
},
"lambdaContext": { // Lambda関数に渡されたコンテキスト
"callbackWaitsForEmptyEventLoop": true,
"logGroupName": "(ロググループ)",
"logStreamName": "(ログストリーム)",
"functionName": "(Lambda関数名)",
"memoryLimitInMB": "(メモリサイズ)",
"functionVersion": "(バージョン)",
"invokeid": "(固有のLambda実行ID)",
"awsRequestId": "(固有のLambda実行ID)",
"invokedFunctionArn": "(Lambda関数のARN)"
},
"s3": { // 対象となったS3バケットとオブジェクト
"bucket": "(バケット名)",
"key": "(オブジェクトのパス)"
},
"lightfile": { // LightFile固有の処理に関する情報
"beforeSize": (元の画像ファイルサイズ),
"afterSize": (削減後の画像ファイルサイズ),
"scriptClass": "(JpegScriptかPngScript)"
}
}