Я только что написал свою первую функцию Lambda, но на данный момент она не работает.
Я попробовал несколько вариантов в коде; частично следуя тому, что я мог придумать, и частично следуя тому, что я мог встретить в сети; но все не удалось.
Я хочу, чтобы лямбда-функция выводила listUsers в UserPool и получала электронное письмо для данного подпрограммы, переданного в качестве параметра.
Вот функция Swift, вызывающая функцию Lambda:
func getLambdaInfo() {
let lambdaInvoker = AWSLambdaInvoker.default(),
jsonObject:[String: Any] = ["sub" : "MY-USER-SUB"]
lambdaInvoker.invokeFunction("myLambdaFunc", jsonObject: jsonObject)
.continueWith(block: {
(task:AWSTask<AnyObject>) -> Any? in
if( task.error != nil) {
print("Error: \(task.error!)")
return nil
}
print("\(#function) ---- WE ARE HERE!!!!")
// Handle response in task.result:
if let JSONDictionary = task.result as? NSDictionary {
print("Result: \(JSONDictionary)")
}
return nil
})
}
Вот лямбда-функция:
var AWS = require('aws-sdk/dist/aws-sdk-react-native');
exports.handler = async (event,context) => {
var params = {
UserPoolId: 'MY-POOL-ID',
AttributesToGet: ['email'],
Limit: '2'
};
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
cognitoidentityserviceprovider.listUsers(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
// How can I get this data sent in the response is probably the issue ??
});
const response = {
inBound: event.sub,
statusCode: 200,
body: JSON.stringify('Hello from Lambda!')
};
return response;
}
Вот что можно увидеть в консоли отладки Xcode:
getLambdaInfo() ---- WE ARE HERE!!!!
Result: {
body = "\"Hello from Lambda!\"";
inBound = "MY-USER-SUB";
statusCode = 200;
}
Я надеюсь, что кто-то с большим количеством AWSLambda, чем я, сможет дать мне несколько советов относительно изменений, которые мне нужно внести в мой код, чтобы получить результат (адрес электронной почты), который я хочу (в моем Swift getLambdaInfo ()).