正在尝试同步lambda中的两个s3存储桶

2024-07-05 12:00:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我是AWS新手,正在尝试同步2个s3存储桶

这是到原始桶的链接 https://s3-us-west-2.amazonaws.com/css490/input.txt

原始s3存储桶是公共的,但不是来自我的帐户 第二个也是公共的,但是是我帐户中的s3

我正在使用右上角的测试按钮,它显示成功,但program-4(接收桶)仍然为空

(可能是因为我正在使用测试按钮,但我不知道)

另外,在HTML中如何调用此函数

评论回复:

xy问题 我之所以同步它们,是因为我需要将数据从其他人的s3存储桶复制到我的s3存储桶

注意:我每次都需要覆盖数据(即使文件存在)

另一个链接可能会有所帮助,但它也没有答案 (顺便说一句,我也问了这个问题)

import json
import boto3
import os
import subprocess



def lambda_handler(event, context):
    
    # link the 2 s3 buckets
    subprocess(['aws', 's3', 'sync', 's3://css490', 's3://program-4'])
    
    #arn:aws:s3:::program-4

    return {
        'statusCode': 200
    }

Tags: 数据httpsimportawss3链接帐户program
2条回答

如果您只想复制,请尝试以下操作: aws s3 cp recursive s3://SOURCE_BUCKET_NAME s3://SOURCE_BUCKET_NAME

默认情况下,Lambda环境中未安装AWS CLI

见:How to use AWS CLI within a Lambda function (aws s3 sync from Lambda) :: Ilya Bezdelev

此外,您应该使用subprocess.run()来运行子流程。我很惊讶您在控制台中没有看到关于这些问题的错误

虽然您可以将AWS CLI打包为Lambda函数,但我建议您只需自己执行这些函数:

  • 使用ListBucket()列出源bucket
  • 循环遍历对象并使用CopyObject()将每个对象复制到目标bucket

相关问题 更多 >