开发者社区 > 云原生 > Serverless > 正文

oss 一上传上来,能否设置触发我的一个函数,比如,计算它的md5?然后把这个值 保存到同一个目录下

oss 一上传上来,能否设置触发我的一个函数,比如,计算它的md5?然后把这个值 保存到同一个目录下 md5.txt?

展开
收起
绿子直子 2023-05-31 14:45:19 211 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    您可以在阿里云 OSS 中设置触发器,使得一旦有新的对象上传到指定的 OSS Bucket 中,就会触发一个函数计算的函数来处理该对象。在函数中,您可以计算该对象的 MD5 值,并将其保存到同一个目录下的 md5.txt 文件中。

    下面是一些可能的操作步骤:

    创建一个 OSS Bucket,并在 Bucket 中创建一个文件夹,用于存储上传的对象和计算出的 MD5 值。

    创建一个函数计算的函数,并编写计算 MD5 值的代码。函数可以使用 Python、Node.js、Java、Go 等语言编写,具体语言和代码实现方式可以根据您的需求和喜好选择。在计算 MD5 值后,您可以将其保存到同一个目录下的 md5.txt 文件中。

    在阿里云 OSS 控制台中,找到您创建的 Bucket,并进入 Bucket 的触发器管理页面。

    在触发器管理页面中,创建一个新的触发器,并配置相应的触发条件和函数信息。您可以选择“对象创建”触发器类型,并将触发条件设置为“前缀为指定值的对象”,然后指定对象的前缀为您所创建的文件夹名称。在函数信息中,选择您所创建的函数,并在函数参数中指定要计算 MD5 值的对象的信息。

    保存并激活触发器,然后上传一个对象到指定的 OSS Bucket 中,以测试触发器是否正常工作。

    等待触发器被激活后,您的函数计算函数就会自动执行,并计算出上传对象的 MD5 值。然后,您就可以在同一个目录下的 md5.txt 文件中找到该值,并进行后续的处理和管理。

    请注意,对象上传和函数计算都会产生一定的费用,因此建议您在进行操作前,充分了解费用和计费规则,并进行必要的预算和测试。另外,函数计算函数的执行时间和资源使用也会受到一定的限制和影响,建议您在编写代码时,注意代码的性能和效率,并进行充分的测试和验证,以确保函数的正确性和可靠性。

    2023-05-31 19:44:13
    赞同 展开评论 打赏
  • 可以。

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-05-31 16:13:23
    赞同 展开评论 打赏
  • 是的,您可以使用阿里云函数计算服务来实现在上传文件到 OSS 后触发函数计算,通过计算文件的 MD5 值并将其写入服务器存储。

    以下是基本的处理流程:

    1. 创建阿里云函数计算服务,使用 Node.js 运行时(或其他您熟悉的运行时),编写一个函数,在该函数中计算文件的 MD5 值。

      const fs = require('fs');
      const crypto = require('crypto');
      
      exports.handler = function (event, context, callback) {
        console.log(JSON.stringify(event));
      
        const ossObject = event.events[0].oss.object.key;
        const bucketName = event.events[0].oss.bucket.name;
      
        const buffer = fs.readFileSync(`/tmp/${ossObject}`);
        const md5 = crypto.createHash('md5').update(buffer).digest('hex');
      
        const ossClient = context.cfcClient.request('OSS', { region: event.region });
        ossClient.putObject(`${bucketName}-md5`, 'md5.txt', md5).then(() => {
            console.log(`md5 for ${ossObject}: ${md5}`);
            callback(null, "md5 generated for " + ossObject);
        }).catch(err => {
            console.log('Error:', err);
            callback(err);
        });
      };
      
    2. 在阿里云 OSS 中创建一个存储桶,并在该存储桶中的事件设置中增加事件触发器。可以指定一个函数方式作为事件处理程序处理上传文件的事件。

    3. 每当新文件上传到 OSS 存储桶中时,该事件处理程序函数都会被调用,并将文件的 MD5 值写入到 OSS 存储桶的 "md5.txt" 文件中。

    4. 详细的操作流程可以参考阿里云官方的文档:在OSS中触发Function

    这样,就可以实现在文件上传到 OSS 存储桶时,自动计算它的 MD5 值,并将这个值保存到同一个目录下的 "md5.txt" 文件中。

    希望这个解决方案可以帮助到您。

    2023-05-31 15:50:49
    赞同 展开评论 打赏

快速交付实现商业价值。

热门讨论

热门文章

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载