amazon-web-services - 如何让 lambda 函数访问所有 SQS 队列?
问题描述
我有一个会不断运行的 lambda 函数,以及一些将动态创建的 SQS 队列。我需要一种方法来允许 lambda 访问所有 SQS 队列,以便可以使用这些动态创建的队列 - 我该怎么做?
目前我正在使用一个执行角色,该角色具有一个带有单个队列 ARN 的 iam 策略,但似乎我无法创建多个执行角色。
解决方案
编辑
正如下面的评论中所提到的,向所有内容开放 SQS 队列可能并不完全安全,因此我将保留我的初始解决方案以供感兴趣,但通常更好的解决方案是:
使用附加的 iAM 角色创建 lambda 函数,该角色可以访问所有 SQS 队列。这个政策看起来像
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sqs:GetQueueUrl",
"sqs:ChangeMessageVisibility",
"sqs:ListDeadLetterSourceQueues",
"sqs:SendMessageBatch",
"sqs:PurgeQueue",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueAttributes",
"sqs:CreateQueue",
"sqs:ListQueueTags",
"sqs:ChangeMessageVisibilityBatch",
"sqs:SetQueueAttributes"
],
"Resource": "*"
},
]
}
我最初设法通过创建附加权限的 SQS 队列来解决这个问题。创建 SQS 队列时,您可以为它们分配一个策略,您可以在其中指定权限和用户,例如以下策略允许所有用户的所有权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "SQS:*",
"Resource": "{{ queue_arn }}"
}
]
}
推荐阅读
- java - 找出用户被处理了多少次?
- firebase - Firesbase 存储 - 强制下载图像
- python - 在 Python 中删除文件时出现文件路径问题
- sorting - 输出一个文件的所有行,其第 3 行和第 4 行在另一个文件的第 3 和第 4 列的一定范围内
- php - 使用正则表达式匹配多行并使用正则表达式和 PHP 修改这些匹配的行
- actionscript-3 - 找出 _local_x 或 _arg_x 是什么意思?
- python - python正则表达式无法获取数据
- mysql - Mysql Select Correlation 2 Levels Deep Subqueries
- c++ - 使用 C++ 初始化 Struct 的变量 const char* const*
- angular - 尝试使用 Angular 从 Firebase DB 中提取/检索所有值时,键未定义