不允许:没有授权角色/CognitoIdentityCredentials在资源xxxxx上执行:geo:ListGeo



我正在尝试使用SDK本身(Location(中的一些新的Amazon定位服务端点,但遇到了一些不一致的错误。

即使IAM角色geo:*中允许所有内容(对于每个资源都相同(,我也总是发现locationClient.listGeofences之类的函数未授权的错误。

任意地,其他一些函数,如getMapStyleDescriptorsearchPlaceIndexForTextcalculateRoute,都不会产生问题。这些函数在geo:...中使用各自的策略,所以我很困惑它是如何检测某些策略而不检测其他策略的。

这个错误很常见,它显示了以下内容和已经允许的策略:

Uncaught (in promise) AccessDeniedException: User: arn:aws:sts::xxxx:assumed-role/AmazonLocationTestRole/CognitoIdentityCredentials is not authorized to perform: geo:ListGeofences on resource: arn:aws:geo:eu-west-1:xxxx:*

请注意,访问权限适用于Cognito中身份池中未经身份验证的用户,但这不应该是问题所在。

const client = new AWS.Location({
credentials: credentials,
region: AWS.config.region
});
console.log(await client.listGeofences({
CollectionName: "explore.geofence-collection"
}).promise())
console.log(await client.getMapStyleDescriptor({
MapName: mapName
}).promise());

以防万一,IAM角色中的信任关系如下所示:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "eu-west-1:xxxx"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "unauthenticated"
}
}
}
]
}

亚马逊定位服务中每种资源的每一项政策都是允许的。

你知道会发生什么吗?

非常感谢!

根据https://docs.aws.amazon.com/location/latest/developerguide/authenticating-using-cognito.html#cognito-创建用户池未经身份验证的身份只能访问以下操作:

  1. geo:GetMap*
  2. geo:搜索位置索引*
  3. geo:BatchUpdateDevicePosition
  4. geo:计算路线

相关内容

  • 没有找到相关文章

最新更新