Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je créer une sauvegarde de mes paramètres de tâches AWS DMS à l’aide de l’AWS CLI et de jq ?
Je souhaite effectuer une sauvegarde des paramètres de mes tâches de réplication AWS Database Migration Service (AWS DMS) pour les restaurer ultérieurement ou pour les utiliser comme modèle pour d’autres tâches.
Brève description
Utilisez l’interface de ligne de la commande AWS (AWS CLI) et le processeur JSON de ligne de commande jq pour créer une sauvegarde des paramètres de vos tâches de réplication AWS DMS.
Résolution
**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Prérequis
- Installez l’AWS CLI.
- Téléchargez l’outil jq depuis le. référentiel /jq sur GitHub.
Obtenir les paramètres des tâches de réplication
Pour obtenir les paramètres de vos tâches de réplication AWS DMS, exécutez la commande describe-replication-tasks avec l’AWS CLI. Vous devez utiliser l’indicateur --filters. Avec l’indicateur --filters, vous ne renvoyez que la tâche qui correspond à l’un des éléments suivants :
- l’ID de la tâche de réplication
- l’ARN de la tâche de réplication
Exécutez cette requête pour obtenir les paramètres de la tâche de réplication pour votre tâche AWS DMS avec l’ID de la tâche de réplication. Remplacez dms_task_id par l’ID de votre tâche de réplication AWS DMS.
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=dms_task_id --output json
Exécutez cette requête pour obtenir les paramètres de la tâche de réplication pour votre tâche AWS DMS avec l’ARN de la tâche de réplication. Remplacez dms_task_arn par l’ARN de votre tâche de réplication AWS DMS.
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=dms_task_arn --output json
Filtrer et transformer la sortie JSON avec jq
Filtrez et transformez la sortie JSON de l’étape précédente en fonction du type de tâche que vous souhaitez exécuter. Vous devez filtrer et transformer ce JSON pour le rendre compatible pour une restauration ultérieure.
Utilisez le processeur JSON de ligne de commande jq pour modifier le JSON de sortie :
Tâche de chargement complet
Supprimez les données suivantes :
- ReplicationTaskArn
- ReplicationTaskStartDate
- ReplicationTaskStats
- Status
- StopReason
- ReplicationTaskCreationDate
- CloudWatchLogGroup
- CloudWatchLogStream
- RecoveryCheckpoint
Tâche du CDC
- Ajoutez la clé CdcStartPosition. Définissez ensuite la valeur sur RecoveryCheckpoint.
Supprimez les données suivantes :
- ReplicationTaskArn
- ReplicationTaskStartDate
- ReplicationTaskStats
- Status
- StopReason
- ReplicationTaskCreationDate
- CloudWatchLogGroup
- CloudWatchLogStream
- RecoveryCheckpoint
Chargement complet et tâche CDC
Supprimez les données suivantes :
- ReplicationTaskArn
- ReplicationTaskStartDate
- ReplicationTaskStats
- Status
- StopReason
- ReplicationTaskCreationDate
- CloudWatchLogGroup
- CloudWatchLogStream
- RecoveryCheckpoint
Ensuite, exécutez l’une des commandes suivantes. Les commandes acheminent le JSON de sortie vers jq, puis filtrent et transforment les données des tâches de réplication.
Utiliser l’ID de tâche de réplication AWS DMS
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=dms_task_id --output json | jq '.ReplicationTasks | .[] | .TableMappings |= fromjson | .ReplicationTaskSettings |= fromjson | .["CdcStartPosition"] = .RecoveryCheckpoint | delpaths([ ["ReplicationTaskArn"],["ReplicationTaskStartDate"],["ReplicationTaskStats"],["Status"],["StopReason"],["ReplicationTaskCreationDate"],["ReplicationTaskSettings","Logging","CloudWatchLogGroup"],["ReplicationTaskSettings","Logging","CloudWatchLogStream"],["RecoveryCheckpoint"]]) | .TableMappings |= tostring |.ReplicationTaskSettings |= tostring'
Utiliser l’ARN de la tâche de réplication AWS DMS
aws dms describe-replication-tasks --filter Name=replication-task-arn,Values=dms-task-arn --output json | jq '.ReplicationTasks | .[] | .TableMappings |= fromjson | .ReplicationTaskSettings |= fromjson | .["CdcStartPosition"] = .RecoveryCheckpoint | delpaths([ ["ReplicationTaskArn"],["ReplicationTaskStartDate"],["ReplicationTaskStats"],["Status"],["StopReason"],["ReplicationTaskCreationDate"],["ReplicationTaskSettings","Logging","CloudWatchLogGroup"],["ReplicationTaskSettings","Logging","CloudWatchLogStream"],["RecoveryCheckpoint"]]) | .TableMappings |= tostring |.ReplicationTaskSettings |= tostring'
Enregistrer la sortie dans un fichier JSON
Pour enregistrer le résultat obtenu en tant que sauvegarde, redirigez-le vers un fichier JSON. Par exemple, cette commande enregistre les paramètres de tâche d’une tâche AWS DMS avec l’ID de tâche dms_original_task dans un fichier JSON nommé task_backup.json :
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=original-dms-task --output json | jq '.ReplicationTasks | .[] | .TableMappings |= fromjson | .ReplicationTaskSettings |= fromjson | .["CdcStartPosition"] = .RecoveryCheckpoint | delpaths([ ["ReplicationTaskArn"],["ReplicationTaskStartDate"],["ReplicationTaskStats"],["Status"],["StopReason"],["ReplicationTaskCreationDate"],["ReplicationTaskSettings","Logging","CloudWatchLogGroup"],["ReplicationTaskSettings","Logging","CloudWatchLogStream"],["RecoveryCheckpoint"]]) | .TableMappings |= tostring |.ReplicationTaskSettings |= tostring' > task_backup.json
Le fichier JSON de sortie affiche une sortie similaire à celle-ci :
{ "ReplicationTaskIdentifier": "original-dms-task", "SourceEndpointArn": "arn:aws:dms:us-east-1:xxxxxxxxxxxx:endpoint:QKMQN2TCULCPYIK3CMGF2CRDC5DIWZ433BCKHZY", "TargetEndpointArn": "arn:aws:dms:us-east-1:xxxxxxxxxxxx:endpoint:6LEFAZCDPQD2HWHJIXJYUU4PGMTKA2AKKFN4KCA", "ReplicationInstanceArn": "arn:aws:dms:us-east-1:xxxxxxxxxxxx:rep:C4CAB7ANKQU2AU7WFH4BYCJSLPS3YYUGCTHL3UA", "MigrationType": "full-load-and-cdc", "TableMappings": "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"293111713\",\"rule-name\":\"293111713\",\"object-locator\":{\"schema-name\":\"%\",\"table-name\":\"%\"},\"rule-action\":\"include\",\"filters\":[]}]}", "ReplicationTaskSettings": "{\"Logging\":{\"EnableLogging\":true,\"LogComponents\":[{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TRANSFORMATION\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"SOURCE_UNLOAD\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"IO\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TARGET_LOAD\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"PERFORMANCE\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"SOURCE_CAPTURE\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"SORTER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"REST_SERVER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"VALIDATOR_EXT\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TARGET_APPLY\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TASK_MANAGER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TABLES_MANAGER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"METADATA_MANAGER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"FILE_FACTORY\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"COMMON\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"ADDONS\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"DATA_STRUCTURE\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"COMMUNICATION\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"FILE_TRANSFER\"}]},\"StreamBufferSettings\":{\"StreamBufferCount\":3,\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferSizeInMB\":8},\"ErrorBehavior\":{\"FailOnNoTablesCaptured\":true,\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"FailOnTransactionConsistencyBreached\":false,\"RecoverableErrorThrottlingMax\":1800,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"ApplyErrorEscalationCount\":0,\"RecoverableErrorStopRetryAfterThrottlingMax\":true,\"RecoverableErrorThrottling\":true,\"ApplyErrorFailOnTruncationDdl\":false,\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"RecoverableErrorCount\":-1,\"DataErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"RecoverableErrorInterval\":5,\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"TableErrorEscalationCount\":0,\"FullLoadIgnoreConflicts\":true,\"DataErrorPolicy\":\"LOG_ERROR\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"ValidationSettings\":{\"ValidationPartialLobSize\":0,\"PartitionSize\":10000,\"RecordFailureDelayLimitInMinutes\":0,\"SkipLobColumns\":false,\"FailureMaxCount\":10000,\"HandleCollationDiff\":false,\"ValidationQueryCdcDelaySeconds\":0,\"ValidationMode\":\"ROW_LEVEL\",\"TableFailureMaxCount\":1000,\"RecordFailureDelayInMinutes\":5,\"MaxKeyColumnSize\":8096,\"EnableValidation\":true,\"ThreadCount\":5,\"RecordSuspendDelayInMinutes\":30,\"ValidationOnly\":false},\"TTSettings\":{\"TTS3Settings\":null,\"TTRecordSettings\":null,\"EnableTT\":false},\"FullLoadSettings\":{\"CommitRate\":10000,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"MaxFullLoadSubTasks\":8,\"TransactionConsistencyTimeout\":600,\"CreatePkAfterFullLoad\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\"},\"TargetMetadata\":{\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"TargetSchema\":\"\",\"InlineLobMaxSize\":0,\"ParallelLoadQueuesPerThread\":0,\"SupportLobs\":true,\"LobChunkSize\":0,\"TaskRecoveryTableEnabled\":false,\"ParallelLoadThreads\":0,\"LobMaxSize\":32,\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"ParallelLoadBufferSize\":0},\"BeforeImageSettings\":null,\"ControlTablesSettings\":{\"historyTimeslotInMinutes\":5,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false,\"HistoryTableEnabled\":false,\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false},\"LoopbackPreventionSettings\":null,\"CharacterSetSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingTuning\":{\"StatementCacheSize\":50,\"CommitTimeout\":1,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"BatchApplyTimeoutMax\":30,\"MinTransactionSize\":1000,\"MemoryKeepTime\":60,\"BatchApplyMemoryLimit\":500,\"MemoryLimitTotal\":1024},\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true,\"HandleSourceTableAltered\":true},\"PostProcessingRules\":null}", "CdcStartPosition": "checkpoint:V1#102#00000000/B803EBA0#0#0#*#0#277" }
Vous pouvez modifier et restaurer le fichier JSON à l’aide de la commande create-replication-task de l’AWS CLI.
Par exemple, cette commande crée une tâche de réplication AWS DMS avec l’ID de tâche restored-dms-task à l’aide du fichier task_backup.json :
aws dms create-replication-task --replication-task-identifier restored-dms-task --cli-input-json file://task_backup.json
Remarque : si vous incluez l’identifiant replication-task-identifier dans la commande, vous remplacez la valeur de l’identifiant de tâche de réplication dans le fichier task_backup.json.
Informations connexes
Spécification des paramètres de tâches pour les tâches d’AWS Database Migration Service
Création de tâches pour une réplication continue à l’aide d’AWS DMS

Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a 10 moislg...
- demandé il y a 3 moislg...
- demandé il y a 8 moislg...
- AWS OFFICIELA mis à jour il y a un an