Отказано в доступе при попытке загрузки в Postgres RDS из S3 с путем, который содержит знак равенства - PullRequest
1 голос
/ 04 ноября 2019

Я пытаюсь загрузить данные в Postgres RDS из S3, используя метод aws_s3.table_import_from_s3, как описано здесь: Импорт данных в PostgreSQL на Amazon RDS

Путь к файлу в S3 содержитзнак равенства '=' и из-за этого я получаю следующую ошибку:

ERROR:  HTTP 403. Permission denied. Check bucket or provided credentials as they may no longer be valid.

При замене знака равенства на другой символ, например подчеркивание '_', импорт завершается успешно.

Пример:

SELECT aws_s3.table_import_from_s3(
     'my_table',
     'col1,col2',
     '(format csv)',
     'my_bucket',
     'date=20191031/my_data.csv',
     'eu-west-2'
);

Выдает ошибку, указанную выше. (HTTP 403 ...)

Пока:

SELECT aws_s3.table_import_from_s3(
     'my_table',
     'col1,col2',
     '(format csv)',
     'my_bucket',
     'date_20191031/my_data.csv',
     'eu-west-2'
);

Успешно справляется без проблем

Есть ли какой-нибудь escape-символ, который я должен добавить к знаку равенства? Любое другое решение?

1 Ответ

0 голосов
/ 04 ноября 2019

Я не проверял, но должен работать. Просто кодируйте = с помощью %3D.

SELECT aws_s3.table_import_from_s3(
 'my_table',
 'col1,col2',
 '(format csv)',
 'my_bucket',
 'date%3D20191031/my_data.csv',
 'eu-west-2');
...