

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.

# Dissociation d'une réplique de table globale
<a name="globaltables-disassociate"></a>

Vous pouvez dissocier un réplica d'une table globale pour arrêter la réplication depuis et vers ce réplica sans supprimer sa table ou ses données. La réplique devient une table à région unique dans le même AWS compte et région et conserve son nom de table et son nom de ressource Amazon (ARN). Vous pouvez utiliser cette opération après la migration d'une région ou d'un compte, ou lorsque vous n'avez plus besoin d'une table pour participer à la réplication.

Vous pouvez dissocier les répliques des tables globales à compte unique et à comptes multiples configurées pour une cohérence éventuelle multirégionale (MREC), à l'aide de la version 2019.11.21 (actuelle) des tables globales. Cette opération n'est pas prise en charge pour la cohérence renforcée multirégionale (MRSC) ou la version 2017.11.29 (Legacy) de Global Tables.

Le résultat dépend du nombre de répliques dans la table globale :
+ Si la table globale comporte trois répliques ou plus, la réplique que vous dissociez devient une table à région unique. Les répliques restantes sont conservées sous forme de tableau global.
+ Si la table globale comporte deux répliques, les deux tables deviennent des tables à région unique. Ni le tableau ni ses données ne sont supprimés.

La table résultante conserve ses paramètres de table, notamment les index, les flux DynamoDB, la durée de vie (TTL), les sauvegardes, le chiffrement, le mode de facturation et la classe de table. Replication-specific les paramètres et les mesures ne s'appliquent plus. La table est facturée comme une table à région unique.

