【问题标题】:How to Rename or Copy Files on AWS Lambda function?如何在 AWS Lambda 函数上重命名或复制文件?
【发布时间】:2018-03-15 04:09:48
【问题描述】:

从技术方面来说,我对 AWS / Lambda 有点陌生,所以我有一个场景并希望得到您的帮助。

我有一个每天都会丢失的文件,我只关心该月最后一天的文件。它们都放入文件在 8 EST 丢弃的同一个桶中。

然后我需要将该月最后一天的文件重命名为静态名称,然后将其复制到存储桶中,假设该文件名为 bill。如果我们在 10 月份,我会想要之前的名为 bill_september 的文件。

所以我的想法是每天中午有一个 cron 作业启动一个 Lambda 函数来移动一个文件,除了当月的最后一天。每个月的第一天早上 8 点,我将让它在早上 5 点启动 lambda 作业以复制到新存储桶。

所以问题是

  1. 这有意义吗?
  2. 我可以让 lambda 将现有文件重命名为 file+month 吗?

我总是对更好的解决方案持开放态度,所以请告诉我我是否完全好转

【问题讨论】:

  • 您可以通过Cloudwatch Events 按计划运行一个或多个 Lambda。或者,您可以将事件直接从 S3 导入 Lambda,并让您的文件几乎实时移动 - 请参阅 the docs 了解更多信息。

标签: amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

无论采用何种语言,您的 Lambda 函数都将使用 S3-SDK 处理 S3 存储桶中的文件。使用 S3,文件(对象)不能重命名,但您可以做的是复制到另一个名称(对象键),并删除旧文件。

如何在 S3 上复制文件

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
s3client.copyObject(sourceBucketName, sourceKey, 
                    destinationBucketName, destinationKey);

http://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingJava.html

如何在 S3 上删除文件

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
        try {
            s3Client.deleteObject(new DeleteObjectRequest(bucketName, keyName));
        } catch (AmazonServiceException ase) {
            System.out.println("Caught an AmazonServiceException.");
            System.out.println("Error Message:    " + ase.getMessage());
            System.out.println("HTTP Status Code: " + ase.getStatusCode());
            System.out.println("AWS Error Code:   " + ase.getErrorCode());
            System.out.println("Error Type:       " + ase.getErrorType());
            System.out.println("Request ID:       " + ase.getRequestId());
        } catch (AmazonClientException ace) {
            System.out.println("Caught an AmazonClientException.");
            System.out.println("Error Message: " + ace.getMessage());
        }

http://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingOneObjectUsingJava.html

您可能需要做的是在特定文件夹中列出存储桶中的对象,然后找到您的目标文件(在特定日期/时间修改/创建的文件?),然后做任何您需要做的事情,如果不复制可能涉及读取文件,编辑它然后重新上传到 S3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 2016-08-09
    • 2013-06-17
    • 2019-11-24
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多