Node.js 如何在AWS Lambda中获取文件路径?

Node.js 如何在AWS Lambda中获取文件路径?,node.js,aws-lambda,google-cloud-storage,Node.js,Aws Lambda,Google Cloud Storage,我想使用Google云平台的客户端库向Google云平台发送一个文件,例如本例(Node.js代码示例): 我当前的代码如下所示: const s3Bucket = 'bucket_name'; const s3Key = 'folder/filename.extension'; const filePath = s3Bucket + "/" + s3Key; await storage.bucket(s3Bucket).upload(filePath, { gzip: true,

我想使用Google云平台的客户端库向Google云平台发送一个文件,例如本例(Node.js代码示例):

我当前的代码如下所示:

const s3Bucket = 'bucket_name';
const s3Key = 'folder/filename.extension';
const filePath = s3Bucket + "/" + s3Key;

await storage.bucket(s3Bucket).upload(filePath, {
    gzip: true,
    metadata: {
        cacheControl: 'public, max-age=31536000',
    },
});
但当我这样做时,有一个错误:

“enoint:没有这样的文件或目录,stat” “ch.ebu.mcma.google.eu-west-1.ibc.websiteExtract/AudioJobResults/audioGoogle.flac”

我还试图发送我在AWS控制台(复制路径按钮)“s3://s3-eu-west-1.amazonaws.com/ch.ebu.mcma.google.eu-west-1.ibc.website/ExtractAudioJobResults/audioGoogle.flac”中获得的路径,但没有成功


您似乎试图将数据从S3直接复制到Google云存储。这不是您的示例/教程所显示的。示例代码假设您将数据的本地副本上载到Google云存储。S3不是本地存储

你如何做到这一点:

  • 将数据下载到Lambda函数中的
    /tmp
  • 使用上面的示例代码从
    /tmp
  • (可选)从
    /tmp

  • 注意:当前
    /tmp
    下的可用存储限制为500MB。如果你想上传/复制比这个大的文件,这是行不通的。还要注意,lambda执行环境可能会被重复使用,因此,如果您计划复制大量文件,那么在自己之后进行清理(即第3步)可能是一个好主意。

    您是否正在尝试将和S3对象直接复制到谷歌云存储?如果不先下载它,我怀疑这是不可能的,而第一个示例并没有显示这一点。事实上,该评论明确指出,要上传的
    本地文件
    这里的重点是本地文件。S3不是本地存储;-)是的,我想将存储在AWS S3 Bucket中的文件发送到谷歌云存储。我不知道是不是“直接”的。谢谢你的留言,我想我现在明白该怎么处理了。实际上,我认为S3是一种本地存储:-)很高兴我们澄清了误解,我建议您将文件从S3下载到Lambda(
    /tmp
    )中的本地存储,然后从那里上传到Google云存储。请注意/tmp有一个500MB的限制。谢谢@Maurice,这就是我所做的,它按预期工作。请加上你的答案,这样我就可以接受了。