我创建了一个lambda函数,将在我的React应用程序中创建的新用户添加到我的认知用户池中的一个组中。
我使用这是来自医生的指南来通过AppSync调用lambda函数。
现在,当我运行该函数时,会得到以下预期错误:
User:编校未被授权执行:认知-idp:AdminAddUserToGroup on resource: redacted
到目前为止,我已经将这个附加策略添加到CustomResources.json中的角色中:
{
"PolicyName": "CognitoAuthLambdaFunction",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["cognito-idp:AdminAddUserToGroup"],
"Resource": [
{
"Fn::Sub": [
"arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:setUsersGroup-${env}",
{ "env": { "Ref": "env" } }
]
}
]
}
]
}
}如何动态地引用认知用户池,以便在env之间进行切换?
发布于 2019-03-07 16:35:29
我假设您在问题中给出的策略是Lambda执行策略,即在运行时传递给Lambda的策略。此策略将授权在Lambda中运行的代码调用给定的API列表。
如果我的假设是正确的,则策略中有一个错误,因为资源属性引用了您的Lambda函数本身(ARN以arn:aws:lambda开头),而它应该引用您希望授予访问权限的用户池(ARN应该从arn:aws:cognito-identity开始)。
请参阅https://docs.aws.amazon.com/cognito/latest/developerguide/resource-permissions.html
假设在同一个CloudFormation模板中创建了认知用户池,则可以使用Fn::GetAtt内在函数访问认知用户池ARN,如
{ "Fn::GetAtt" : [ "logical_resource_id_cognito_user_pool", "ARN" ] }有关https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html资源类型上可用的属性,请参见AWS::Cognito::UserPool。
https://stackoverflow.com/questions/55047942
复制相似问题