Lambda函数,用于在上载时将文件从一个s3复制到另一个s3

2024-09-28 22:19:22 发布

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

如何将csv文件复制到另一个存储桶中

我在AWS中有3个bucket a)test b)testjson c)testcsv

我已经上传data.json和data.csv到测试bucket

上传下面的文件后,事情发生了

  1. data.json文件被复制到testjson bucket

  2. data.csv文件被复制到testcsv bucket

data.json

{
"emp_id": "3",
"Name" : "Madk"
"Company": "FB"
}

data.csv

emp_id,Name,Company
3,Madk,FB 

在这个lambda处理程序中,我只需要将.json复制到另一个bucket中,将.csv复制到另一个bucket中


Tags: 文件csvnametestawsidjsondata
2条回答

这个问题对我来说不是很清楚,但我似乎猜测这两个对象都已上载到a)测试桶(而不是b或c)。 在这种情况下,我会先将它们从桶中取出:

s3.delete_object(Bucket='test', Key='data.json')
s3.delete_object(Bucket='test', Key='data.csv')

然后我会将它们上传到正确的存储桶中:

s3.upload_file(Filename='data.json', Bucket='testjson', Key='data.json')
s3.upload_file(Filename='data.csv', Bucket='testjson', Key='data.csv')

请让我知道,如果它不工作或任何问题。希望有帮助

如果你想

Create a copy of an object that is already stored in Amazon S3.

那么copy_object是进入boto3的方式

示例代码

import boto3

bucket_from = "test"
bucket_to_json = "testjson"
bucket_to_csv = "testcsv"

s3 = boto3.resource('s3')

name = 'data.json'

s3.meta.client.copy_object(
    Bucket=bucket_to_json,
    CopySource={'Bucket': bucket_from, 'Key': name},
    Key=name
)

name = 'data.csv'

s3.meta.client.copy_object(
    Bucket=bucket_to_csv,
    CopySource={'Bucket': bucket_from, 'Key': name},
    Key=name
)

相关问题 更多 >