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)"
  }
}