Narazili jsme na stejný problém a kontaktovali jsme AWS, který potvrdil, že se skutečně jedná o problém s nástrojem Query Editor. Nemají odhadovaný čas příjezdu, kdy bude problém vyřešen.
Řešení 1:Použijte psql
Dobrou zprávou je, že to bude fungovat s psql
. Toto je úryvek z jejich e-mailu s odpovědí:
$ psql -h database-2.cluster-xx.us-west-2.rds.amazonaws.com -d postgres -U postgres
postgres=> CREATE OR REPLACE FUNCTION trigger_set_updated_at() RETURNS TRIGGER AS $$
postgres$> BEGIN NEW.updated_at = NOW();
postgres$> RETURN NEW;END;$$
postgres-> LANGUAGE plpgsql;
CREATE FUNCTION
Dokumentace, jak jej nastavit:https://docs.aws .amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html
Řešení 2:Použijte rozhraní Data API
Již používáme Data API komunikovat s naším clusterem, takže pro nás je nejjednodušším řešením ve skutečnosti použití AWS CLI a existující tajný klíč databáze.
Definici funkce můžete vložit do function.sql
soubor:
CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
BEGIN
RETURN i + 1;
END;
$$ LANGUAGE plpgsql;
Poté jej spusťte v databázi pomocí:
cat function.sql | xargs -0 aws rds-data execute-statement \
--resource-arn arn:aws:rds:eu-west-1:xxx:cluster:cluster-name \
--secret-arn arn:aws:secretsmanager:eu-west-1:xxx:secret:secret-name-xxx \
--database "database_name" \
--sql
Doufám, že to bude užitečné, hodně štěstí!