当前位置: 首页 > 知识库问答 >
问题:

从Lambda向SQS发送跨AWS帐户消息

韦高阳
2023-03-14

我想发送消息到SQS队列上的另一个帐户(俄亥俄州)从lambda在北弗吉尼亚帐户。我该如何实现这一点?

到目前为止我尝试过的事情:

>

从北Virigina的lambda发送消息,收到以下错误:

“errorMessage”:“调用SendMessage操作时发生错误(AWS.SimpleQueueService.NonExistentQueue):

共有1个答案

华温书
2023-03-14

如果你正在发送跨帐户消息,你必须做以下事情。

  1. 在存在队列的帐户中,您必须为队列创建SQS访问策略,以便允许其他帐户能够发送消息。I队列策略可能如下所示:
{
    "Version": "2012-10-17",
    "Id": "Queue1_Policy_UUID",
    "Statement": [
        {
            "Sid": "Queue1_AllActions",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/lambdaRole"
                ]
            },
            "Action": [
                "sqs:SendMessage",
                "sqs:ReceiveMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-2:123456789012:queue1"
        }
    ]
}

这里的主体是部署Lambda的帐户中的Lambda角色。

 类似资料:
  • 对于从lambda跨帐户访问SQS,我需要允许附加到lambda的IAM角色具有SQS权限,还是允许IAM角色在SQS的访问策略中具有权限?(或者两者都做?) 更新:基本上,我已经按照下面一些答案中的建议设置了SQS访问策略。 我得到一份工作 尝试向队列boto3.resource('sqs')发送内容时。队列(“某个队列url”)。send_message(**kwargs))`从lambda,

  • 我在VPC中使用AWS Chalice托管了一个Lambda函数,因为我希望它访问一个无服务器的Aurora DB实例。现在,我还希望这个函数将send_message()转换为SQS。

  • 我有一个连接到lambda的队列(fifo)。我想在lambda中向标准队列发送一条消息。但没有发送/接收任何消息。然而,如果我尝试从非SQS连接的lambda(通过AppSync)发送它,它会工作。 我查过: lambda有权发送SQS消息(您可以在那里看到) 由于我已成功地从另一个lambda(非SQS)向标准队列发送消息,因此正确配置了标准队列 SQS URL是否正确 控制台中不会显示任何错

  • 我正在编写一个Python应用程序,它从帐户a提取数据并发送到帐户B中的SQS队列。执行lambda函数时,它返回以下错误: "errorMessage":"调用SendMessage操作时发生错误(AccessDended):拒绝访问资源https://eu-central-1.queue.amazonaws.com/。", 如果我在同一个帐户中使用SQS队列,它就会工作。 我使用的是无服务器框

  • 我有两个AWS账户。帐户1有一个CloudSearch域,我需要从帐户2中的Lambda函数查询该域。我遵循了一个教程,在Account1中创建一个允许跨帐户访问的角色。 因此,在帐户1中,我有一个角色,如下所示: 此角色有一个受信任的实体,即帐户2,我可以在IAM控制台中该角色的受信任实体部分下看到正确的帐户ID。 在帐户2中,我创建了一个Lambda函数,其执行角色如下所示: 我的Lambda

  • 我有两个AWS帐户(A和B)。在我的帐户A上,我有一个lambda功能,需要访问帐户B的资源。确切地说,我的帐户A上的lambda需要更新我帐户B上托管的Route53区域中的记录。 与S3相反,我在Route53中没有看到任何资源访问策略。所以我有点迷路了。我试图扮演IAM的跨账户角色,但这似乎对lambda不起作用。 如何允许帐户a上的lambda函数访问我的帐户B的资源?