ios - 使用 Amplify 从 iOS swift 调用 aws lambda 函数
问题描述
平台
Swift 4、iOS 13、Xcode 11。使用 Amplify、GraphQL、Cognito
问题
我想触发一个名为onCall
. 它已经写好了,只是一个简单的空白函数。在客户端,我关注 [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
})
但我得到一个权限被拒绝的错误:
错误:错误域=com.amazonaws.AWSLambdaErrorDomain Code=0 "AccessDeniedException" UserInfo={StatusCode=403, responseStatusCode=403, responseHeaders={type = immutable dict, count = 5, entries => 2 : x-amzn-requestid = {contents = "83047425-06c6-4193-b5c6-ac8461d84aa0"} 3:Content-Length = 243 4:Content-Type = {contents = "application/json"} 5:x-amzn-errortype = {contents = "AccessDeniedException "} 6 : Date = {contents = "Thu, 07 May 2020 02:18:00 GMT"} } , Message=User: arn:aws:sts::870560247484:assumed-role/amplify-alpha-alphaenv-123654- authRole/CognitoIdentityCredentials 无权执行:lambda:InvokeFunction on resource:arn:aws:lambda:us-east-1:870560247484:function:onCall,responseDataSize=243, NSLocalizedFailureReason=AccessDeniedException}
我的 awsconfiguration.json 文件中有这一行
"LambdaInvoker" : {
"Default" : {
"Region": "us-east-1"
}
}
现在在文档中它说我应该使用 Amplify API,但我找不到任何用于触发 lambda 的放大 API,而且除了基本用例之外,文档非常稀疏。
可接受的解决方案
无论
lambdaInvoker
关于Amplify
.指向我或提供在 Amplify API 中调用 lamdas 的代码示例
[1] https://docs.aws.amazon.com/aws-mobile/latest/developerguide/how-to-ios-lambda.html
解决方案
首先请检查您是否使用正确的策略创建了 lambda:
F。在 Lambda 函数处理程序和角色下,选择从模板创建新角色。键入角色名称。选择名为Simple Microservice permissions的策略模板。
推荐阅读
- python - 熊猫:如何通过索引列表获取不成功的行
- c# - 在 C# 中将一个对象转换为另一个对象
- reactjs - 是什么让 React.memo 在阻止渲染方面不可靠?
- node.js - 为什么同域重定向的url会遇到CORS问题?
- c++ - gdb:在 C++ 中的类函数上创建断点
- node.js - 为什么 NodeJS 不计算值?
- flutter - Flutter TextInputType.number 不强制使用仅数字键盘
- hyperledger-fabric - 使用 CompositeKey 创建索引和普通索引有什么区别?
- python - `scipy.stats.shapiro` 显示令人费解的结果
- javascript - 原型:使用构造函数和仅使用对象本身之间的区别