**Topics**
+ [Comportement de réplication](#globaltables-disassociate-replication)
+ [Protection et exigences en matière de dissociation](#globaltables-disassociate-protection)
+ [Autorisations requises](#globaltables-disassociate-permissions)
+ [Dissocier une réplique à l'aide de AWS CLI](#globaltables-disassociate-cli)
+ [Dissocier une réplique à l'aide de CloudFormation](#globaltables-disassociate-cloudformation)
+ [Gestion des défaillances](#globaltables-disassociate-failures)

## Comportement de réplication
<a name="globaltables-disassociate-replication"></a>

Lorsque vous demandez la dissociation, DynamoDB établit une limite d'arrêt de réplication, un moment qu'il choisit après avoir accepté la demande, et attend que chaque réplique restante ait reçu toutes les écritures effectuées directement sur le réplica sortant jusqu'à cette limite. Si DynamoDB ne peut pas transmettre ces écritures à tous les répliques restants, la dissociation n'est pas terminée et toutes les répliques d'origine restent dans la table globale.

La table continue de servir à lire et à écrire pendant et après la dissociation. Il conserve ses données, mais comme le MREC reproduit les modifications de manière asynchrone, il se peut qu'il ne contienne pas les dernières écritures provenant d'autres régions. Lorsque la dissociation est terminée, la table n'envoie ni ne reçoit plus d'écritures répliquées.

## Protection et exigences en matière de dissociation
<a name="globaltables-disassociate-protection"></a>

La protection contre la dissociation est activée par défaut pour chaque réplique de table globale. Désactivez la protection contre la dissociation et attendez la fin de la mise à jour avant de demander la dissociation. La désactivation de la protection n'arrête pas la réplication. La protection contre la dissociation est indépendante de la protection contre la suppression. La désactivation de la protection contre la suppression ne désactive pas la protection contre la dissociation.

Effectuez les deux demandes depuis la région de la réplique et depuis le compte propriétaire. La réplique doit être `ACTIVE`, toutes les répliques doivent être accessibles, et les autorisations et l'accès par clé de chiffrement requis pour la réplication doivent rester disponibles. Une seule opération du cycle de vie des répliques peut être exécutée pour une table globale à la fois. Attendez donc que les autres opérations, notamment la création de répliques et une autre dissociation, soient terminées avant de soumettre la demande.

La dissociation est bloquée si un réplica a le statut de `INACCESSIBLE_ENCRYPTION_CREDENTIALS`, `REPLICATION_NOT_AUTHORIZED`, `ARCHIVING`, ou `ARCHIVED`. Restaurez l'accès et résolvez les problèmes de réplication avant de réessayer.

Pour une table globale multi-comptes, un compte ne peut dissocier que sa propre réplique. Vous ne pouvez pas non plus dissocier une réplique qui a servi de source à une nouvelle réplique ajoutée au cours des dernières 24 heures. Attendez que 24 heures se soient écoulées depuis l'ajout de la nouvelle réplique.

**Important**  
Vous ne pouvez pas annuler la dissociation ni rattacher la même table à la table globale qu'elle a quittée. Avant de créer une réplique de remplacement dans cette région, appliquez les modifications que vous devez conserver de la table autonome à la table globale restante, en résolvant les différences à l'aide des règles de votre application. Supprimez ensuite la table autonome et ajoutez une nouvelle réplique. La nouvelle réplique copie les données de la table globale restante.

## Autorisations requises
<a name="globaltables-disassociate-permissions"></a>

La dissociation utilise le `Disassociate` action dans le `ReplicaUpdates` gamme de `UpdateTable`. Vous avez besoin des deux `dynamodb:UpdateTable` et `dynamodb:DisassociateTableReplica` sur l'ARN de la table du réplica local. `dynamodb:DisassociateTableReplica` est une autorisation IAM, et non une opération d'API distincte. L'évolution de la protection contre la dissociation nécessite `dynamodb:UpdateTable`, et la vérification de la protection et la surveillance de l'achèvement nécessitent `dynamodb:DescribeTable`. La politique d'identité suivante accorde ces autorisations pour une table. Remplacez la région, l'ID de compte et le nom de la table par vos valeurs.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateTable",
                "dynamodb:DisassociateTableReplica",
                "dynamodb:DescribeTable"
            ],
            "Resource": "arn:aws:dynamodb:{{us-west-2}}:{{111122223333}}:table/{{Music}}"
        }
    ]
}
```

## Dissocier une réplique à l'aide de AWS CLI
<a name="globaltables-disassociate-cli"></a>

La procédure suivante dissocie les `Music` réplique en `us-west-2`. Utilisez les informations d'identification du compte propriétaire de cette réplique. Remplacer `Music` et `us-west-2` avec votre table et sa région locale. Le `--table-name` Le paramètre accepte le nom de la table ou l'ARN de la table. Si vous utilisez un ARN, spécifiez l'ARN du réplica pour ce compte et cette région.

1. Désactivez la protection contre la dissociation sur le réplica local.

   ```
   aws dynamodb update-table \
       --table-name {{Music}} \
       --region {{us-west-2}} \
       --no-disassociation-protection-enabled
   ```

1. Consultez la table locale. Répétez cette commande jusqu'à ce que le tableau soit `ACTIVE` et `DisassociationProtectionEnabled` est `false`. Ne continuez pas si le champ de protection est absent ou `true`.

   ```
   aws dynamodb describe-table \
       --table-name {{Music}} \
       --region {{us-west-2}} \
       --query 'Table.{TableStatus:TableStatus,DisassociationProtectionEnabled:DisassociationProtectionEnabled,Replicas:Replicas}'
   ```

1. Soumettez une demande distincte avec un `Disassociate` action. Spécifiez la région locale et définissez explicitement `DisassociationMode` pour `WAIT_FOR_REPLICATION`.

   ```
   aws dynamodb update-table \
       --table-name {{Music}} \
       --region {{us-west-2}} \
       --replica-updates '[{"Disassociate":{"RegionName":"{{us-west-2}}","DisassociationMode":"WAIT_FOR_REPLICATION"}}]'
   ```

   Une réponse réussie signifie que DynamoDB a accepté la demande. L'opération se poursuit de manière asynchrone. Un `UPDATING` l'état indique que la mise à jour est toujours en cours.

1. Surveillez la table locale avec `DescribeTable`.

   ```
   aws dynamodb describe-table \
       --table-name {{Music}} \
       --region {{us-west-2}} \
       --query 'Table.{TableStatus:TableStatus,Replicas:Replicas}'
   ```

   Confirmez à la fois que `TableStatus` est `ACTIVE` et ça `Replicas` ne répertorie plus les répliques homologues. La liste peut être absente, vide ou ne contenir que la table locale. Vérifiez également l'appartenance mise à jour à partir d'une réplique restante, à l'aide des informations d'identification autorisées à décrire cette table.
**Important**  
`ACTIVE` à lui seul ne confirme pas le succès. Une table peut revenir à `ACTIVE` après l'annulation de la dissociation et être toujours membre de la table globale. Vérifiez toujours l'adhésion Replica.

Pour plus de détails sur l'API, voir [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) et [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html) dans le *Référence de l'API Amazon DynamoDB*.

## Dissocier une réplique à l'aide de CloudFormation
<a name="globaltables-disassociate-cloudformation"></a>

Si un `AWS::DynamoDB::GlobalTable` la ressource gère la réplique, utilise son [`TableType`](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-dynamodb-globaltable.html#cfn-dynamodb-globaltable-tabletype) propriété permettant de dissocier la réplique. CloudFormation dissocie uniquement la réplique du compte et de la région de la pile. Pour une table globale multi-comptes, chaque compte dissocie sa propre réplique de sa propre pile. Pour dissocier un réplica d'une autre région d'une table globale du même compte, importez d'abord ce réplica dans une pile de sa propre région avec `TableType` réglé sur `GlobalTableReplica`, puis exécutez les mises à jour à cet endroit. Pour plus d'informations, voir [Importer AWS ressources dans un CloudFormation empiler](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/import-resources.html) dans le *AWS CloudFormation Guide de l'utilisateur*.

La même pile continue de gérer la table une fois qu'elle est devenue régionale. Aucune table ou donnée n'est supprimée. Le directeur de l'IAM qui CloudFormation les utilisations de la mise à jour de la pile nécessitent les autorisations décrites dans [Autorisations requises](#globaltables-disassociate-permissions). Exécutez les deux mises à jour de pile suivantes dans le compte et la région de la réplique.

1. Set [`DisassociationProtectionEnabled`](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-dynamodb-globaltable-replicaspecification.html#cfn-dynamodb-globaltable-replicaspecification-disassociationprotectionenabled) pour `false` dans le `Replicas` entrée pour la région de la pile, et définissez `TableType` pour `GlobalTableReplica`. Attendez la fin de la mise à jour de la pile. La réplication se poursuit sans modification.

1. Définissez `TableType` sur `Regional`. Ne conservez que la région de la pile `Replicas`, et supprimez `DisassociationProtectionEnabled` à partir de cette entrée. Supprimer `GlobalTableSourceArn` et `MultiRegionConsistency` s'il est présent. Si vous supprimez `GlobalTableSourceArn`, déclarez les paramètres que le réplica a hérités de la table source, tels que `KeySchema`, `AttributeDefinitions`, `BillingMode`, et `StreamSpecification`, avec leurs valeurs actuelles. Apportez toute autre modification de propriété lors d'une mise à jour de pile distincte. La mise à jour de la pile est terminée une fois que DynamoDB a terminé la dissociation.

**Important**  
Le `TableType` le changement raconte CloudFormation pour dissocier la réplique au lieu de la supprimer. La suppression des autres entrées de région dans cette mise à jour ne supprime pas ces tables. Supprimer une entrée de réplique sans la modifier `TableType` pour `Regional` supprime cette réplique, comme dans toute autre mise à jour de pile.

Si DynamoDB rejette la dissociation ou l'annule, la table reste une réplique et la mise à jour de la pile est annulée. Résolvez le problème et relancez la deuxième mise à jour. CloudFormation Impossible d'annuler une dissociation terminée. Si la dissociation est terminée et que la mise à jour de la pile est ensuite annulée, par exemple en raison de la défaillance d'une autre ressource, la pile entre dans le `UPDATE_ROLLBACK_FAILED` état. Poursuivez la restauration et ignorez la ressource du tableau. Vérifiez ensuite si la table est toujours une réplique. Si la table est désormais régionale, appliquez à nouveau la deuxième mise à jour. Pour plus d'informations, veuillez consulter la rubrique [Poursuite de la restauration d'une mise à jour](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-continueupdaterollback.html) dans le *Guide de l'utilisateur AWS CloudFormation *. La restauration de la pile ne nécessite pas la suppression de la table ou de ses données. Pour éviter cet état, ne modifiez pas les autres ressources lors de la même mise à jour de pile.

Une table peut également devenir régionale en dehors de la pile. Par exemple, vous le dissociez du AWS CLI, ou un autre compte dissocie l'autre réplique d'une table globale à deux répliques. Dans les deux cas, appliquez la deuxième mise à jour. CloudFormation reconnaît que la table est déjà régionale et ne supprime pas les anciennes répliques. Courez [détection de dérive](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html) ensuite pour confirmer que la pile correspond à la table.

Les exemples suivants montrent les deux mises à jour de pile pour une table globale pour un même compte et pour une table globale multi-comptes, en YAML et JSON. Les exemples utilisent des valeurs fictives : le nom de la table `GT-CFN-Table` et l'identifiant du compte `111122223333`. Remplacez-les, ainsi que les paramètres du tableau, par vos propres valeurs. `DeletionPolicy: Retain` conserve la table si vous supprimez la pile ultérieurement ; cela n'est pas obligatoire pour la dissociation.

### Same-account tableau global
<a name="globaltables-disassociate-cloudformation-same-account"></a>

Cet exemple utilise une pile dans `us-east-1` pour dissocier le `us-east-1` réplique d'une table globale pour un même compte avec des répliques dans `us-east-1`, `us-east-2`, et `us-west-2`. Après la deuxième mise à jour, la pile gère le `us-east-1` tableau en tant que tableau régional, et le `us-east-2` et `us-west-2` les répliques continuent sous la forme d'une table globale. La pile ne gère plus ces tables. Pour gérer le reste de la table globale avec CloudFormation, importez-le dans une pile dans `us-east-2` ou `us-west-2`.

#### Mise à jour 1 : Désactiver la protection contre la dissociation
<a name="globaltables-disassociate-cloudformation-same-account-update-1"></a>

Ce modèle définit `DisassociationProtectionEnabled` pour `false` sur le `us-east-1` répliques et ensembles `TableType` pour `GlobalTableReplica`. Les autres propriétés restent inchangées.

------
#### [ YAML ]

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  GlobalTable:
    Type: AWS::DynamoDB::GlobalTable
    DeletionPolicy: Retain
    Properties:
      TableName: GT-CFN-Table
      TableType: GlobalTableReplica
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: S
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      Replicas:
        - Region: us-east-1
          DisassociationProtectionEnabled: false
        - Region: us-east-2
        - Region: us-west-2
```

------
#### [ JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "GlobalTable": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "GT-CFN-Table",
                "TableType": "GlobalTableReplica",
                "BillingMode": "PAY_PER_REQUEST",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "id",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "id",
                        "KeyType": "HASH"
                    }
                ],
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-1",
                        "DisassociationProtectionEnabled": false
                    },
                    {
                        "Region": "us-east-2"
                    },
                    {
                        "Region": "us-west-2"
                    }
                ]
            }
        }
    }
}
```

------

#### Mise à jour 2 : dissocier la réplique
<a name="globaltables-disassociate-cloudformation-same-account-update-2"></a>

Ce modèle définit `TableType` pour `Regional`, ne conserve que `us-east-1` dans `Replicas`, et supprime `DisassociationProtectionEnabled` à partir de cette entrée.

------
#### [ YAML ]

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  GlobalTable:
    Type: AWS::DynamoDB::GlobalTable
    DeletionPolicy: Retain
    Properties:
      TableName: GT-CFN-Table
      TableType: Regional
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: S
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      Replicas:
        - Region: us-east-1
```

