[英]Will AWS S3 event forwarding to SQS will end up being a different message than S3 to SNS to SQS?
[英]Passing variable values through S3 and SQS event trigger message
我已将 aws 管道设置为 S3 -> SQS -> Lambda。 S3 PutObject 事件将生成事件触发消息并将其传递给 SQS,SQS 将触发 lambda。 我需要将变量值从 S3 传递到 SQS,最后传递到 Lambda 作为事件消息的一部分。 变量值可以是文件名或某个字符串值。
当 Amazon S3 触发事件时,会向所需目标(AWS Lambda、Amazon SNS、Amazon SQS)发送一条消息。 该消息包括触发事件的 object 的存储桶名称和密钥(文件名) 。
这是一个示例事件(来自将 AWS Lambda 与 Amazon S3 - AWS Lambda 一起使用):
{
"Records": [
{
"eventVersion": "2.1",
"eventSource": "aws:s3",
"awsRegion": "us-east-2",
"eventTime": "2019-09-03T19:37:27.192Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "AWS:AIDAINPONIXQXHT3IKHL2"
},
"requestParameters": {
"sourceIPAddress": "205.255.255.255"
},
"responseElements": {
"x-amz-request-id": "D82B88E5F771F645",
"x-amz-id-2": "vlR7PnpV2Ce81l0PRw6jlUpck7Jo5ZsQjryTjKlc5aLWGVHPZLj5NeC6qMa0emYBDXOo6QBU0Wo="
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "828aa6fc-f7b5-4305-8584-487c791949c1",
"bucket": {
"name": "lambda-artifacts-deafc19498e3f2df",
"ownerIdentity": {
"principalId": "A3I5XTEXAMAI3E"
},
"arn": "arn:aws:s3:::lambda-artifacts-deafc19498e3f2df"
},
"object": {
"key": "b21b84d653bb07b05b1e6b33684dc11b",
"size": 1305107,
"eTag": "b21b84d653bb07b05b1e6b33684dc11b",
"sequencer": "0C0F6F405D6ED209E1"
}
}
}
]
}
桶可以从Records[].s3.bucket.name
,key 可以从Records[].s3.object.key
。
但是,由于 S3 触发事件,因此无法发送特定值。 但是,您可能会得出一个值。 For example, if you had events from several different buckets triggering the Lambda function, then the Lambda function could look at the bucket name to determine why it was triggered, and then substitute a desired value.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.