SES受信ルールを使ってS3バケットにアップロードしたメールを解析するラムダ関数を作成したいと思います。SES受信ルールでS3にアップロードしたメールを解析するLambda関数を作成します
SES受信ルールによるS3バケットへのアップロードは正常に動作します。したがって、すでにテストされており、ファイルが正しくアップロードされていることが確認されています。
マイアマゾンラムダ関数:var AWS = require('aws-sdk');
var s3 = new AWS.S3();
var bucketName = 'bucket_name/folder/destination';
exports.handler = function(event, context, callback) {
console.log('Process email');
var sesNotification = event.Records[0].ses;
console.log("SES Notification:\n", JSON.stringify(sesNotification, null, 2));
// Retrieve the email from your bucket
s3.getObject({
Bucket: bucketName,
Key: sesNotification.mail.messageId
}, function(err, data) {
if (err) {
console.log(err, err.stack);
callback(err);
} else {
console.log("Raw email:\n" + data.Body);
// Custom email processing goes here
callback(null, null);
}
});
};
ファイルには、ラムダをトリガーするが、私は[SignatureDoesNotMatch]エラーが出るがアップロードされている場合:誰もこれに近づくために私を助けることができる場合
{ "errorMessage": "The request signature we calculated does not match the signature you provided. Check your key and signing method.", "errorType": "SignatureDoesNotMatch", "stackTrace": [ "Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/s3.js:524:35)", "Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)", "Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)", "Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:615:14)", "Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)", "AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)", "/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10", "Request. (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)", "Request. (/var/runtime/node_modules/aws-sdk/lib/request.js:617:12)", "Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)" ] }
を問題は、それは素晴らしいだろう! ありがとう
。 "destination"は "bucket_name/folder/destination"で何を参照していますか? @KhalidT。 –
実際には、bucketName変数はオブジェクトを取得する場所を表します。 –