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

时间:2019-10-21 08:50:39

标签: node.js aws-lambda google-cloud-storage

我想使用其客户端库将文件发送到Google Cloud Platform,例如本示例(Node.js代码示例):https://cloud.google.com/storage/docs/uploading-objects

enter image description here

我当前的代码如下:

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',
    },
});

但是当我这样做时,会出现错误:

  

“ ENOENT:没有这样的文件或目录,统计信息   'ch.ebu.mcma.google.eu-west-1.ibc.websiteExtract / AudioJobResults / audioGoogle.flac'“

我还尝试发送在AWS Console中获得的路径(“复制路径”按钮)“ s3://s3-eu-west-1.amazonaws.com/ch.ebu.mcma.google.eu-west-1 .ibc.website / ExtractAudioJobResults / audioGoogle.flac”,但无效。

enter image description here

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试将数据从S3直接复制到Google Cloud Storage。这不是您的示例/教程显示的内容。该示例代码假定您将数据的本地副本上载到Google Cloud Storage。 S3是不是本地存储。

您如何做:

  1. 将数据下载到Lambda函数中的/tmp
  2. 使用上面的示例代码从/tmp上上传数据
  3. (可选)从/tmp删除上传的数据

请注意/tmp下的可用存储空间目前限制为500MB。如果您要上传/复制大于此大小的文件,将无法使用。另外请注意,lambda执行环境可能会被重复使用,因此如果您打算复制大量文件,则清理完自己(即步骤3)可能是个好主意。