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

如何授予lambda函数访问所有SQS队列的权限?

卢志业
2023-03-14

我有一个不断运行的lambda函数和一些动态创建的SQS队列。我需要一种允许lambda访问所有SQS队列的方法,以便可以使用这些动态创建的队列-我如何做到这一点?

目前,我使用的执行角色具有iam策略和单个队列ARN,但似乎无法创建多个执行角色。

共有1个答案

钮兴安
2023-03-14

编辑

正如下面的评论中提到的,向所有人开放SQS队列可能并不完全安全,因此出于兴趣,我将在下面保留我的初始解决方案,但通常更好的解决方案是:

创建lambda函数,附加一个可以访问所有SQS队列的iAM角色。这项政策看起来像是

{
  "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 }}"
    }
  ]
}
 类似资料:
  • 我们有一个Lambda函数,需要能够访问私有的S3桶。 该存储桶已启用“阻止所有公共访问”,并具有以下资源策略: 我还将AmazonS3FullAccess策略直接附加到Lambda使用的IAM角色。但是,当Lambda函数尝试访问S3存储桶时,会出现访问被拒绝错误: 使用IAM用户凭据连接到S3的外部系统在尝试访问存储桶时也会收到相同的错误。 有人知道是什么导致了这个错误吗? 以下是发生错误的L

  • 我有一个用户测试。我想授予此用户在所有数据库上的所有权限。怎样才能做到呢?

  • 我正在使用Lambda函数将消息推送到SQS队列。消息放入SQS队列后,我需要触发其他Lambda函数来处理队列中的消息。 我认为我们可以使用SNS实现这一点。我是AWS服务新手,请建议在SNS的帮助下基于SQS队列消息触发Lambda函数的解决方案。

  • 问题内容: 我需要授予对服务器上所有300个数据库的新登录读取访问权限。如何在不选中用户映射区域中的300个复选框的情况下完成此任务? 问题答案: 一种方法是在SSMS的查询菜单上设置“结果为文本”,然后执行以下操作。 它实际上并没有进行更改,而是生成了一个脚本供您查看和执行。 或者,你可以看看 这里或亚伦Bertrand的改进版本在这里 如果运行此命令时未看到所有字符,请打开“文本查询选项”,然

  • 问题内容: 我已经创建了数据库,例如’mydb’。 现在,我可以从任何地方登录数据库,但是无法创建表。 如何授予该数据库和(将来)表的所有特权。我无法在“ mydb”数据库中创建表。我总是得到: 问题答案: 这就是我创建“超级用户”特权的方式(尽管我通常会指定一个主机)。 虽然此答案可以解决访问问题,但可以创建一个MySQL用户,该用户可以编辑其他用户的权限。 使用GRANT OPTION特权,您