【发布时间】:2019-10-04 10:38:13
【问题描述】:
在移动应用程序中,我希望 lambda 函数能够仅访问 DynamoDB 中的行,其中键是调用 Lambda 的 userId。 我设置了以下政策,但我不断收到
User: arn:aws:sts::XXX:assumed-role/FederatedIdentityRole/CognitoIdentityCredentials is not authorized to perform: dynamodb:GetItem on resource: arn:aws:dynamodb:us-east-1:XXX:table/UserData
欢迎任何提示。 谢谢
以下是 Lambda 的政策:
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:PutItem",
"dynamodb:GetItem",
"dynamodb:Query",
"dynamodb:UpdateItem"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:XXX:table/UserData"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": "${cognito-identity.amazonaws.com:sub}"
}
}
}
【问题讨论】:
-
您的问题与您对“cognito-identity.amazonaws.com:sub”的使用有关。见stackoverflow.com/questions/42605419/…
-
好吧,我刚刚发现 ${cognito-identity.amazonaws.com:sub} 并没有真正引用您从 cognito 用户池获得的身份验证令牌中的“sub”字段,而是您从该用户的身份池中获得的 IdentityId!
标签: amazon-web-services aws-lambda amazon-dynamodb