我正在尝试使用iOS Swift访问Lambda函数,这是我设置的AWS角色
所有这些,当我使用我的iPhone应用程序(使用模拟器)执行相同操作时,我收到此错误。
"x-amzn-errortype" = **AccessDeniedException**;
-[AWSJSONResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body:
**{"Message":"The role defined for the function cannot be assumed by Lambda."}**
我在这里遗漏了什么吗?
答案 0 :(得分:0)
好像您已将Lambito配置为Cognito角色。
您必须为角色Trust Relationship
而非 ALLOW_LAMBDA_EXECUTION
设置以下ALLOW_LAMBDA_EXECUTE
:
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
}
答案 1 :(得分:0)
经过大量的商议,经历多个文档并做了一些RnD,事情开始起作用了。
是的,Trust Relationship应该有lambda执行和Action:sts:AssumeRoleWithWebIdentity它应该有条件
{
"Version": "2018-1-30",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com",
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "identity-pool"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "unauthenticated"
}
}
}
]
}
现在,这对Lambdas角色来说效果不佳'它不能承担这个角色,我觉得它很有意义,因为它没有什么能力这么做。
因此我创造了2个差异角色 角色1-具有分配给Cognito fedrated identitiy access的上述信任关系 角色2-没有更改分配给Lambda角色的信任关系。
现在,我的iOS访问都可以使用cognito身份以及AWS APIMicroServices ...
确实需要一段时间来解决这个问题。