Rob*_*sen 5 rds amazon-web-services aws-sdk
我想以编程方式列出我的 RDS 数据库实例和集群快照,因此我将以下 IAM 策略直接附加到我的一位用户:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadProdSnapshotsAndInstances",
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusterSnapshots"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是当我以该用户身份执行以下操作时(使用 AWS Node.js SDK)...
rds.describeDBInstances({}, (error, data) => {
...
});
Run Code Online (Sandbox Code Playgroud)
...我收到以下错误:
AccessDenied: User: arn:aws:iam::<accountId>:user/<userName> is not authorized to perform: rds:DescribeDBInstances
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?这似乎应该如此简单。
您的策略对于显示 RDS 实例和集群快照是正确的。发布您的完整代码,以便我们了解问题所在。还要仔细检查您对凭据的使用。
注意:我没有测试 Aurora,仅测试 RDS SQL Server。
我通过 IAM 策略模拟器运行了您的策略。DescribeDBInstances并DescribeDBClusterSnapshots通过,而其他命令失败。
我创建了一个新用户“testusers3”。我已将您的策略附加给该用户。
我下载了该新用户的凭证,并使用 AWS CLI 创建了配置文件“testusers3”。
AWS CLI 命令aws --profile testusers3 rds describe-db-instances工作正常。其他命令如aws --profile testusers3 rds stop-db-instance --db-instance-identifier XXX失败则正确。
然后我编写了以下Python程序来测试。该程序可以正确显示我们的RDS实例。
import boto3
session = boto3.Session(profile_name='testusers3')
client = session.client('rds')
r = client.describe_db_instances();
for i in r['DBInstances']:
print(i['DBInstanceIdentifier'], i['DBInstanceClass'], i['Endpoint']['Address'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5553 次 |
| 最近记录: |