Невозможно скопировать данные из s3 в кластер красного смещения в частной подсети

Я установил кластер красного смещения в частной подсети. Я могу успешно подключиться к своему кластеру с красным смещением и выполнять базовые запросы SQL через DBeaver.

Мне также нужно загрузить какой-то файл из s3 в красное смещение, поэтому я установил шлюз s3 в своей частной подсети и обновил таблицу маршрутов для моей частной подсети, чтобы добавить требуемый маршрут следующим образом:

Destination       Target                 Status            Propagated
192.168.0.0/16    local                  active            No   
pl-7ba54012 (com.amazonaws.us-east-2.s3, 52.219.80.0/20, 3.5.128.0/21, 52.219.96.0/20, 52.92.76.0/22)   vpce-04eed78f4db84ae49  
active             No   
0.0.0.0/0         nat-0a73ba7659e887232  active            No 

Однако я не могу запустить запрос на копирование из своего ведра s3

copy venue
from 's3://*****/tickit/venue_pipe.txt'
iam_role 'arn:aws:iam::******:role/global-dev-rdt-role-S3ReadonlyAccess'
region 'us-east-2';

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

обновление: группа безопасности для кластера красного смещения разрешает все соединения с портом 5439

Type         Protocol      Port Range     Source      Description
Redshift     TCP           5439           0.0.0.0/0
Redshift     TCP           5439           ::/0
SSH          TCP           22             sg-0f933e18d6c1967b8

person Mahdi    schedule 01.01.2020    source источник
comment
Что вы имеете в виду, говоря, что я не могу выполнить запрос на копирование? Вы можете поделиться сообщением об ошибке или описать нам проблему?   -  person John Rotenstein    schedule 02.01.2020
comment
Если вы не активировали Enhanced VPC Routing, я не думаю, что вам нужно использовать конечную точку VPC для подключения Redshift к S3, поскольку трафик не проходит через VPC.   -  person John Rotenstein    schedule 02.01.2020
comment
Это занимает очень много времени, и запрос возвращается с ошибочным статусом. Я также включил маршрутизацию VPC, так как это должно предотвратить прохождение трафика через Интернет.   -  person Mahdi    schedule 02.01.2020
comment
Что вы имеете в виду под шлюзом s3? Вы имеете в виду конечную точку VPC для Amazon S3?   -  person John Rotenstein    schedule 02.01.2020
comment
Да, я имел в виду конечную точку для s3 в частной подсети в VPC.   -  person Mahdi    schedule 02.01.2020
comment
Кстати, а как подключиться к кластеру Redshift? Ваш кластер находится в публичной или частной подсети? Если он находится в общедоступной подсети, вам нужно будет добавить конечную точку VPC в таблицу маршрутизации этой общедоступной подсети.   -  person John Rotenstein    schedule 03.01.2020
comment
он находится в частной подсети, и его группа безопасности имеет правило, разрешающее все подключения к порту 5439. Redshift, TCP, 5439,0.0.0.0 / 0. Это как-то странно, если я не включу расширенную маршрутизацию, я не могу запустить команду копирования.   -  person Mahdi    schedule 03.01.2020


Ответы (1)


Чтобы воспроизвести вашу ситуацию, я сделал следующее:

  • Создан новый VPC с общедоступной подсетью и частной подсетью (без шлюза NAT)
  • Launched a 1-node Amazon Redshift cluster in the private subnet
    • Enhanced VPC Routing = No
    • Общедоступный = Нет
  • Запущен экземпляр Amazon EC2 Linux в общедоступной подсети.
  • Выполнено sudo yum install postgresql на экземпляре EC2
  • Установлено соединение с кластером Redshift через psql на экземпляре EC2 (psql -h xx.yy.ap-southeast-2.redshift.amazonaws.com -p 5439 -U username)
  • Создал таблицу (create table foo(id integer);)
  • Загружена таблица (copy foo from 's3://my-bucket/bar.txt' iam_role 'xxx';)

Это сработало успешно с сообщением:

INFO:  Load into table 'foo' completed, 4 record(s) loaded successfully.

Следовательно, конечная точка VPC / шлюз NAT не требуется для выполнения команды COPY из Redshift. Кластер Redshift имеет свой особый способ подключения к S3, по-видимому, через «бэкэнд» Redshift.

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

Второй тест: использование расширенной сети VPC

Чтобы отразить вашу ситуацию, я запустил другой кластер Redshift с включенной расширенной маршрутизацией VPC.

Когда я запустил команду COPY, она предсказуемо зависла, потому что я не настроил средства для кластера Redshift для доступа к Amazon S3 через VPC.

Затем я создал конечную точку VPC для Amazon S3 и подключил ее к частной подсети с политикой «Полный доступ».

Затем, когда я повторно запустил команду COPY, она успешно загрузила данные из Amazon S3.

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

person John Rotenstein    schedule 02.01.2020
comment
Для второго сценария вы настроили кластер красного смещения в частной подсети со шлюзом NAT? Я могу запустить команду копирования при отключении расширенной маршрутизации, но не при ее включении. - person Mahdi; 02.01.2020
comment
В обоих сценариях использовался один и тот же VPC: общедоступная подсеть с интернет-шлюзом и экземпляром EC2, частная подсеть с кластером Redshift. Ни в одном из сценариев не использовался шлюз NAT. Во втором сценарии конечная точка VPC для S3 также была подключена к частной подсети. - person John Rotenstein; 02.01.2020
comment
Привет, извините за мою ошибку, мне пришлось поместить шлюз NAT в общедоступную подсеть, а также подключить интернет-шлюз, чтобы обеспечить безопасный доступ в Интернет к моему VPC, в этом случае я хотел бы знать, можно ли для расширенной маршрутизации установить значение true для подключение через конечную точку s3 в частной подсети? - person Mahdi; 02.01.2020
comment
Да, можно было бы использовать как шлюз NAT, так и конечную точку VPC. Таблица маршрутов для частной подсети будет содержать записи для них обоих. Поскольку правила маршрутизации для конечной точки VPC более конкретны, трафик для S3 будет проходить через конечную точку VPC, а другой трафик - через шлюз NAT. Итак, конфигурация, которую вы показываете в своем вопросе, должна работать нормально. Вы настроили конечную точку VPC с политикой полного доступа? - person John Rotenstein; 03.01.2020