------
#### [ JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "GlobalTable": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "GT-CFN-Table",
                "TableType": "Regional",
                "BillingMode": "PAY_PER_REQUEST",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "id",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "id",
                        "KeyType": "HASH"
                    }
                ],
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-1"
                    }
                ]
            }
        }
    }
}
```

------

### Multi-account tableau global
<a name="globaltables-disassociate-cloudformation-multi-account"></a>

Cet exemple dissocie les `us-east-2` réplique d'une table globale multi-comptes. Compte A (`111122223333`) possède la table source dans `us-east-1`. Le compte B est propriétaire du `us-east-2` réplique et exécute les deux mises à jour à partir de sa propre pile dans `us-east-2`. Comme la table globale ne comporte que deux répliques, la table du compte A devient également régionale. Le compte A peut alors définir `TableType` pour `Regional` dans son propre modèle. Cette mise à jour n'est pas requise pour que la dissociation du compte B soit terminée.

#### Mise à jour 1 : Désactiver la protection contre la dissociation
<a name="globaltables-disassociate-cloudformation-multi-account-update-1"></a>

Ce modèle définit `DisassociationProtectionEnabled` pour `false` sur le `us-east-2` répliques et ensembles `TableType` pour `GlobalTableReplica`. Les autres propriétés restent inchangées. La réplique hérite de ses paramètres de table de la table source identifiée par `GlobalTableSourceArn`.

------
#### [ YAML ]

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  ReplicaTable:
    Type: AWS::DynamoDB::GlobalTable
    DeletionPolicy: Retain
    Properties:
      TableName: GT-CFN-Table
      TableType: GlobalTableReplica
      GlobalTableSourceArn: arn:aws:dynamodb:us-east-1:111122223333:table/GT-CFN-Table
      Replicas:
        - Region: us-east-2
          DisassociationProtectionEnabled: false
```

