我是nodeJS新手,目前实现了一个拷贝端点,在S3桶中使用nodeJS将文件复制到另一个。因此,我需要编写的Lambda函数需要将.m3u8文件及其对应的.ts文件复制到另一个桶中,同时为.m3u8文件提供不同的名称。如果源文件的命名格式是${mediaId1}.m3u8,那么复制的.m3u8文件应该是${mediaId2}.m3u8.源.m3u8及其对应的.ts文件在同一个桶中,而.ts文件和其他.m3u8文件在处理时不需要更改其名称,因此在更改名称时只需要复制主.m3u8。
我试图按以下方式处理.m3u8文件。
const SourceKey = `${result.Item.system}/${result.Item.prefix}/${result.Item.mediaId}/AppleHLS1/${result.Item.mediaId}.m3u8`;
const TargetKey = `${result.Item.system}/${data.prefix}/${targertmediaId}/AppleHLS1/${targertmediaId}.m3u8`;
var paramsS3 = {
Bucket: process.env.S3_BUCKET_NAME_OUTPUT,
Key: TargetKey,
Metadata: data.metadata,
SourceKey: SourceKey,
};
s3.copyObject(paramsS3, function (error, data) {
if (error) console.log(error, error.stack);
else console.log(data)
});因此,我是否有可能列出桶中剩余的.ts和.m3u8文件,并逐个复制它们,而不需要同时处理每个文件。
下面是所有.ts和.m3u8文件所在的桶。只有最后一个.m3u8文件需要更改其名称,而其他.m3u8和.ts在处理时保持不变。


发布于 2021-07-16 04:19:25
您可以使用ListObjectsCommand客户端中可用的s3命令来列出桶中的所有对象。可以为筛选结果指定对象的前缀。
在您的示例中,您可能需要准备两个ListObjectsCommand,一个用于主.m3u8文件,另一个用于所有其他文件。
然后可以使用PutObjectCommand逐个复制文件。
检查开发人员指南
https://stackoverflow.com/questions/68299571
复制相似问题