首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.promise()从来不返回任何东西

.promise()从来不返回任何东西
EN

Stack Overflow用户
提问于 2019-03-18 18:48:41
回答 6查看 20K关注 0票数 5

如果在Lambda中使用此代码,这符合我在堆栈溢出和AWS文档中看到的所有内容。

但是,它既不返回任何内容,也不抛出错误。代码只是停留在s3.getObject(params).promise()上,因此lambda函数在超时时运行,即使超过30秒。我试图获取的文件实际上是25 is。

知道为什么会这样吗?

代码语言:javascript
运行
复制
var AWS = require('aws-sdk');
var s3 = new AWS.S3({httpOptions: {timeout: 3000}});    

async function getObject(bucket, objectKey) {
        try {
            const params = {
                Bucket: bucket,
                Key: objectKey
            }
            console.log("Trying to fetch " + objectKey + " from bucket " + bucket)
            const data = await s3.getObject(params).promise()
            console.log("Done loading image from S3")
            return data.Body.toString('utf-8')
        } catch (e) {
            console.log("error loading from S3")
            throw new Error(`Could not retrieve file from S3: ${e.message}`)
        }
    }

在测试函数时,我会收到以下超时。

START RequestId: 97782eac-019b-4d46-9e1e-3dc36ad87124版本:$LATEST 2019-03-19T07:51:30.225Z 97782eac-019b-4d46-9e1e-9e1e-3 dc36ad87124试图从桶状扎尔日提取RequestId-pimdata-测试209-03-19T07:51:54.979Z97782eac-019b-4d46-9e1e-3 dc36ad87124errorMessage“:”无法从S3检索文件:连接在3000 S3之后超时“,“errorType”:"stackTrace":"getObject (/var/task/index.js:430:15)","","process._tickDomainCallback (内部/进程/next_tick.js:228:7)“} RequestId: 97782eac-019b-4d46-9e1e-3 dc36ad87124报告RequestId: 97782eac-019b-4d46-9e1e-3dc36ad87124持续时间: 24876.90 ms记帐时间: 24900 ms内存大小:24900 MB最大内存: 120 MB

我正在获取的图像实际上是公开的:LI.jpg

EN

回答 6

Stack Overflow用户

发布于 2019-03-18 19:19:05

代码语言:javascript
运行
复制
const data = (await (s3.getObject(params).promise())).Body.toString('utf-8')
票数 22
EN

Stack Overflow用户

发布于 2019-09-25 18:02:44

如果您的Lambda函数与VPC相关联,它将失去访问S3所需的internet访问权限。但是,您可以在VPC >终结点设置中创建一个S3端点,而不必手动为您的VPC设置设置Internet,而不必按照预期运行Lambda功能。

https://aws.amazon.com/blogs/aws/new-vpc-endpoint-for-amazon-s3/

票数 4
EN

Stack Overflow用户

发布于 2019-03-19 07:56:49

AWS的默认超时为120000 ms。如果您的lambda超时时间短于此,您将永远不会收到实际的错误。

要么延长AWS超时

代码语言:javascript
运行
复制
var AWS = require('aws-sdk');
var s3 = new AWS.S3({httpOptions: {timeout: 3000}});

或者延长你的灯的超时时间。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55228171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档