如何设置IAM Role可以让API Gateway连接DynamoDB数据库?

0

【以下的问题经过翻译处理】 我正在做这个技术调研 https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/. 文档中有如下说明

Before you proceed, create an AWS Identity and Access Management (IAM) role that has permission to call the DynamoDB API PutItem for the Comments table; this role must have a service trust relationship to API Gateway. For more information on IAM policies and roles, see the Overview of IAM Policies topic.

我的问题:想要允许API Gateway测试请求写入DynamoDB,应该创建什么样的特定角色?我的测试目前无法写入。我在API Gateway设置中放置了一个角色,它看起来像这样:arn:aws:iam::MYACCOUNTID:role / aws-service-role / replication.dynamodb.amazonaws.com / AWSServiceRoleForDynamoDBReplication

profile picture
专家
已提问 8 个月前57 查看次数
2 回答
0

【以下的回答经过翻译处理】 此角色的Trust Entity应该是replication.dynamodb.amazonaws.com而不是apigateway.amazonaws.com。

你应该前往IAM控制台,创建一个新的角色,选择API Gateway,然后添加适当的策略来写入DynamoDB。

最终,你的角色应该包括以下政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:eu-west-1:xxxxxxxx:table/Comments" } ] }

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

profile picture
专家
已回答 8 个月前
0

您好:

想要准许 API Gateway 测试请求写入 DynamoDB,您需要创建一个 IAM role,并且做以下两件事:

  1. 前往 AWS 控制主控台,打开 IAM role,选择创建角色

在可信实体类型选择自定义信任策略,并且将 “Service” : "apigatway.amazonaws.com" 加入 Principle 中,使 API gateway 可以拥有这个角色的权限策略

您的信任策略应该会看起来像:

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

接着选择下一步,选择您可能需要的权限策略,若只需要写入 DynamoDB,我们待会会创建内联策略

下一步,为IAM角色取名,并且创建角色

官方参考文件:https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/permissions.html

  1. 前往您刚创建的角色页面,点选权限下的添加权限,创建内联策略

选择 DynamoDB,在筛选操作中输入 PutItem,并点选添加 ARN

选择此帐户,并填入您 DynamoDB 的 table name,选择下一步

输入策略名称并且点选创建策略,完成后您的 IAM 角色便具备写入 DynamoDB 的权限

您的权限策略应该会看起来像:

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "VisualEditor0",
			"Effect": "Allow",
			"Action": "dynamodb:PutItem",
			"Resource": "arn:aws:dynamodb:your-region:your-accountID:table/TABLE-NAME"
		}
	]
}

官方参考文件:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/iam-policy-example-data-crud.html

完成后,您便可以使用 API gateway 将请求写入 DynamoDB

profile pictureAWS
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则