【发布时间】:2018-08-11 20:06:16
【问题描述】:
我想从我系统上的 node.js 文件调用 AWS Lambda。我关注Invoking a Lambda Function in a Browser Script 并为未经身份验证的用户创建了一个 Congnito 身份池,并将 IdentityPoolId 嵌入到节点 js 文件中,如下所示:
let AWS = require('aws-sdk');
AWS.config.region = '<my-region>';
let lambda = new AWS.Lambda();
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: '<my-identity-pool-id>'
});
let params = {
FunctionName: '<my-lambda-function>',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: '{ "name" : "my-name" }'
}
lambda.invoke(params, (err, data) => {
if (err) {
console.log(err);
}
else {
if (data.Payload) {
console.log('my-lambda-function said: ' + data.Payload);
}
}
});
我的 Lambda 函数:
exports.handler = function(event, context) {
context.succeed('Hello ' + event.name);
};
我创建了一个附加了 AWSLambdaExecute、AWSLambdaBasicExecutionRole 和 AmazonCognitoReadOnly 策略的 IAM 角色,我在创建 Lambda 时使用了相同的角色,并且我在 Cognito 中为未经授权的访问创建的身份池中更新了相同的角色。
当我运行 node app.js 时,我得到的只是错误: UnrecognizedClientException:请求中包含的安全令牌无效。
是否有人可以通过在我的本地系统上编写一个简单的 NodeJS 文件而不在 S3 存储桶中上传任何 HTML/CSS/JS 文件并且不使用 AccessKeyID、SecretKeyId、仅使用关联的角色来指出我调用 AWS lambda 的正确方向与 Lambda。
提前致谢。
【问题讨论】:
-
Aws api 网关?
-
嗨@Darkrum,你建议我在node.js 中使用API Gateway 调用lambda。你知道任何教程显示如何做到这一点?
标签: node.js amazon-web-services aws-lambda