Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Confronto dei comportamenti delle API di Amazon RDS Data per Aurora Serverless v2 e ha fornito i cluster con Aurora Serverless v1 cluster
I miglioramenti più recenti ad Amazon RDS Data APIs rendono i dati APIs disponibili per i cluster che utilizzano versioni recenti dei motori PostgreSQL o MySQL. Questi cluster possono essere configurati per l'uso Aurora Serverless v2 o classi di istanze predisposte come db.r6g
o. db.r6i
Le seguenti sezioni descrivono le differenze tra le API di Amazon RDS Data Aurora Serverless v2 e cluster DB predisposti, e Aurora Serverless v1 cluster DB. Aurora Serverless v1 I cluster DB utilizzano la modalità serverless
motore. I cluster DB predisposti utilizzano la provisioned
modalità motore. Un record Aurora Serverless v2 Il cluster DB utilizza anche la modalità provisioned
motore e ne contiene una o più Aurora Serverless v2 Istanze DB con la classe di db.serverless
istanza.
Numero massimo di richieste al secondo
Aurora Serverless v1
I dati APIs possono soddisfare fino a 1.000 richieste al secondo.
Aurora Serverless v2
I dati APIs possono effettuare un numero illimitato di richieste al secondo.
Abilitazione o disabilitazione dell'API Amazon RDS Data su un database esistente
Aurora Serverless v1
-
Con l'API Amazon RDS: utilizza l'
ModifyCluster
operazione e specificaTrue
oFalse
, a seconda dei casi, ilEnableHttpEndpoint
parametro. -
Con l'opzione AWS CLI— Usa l'
modify-db-cluster
operazione con l'--no-enable-http-endpoint
opzione--enable-http-endpoint
o, a seconda dei casi.
Aurora Serverless v2
-
Con l'API Amazon RDS: utilizza le
DisableHttpEndpoint
operazioniEnableHttpEndpoint
e. -
Con le operazioni:use and AWS CLI.
enable-http-endpoint
disable-http-endpoint
CloudTrail eventi
Aurora Serverless v1
Gli eventi delle chiamate Data API sono eventi di gestione. Per impostazione predefinita, questi eventi vengono inclusi automaticamente in un percorso. Per ulteriori informazioni, consulta Esclusione degli eventi Data API da un AWS CloudTrail trail (Aurora Serverless v1 solo).
Aurora Serverless v2
Gli eventi delle chiamate Data API sono eventi relativi ai dati. Per impostazione predefinita, questi eventi vengono esclusi automaticamente in un percorso. Per ulteriori informazioni, consulta Inclusione degli eventi Data API in un percorso AWS CloudTrail.
Supporto per più istruzioni
Aurora Serverless v1
-
Per Aurora MySQL, le istruzioni multiple non sono supportate.
-
Per Aurora PostgreSQL, le istruzioni multiple restituiscono solo la prima risposta alla query.
Aurora Serverless v2
Le istruzioni multiple non sono supportate. Il tentativo di eseguire più istruzioni in una singola chiamata API restituisce i risultati. “An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.”
Per eseguire più istruzioni, effettuate chiamate ExecuteStatement
API separate o usatele BatchExecuteStatement
per l'elaborazione in batch.
L'esempio seguente mostra il messaggio di errore risultante da una chiamata API che tenta di eseguire una dichiarazione multipla.
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table; Select * FROM next_table; "An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.
L'esempio seguente esegue più istruzioni con chiamate API separate. ExecuteStatement
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table;" aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM next_table;"
Richieste simultanee per lo stesso ID di transazione
Aurora Serverless v1
Le richieste successive attendono il completamento della richiesta corrente. L'applicazione deve gestire gli errori di timeout se il periodo di attesa è troppo lungo.
Aurora Serverless v2
Quando l'API Data riceve più richieste con lo stesso ID di transazione, restituisce immediatamente questo errore:
DatabaseErrorException: Transaction is still running a query
Questo errore si verifica in due situazioni:
-
L'applicazione effettua richieste asincrone (come le JavaScript promesse) utilizzando lo stesso ID di transazione.
-
Una richiesta precedente con quell'ID di transazione è ancora in fase di elaborazione.
L'esempio seguente mostra tutte le richieste eseguite in parallelo conpromise.all()
.
const api_calls = []; for (let i = 0; i < 10; i++) { api_calls.push( client.send( new ExecuteStatementCommand({ ...params, sql: `insert into table_name values (i);`, transactionId }) ) ); } await Promise.all(api_calls);
Per risolvere questo errore, attendi il completamento della richiesta corrente prima di inviare un'altra richiesta con lo stesso ID di transazione o rimuovi l'ID della transazione per consentire le richieste parallele.
L'esempio seguente mostra una chiamata API che utilizza l'esecuzione sequenziale con lo stesso ID di transazione.
for (let i = 0; i < 10; i++) { await client.send( new ExecuteStatementCommand({ ...params, sql: `insert into table_name values (i);`, transactionId }) ).promise() ); }
BatchExecuteStatement comportamento
Per ulteriori informazioni su BatchExecuteStatement
, consulta BatchExecuteStatement.
Aurora Serverless v1
L'oggetto campi generati nel risultato dell'aggiornamento include i valori inseriti.
Aurora Serverless v2
-
Per Aurora MySQL, l'oggetto campi generati nel risultato dell'aggiornamento include i valori inseriti.
-
Per Aurora PostgreSQL, l'oggetto campi generati è vuoto.
Comportamento ExecuteSQL
Per ulteriori informazioni suExecuteSQL
, vedere ExecuteSQL.
Aurora Serverless v1
L'ExecuteSQL
operazione è obsoleta.
Aurora Serverless v2
L'ExecuteSQL
operazione non è supportata.
ExecuteStatement comportamento
Per ulteriori informazioni su ExecuteStatement
, consulta ExecuteStatement.
Aurora Serverless v1
Il ExecuteStatement
parametro supporta il recupero di colonne di matrici multidimensionali e di tutti i tipi di dati avanzati.
Aurora Serverless v2
Il ExecuteStatement
parametro non supporta colonne di matrici multidimensionali. Inoltre, non supporta determinati tipi di dati PostgreSQL, inclusi i tipi geometrici e monetari. Quando una Data API incontra un tipo di dati non supportato, restituisce questo errore:. UnsupportedResultException: The result contains the unsupported data type data_type
Per risolvere questo problema, trasmetti il tipo di dati non supportato a. TEXT
L'esempio seguente esegue il cast di un tipo di dati non supportato su. TEXT
SELECT custom_type::TEXT FROM my_table;-- ORSELECT CAST(custom_type AS TEXT) FROM my_table;
Per un elenco dei tipi di dati supportati per ogni motore di database Aurora, consulta Data API operations reference.
Comportamento dei parametri dello schema
Aurora Serverless v1
Il Schema
parametro non è supportato. Quando includi il Schema
parametro in una chiamata API, l'API Data ignora il parametro.
Aurora Serverless v2
Il parametro Schema
è obsoleto. Quando includi il Schema
parametro in una chiamata API, l'API Data restituisce questo errore:. ValidationException: The schema parameter isn't supported
L'esempio seguente mostra una chiamata Data API che restituisce l'ValidationException
errore.
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --schema "your_schema" \ --sql "SELECT * FROM your_table LIMIT 10"
Per risolvere questo problema, rimuovi il Schema
parametro dalla chiamata API.
L'esempio seguente mostra una chiamata Data API con il Schema
parametro rimosso.
aws rds-data execute-statement \ --resource-arn "arn:aws:rds:region:account:cluster:cluster-name" \ --secret-arn "arn:aws:secretsmanager:region:account:secret:secret-name" \ --database "your_database" \ --sql "SELECT * FROM your_table LIMIT 10"