当 运行 用于 Amplify 部署的 lambda 函数时,未调用 AWS SDK 函数
AWS SDK function is not being called when run used on a lambda function deployed by Amplify
我正在尝试以编程方式将用户添加到我的 Amplify 项目中的组。我创建了一个如下所示的 lambda 函数,并使用放大函数部署了它。我按照这篇文章设置了函数角色的权限:https://www.linkedin.com/pulse/aws-amplify-adding-user-group-programmatically-guillermo-misa-iii。函数 get 被执行。没有错误。它甚至没有 运行 控制台日志,这意味着没有调用回调。用户也没有被添加到组中。 lambda 函数日志中没有错误日志。知道发生了什么事吗?
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
const cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
cognitoIdentityServiceProvider.adminAddUserToGroup({
GroupName: 'abcd', //your confirmed user gets added to this group
UserPoolId: event.arguments.userPoolId,
Username: event.arguments.userName
}, function(err, data) {
console.log('Ran the function')
if (err) {
callback(err) // uh oh, an error
}
callback(null, event); // yay! success
})
// return response;
};
在我遵循的指南中,他们使用普通函数作为 lambda 处理程序:
exports.handler = (event, context, callback) => {})
但是我使用了一个async
函数:
exports.handler = async (event, context, callback) => {})
似乎在async
函数中,lambda 不会等到回调被调用。它希望我们在代码中使用 async
await
语法。所以,我必须像这样转换函数:
try {
await cognitoIdentityServiceProvider.adminAddUserToGroup({
GroupName: 'abcd', //your confirmed user gets added to this group
UserPoolId: event.arguments.userPoolId,
Username: event.arguments.userName
}).promise()
callback(null, event); // yay! success
} catch (error) {
console.log(error)
}
现在一切正常! 注意 如果我们调用 .promise()
.
我们可以从 aws-sdk
函数中得到一个承诺
我正在尝试以编程方式将用户添加到我的 Amplify 项目中的组。我创建了一个如下所示的 lambda 函数,并使用放大函数部署了它。我按照这篇文章设置了函数角色的权限:https://www.linkedin.com/pulse/aws-amplify-adding-user-group-programmatically-guillermo-misa-iii。函数 get 被执行。没有错误。它甚至没有 运行 控制台日志,这意味着没有调用回调。用户也没有被添加到组中。 lambda 函数日志中没有错误日志。知道发生了什么事吗?
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
const cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
cognitoIdentityServiceProvider.adminAddUserToGroup({
GroupName: 'abcd', //your confirmed user gets added to this group
UserPoolId: event.arguments.userPoolId,
Username: event.arguments.userName
}, function(err, data) {
console.log('Ran the function')
if (err) {
callback(err) // uh oh, an error
}
callback(null, event); // yay! success
})
// return response;
};
在我遵循的指南中,他们使用普通函数作为 lambda 处理程序:
exports.handler = (event, context, callback) => {})
但是我使用了一个async
函数:
exports.handler = async (event, context, callback) => {})
似乎在async
函数中,lambda 不会等到回调被调用。它希望我们在代码中使用 async
await
语法。所以,我必须像这样转换函数:
try {
await cognitoIdentityServiceProvider.adminAddUserToGroup({
GroupName: 'abcd', //your confirmed user gets added to this group
UserPoolId: event.arguments.userPoolId,
Username: event.arguments.userName
}).promise()
callback(null, event); // yay! success
} catch (error) {
console.log(error)
}
现在一切正常! 注意 如果我们调用 .promise()
.
aws-sdk
函数中得到一个承诺