使用 AWS Lambda 轮询和外部 SQS

使用 AWS Lambda 轮询和外部 SQS

我主要想弄清楚我需要的东西是否可以实现,如果有人能指点一下如何实现,那就更好了。

我有一个来自我工作所在组织的访问密钥/秘密,它授予对 AWS SQS 队列的访问权限(我也有该队列的 ARN)。现在我想在该队列上使用 AWS lambda 轮询来对传入消息执行 lambda 函数。我无法弄清楚如何将外部 SQS 与我的 lambda 函数连接起来。我可以输入 ARN,但权限却缺失。我想知道我是否可以在某处添加访问密钥/秘密,或者这是否完全不可能,我必须自己实现轮询?

答案1

我是否正确理解 SQS 在一个 AWS 帐户中,而您的 Lambda 在另一个 AWS 帐户中?

如果是在同一个帐户中,则不应使用静态使用权密钥用于 Lambda 执行。正确的方法是创建IAM 角色政策允许 SQS 访问并使用该角色执行 Lambda。角色每次执行时都会为其提供临时凭证,这是一个更安全的选择。

这也可以跨账户完成 - Lambda IAM 角色将允许它认为另一个帐户中的角色。但这有点复杂。

就您而言,如果 SQS 和 Lambda 帐户不同,您可以提供当打开连接到新加坡优质服务。如果您的 Lambda 是用 Python 编写的,您可以执行以下操作:

import boto3

s3_client = boto3.client('s3')    # This uses Lambda's IAM Role

sqs_client = boto3.client('sqs',  # This uses the provided SQS credentials
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
)

这样,您可以使用提供的凭据从 SQS 读取数据,并使用 Lambda IAM 角色写入 S3。

我确信其他 SDK(例如 Node.JS)也会具有类似的功能。

希望有帮助:)

相关内容