2016-09-01 5 views
0

Я пытаюсь выгрузить данные из кластера Redshift в одной коробке в ведро S3 в другом окне. Мне удалось отправить файл. Однако , так как владелец ковша не является владельцем файла, который я отправляю - он не может получить к нему доступ. Поскольку это прямая выгрузка из Redshift, я не думаю, что не могу указать условие, позволяющее владельцу ведра иметь правильные разрешения.Выгрузить из Redshift в ведро S3 ящика

Можно ли достичь (без необходимости выгрузки из Redshift с использованием той же учетной записи) и если да - как?

Спасибо!

+1

Что такое «коробка» в этом контексте? –

+0

Сервер AWS. Я пытаюсь разгрузить другую учетную запись. – user2518751

ответ

2

(Покушение # 2 ...)

Хорошо, это, кажется, ваша ситуация:

  • вы делаете UNLOAD от Amazon Redshift в ведро Amazon S3, который принадлежит к другой учетной записи AWS
  • пользователь в этом другом AWS счета желает получить доступ к файлам, но говорит, что они не в состоянии сделать это

Там не существует понятия «фи le owner "в Amazon S3.Вместо этого есть:

  • разрешений, связанные с каждым объектом в Amazon S3
  • политик ведра, которое применяется к конкретному ведру
  • IAM политики, которые могут быть применены для пользователей, групп и роли

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

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

+0

Благодарим вас за помощь, Джон! – user2518751

+0

@ user2518751 Вы могли решить это? Я в одной лодке. В моем случае я владелец ведра, который не может получить доступ к объекту, записанному в мое ведро, кластером Redshift, который не принадлежит мне. Я попытался установить правильную Bucket Policy, но это не сработало. Как ты сделал это? –

+0

@ user2518751, не стесняйтесь создавать новый вопрос, если вам нужна помощь. –

0

Похоже, ваша ситуация:

  • Вы использовали UNLOAD команду для экспорта данных из Amazon Redshift на ведро Amazon S3, что вы владеете
  • Вы хотите предоставить доступ к файлам на AWS пользователь, который принадлежит к другой учетной записи AWS

Разрешение доступа к объекту в Amazon S3 может быть предоставлен несколькими способами:

  • На самом объекте, установив разрешения вручную на файл (ы)
  • В IAM (управления идентификацией и доступом), путем присоединения политики для конкретного пользователя, который предоставляет разрешение на доступ к ведерко - но это будет работать только для пользователей на той же учетной записи AWS.
  • Определяя политику Bucket, которая предоставляет доступ к содержимому в виде ведра для всех (общедоступных) или для конкретных пользователей AWS (включая пользователя в другой учетной записи) - пользователю необходимо будет получить доступ к контенту, предоставив учетные данные, например, используя команду AWS Command-Line Interface (CLI)aws s3 cp.

Вариант Bucket Policy кажется лучшим для вашей ситуации. Чтобы включить его, создать политику на ведро, которое предоставляет доступ к определенному каталогу, в котором будут храниться файлы, например:

{ 
    "Id": "Policy", 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Sid1", 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Effect": "Allow", 
      "Resource": "arn:aws:s3:::MY-BUCKET", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:iam::123456789012:user/username" 
       ] 
      } 
     }, 
     { 
      "Sid": "Sid2", 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": "arn:aws:s3:::MY-BUCKET/PATH/*", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:iam::123456789012:user/username" 
       ] 
      } 
     } 
    ] 
} 

ARN в политике ссылается на идентификатор счета и имя пользователя, чтобы которым вы предоставляете доступ. Затем они могут использовать CLI AWS для отображения содержимого ведра и загрузки содержимого.

+0

Жаль, что вы не уточните. Я не загружаю данные в свой ведро, но я загружаю данные прямо в ведро, которое у меня нет, на другой учетной записи. Я знаю, как справиться с предложенным вами сценарием. Дело в том, что я не использую свой ведро как временную станцию ​​между Redshift в моем кластере и S3 в другой учетной записи. Вот почему я боюсь. – user2518751

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