AWS Lambda的AWS SQS权限

Céd*_*ten 13 amazon-s3 amazon-sqs amazon-web-services aws-lambda

我正在使用AWS SQS服务,而且我很难在SQS队列上定义权限.在我的设置中,我正在使用AWS Lambda服务,该服务在将对象推送到S3存储桶时触发.

但是为了简单地回答我的问题,这就是我想要实现的目标:

  1. 对象被推送到S3存储桶
  2. S3存储桶触发AWS Lambda
  3. Lambda做了一些计算,并将事件推送到我的SQS队列(需要定义权限)
  4. 应用程序从SQS读取

正如您可以从以前的用例中读到的那样,我希望我的AWS Lambda方法成为唯一可以将消息发送到SQS队列的应用程序.我试图设置一个主体和一个条件"sourceArn".但它们都不起作用..

在此输入图像描述

有人可以帮忙吗?

Jam*_*mes 12

我不认为该SourceArn字段会被Lambda填充.我知道SourceArn适用于SNS,但Lambda实际上运行的是任意代码,而不是像SNS这样的AWS功能.

作为替代方案,您可以将策略附加到Lambda函数运行的IAM角色.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1440529349000",
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": [
                "arn:aws:sqs:us-west-2:123456789012:test-queue"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

此方法不需要直接附加到队列的策略.