#amazon-web-services #amazon-s3 #aws-lambda
#amazon-веб-сервисы #amazon-s3 #aws-lambda
Вопрос:
Я хочу использовать lambda для загрузки файлов резервных копий из внешней учетной записи s3. У меня есть идентификатор ключа доступа, секретный ключ доступа, имя хранилища и название региона. А затем синхронизируйте его с моим личным хранилищем s3. Возможно ли это? И как?
Ответ №1:
Похоже, что ваше требование:
- Возьмите данные, хранящиеся в
Bucket-A
вAccount-A
- Скопируйте его в
Bucket-B
вAccount-B
Самый простой способ сделать это — использовать CopyObject()
команду, потому что она может напрямую передавать данные между корзинами (даже между регионами!) без необходимости загрузки и выгрузки.
Для этого вам потребуется один набор учетных данных, для которых есть разрешения на чтение Bucket-A
и на запись Bucket-B
. Это может быть либо:
- IAM
User-A
вAccount-A
, который может читатьBucket-A
, и политика корзины,Bucket-B
которая разрешаетUser-A
запись вBucket-B
, ИЛИ - IAM
User-B
вAccount-B
, который может выполнять записьBucket-B
, и политика корзины наBucket-A
, которая разрешает доступ на чтение дляUser-B
Использование политики корзины означает, что один набор учетных данных может использовать CopyObject()
команду как для чтения, так и для записи. Без этого вам нужно было бы использовать один набор учетных данных для загрузки объекта и другой набор учетных данных для загрузки объекта. Это не самый разумный способ сделать это.
См.: Предоставление доступа между учетными записями к объектам в корзинах S3
Самый простой способ запустить команду копирования — использовать интерфейс командной строки AWS (CLI) aws s3 cp
или aws s3 sync
команды. В вашем случае, если вы хотите синхронизировать содержимое файлов, вы должны использовать aws s3 sync
.
Последний вариант — использовать межрегиональную репликацию — Amazon Simple Storage Service, но это работает только с корзинами в разных регионах. Корзины могут принадлежать разным учетным записям AWS.