s3 get_object 拒绝访问 SSE-KMS 加密对象

s3 get_object giving Access Denied for SSE-KMS Encrypted Object

我正在尝试使用以下代码在 lambda 函数中获取 s3 加密对象,但我收到获取对象的访问被拒绝错误。

s3 = boto3.client('s3')
response = s3.get_object(Bucket=bucket, Key=key)

我为 lambda 分配了一个 ole,我在其中提供了 kms 策略。

{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt",
            "kms:Encrypt"
        ],
        "Resource": "arn:aws:kms:ZONE:123456789012:key/ererwerwerwerer"
    }
{
        "Sid": "VisualEditor1",
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "*"
    }

任何人都可以告诉我我在这里缺少什么

您缺少访问 S3 的策略,请确保更新 S3 存储桶以允许访问 Lambda 函数。

我缺少 KMS 密钥策略中的 lambda 函数角色。

{
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::123456789012:role/xyz-lbz-lamda-role",
                "arn:aws:iam::123456789012:root"
            ]
        },
        "Action": "kms:*",
        "Resource": "*"
    }