代码之家  ›  专栏  ›  技术社区  ›  Shamshiel

从Lambda向加密的SQS队列发送消息

  •  0
  • Shamshiel  · 技术社区  · 4 年前

    我有一个AWS Lambda函数,需要将消息发送到加密的SQS队列。有一次,我的AWS Lambda函数可以向这个加密的SQS队列发送消息。在我得到它的工作,我做了一些调整,以使他们更具体的权限。然后它突然停止工作,即使在我恢复到真正广泛的权限。

    现在我总是遇到以下错误:

    KMS.AccessDeniedException: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.
    

        {
            "Sid": "Allow specific lambda to use this key",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "arn:aws:lambda:XXXXXX:function:XXXXXX"
        }
    

    我编辑了资源,但我三次检查了ARN,它是正确的。

    我的Lambda函数附带了以下策略:

        {
            "Action": "sqs:*",
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": "kms:*",
            "Resource": "*",
            "Effect": "Allow"
        },
    

    我错过了什么?我不知道还有什么我可以改变,为什么它工作,然后它停止工作。。。


    编辑

    {
        "Sid": "Allow AWS Lambda to use this key",
        "Effect": "Allow",
        "Principal": {
            "Service": "lambda.amazonaws.com"
        },
        "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey*"
        ],
        "Resource": "*"
    }
    

    {
        "Action": "sqs:*",
        "Resource": "*",
        "Effect": "Allow"
    },
    {
        "Action": "kms:*",
        "Resource": "*",
        "Effect": "Allow"
    }
    

    编辑2

    一定有什么我不明白的地方,因为这是不可预测的。。。

    第一次更改:

    IAM Statement Changes
    ┌───┬──────────┬────────┬─────────────────────┬──────────────────────────────────────────────────────────────────┬───────────┐
    │   │ Resource │ Effect │ Action              │ Principal                                                        │ Condition │
    ├───┼──────────┼────────┼─────────────────────┼──────────────────────────────────────────────────────────────────┼───────────┤
    │ + │ *        │ Allow  │ kms:GenerateDataKey │ AWS:${lambda---------------------------------------/ServiceRole} │           │
    └───┴──────────┴────────┴─────────────────────┴──────────────────────────────────────────────────────────────────┴───────────┘
    

    结果:我可以再次向SQS队列发送消息

    IAM Statement Changes
    ┌───┬──────────┬────────┬─────────────────────┬──────────────────────────────────────────────────────────────────┬───────────┐
    │   │ Resource │ Effect │ Action              │ Principal                                                        │ Condition │
    ├───┼──────────┼────────┼─────────────────────┼──────────────────────────────────────────────────────────────────┼───────────┤
    │ - │ *        │ Allow  │ kms:GenerateDataKey │ AWS:${lambda---------------------------------------/ServiceRole} │           │
    ├───┼──────────┼────────┼─────────────────────┼──────────────────────────────────────────────────────────────────┼───────────┤
    │ + │ *        │ Allow  │ kms:*               │ AWS:${lambda---------------------------------------/ServiceRole} │           │
    └───┴──────────┴────────┴─────────────────────┴──────────────────────────────────────────────────────────────────┴───────────┘
    

    第三个变化:

    IAM Statement Changes
    ┌───┬──────────┬────────┬─────────────────────┬──────────────────────────────────────────────────────────────────┬───────────┐
    │   │ Resource │ Effect │ Action              │ Principal                                                        │ Condition │
    ├───┼──────────┼────────┼─────────────────────┼──────────────────────────────────────────────────────────────────┼───────────┤
    │ - │ *        │ Allow  │ kms:*               │ AWS:${lambda---------------------------------------/ServiceRole} │           │
    ├───┼──────────┼────────┼─────────────────────┼──────────────────────────────────────────────────────────────────┼───────────┤
    │ + │ *        │ Allow  │ kms:GenerateDataKey │ AWS:${lambda---------------------------------------/ServiceRole} │           │
    └───┴──────────┴────────┴─────────────────────┴──────────────────────────────────────────────────────────────────┴───────────┘
    

    结果:我仍然无法再向SQS队列发送消息?!?这里发生了什么?这与第一次变更的政策状态相同。。。。

    0 回复  |  直到 4 年前