Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Comparaison des comportements de l'API Amazon RDS Data pour Aurora Serverless v2 et des clusters provisionnés avec Aurora Serverless v1 clusters
Les dernières améliorations apportées aux données Amazon RDS APIs rendent les données APIs disponibles pour les clusters qui utilisent des versions récentes des moteurs PostgreSQL ou MySQL. Ces clusters peuvent être configurés pour utiliser Aurora Serverless v2 ou des classes d'instances provisionnées telles que db.r6g
oudb.r6i
.
Les sections suivantes décrivent les différences entre les API de données Amazon RDS : Aurora Serverless v2 et des clusters de bases de données provisionnés, et Aurora Serverless v1 Clusters de bases de données. Aurora Serverless v1 Les clusters de base de données utilisent le mode serverless
moteur. Les clusters de base de données provisionnés utilisent le mode provisioned
moteur. Un Aurora Serverless v2 Le cluster de base de données utilise également le mode provisioned
moteur et contient un ou plusieurs Aurora Serverless v2 Instances de base de données avec la classe d'db.serverless
instance.
Nombre maximum de demandes par seconde
Aurora Serverless v1
Les données APIs peuvent effectuer jusqu'à 1 000 demandes par seconde.
Aurora Serverless v2
Les données APIs peuvent effectuer un nombre illimité de demandes par seconde.
Activation ou désactivation de l'API Amazon RDS Data sur une base de données existante
Aurora Serverless v1
-
Avec l'API Amazon RDS : utilisez l'
ModifyCluster
opération et spécifiezTrue
ouFalse
, le cas échéant, pour leEnableHttpEndpoint
paramètre. -
Avec le AWS CLI — Utilisez l'
modify-db-cluster
opération avec l'--no-enable-http-endpoint
option--enable-http-endpoint
ou, selon le cas.
Aurora Serverless v2
-
Avec l'API Amazon RDS : utilisez les
DisableHttpEndpoint
opérationsEnableHttpEndpoint
et. -
Avec les AWS CLI opérations:Use et.
enable-http-endpoint
disable-http-endpoint
CloudTrail événements
Aurora Serverless v1
Les événements issus des appels d'API de données sont des événements de gestion. Ces événements sont automatiquement inclus dans un parcours par défaut. Pour de plus amples informations, veuillez consulter Exclure les événements de l'API de données d' AWS CloudTrail un historique (Aurora Serverless v1 uniquement).
Aurora Serverless v2
Les événements issus des appels d'API de données sont des événements de données. Ces événements sont automatiquement exclus d'un parcours par défaut. Pour de plus amples informations, veuillez consulter Inclure les événements de l'API de données dans un AWS CloudTrail historique.
Support multi-déclarations
Aurora Serverless v1
-
Pour Aurora MySQL, les instructions multiples ne sont pas prises en charge.
-
Pour Aurora PostgreSQL, les instructions multiples renvoient uniquement la première réponse à la requête.
Aurora Serverless v2
Les multiinstructions ne sont pas prises en charge. Une tentative d'exécution de plusieurs instructions dans un seul appel d'API est renvoyée“An error occurred (ValidationException) when calling the ExecuteStatement operation: Multistatements aren't supported.”
. Pour exécuter plusieurs instructions, effectuez des appels ExecuteStatement
d'API distincts ou utilisez-les BatchExecuteStatement
pour le traitement par lots.
L'exemple suivant montre le message d'erreur résultant d'un appel d'API qui tente d'exécuter une instruction multiple.
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'exemple suivant exécute plusieurs instructions avec des appels d'ExecuteStatement
API distincts.
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;"
Demandes simultanées pour le même numéro de transaction
Aurora Serverless v1
Les demandes suivantes attendent que la demande en cours soit terminée. Votre application doit gérer les erreurs de temporisation si le délai d'attente est trop long.
Aurora Serverless v2
Lorsque l'API Data reçoit plusieurs demandes avec le même identifiant de transaction, elle renvoie immédiatement cette erreur :
DatabaseErrorException: Transaction is still running a query
Cette erreur se produit dans deux situations :
-
Votre application effectue des demandes asynchrones (comme des JavaScript promesses) en utilisant le même identifiant de transaction.
-
Une demande précédente portant cet identifiant de transaction est toujours en cours de traitement.
L'exemple suivant montre toutes les requêtes exécutées en parallèle avecpromise.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);
Pour résoudre cette erreur, attendez que la demande en cours soit terminée avant d'envoyer une autre demande avec le même ID de transaction ou supprimez l'ID de transaction pour autoriser les requêtes parallèles.
L'exemple suivant montre un appel d'API qui utilise une exécution séquentielle avec le même identifiant de transaction.
for (let i = 0; i < 10; i++) { await client.send( new ExecuteStatementCommand({ ...params, sql: `insert into table_name values (i);`, transactionId }) ).promise() ); }
BatchExecuteStatement comportement
Pour plus d’informations sur BatchExecuteStatement
, consultez BatchExecuteStatement.
Aurora Serverless v1
L'objet des champs générés dans le résultat de la mise à jour inclut les valeurs insérées.
Aurora Serverless v2
-
Pour Aurora MySQL, l'objet de champs généré dans le résultat de la mise à jour inclut les valeurs insérées.
-
Pour Aurora PostgreSQL, l'objet des champs générés est vide.
Comportement d'ExecuteSQL
Pour plus d'informationsExecuteSQL
, consultez ExecuteSQL.
Aurora Serverless v1
L'ExecuteSQL
opération est obsolète.
Aurora Serverless v2
L'ExecuteSQL
opération n'est pas prise en charge.
ExecuteStatement comportement
Pour plus d’informations sur ExecuteStatement
, consultez ExecuteStatement.
Aurora Serverless v1
Le ExecuteStatement
paramètre prend en charge la récupération de colonnes de tableaux multidimensionnels et de tous les types de données avancés.
Aurora Serverless v2
Le ExecuteStatement
paramètre ne prend pas en charge les colonnes de tableau multidimensionnelles. Il ne prend pas non plus en charge certains types de données PostgreSQL, notamment les types géométriques et monétaires. Lorsqu'une API de données rencontre un type de données non pris en charge, elle renvoie cette erreur :. UnsupportedResultException: The result contains the unsupported data type data_type
Pour contourner ce problème, convertissez le type de données non pris en charge en. TEXT
L'exemple suivant convertit un type de données non pris en charge en. TEXT
SELECT custom_type::TEXT FROM my_table;-- ORSELECT CAST(custom_type AS TEXT) FROM my_table;
Pour obtenir la liste des types de données pris en charge pour chaque moteur de base de données Aurora, consultez la section Référence des opérations de l'API de données.
Comportement des paramètres du schéma
Aurora Serverless v1
Le Schema
paramètre n'est pas pris en charge. Lorsque vous incluez le Schema
paramètre dans un appel d'API, l'API Data ignore le paramètre.
Aurora Serverless v2
Le paramètre Schema
est obsolète. Lorsque vous incluez le Schema
paramètre dans un appel d'API, l'API Data renvoie cette erreur :ValidationException: The schema parameter isn't supported
. L'exemple suivant montre un appel d'API de données qui renvoie l'ValidationException
erreur.
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"
Pour résoudre ce problème, supprimez le Schema
paramètre de votre appel d'API.
L'exemple suivant montre un appel d'API de données dont le Schema
paramètre a été supprimé.
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"