I have an iOS Shopping App and want to call a lambda Function for logging. But i dont want to call the lambda function by an API Gateway to save costs. Is there a possibility to
You can invoke lambda functions directly using the AWS iOS SDK. Here is a code snippet
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]
The integration test shown here https://github.com/aws-amplify/aws-sdk-ios/blob/335e4d82a641fdb9cdc84773bf115951e850b884/AWSLambdaTests/AWSLambdaTests.m#L110 demonstrates how you can invoke a lamdba function and validate the results.
You can do it in Swift using the 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)
}
}
Of course you'll need to setup correct permissions as described in the documentation AWS Lambda permissions