Mar*_*gov 5 lambda amazon-s3 amazon-web-services node.js
我在lambda函数中有以下代码,这是一个Amazon echo技能:
"AMAZON.HelpIntent": function (intent, session, response) {
var speechOutput ="Start";
// Try S3
var s3 = new AWS.S3({httpOptions: { timeout: 2000 }});
var params = {
Bucket: 'bucket',
Key: 'file',
};
s3.getObject(params, function (err, data) {
if (err) {
// console.log(err, err.stack);
speechOutput += "inside error";
speechOutput += "Did not get it!" + err + ":===:" + err.stack;
}
else {
speechOutput += "inside success";
// console.log(data);
speechOutput += "Got it! :" + data.Body.toString('ascii');
}
});
speechOutput += " End. ";
var repromptText = "Help reprompt.";
response.ask(speechOutput, repromptText);
},
Run Code Online (Sandbox Code Playgroud)
看起来很简单......但是,当技能执行时,响应如下:
{
"version": "1.0",
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "Start End. "
},
"shouldEndSession": false,
"reprompt": {
"outputSpeech": {
"type": "PlainText",
"text": "Help reprompt."
}
}
},
"sessionAttributes": {}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,s3.getObject不会抛出任何错误,也不会运行.
lamda函数具有'lambda_basic_execution'角色,在IAM中定义为具有对S3的完全访问权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在S3内部,有一个存储桶(名为"存储桶")和文件(名为"文件").可以从CLI和Web访问文件.存储桶和文件的权限设置为"所有人".
请帮忙.
您无需等待 S3 调用完成。代码中的最后 3 行在s3.getObject()调用回调之前执行。尝试通过将最后 3 行移动到回调中来更改代码,如下所示:
"AMAZON.HelpIntent": function (intent, session, response) {
var speechOutput ="Start";
// Try S3
var s3 = new AWS.S3({httpOptions: { timeout: 2000 }});
var params = {
Bucket: 'bucket',
Key: 'file',
};
s3.getObject(params, function (err, data) {
if (err) {
// console.log(err, err.stack);
speechOutput += "inside error";
speechOutput += "Did not get it!" + err + ":===:" + err.stack;
}
else {
speechOutput += "inside success";
// console.log(data);
speechOutput += "Got it! :" + data.Body.toString('ascii');
}
speechOutput += " End. ";
var repromptText = "Help reprompt.";
response.ask(speechOutput, repromptText);
});
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3754 次 |
| 最近记录: |