Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 成功上传到AWS S3,但表示bucket仍然为空_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Amazon web services 成功上传到AWS S3,但表示bucket仍然为空

Amazon web services 成功上传到AWS S3,但表示bucket仍然为空,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我的函数成功地将我的图像上传到S3中,但我在任何地方都看不到该文件 const AWS = require('aws-sdk'); let s3= new AWS.S3(); exports.handler = async(event, context, callback) => { const promises = []; var message_body = JSON.parse(event.body); let encodedIma

我的函数成功地将我的图像上传到S3中,但我在任何地方都看不到该文件

const AWS = require('aws-sdk');
let s3= new AWS.S3();


exports.handler = async(event, context, callback) => {


    const promises = [];

        var message_body = JSON.parse(event.body);

        let encodedImage = message_body.base64;
        let decodedImage = Buffer.from(encodedImage, 'base64');

        var params = {
            "Bucket": "mybucket69-bucket",
            "Key": "testkey",
            "Body": decodedImage
        };

        console.log("function triggered. ");

        promises.push(s3.upload(params));

        await Promise.all(promises).then(data => {
            console.log('Success');
            console.log(data);
            callback(null, 'Success Uploading image');
        }).catch(err => {
            console.log(err);
            callback(null, 'Failed to upload image');
        });


};
Cloudwatch日志:


无数次检查bucketname,确保S3 bucket是公共的,现在完全不知道为什么bucket仍然是空的

您缺少
.promise()
方法调用

promises.push(s3.upload(params).promise());
如果没有
.promise()
调用,则实际上不会触发上载调用。阅读了解在AWS Lambda中使用NodeJS承诺时的常见错误

顺便说一句,如果您在NodeJS10.x上使用async/await,并且您的逻辑中实际上只有一个映像,如代码所示,下面是同一代码的一个非常简化且可读的版本:)

以下是输出

START RequestId: 16b2982d-ac4f-18d6-e562-f6d81c973053 Version: $LATEST
2020-01-08T01:31:14.159Z        16b2982d-ac4f-18d6-e562-f6d81c973053    INFO    function triggered. 
2020-01-08T01:31:14.348Z        16b2982d-ac4f-18d6-e562-f6d81c973053    INFO    Success
2020-01-08T01:31:14.352Z        16b2982d-ac4f-18d6-e562-f6d81c973053    INFO    { ETag: '"7c6b8fecf5a9a9925d4115ee4f3c85a6"',
  Location: 'https://sarthakj178.s3.ap-south-1.amazonaws.com/testkey',
  key: 'testkey',
  Key: 'testkey',
  Bucket: 'sarthakj178' }
END RequestId: 16b2982d-ac4f-18d6-e562-f6d81c973053
REPORT RequestId: 16b2982d-ac4f-18d6-e562-f6d81c973053  Init Duration: 1728.90 ms       Duration: 207.42 ms     Billed Duration: 300 ms Memory Size: 128 MB       Max Memory Used: 70 MB

null
文件在S3中创建

aws s3 ls s3://sarthakj178
2020-01-08 07:01:14         16 testkey

您缺少
.promise()
方法调用

promises.push(s3.upload(params).promise());
如果没有
.promise()
调用,则实际上不会触发上载调用。阅读了解在AWS Lambda中使用NodeJS承诺时的常见错误

顺便说一句,如果您在NodeJS10.x上使用async/await,并且您的逻辑中实际上只有一个映像,如代码所示,下面是同一代码的一个非常简化且可读的版本:)

以下是输出

START RequestId: 16b2982d-ac4f-18d6-e562-f6d81c973053 Version: $LATEST
2020-01-08T01:31:14.159Z        16b2982d-ac4f-18d6-e562-f6d81c973053    INFO    function triggered. 
2020-01-08T01:31:14.348Z        16b2982d-ac4f-18d6-e562-f6d81c973053    INFO    Success
2020-01-08T01:31:14.352Z        16b2982d-ac4f-18d6-e562-f6d81c973053    INFO    { ETag: '"7c6b8fecf5a9a9925d4115ee4f3c85a6"',
  Location: 'https://sarthakj178.s3.ap-south-1.amazonaws.com/testkey',
  key: 'testkey',
  Key: 'testkey',
  Bucket: 'sarthakj178' }
END RequestId: 16b2982d-ac4f-18d6-e562-f6d81c973053
REPORT RequestId: 16b2982d-ac4f-18d6-e562-f6d81c973053  Init Duration: 1728.90 ms       Duration: 207.42 ms     Billed Duration: 300 ms Memory Size: 128 MB       Max Memory Used: 70 MB

null
文件在S3中创建

aws s3 ls s3://sarthakj178
2020-01-08 07:01:14         16 testkey

您是否尝试过刷新s3存储桶?大约100次=)尝试使用
putObject
方法而不是
upload
s3.putObject(params).promise()
尝试过,它也会超时我的函数你尝试过刷新s3存储桶吗?大约100次=)尝试使用
putObject
方法,而不是
上传
s3.putObject(params).promise()
尝试过这一点,它也会超时我的函数这可能意味着请求正在通过,但由于文件太大或网络连接不良而失败。你能试着用一个较小的图像,或者如果可能的话,一些小的txt文件吗?另外,您试图通过promises阵列发送的文件是否过多?一张8.9kb的图像。承诺中只有一项,lambda函数超时为1分钟。在删除图像解码逻辑并在上载调用()中发送“someRandomText”作为“Body”后,我尝试了您的代码。对我来说似乎很好。你能试试同样的吗?只是为了确定问题是出在图像还是s3异步调用上。我将
的“Body”:decodedImage
更改为
的“Body”:“testString1”
,当我添加
.promise()
时,我的函数超时了。我目前正在使用
Node.js 10.x
,不管这是否重要。试过的
8.10
12.x
仍然不能与
一起使用。promise
非常奇怪:)顺便说一句,如果您在Node10中使用async/await,并且您实际上只有一个映像需要处理,我将更新我的答案,以包含您代码的简化版本。这可能意味着请求正在通过,但由于文件太大或网络连接不良而失败。你能试着用一个较小的图像,或者如果可能的话,一些小的txt文件吗?另外,您试图通过promises阵列发送的文件是否过多?一张8.9kb的图像。承诺中只有一项,lambda函数超时为1分钟。在删除图像解码逻辑并在上载调用()中发送“someRandomText”作为“Body”后,我尝试了您的代码。对我来说似乎很好。你能试试同样的吗?只是为了确定问题是出在图像还是s3异步调用上。我将
的“Body”:decodedImage
更改为
的“Body”:“testString1”
,当我添加
.promise()
时,我的函数超时了。我目前正在使用
Node.js 10.x
,不管这是否重要。试过的
8.10
12.x
仍然不能与
一起使用。promise
非常奇怪:)顺便说一句,如果您在Node10中使用async/await,并且您实际上只有一个映像需要处理,我将更新我的答案,以包含您代码的简化版本。也许这对你有用。