【问题标题】:Pass IAM to Lambda through API gateway and send message to SQS using passed IAM通过 API 网关将 IAM 传递给 Lambda,并使用传递的 IAM 向 SQS 发送消息
【发布时间】:2023-03-13 21:26:01
【问题描述】:
我想使用来自 API Gateway 的调用者身份从 Lambda 发布到 SNS 或向 SQS 发送消息。
在我们的例子中,我们通过 API Gateway 收到一条消息和一个队列数组。 Lambda 获取消息并开始将其发送到消息本身中提到的不同队列。调用者可能有权访问请求中指定的实际队列,也可能无权访问。我们如何确保每个调用者只能发送自己的队列?
调用者可能会发送他们无权访问的队列名称,我想使用 lambda 中的调用者身份发送消息。
【问题讨论】:
标签:
node.js
amazon-web-services
lambda
aws-api-gateway
【解决方案1】:
无法在您的 Lambda 集成中使用调用方凭证。您的 lambda 将始终使用分配给您的 Lambda 函数的角色的凭证。您可以在 API Gateway 转换中使用 $context.identity 向您的 Lambda 函数提供调用方,然后在您的 Lambda 中决定调用方是否具有访问权限。
您也可以将 API 网关设置为通过 AWS service proxy 直接调用 SNS/SQS,并启用调用者凭据。这将确保调用者具有权限。您确实会失去 Lambda 函数提供的一些灵活性,但这是您必须考虑的权衡。