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

如何通过Boto3为IAM组授予或撤销AWS Lake Formation权限?

解决AWS Lake Formation通过Boto3/CLI给IAM组授权报错的问题

问题原因

AWS Lake Formation控制台会自动处理IAM组的标识符转换,但直接调用API(Boto3/CLI)时,必须明确指定主体类型为IAM_GROUP,并且使用IAM组的ARN作为主体标识符,而非组名。如果只传组名或主体类型指定错误,就会触发"IAM组不被支持"的错误。

解决方案

1. AWS CLI正确命令示例

授予权限

aws lakeformation grant-permissions \
    --principal DataLakePrincipalIdentifier=arn:aws:iam::123456789012:group/your-iam-group-name \
    --resource '{ "Table": { "DatabaseName": "your-db", "Name": "your-table" } }' \
    --permissions SELECT DESCRIBE

撤销权限

aws lakeformation revoke-permissions \
    --principal DataLakePrincipalIdentifier=arn:aws:iam::123456789012:group/your-iam-group-name \
    --resource '{ "Table": { "DatabaseName": "your-db", "Name": "your-table" } }' \
    --permissions SELECT DESCRIBE

替换说明:

  • 123456789012:你的AWS账户ID
  • your-iam-group-name:目标IAM组名称
  • your-db/your-table:对应的Lake Formation数据库和表

2. Boto3正确代码示例

import boto3

lf_client = boto3.client('lakeformation')

# 授予权限
lf_client.grant_permissions(
    Principal={
        'DataLakePrincipalIdentifier': 'arn:aws:iam::123456789012:group/your-iam-group-name'
    },
    Resource={
        'Table': {
            'DatabaseName': 'your-db',
            'Name': 'your-table'
        }
    },
    Permissions=['SELECT', 'DESCRIBE']
)

# 撤销权限
lf_client.revoke_permissions(
    Principal={
        'DataLakePrincipalIdentifier': 'arn:aws:iam::123456789012:group/your-iam-group-name'
    },
    Resource={
        'Table': {
            'DatabaseName': 'your-db',
            'Name': 'your-table'
        }
    },
    Permissions=['SELECT', 'DESCRIBE']
)

关键注意事项

  • 必须使用IAM组的完整ARN,不能仅用组名,否则API无法识别正确主体类型。
  • 确认执行CLI/Boto3命令的身份拥有lakeformation:GrantPermissions/lakeformation:RevokePermissions权限,以及对目标资源的相关操作权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:52:07