从 SNS 消息中提取信息
Extract information from SNS message
我正在使用 AWS Textract 服务从图像中获取文本。处理步骤为:
- 上传文件到S3并进入Dynamodb
- Dynamodb 触发 Textract 的 lambda 函数并向 SNS 发送消息
- SNS 触发 lambda 将提取的文本写入 Dynamodb table
我当前的问题是在第 3 步中读取 SNS 消息。消息看起来像:
拉姆达:
exports.handler = (event) => {
const message = event.Records[0].Sns.Message;
console.log(message)
}
输出如下:
{
Type: 'Notification',
MessageId: '00cc3304-a54c-56e4-95c5-746b1579b7a3',
TopicArn: 'arn:aws:sns:eu-west-1:878512516355:PDF_textprocessing_complete',
Subject: null,
Message: '{"JobId":"8ae4a56561be6ddc4e2c8365976f79c","Status":"SUCCEEDED","API":"StartDocumentTextDetection","Timestamp":1593159156962,"DocumentLocation":{"S3ObjectName":"private/eu-west-1:465233397-b3b0-4635-bd4d-249df960b2d6/276bff07-be35-4bf7-bc30-249e86adc3f38invoice_2020_march.png","S3Bucket":"doc9ce275171f09423c586885-dev"}}',
Timestamp: '2020-06-54T08:18:37.012Z',
SignatureVersion: '1',
Signature: 'DdSXJfZvAnsWKnWd+Z7OaeM5MvfcvdzGBP==',
SigningCertUrl: 'https://sns.eu-west-5.amazonaws.com/SimpleNotificationService-a863b10b4e1f29c941702d737128f7b6.pem',
UnsubscribeUrl: 'https://sns.eu-west-5.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-5:878519355:PDF_textprocessing_complete:ec5c7a10-2ca-47f7-b1ac-0d0e5fd895618b',
MessageAttributes: {}
}
如何将 JobId 和 S3ObjectName 提取到变量中?
非常感谢!!
您将使用 JSON.parse
函数访问 Message
属性 的属性,如下所示。
exports.handler = (event) => {
const message = event.Records[0].Sns.Message;
console.log(message);
const jobid = JSON.parse(message).JobId
const object = JSON.parse(message).DocumentLocation.S3ObjectName
}
我正在使用 AWS Textract 服务从图像中获取文本。处理步骤为:
- 上传文件到S3并进入Dynamodb
- Dynamodb 触发 Textract 的 lambda 函数并向 SNS 发送消息
- SNS 触发 lambda 将提取的文本写入 Dynamodb table
我当前的问题是在第 3 步中读取 SNS 消息。消息看起来像:
拉姆达:
exports.handler = (event) => {
const message = event.Records[0].Sns.Message;
console.log(message)
}
输出如下:
{
Type: 'Notification',
MessageId: '00cc3304-a54c-56e4-95c5-746b1579b7a3',
TopicArn: 'arn:aws:sns:eu-west-1:878512516355:PDF_textprocessing_complete',
Subject: null,
Message: '{"JobId":"8ae4a56561be6ddc4e2c8365976f79c","Status":"SUCCEEDED","API":"StartDocumentTextDetection","Timestamp":1593159156962,"DocumentLocation":{"S3ObjectName":"private/eu-west-1:465233397-b3b0-4635-bd4d-249df960b2d6/276bff07-be35-4bf7-bc30-249e86adc3f38invoice_2020_march.png","S3Bucket":"doc9ce275171f09423c586885-dev"}}',
Timestamp: '2020-06-54T08:18:37.012Z',
SignatureVersion: '1',
Signature: 'DdSXJfZvAnsWKnWd+Z7OaeM5MvfcvdzGBP==',
SigningCertUrl: 'https://sns.eu-west-5.amazonaws.com/SimpleNotificationService-a863b10b4e1f29c941702d737128f7b6.pem',
UnsubscribeUrl: 'https://sns.eu-west-5.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-5:878519355:PDF_textprocessing_complete:ec5c7a10-2ca-47f7-b1ac-0d0e5fd895618b',
MessageAttributes: {}
}
如何将 JobId 和 S3ObjectName 提取到变量中?
非常感谢!!
您将使用 JSON.parse
函数访问 Message
属性 的属性,如下所示。
exports.handler = (event) => {
const message = event.Records[0].Sns.Message;
console.log(message);
const jobid = JSON.parse(message).JobId
const object = JSON.parse(message).DocumentLocation.S3ObjectName
}