要允许经过身份验证的Cognito用户访问DynamoDB表,您需要创建一个AWS IAM策略,并将其附加到相应的IAM角色上。以下是解决方案的代码示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:DeleteItem",
"dynamodb:Query",
"dynamodb:Scan"
],
"Resource": "arn:aws:dynamodb:region:account-id:table/table-name"
}
]
}
请将region
更改为您的区域,account-id
更改为您的AWS账户ID,table-name
更改为您的DynamoDB表名称。
aws iam create-role --role-name cognito-dynamodb-role --assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "IDENTITY_POOL_ID"
}
}
}]
}'
请将IDENTITY_POOL_ID
更改为您的Cognito身份池ID。
aws iam attach-role-policy --role-name cognito-dynamodb-role --policy-arn "arn:aws:iam::account-id:policy/dynamodb-access-policy"
请将account-id
更改为您的AWS账户ID,dynamodb-access-policy
更改为您创建的IAM策略名称。
通过执行以上步骤,您已经创建了一个允许经过身份验证的Cognito用户访问DynamoDB表的AWS IAM策略。