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

AWS Lambda的AWS SQS权限

仉磊
2023-03-14

我使用的是AWS SQS服务,很难定义SQS队列上的权限。在我的设置中,我使用的是AWS Lambda服务,当一个对象被推到S3存储桶上时会触发该服务。

然而,让我简短地提问,这是我想要实现的:

  1. 对象被推送到S3存储桶中

正如您可以从前面的用例中看到的,我希望我的AWS Lambda方法是唯一可以向SQS队列发送消息的应用程序。我试图设置一个原则和一个条件“sourceArn”。但是它们都不起作用。。

有人能帮忙吗?

共有2个答案

刘畅
2023-03-14

您还可以指定SQS访问策略,拒绝发送除lambda以外的消息

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "Only API Gateway is allowed to send messages",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:eu-west-1:XXX:my_sqs_queue",
      "Condition": {
        "StringNotLike": {
          "aws:userid": [
            "AROA4XB7NRHNVE2XY7ABC:*"
          ]
        }
      }
    }
  ]
}

通过为角色id提供条件键aws:userid的通配符Principal*

<USER ID of the Role being used by the Lambda:*>

可以使用以下CLI命令检索角色AROA4XB7NRHNVE2XY7ABC的用户ID

aws iam get-role --role-name my_lambda_role

{
    "Role": {
       "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Action": "sts:AssumeRole",
                    "Principal": {
                        "Service": "lambda.amazonaws.com"
                    },
                    "Effect": "Allow",
                    "Sid": ""
                }
            ]
        },
        "RoleId": "AROA4XB7NRHNWU35SVABC",
        "CreateDate": "2020-01-21T11:40:55Z",
        "RoleName": "my_lambda_role",
        "Path": "/",
        "Arn": "arn:aws:iam::XXX:role/my_lambda_role"
    }
}

更多关于这个案件的信息可以在这里找到

倪培
2023-03-14

我认为SourceArn字段不会被Lambda填充。我知道SourceArn适用于SNS,但Lambda实际上运行的是任意代码,而不是像SNS那样的AWS功能。

作为替代方案,您可以将策略附加到您的Lambda函数作为运行的IAM角色。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1440529349000",
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": [
                "arn:aws:sqs:us-west-2:123456789012:test-queue"
            ]
        }
    ]
}

此方法不需要直接附加到队列的策略。

 类似资料:
  • 我正在尝试编写我的第一个小quarkus camel AWSSQS consumer,但我找不到任何(简单或其他)示例开始。 我已经通过quarkus生成了一个骨架应用程序。io网页,我创建了一个路由,仅使用SQS队列中的JSON(创建队列并填充消息,我可以使用“原始”java使用它们)。 它是一个包含JSON测试消息的FIFO队列。 我的routeBuilder类如下: 当我启动夸克斯应用程序时

  • http://${host}:${port}/auth/realms/${realm_name}/authz/protection/resource_set 但是我没有看到一个API来CRUD授权策略和权限。 我试图通过protection/resource_setendpoint创建策略,但失败了:

  • 接口管理的逻辑较为复杂,操作频率高,层层审批将严重拖慢生产效率,因此传统的金字塔管理模式并不适用。 YApi 将扁平化管理模式的思想引入到产品的权限管理中,超级管理员 拥有最高的权限,并将权限分配给若干 组长,超级管理员 只需管理组长 即可,实际上管理YAPI各大分组与项目的是“组长”。组长对分组或项目负责,一般由BU负责人/项目负责人担任。 认识组长 组长分为 分组组长 与 项目组长,他们的关系

  • 我再一次需要你的帮助堆叠天花! 我一直在开发SDK,现在需要验证用户是否授予了位置或文件写入等权限。 验证是可以的,但是我想如果需要的话,我应该请求许可。问题是,我绝对不能访问任何活动。我可以使用appContext来检查权限,但是我不能像这样监听onRequest estPermissionsResult。 有没有一种聪明的方法可以向我这边请求许可,或者我应该让使用我的SDK的开发人员及时请求许

  • 我们知道在两个顶点之间寻找一条最大权重路径是NP难的。但是如果我们限制边缘权重,对于例如。所有边权值都小于某个特定值x。我清楚地定义下面的问题。 我有一个有向图G(V,E),其中每条边的权值在1到V之间。我想在两个顶点u和V之间找到最大权值路径。

  • 下午好.如何在不使用不同的OAUTH2服务的情况下,为一个应用程序中的特定实体(类似于RBAC/ABAC)的特定控制器配置用户的权限和角色? 还有一个名为Project的实体。用户可能是许多项目的成员。有一些项目用户角色:PROJECT_ADMIN、PROJECT_EDITO、PROJECT_USER。每个项目角色都可以拥有自己的权限(权限),如向项目添加用户、编辑项目等。所有角色配置都存储在'P

  • 之前讲了单个账户的权限的增、删、改、查及一系列操作,并没有讲到权限的使用,那么如果我们增加一个权限,但是不会用它,那又有什么意义呢? 所以,今天就来学习一下权限的使用。 说明: 本教程,通过eosio.token合约的transfer来进行演示。 目录 创建eosio.token并发放eosio.token合约 创建测试账号eostea 测试账号eostea发放代币 测试账号转账给账号hello

  • 问题内容: 我正在尝试访问用户设备上的媒体文件(音乐)以进行播放;一个简单的“ hello world”音乐播放器应用。 我遵循了一些教程,它们基本上给出了相同的代码。但这是行不通的。它不断崩溃,并告诉我: 现在,这是我的清单文件: 这是我的Java方法: 我试过了: 要将其放在清单文件中的不同位置: 要在读取外部存储权限下添加 要将其放在清单/应用程序/活动标签中: 将uri和cursro之间的