【问题标题】:How to call Lambda function by iOS SDK?iOS SDK如何调用Lambda函数?
【发布时间】:2023-03-15 02:55:02
【问题描述】:

我有一个 iOS 购物应用,想调用一个 lambda 函数进行日志记录。但我不想通过 API 网关调用 lambda 函数来节省成本。是否可以使用亚马逊的 iOS SDK 向 Lambda 发送日志?

【问题讨论】:

  • 我认为SDK无论如何只会包装API调用,它不会影响成本,您仍在使用该服务

标签: ios amazon-web-services lambda


【解决方案1】:

您可以使用 AWS iOS 开发工具包直接调用 lambda 函数。这是一个代码sn-p

AWSLambda *lambda = [AWSLambda defaultLambda];
AWSLambdaInvocationRequest *invocationRequest = [AWSLambdaInvocationRequest new];
invocationRequest.functionName = @"functionname";
invocationRequest.invocationType = AWSLambdaInvocationTypeRequestResponse;
NSDictionary *parameters = ...

invocationRequest.payload = [NSJSONSerialization dataWithJSONObject:parameters
                                                            options:kNilOptions
                                                              error:nil];

[lambda invoke:invocationRequest] 

此处显示的集成测试 https://github.com/aws-amplify/aws-sdk-ios/blob/335e4d82a641fdb9cdc84773bf115951e850b884/AWSLambdaTests/AWSLambdaTests.m#L110 演示了如何调用 lamdba 函数并验证结果。

【讨论】:

    【解决方案2】:

    您可以在 Swift 中使用 AWSLambda Pod :

    import AWSLambda
    
    // ...
    
    let request = AWSLambdaInvocationRequest()!
    request.functionName = "name of your lambda"
    request.invocationType = .requestResponse
    let params: [String: Any] = [:]
    request.payload = try! JSONSerialization.data(withJSONObject: params, options: [])
    
    AWSLambda.default().invoke(request) { response, error in
        if let error = error {
            print(error)
        } else {
            print(response!.debugDescription)
        }
    }
    

    当然,您需要按照文档AWS Lambda permissions 中的说明设置正确的权限

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 2015-09-30
      • 2021-06-05
      • 1970-01-01
      • 2020-02-24
      相关资源
      最近更新 更多