使用Amplify从iOS swift调用aws lambda函数 站台
Swift 4,iOS 13,Xcode 11。使用Amplify、GraphQL、Cognito 问题 我想触发一个名为使用Amplify从iOS swift调用aws lambda函数 站台,ios,swift,amazon-web-services,aws-amplify,Ios,Swift,Amazon Web Services,Aws Amplify,Swift 4,iOS 13,Xcode 11。使用Amplify、GraphQL、Cognito 问题 我想触发一个名为onCall的AWS lambda函数。它已经编写好了,只是一个简单的空白函数。在客户端,我遵循[1]的规定,并且: let lambdaInvoker = AWSLambdaInvoker.default() let jsonObject: [String: Any] = [ "key1" : "value1", "key
onCall
的AWS lambda函数。它已经编写好了,只是一个简单的空白函数。在客户端,我遵循[1]的规定,并且:
let lambdaInvoker = AWSLambdaInvoker.default()
let jsonObject: [String: Any] = [
"key1" : "value1",
"key2" : 2 ,
"key3" : [1, 2],
"isError" : false
]
lambdaInvoker.invokeFunction("onCall", jsonObject: jsonObject)
.continueWith(block: {(task:AWSTask<AnyObject>) -> Any? in
if( task.error != nil) {
print("Error: \(task.error!)")
return nil
}
print(">> lambda \(task)")
// Handle response in task.result
return nil
})
现在在文档中,它说我应该使用Amplify API,但是我找不到任何用于触发lambda的Amplify API,并且除了基本用例之外,文档非常稀少
可接受的解决方案
lambdaInvoker
按原样工作,而不考虑有关放大的声明
[1] 首先,请检查您是否使用正确的策略创建了lambda: f.在Lambda函数处理程序和角色下,选择从模板创建新角色。键入角色名称。选择名为简单微服务权限的策略模板
您还可以使用网关API并通过它触发lambda。同时,我将尝试查找缺少的策略。我还尝试将lambda角色作为策略。相同的错误消息。基本上,cognito帐户未配置为从此区域调用lambda函数。如果尝试使用“允许”操作“invokeFunction”设置策略并设置主体:
“主体”:{“联合”:“cognito identity.amazonaws.com”}
,该怎么办。也许在这个方向上钻孔是有意义的我应该在哪里指定呢?在awsconfiguation.json或console.aws.amazon.com/lambda/?您需要调整lambda的执行角色,可以在aws web控制台->lambda->选项卡权限中找到
"LambdaInvoker" : {
"Default" : {
"Region": "us-east-1"
}
}