------
#### [ JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "ReplicaTable": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "GT-CFN-Table",
                "TableType": "GlobalTableReplica",
                "GlobalTableSourceArn": "arn:aws:dynamodb:us-east-1:111122223333:table/GT-CFN-Table",
                "Replicas": [
                    {
                        "Region": "us-east-2",
                        "DisassociationProtectionEnabled": false
                    }
                ]
            }
        }
    }
}
```

------

#### Mise à jour 2 : dissocier la réplique
<a name="globaltables-disassociate-cloudformation-multi-account-update-2"></a>

Ce modèle définit `TableType` pour `Regional`, supprime `GlobalTableSourceArn` et `DisassociationProtectionEnabled`, et déclare les paramètres de table hérités avec leurs valeurs actuelles.

------
#### [ YAML ]

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  ReplicaTable:
    Type: AWS::DynamoDB::GlobalTable
    DeletionPolicy: Retain
    Properties:
      TableName: GT-CFN-Table
      TableType: Regional
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: S
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      Replicas:
        - Region: us-east-2
```

------
#### [ JSON ]

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "ReplicaTable": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "DeletionPolicy": "Retain",
            "Properties": {
                "TableName": "GT-CFN-Table",
                "TableType": "Regional",
                "BillingMode": "PAY_PER_REQUEST",
                "AttributeDefinitions": [
                    {
                        "AttributeName": "id",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "id",
                        "KeyType": "HASH"
                    }
                ],
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-2"
                    }
                ]
            }
        }
    }
}
```

------

## Gestion des défaillances
<a name="globaltables-disassociate-failures"></a>

Une demande rejetée lors de la validation ou de l'autorisation ne déclenche pas la dissociation. Lisez la réponse d'erreur, corrigez le problème signalé et réessayez. Par exemple, désactivez la protection contre la dissociation, attendez la fin d'une opération simultanée ou restaurez l'accès à une réplique inaccessible. Si une demande expire ou si sa réponse est perdue, vérifiez le statut et la composition de la table avant de réessayer, car la demande a peut-être été acceptée.

Une opération acceptée peut échouer ultérieurement. Par exemple, la perte de l'accès à la clé de chiffrement d'un réplica ou aux autorisations de réplication requises peut entraîner l'annulation de la dissociation. Après la restauration, la réplique fait toujours partie de la table globale. Inspectez `ReplicaStatus` et `ReplicaStatusDescription`, restaurez l'accès si nécessaire et attendez que les répliques soient actives avant de réessayer. L'inaccessibilité continue est toujours soumise au comportement de restauration existant de la table globale. Pour plus d’informations, consultez [Sécurité des tables globales DynamoDB](globaltables-security.md).