gpt4 book ai didi

amazon-web-services - 如何在 AWS Lambda 函数上重命名或复制文件?

转载 作者:行者123 更新时间:2023-12-04 08:07:23 25 4
gpt4 key购买 nike

从技术方面来说,我对 AWS/Lambda 有点陌生,所以我有一个场景,我需要你的帮助。

我有一个每天掉落的文件,我只关心每月最后一天的文件。它们都放到文件在 8 EST 丢弃的同一个存储桶中。

然后我需要将文件从月份的最后一天重命名为静态名称,并将其复制到存储桶中,可以说该文件称为 bill。如果我们在 10 月,我希望有一个名为 bill_september 的前一个文件。

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

所以问题是

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

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

    最佳答案

    无论使用何种语言,您的 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。

    关于amazon-web-services - 如何在 AWS Lambda 函数上重命名或复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553447/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com