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.
Appel de l’API de données Amazon RDS à l’aide de l’AWS CLI
Vous pouvez appeler l’API de données RDS (API de donnée) à l’aide d’AWS CLI.
Les exemples suivants utilisent AWS CLI pour l’API de données. Pour plus d’informations, consultez le document de référence AWS CLI pour l’API de données.
Dans chaque exemple, remplacez l’Amazon Resource Name (ARN) du cluster de bases de données par l’ARN de votre cluster de bases de données Aurora. De même, remplacez l’ARN du secret par l’ARN du secret dans Secrets Manager qui autorise l’accès au cluster de bases de données.
Note
AWS CLI peut formater les réponses en JSON.
Rubriques
Démarrage d’une transaction SQL
Vous pouvez démarrer une transaction SQL à l’aide de la commande CLI aws rds-data
begin-transaction. L’appel renvoie un identifiant de transaction.
Important
Dans l’API de données, une transaction expire si aucun appel n’utilise son identifiant de transaction dans un délai de trois minutes. Si une transaction expire avant d’être validée, l’API de données la restaure automatiquement.
Les instructions DDL (Data Definition Language) MySQL d’une transaction provoquent une validation implicite. Nous vous recommandons d’exécuter chaque instruction DDL MySQL dans une commande execute-statement séparée avec l’option --continue-after-timeout.
En plus des options communes, spécifiez l’option --database qui indique le nom de la base de données.
Par exemple, la commande CLI suivante démarre une transaction SQL.
Pour Linux, macOS ou Unix :
aws rds-data begin-transaction --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
Pour Windows :
aws rds-data begin-transaction --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
Voici un exemple de réponse.
{
"transactionId": "ABC1234567890xyz"
}
Exécution d’une instruction SQL
Vous pouvez exécuter une instruction SQL à l’aide de la commande CLI aws rds-data execute-statement.
Vous pouvez exécuter une instruction SQL à l’intérieur d’une transaction en spécifiant l’identifiant de la transaction avec l’option --transaction-id. Vous pouvez démarrer une transaction à l’aide de la commande CLI aws rds-data begin-transaction. Vous pouvez terminer et valider une transaction à l’aide de la commande CLI aws rds-data
commit-transaction.
Important
Si vous ne spécifiez pas l’option --transaction-id, les modifications renvoyées par l’appel sont automatiquement validées.
En plus des options courantes, spécifiez les options suivantes :
-
--sql(obligatoire) – Instruction SQL à exécuter sur le cluster de bases de données. -
--transaction-id(facultatif) – Identifiant d’une transaction démarrée à l’aide de la commande CLIbegin-transaction. Spécifiez l’identifiant de la transaction dans laquelle vous souhaitez intégrer l’instruction SQL. -
--parameters(facultatif) – Paramètres pour l’instruction SQL. -
--include-result-metadata | --no-include-result-metadata(facultatif) – Valeur indiquant si les métadonnées doivent apparaître dans les résultats. La valeur par défaut est--no-include-result-metadata. -
--database(facultatif) – Nom de la base de données.L’option
--databasepeut ne pas fonctionner lorsque vous exécutez une instruction SQL après avoir exécuté--sql "usedans la demande précédente. Nous vous recommandons d’utiliser l’optiondatabase_name;"--databaseplutôt que d’exécuter des instructions--sql "use.database_name;" -
--continue-after-timeout | --no-continue-after-timeout(facultatif) – Valeur indiquant si l’exécution de l’instruction doit se poursuivre lorsque l’appel dépasse le délai d’expiration de 45 secondes de l’API de données. La valeur par défaut est--no-continue-after-timeout.Pour les instructions en langage de définition de données (DDL), nous vous recommandons de continuer à exécuter l’instruction après l’expiration de l’appel afin d’éviter les erreurs et la corruption de structures de données.
-
--format-records-as "JSON"|"NONE": une valeur facultative qui spécifie si l’ensemble de résultats doit être formaté en tant que chaîne JSON. La valeur par défaut est"NONE". Pour obtenir des informations sur l’utilisation du traitement des ensembles de résultats JSON, consultez Traitement des requêtes d’API Amazon RDS Data au format JSON.
Le cluster de bases de données renvoie une réponse pour l’appel.
Note
La taille de réponse est limitée à 1 Mio. Si l’appel renvoie plus de 1 Mio de données de réponse, l’appel est arrêté.
Le nombre maximal de demandes par seconde est 1 000 pour Aurora Serverless v1. Aucune limite n’est imposée pour les autres bases de données prises en charge.
Par exemple, la commande CLI suivante exécute une instruction SQL unique et omet les métadonnées dans les résultats (par défaut).
Pour Linux, macOS ou Unix :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --sql "select * from mytable"
Pour Windows :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" ^ --sql "select * from mytable"
Voici un exemple de réponse.
{
"numberOfRecordsUpdated": 0,
"records": [
[
{
"longValue": 1
},
{
"stringValue": "ValueOne"
}
],
[
{
"longValue": 2
},
{
"stringValue": "ValueTwo"
}
],
[
{
"longValue": 3
},
{
"stringValue": "ValueThree"
}
]
]
}
La commande CLI suivante exécute une instruction SQL unique dans une transaction en spécifiant l’option --transaction-id.
Pour Linux, macOS ou Unix :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --sql "update mytable set quantity=5 where id=201" --transaction-id "ABC1234567890xyz"
Pour Windows :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" ^ --sql "update mytable set quantity=5 where id=201" --transaction-id "ABC1234567890xyz"
Voici un exemple de réponse.
{
"numberOfRecordsUpdated": 1
}
La commande CLI suivante exécute une seule instruction SQL avec des paramètres.
Pour Linux, macOS ou Unix :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --sql "insert intomytablevalues (:id,:val)" --parameters "[{\"name\": \"id\", \"value\": {\"longValue\":1}},{\"name\": \"val\", \"value\": {\"stringValue\": \"value1\"}}]"
Pour Windows :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" ^ --sql "insert intomytablevalues (:id,:val)" --parameters "[{\"name\": \"id\", \"value\": {\"longValue\":1}},{\"name\": \"val\", \"value\": {\"stringValue\": \"value1\"}}]"
Voici un exemple de réponse.
{
"numberOfRecordsUpdated": 1
}
La commande CLI suivante exécute une instruction SQL en langage de définition de données (DDL). L’instruction DDL renomme la colonne job en colonne role.
Important
Pour les instructions DDL, nous vous recommandons de continuer à exécuter l’instruction une fois l’appel expiré. Lorsqu’une instruction DDL se termine avant la fin de son exécution, cela peut entraîner des erreurs et corrompre les structures de données. Pour maintenir l’exécution d’une instruction lorsqu’un appel dépasse le délai d’expiration de 45 secondes de l’API de données RDS, sélectionnez l’option --continue-after-timeout.
Pour Linux, macOS ou Unix :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --sql "alter table mytable change column job role varchar(100)" --continue-after-timeout
Pour Windows :
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" ^ --sql "alter table mytable change column job role varchar(100)" --continue-after-timeout
Voici un exemple de réponse.
{
"generatedFields": [],
"numberOfRecordsUpdated": 0
}
Note
Les données generatedFields ne sont pas prises en charge par Aurora PostgreSQL. Pour obtenir les valeurs des champs générés, utilisez la clause RETURNING. Pour plus d’informations, consultez Renvoi de données de lignes modifiées
Exécution d’une instruction SQL par lots sur un tableau de données
Vous pouvez exécuter une instruction SQL par lots sur un tableau de données à l’aide de la commande CLI aws rds-data batch-execute-statement. Vous pouvez utiliser cette commande pour réaliser une opération d’importation ou de mise à jour en bloc.
Vous pouvez exécuter une instruction SQL à l’intérieur d’une transaction en spécifiant l’identifiant de la transaction avec l’option --transaction-id. Vous pouvez démarrer une transaction à l’aide de la commande CLI aws rds-data
begin-transaction. Vous pouvez terminer et valider une transaction à l’aide de la commande CLI aws rds-data commit-transaction.
Important
Si vous ne spécifiez pas l’option --transaction-id, les modifications renvoyées par l’appel sont automatiquement validées.
En plus des options courantes, spécifiez les options suivantes :
-
--sql(obligatoire) – Instruction SQL à exécuter sur le cluster de bases de données.Astuce
Pour les instructions compatibles avec MySQL, n’incluez pas de point-virgule à la fin du paramètre
--sql. Un point-virgule final peut entraîner une erreur de syntaxe. -
--transaction-id(facultatif) – Identifiant d’une transaction démarrée à l’aide de la commande CLIbegin-transaction. Spécifiez l’identifiant de la transaction dans laquelle vous souhaitez intégrer l’instruction SQL. -
--parameter-set(facultatif) – Ensembles de paramètres pour l’opération par lots. -
--database(facultatif) – Nom de la base de données.
Le cluster de bases de données renvoie une réponse à l’appel.
Note
Il n’existe pas de limite supérieure fixe pour le nombre d’ensembles de paramètres. Toutefois, la taille maximale de la demande HTTP envoyée via l’API de données est de 4 MiB. Si la demande dépasse cette limite, l’API de données renvoie une erreur et ne traite pas la demande. Cette limite de 4 MiB inclut la taille des en-têtes HTTP et la notation JSON dans la demande. Ainsi, le nombre d’ensembles de paramètres que vous pouvez inclure dépend d’une combinaison de facteurs, tels que la taille de l’instruction SQL et la taille de chaque ensemble de paramètres.
La taille de réponse est limitée à 1 Mio. Si l’appel renvoie plus de 1 Mio de données de réponse, l’appel est arrêté.
Le nombre maximal de demandes par seconde est 1 000 pour Aurora Serverless v1. Aucune limite n’est imposée pour les autres bases de données prises en charge.
Par exemple, la commande CLI suivante exécute une instruction SQL par lots sur un tableau de données avec un ensemble de paramètres.
Pour Linux, macOS ou Unix :
aws rds-data batch-execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --sql "insert intomytablevalues (:id,:val)" \ --parameter-sets "[[{\"name\": \"id\", \"value\": {\"longValue\":1}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueOne\"}}], [{\"name\": \"id\", \"value\": {\"longValue\":2}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueTwo\"}}], [{\"name\": \"id\", \"value\": {\"longValue\":3}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueThree\"}}]]"
Pour Windows :
aws rds-data batch-execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" ^ --sql "insert intomytablevalues (:id,:val)" ^ --parameter-sets "[[{\"name\": \"id\", \"value\": {\"longValue\":1}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueOne\"}}], [{\"name\": \"id\", \"value\": {\"longValue\":2}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueTwo\"}}], [{\"name\": \"id\", \"value\": {\"longValue\":3}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueThree\"}}]]"
Note
N’incluez pas les sauts de ligne présents dans l’option --parameter-sets.
Validation d’une transaction SQL
À l’aide de la commande CLI aws rds-data commit-transaction, vous pouvez terminer une transaction SQL que vous avez démarrée avec aws rds-data
begin-transaction et valider les modifications.
En plus des options courantes, spécifiez l’option suivante :
-
--transaction-id(obligatoire) – Identifiant d’une transaction démarrée à l’aide de la commande CLIbegin-transaction. Spécifiez l’identifiant de la transaction que vous souhaitez terminer et valider.
Par exemple, la commande CLI suivante termine une transaction SQL et valide les changements.
Pour Linux, macOS ou Unix :
aws rds-data commit-transaction --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --transaction-id "ABC1234567890xyz"
Pour Windows :
aws rds-data commit-transaction --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" ^ --transaction-id "ABC1234567890xyz"
Voici un exemple de réponse.
{
"transactionStatus": "Transaction Committed"
}
Restauration d’une transaction
À l’aide de la commande CLI aws rds-data rollback-transaction, vous pouvez restaurer une transaction SQL que vous avez démarrée avec aws rds-data
begin-transaction. La restauration d’une transaction annule les changements apportés.
Important
L’expiration de l’identifiant de la transaction entraîne automatiquement sa restauration. Dans ce cas, une commande aws rds-data rollback-transaction qui spécifie l’identifiant de transaction expiré renvoie une erreur.
En plus des options courantes, spécifiez l’option suivante :
-
--transaction-id(obligatoire) – Identifiant d’une transaction démarrée à l’aide de la commande CLIbegin-transaction. Spécifiez l’identifiant de la transaction que vous souhaitez restaurer.
Par exemple, la commande AWS CLI suivante restaure une transaction SQL.
Pour Linux, macOS ou Unix :
aws rds-data rollback-transaction --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --transaction-id "ABC1234567890xyz"
Pour Windows :
aws rds-data rollback-transaction --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" ^ --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" ^ --transaction-id "ABC1234567890xyz"
Voici un exemple de réponse.
{
"transactionStatus": "Rollback Complete"
}