Не удается выполнить функцию Create на экземпляре Postgres Aurora Serverless

Я пытаюсь включить расширения PostGIS в экземпляре Aurora Serverless Postgres 10.7, используя инструкции, предоставленные AWS (здесь) и выполнить шаги с помощью редактора запросов в консоли RDS. Используя эти же инструкции, я смог успешно выполнить все команды на отдельном обычном экземпляре Aurora RDS Postgres.

В «Шаг 4: передача права собственности на объекты роли rds_superuser» я получаю эту ошибку:

введите здесь описание изображения

Это также не удастся, если вы попытаетесь выполнить команду из AWS cli, используя:

aws rds-data execute-statement --resource-arn "<<RESOURCE_ARN>>" \
--database "postgres" --secret-arn "<<SECRET_ARN>>" \
--sql "CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;"

Как выполнить эти функции с помощью редактора запросов RDS или интерфейса командной строки AWS?


person CerealPort    schedule 15.12.2019    source источник


Ответы (1)


Редактор запросов RDS и клиентский интерфейс AWS требуют экранирования символов «$». Простое экранирование всех экземпляров '$' с помощью '\$' делает свое дело.

aws rds-data execute-statement --resource-arn "<<RESOURCE_ARN>>" \
--database "postgres" --secret-arn "<<SECRET_ARN>>" \
--sql "CREATE FUNCTION exec(text) returns text language plpgsql volatile AS \$f\$ BEGIN EXECUTE \$1; RETURN \$1; END; \$f\$;"
person CerealPort    schedule 15.12.2019
comment
Для тех, кто пытается заставить его работать через AWS Query Editor или Windows (10) PowerShell или CMD, это решение не подойдет. Я даже пытался воспроизвести ту же функцию, что и OP, но это не удалось. Я пробовал разные решения, чтобы избежать $, но это не сработало. Наконец, я смог сделать это через Ubuntu, используя решение, опубликованное здесь stackoverflow.com/questions/57994804/ P.S. Не уверен, что это лучшее решение, но, пожалуйста, поправьте меня, если я ошибаюсь. - person Myz; 07.05.2020
comment
отличный комментарий - я не знал о том, что вам нужно экранировать символ «$». Я уже с ума сходил от того, что редактор RDS не принял мое заявление. Благодарю вас! - person the_smart_home_maker; 19.10.2020