从EC2实例通过CLI连接DynamoDB需配置何种特定IAM角色?
嘿,我来帮你搞定这个问题!你已经知道用全权限能连,但肯定不想给EC2开这么大的权限对吧?下面就给你拆解连接DynamoDB CLI需要的具体IAM权限,不管是用IAM角色绑定EC2还是用aws configure配置密钥,都能按最小权限原则来设置~
一、推荐方式:给EC2绑定IAM角色(无需存密钥,更安全)
这种方式下,EC2实例会自动获取IAM角色的权限,不用在实例里存储Access Key,是AWS官方推荐的最佳实践。你只需要给这个IAM角色附加仅包含所需操作的权限策略,而不是全权限的AdministratorAccess。
按操作类型划分的核心权限
根据你要通过CLI执行的DynamoDB操作,对应需要的权限如下:
- 仅查看/列出表:
dynamodb:ListTables、dynamodb:DescribeTable - 读取数据(比如
aws dynamodb scan、get-item):dynamodb:GetItem、dynamodb:Scan、dynamodb:Query - 写入/修改数据(比如
put-item、update-item、delete-item):dynamodb:PutItem、dynamodb:UpdateItem、dynamodb:DeleteItem - 创建/删除表:
dynamodb:CreateTable、dynamodb:DeleteTable
示例自定义权限策略
你可以在IAM控制台创建一个自定义策略,只包含你实际需要的权限,比如下面这个是允许对指定DynamoDB表进行读写操作的策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:DescribeTable", "dynamodb:ListTables" ], "Resource": "arn:aws:dynamodb:你的AWS区域:你的AWS账号ID:table/你的表名" } ] }
把上面的占位符(你的AWS区域、账号ID、表名)替换成实际信息,然后将这个策略附加到EC2实例绑定的IAM角色上,之后EC2里的AWS CLI就能自动获取权限,不用再运行aws configure。
二、备选方式:用aws configure配置Access Key
如果你更倾向于用Access Key认证,同样需要给对应的IAM用户分配上述最小权限策略:
- 在IAM控制台创建一个新用户,勾选“编程访问”选项
- 给这个用户附加你自定义的DynamoDB权限策略(参考上面的示例)
- 在EC2实例中运行
aws configure,输入生成的Access Key ID、Secret Access Key,以及和DynamoDB表一致的区域
排查小技巧
如果配置后还是无法连接,可以运行aws dynamodb list-tables --debug查看调试日志:
- 如果出现
AccessDeniedException,说明权限不足,检查策略里的Action和Resource是否正确 - 如果是区域不匹配的错误,确保CLI配置的区域和DynamoDB表所在区域一致
内容的提问来源于stack exchange,提问作者Aman Aggarwal
相关产品推荐
相关产品推荐

