AWS Лямбда - скопировать объект в другое место S3 - PullRequest
0 голосов
/ 08 января 2020

Я хотел бы написать лямбда-код python для перемещения файлов в одно и то же ведро S3.

[то же самое ведро S3]

/ location- как есть / file.jpg

[та же корзина S3]

/ location- будет / file.jpg

Как я могу это сделать?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Вы можете использовать boto для этой цели, как показано ниже:

import boto

c = boto.connect_s3()
src_buc = c.get_bucket('Source_Bucket')
sink_buc = c.get_bucket('Sink_Bucket')

, а затем вы можете перебирать все свои ключи для копирования содержимого:

for k in src_buc.list():
    # copy to sink
    sink_buc.copy_key(k.key.name, src_buc.name, k.key.name)

0 голосов
/ 08 января 2020

Чтобы заставить это работать, вам понадобится несколько вещей. Во-первых, это сам лямбда-код. Вы должны быть в состоянии использовать python sdk boto3 , чтобы сделать вызов для копирования. Вот пример того, как скопировать ваш файл:

import json
import boto3

s3 = boto3.resource('s3')

def lambda_handler(event, context):

    my_bucket = "example-bucket"
    current_object_key = "fileA/keyA.jpg"
    new_object_key = "fileB/keyB.jpg"

    copy_source = {
        'Bucket':  my_bucket,
        'Key': current_object_key
    }
    s3.meta.client.copy(copy_source, my_bucket, new_object_key)

Вам также необходимо убедиться, что у вашей лямбда-роли есть соответствующие разрешения на чтение и запись s3 и что ваша политика сегмента s3 настроена так, чтобы разрешить вашу роль лямбды чтобы получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...