【问题标题】:AWS SQS permissions for AWS Lambda Cross AccountAWS Lambda 跨账户的 AWS SQS 权限
【发布时间】:2023-02-02 03:03:38
【问题描述】:

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

但是,为了简短地提出我的问题,这就是我想要实现的目标:

对象被推送到 S3 存储桶, S3 桶触发 AWS Lambda, Lambda 进行一些计算并将事件推送到我的 SQS 队列(需要定义权限) 应用程序从 SQS 读取 Lambda 和 SQS 队列在不同的 AWS 账户中- 遵循的步骤-

  1. 在 SQS 访问策略中为 lambda 承担的访问角色添加了权限-
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::accountid:role/rolename",
            ]
          },
          "Action": "SQS:SendMessage",
          "Resource": "https://sqs.us-east-1.amazonaws.com/accountid/qsqqueuename"
        }
      ]
    }
    
    1. SQS 队列启用了 KMS 密钥,因此在 kms 访问策略中将权限授予同一角色

    2. lambda 承担的角色具有以下访问权限-

    {
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "kms:Decrypt",
                   "kms:Encrypt",
                   "sqs:SendMessage",
                   "kms:DescribeKey",
                   "s3:ListBucket",
                   "ssm:GetParameter",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*"
               ],
               "Resource": [
                   "arn:aws:kms:us-east-1:accountid:key/kmskey5809e1338be5",
                   "arn:aws:sqs:us-east-1:accountid:sqaqueuename"
               ],
               "Effect": "Allow",
               "Sid": "mailboxaccess"
           },
    

    我的 lambda 给出了错误- 调用 SendMessage 操作时发生错误 (AccessDenied):拒绝访问资源 https://queue.amazonaws.com/。 有什么建议么?

【问题讨论】:

  • 您是否将 lambda 角色添加到 KMS 密钥的策略中?

标签: amazon-web-services aws-lambda amazon-sqs


【解决方案1】:

问题是 sqs 的 arn。我已经为队列提供了一个 HTTP 地址,但需要提供一个 arn。

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 2022-01-25
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 2016-11-02
    • 2019-10-14
    • 1970-01-01
    • 2023-02-13
    相关资源
    最近更新 更多