如何了解 AWS IAM 策略中实际设置为"${ ... }"的内容?



我正试图使用Lambda IAM角色策略限制对基于Cognito用户池的Dynamo DB表中项目的访问。

在这个过程中,我很难找到真正设置为"${cognito identity.aamazonaws.com:aud}"在下面的Lambda IAM政策中。

{
"Effect": "Allow",
"Action": [
"dynamodb:Scan",
"dynamodb:Query",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:DeleteItem",
"dynamodb:DescribeTable"
],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": "${cognito-identity.amazonaws.com:aud}"
}
},
"Resource": "arn:aws:dynamodb:ap-southeast-2:*:*"
}

我假设它是应用客户端ID或身份池ID;ap-southeast-2:xxxxxxxx-aaaa-bbb-cccc-123456789012";,但是有没有一种方法可以输出实际设置为"0"的内容${cognito identity.aamazonaws.com:aud}"在运行时确认?

我是AWS的新手。

更新-附加信息

就在通过API网关调用Lambda之前,我可以看到类似于;xxxxxxxx nv0ff03e9joqh3om3h";(我的应用程序客户端ID(使用以下内容:

const session = await Auth.currentSession();
alert(session.idToken.payload.aud); //something like "xxxxxxxxnv0ff03e9joqh3om3h"

然而,我在Lambda DynamoDB查询中使用应用程序客户端ID得到AccessDeniedException。

ExpressionAttributeValues: {
":partitionkey": "xxxxxxxxnv0ff03e9joqh3om3h",
},

我可以通过将IAM策略更改为:来避免AccessDeniedException错误

"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": "123abc"
}
},

我的Lambda DynamoDB查询到:

ExpressionAttributeValues: {
":partitionkey": "123abc",
},

我也试过Cognito身份池ID,但没有成功。

audsub的映射值是特定于提供程序的,并在文档中列出。

在Cognito用户池联盟的情况下,它将被设置为客户端ID。

最新更新