EC2实例配置文件以访问DynamoDB

时间:2019-02-16 09:38:40

标签: amazon-web-services amazon-ec2 amazon-iam

我想使用ec2实例配置文件允许我的python程序访问DynamoDb表。我已经通过直接分配给用户来测试策略。现在,我将与实例配置文件相同的策略分配给运行我的作业的ec2实例。 这是政策。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "dynamodb:*"
        ],
        "Resource": "arn:aws:dynamodb:us-east-2:913580688765:table/users"
    }
]
}

我还为用户分配了一个策略,使其能够传递ec2角色。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ec2:AssociateIamInstanceProfile",
            "ec2:ReplaceIamInstanceProfileAssociation"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": "ec2:DescribeIamInstanceProfileAssociations",
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": "iam:PassRole",
        "Resource": "*"
    }
]
}

但这不起作用。 我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

我没有确切的答案,但是我对您的进步有建议。首先,让我们回顾一下(您能仔细检查一下这一切吗):

1)您正在运行一个EC2实例,该实例已分配给IAM角色。
2)IAM角色信任关系包含ec2.amazonaws.com
3)策略授予"dynamodb:*"附加在角色上。

如果这样做,则意味着应正确配置所有内容。

在这一点上,我建议您ssh to the EC2 instance并测试权限。这可以通过使用AWS CLI's dynamodb API进行列表/描述/获取API调用来确认它们在实例上可以完成来完成。如果它们有效,则意味着该实例具有访问dynamodb的权限,并且您使用实例配置文件的方式可能有问题。

值得注意的是,并不是"arn:aws:dynamodb:us-east-2:913580688765:table/users"上的所有操作都可以使用,因为它是一个特定的表而不是所有表,例如"arn:aws:dynamodb:us-east-2:913580688765:table/*"。如果资源是特定表,则list-tables之类的API调用将不起作用。您可以在documentation here中找到有关dynamodb api调用和天气的列表,它们是否支持特定的表。