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 s3 根据元数据搜索和移动S3 bucket中的文件_Amazon S3_Lambda_Metadata - Fatal编程技术网

Amazon s3 根据元数据搜索和移动S3 bucket中的文件

Amazon s3 根据元数据搜索和移动S3 bucket中的文件,amazon-s3,lambda,metadata,Amazon S3,Lambda,Metadata,我目前有一个设置,将音频文件上载到一个具有用户定义元数据的存储桶中。我的下一个目标是过滤元数据并将文件移动到其他文件夹。目前我有一个lambda函数,可以将音频转换成mp3。因此,我需要帮助调整代码,以便元数据通过编码持久化,并存储在数据库中。以及创建另一个函数来搜索特定的元数据值,并将相应的文件移动到另一个bucket 'use strict'; console.log('Loading function'); const aws = require('aws-sdk'); const

我目前有一个设置,将音频文件上载到一个具有用户定义元数据的存储桶中。我的下一个目标是过滤元数据并将文件移动到其他文件夹。目前我有一个lambda函数,可以将音频转换成mp3。因此,我需要帮助调整代码,以便元数据通过编码持久化,并存储在数据库中。以及创建另一个函数来搜索特定的元数据值,并将相应的文件移动到另一个bucket

'use strict';

console.log('Loading function');

const aws = require('aws-sdk');

const s3 = new aws.S3({ apiVersion: '2006-03-01' });

const elastictranscoder = new aws.ElasticTranscoder();

// return basename without extension
function basename(path) {
   return path.split('/').reverse()[0].split('.')[0];
}

// return output file name with timestamp and extension
function outputKey(name, ext) {
   return name + '-' + Date.now().toString() + '.' + ext;
}

exports.handler = (event, context, callback) => {
    const bucket = event.Records[0].s3.bucket.name;
       const key = event.Records[0].s3.object.key;

       var params = {
         Input: { 
           Key: key
         },
         PipelineId: '1477166492757-jq7i0s', 
         Outputs: [
           {
             Key: basename(key)+'.mp3',
             PresetId: '1351620000001-300040', // mp3-128
           }
         ]
       };

       elastictranscoder.createJob(params, function(err, data) {
         if (err){
           console.log(err, err.stack); // an error occurred
           context.fail();
           return;
         }
         context.succeed();
       });
};
我也做了一些研究,知道元数据应该可以通过

s3.head_object(Bucket=bucket, Key=key)

S3不提供搜索元数据的机制


要实现您正在考虑的仅使用本机S3功能的目的,唯一的方法是遍历对象列表,并为每个对象发送
HEAD
请求,但当然,对于大型存储桶来说,这并不能很好地扩展,而且每个请求都要收费,尽管它很小。

S3不提供搜索元数据的机制


要实现您正在考虑的仅使用本机S3功能的目的,唯一的方法是遍历对象列表,并为每个对象发送
HEAD
请求,但当然,对于大型存储桶来说,这并不能很好地扩展,而且每个请求都要收费,虽然这是一个小问题。

您能澄清一下您的实际问题吗?在您的愿望(移动、检索元数据、存储元数据、搜索元数据)中,您寻求哪一个方面的帮助?你尝试了什么,发生了什么?为了澄清,我可以将元数据存储到音频文件中,并且我知道如何检索它。问题是我如何搜索100个音频文件的元数据,并将它们从一个存储桶移动到另一个存储桶?您能否澄清您的实际问题?在您的愿望(移动、检索元数据、存储元数据、搜索元数据)中,您寻求哪一个方面的帮助?你尝试了什么,发生了什么?为了澄清,我可以将元数据存储到音频文件中,并且我知道如何检索它。问题是我如何搜索100个音频文件的元数据,并将它们从一个存储桶移动到另一个存储桶?