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



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

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

最初的s3 bucket是公开的,但不是来自我的帐户第二个也是公开的,但是我账户中的s3

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

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

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

对评论的回应:

xy问题?:我正在同步它们,因为我需要将数据从别人的s3 bucket复制到我的s3 bucket

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

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

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
}

默认情况下,不会在Lambda环境中安装AWS CLI。

请参阅:如何在Lambda函数中使用AWS CLI(来自Lambda的AWS s3同步(::Ilya Bezdelev

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

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

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

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

最新更新