You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为IAM角色添加KMS密钥策略并解决附加时的字段报错问题

问题原因

你收到报错的核心原因是操作对象混淆:

  • KMS密钥策略属于密钥本身的访问控制规则,不属于IAM角色的信任关系配置
  • IAM角色的信任关系仅用于定义「哪些实体可以代入该角色」,语法结构不支持Resource字段,因此粘贴普通权限策略会触发报错。
正确操作步骤

1. 修复IAM角色的信任关系

先把Lambda执行角色的信任关系恢复为默认正确配置,仅允许Lambda服务代入该角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

2. 配置KMS访问权限(二选一即可)

方案A:修改KMS密钥策略

找到你S3桶加密使用的KMS密钥,编辑其密钥策略,在现有Statement数组中新增如下规则:

{
    "Sid": "Allow Lambda role to decrypt S3 objects",
    "Effect": "Allow",
    "Principal": {
        "AWS": "替换为你的Lambda执行角色ARN,格式为arn:aws:iam::[你的AWS账号ID]:role/[角色名称]"
    },
    "Action": [
        "kms:Decrypt",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}

方案B:给Lambda执行角色附加权限策略

在Lambda执行角色的「权限」选项卡下,新增内联或托管权限策略,内容如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "替换为你的KMS密钥ARN"
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[你的S3桶名]/*"
        }
    ]
}
补充说明

如果你的S3桶使用的是SSE-S3(亚马逊托管的S3加密),不需要额外配置KMS权限,仅需确认Lambda角色有S3读权限即可;只有使用SSE-KMS(自定义/托管KMS密钥加密)时才需要配置上述KMS权限。

内容的提问来源于stack exchange,提问作者user13067694

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:06:08