2016-11-02 3 views
1

У меня есть два ведра S3 с двумя различными наборами доступа и секретными ключами. Вот набор:Скопируйте содержимое из одного ведра S3 в другое ведро S3 с разными ключами

Bucket1, Key1, Secret1 

И

Bucket2, Key2, Secret2, Token 

Я пытаюсь запустить S3-S3 копию с помощью aws cli как это:

aws s3 cp s3://key1:[email protected] s3://key2:[email protected] 

У меня есть несколько вопросов:

  • Я не уверен, как указать токен для p roviding разрешение на запись в bucket2
  • aws cli позволяет указать ключ и секрет как часть S3 Url?

Какой был бы наилучший подход для достижения этого варианта использования?

ответ

1

Чтобы скопировать файл между Amazon S3 ведром, вы должны использовать учетные данные, которые имеют разрешения на доступ оба ведра, или применить политику в ведра в ведро назначения, который обеспечивает доступ.

Это не представляется возможным определить два набора учетных данных, поскольку в AWS Command-Line Interface (CLI) только призывающих к одного AWS API, который выполняет копию «от» источника ведре непосредственно в ведро назначения. AWS CLI не загружает объект - он просто сообщает S3, чтобы скопировать объект в другое ведро (которое может даже быть в другом регионе).

Таким образом, вы должны создать политику ведра на ведре назначения, которая позволяет учетные данные используются (пользователь или роль) в PutObject в ведро назначения.

политика будет аналогична:

{ 
    "Version": "2012-10-17", 
    "Id": "Policy1", 
    "Statement": [ 
     { 
      "Sid": "Stmt1", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::ACCOUNT-NUMBER:role/ROLE-NAME" 
      }, 
      "Action": "s3:PutObject", 
      "Resource": "arn:aws:s3:::DESTINATION-BUCKET/*" 
     } 
    ] 
} 

выше приобретает команда вызывается из экземпляра Amazon EC2 с назначенной ролью. Для того, чтобы позвонить из учетных данных пользователя, используйте:

"AWS": "arn:aws:iam::ACCOUNT-NUMBER:user/USER-NAME" 
+0

Minor (низкий уровень) подробно с этим: «он просто говорит S3, чтобы скопировать объект в другое ведро» * * Технически, это говорит S3, чтобы скопировать объект * от * (вместо * до *) другого ведра, потому что запрос API всегда отправляется в целевой контейнер. Затем целевой контейнер, внутри внутри S3, извлекает объект из исходного ковша, как указано в «x-amz-copy-source». –

+0

Ах! Интересно! Да, документация для 'aws s3 cp' говорит * Если --source-region не указан, область источника будет такой же, как область целевого контейнера. * Однако я провел тесты копирования из Region-A в Регион-B, и он работал с обоими регионами как «вызывающий регион». Фактически, он даже работал с Region-C как «вызывающим регионом». Таким образом, этот параметр ничего не делает. И 'aws s3api copy-object' отлично работает с любой комбинацией областей. –

+0

FYI поднял вопрос против проекта AWS CLI: https://github.com/aws/aws-cli/issues/2274 Кажется, что '--source-region' не требуется, но если он указан, то это будет исполнение. –

Смежные вопросы