Comment procéder en cas d'échec, lors de l'utilisation d'AWS DMS, du test de connexion au point de terminaison Amazon S3 ?

Date de la dernière mise à jour : 04/02/2020

J'utilise Amazon Simple Storage Service (Amazon S3) en tant que point de terminaison source ou cible pour ma tâche AWS Database Migration Service (AWS DMS). J'ai reçu un message d'erreur, car mon test de connexion du point de terminaison a échoué. Comment puis-je dépanner et résoudre les défaillances de connectivité du point de terminaison?

Brève description

Si vous ne disposez pas des autorisations appropriées configurées pour le rôle AWS Identity and Access Management (IAM) qui utilise le point de terminaison Amazon S3, l'une des entrées de journal suivantes s'affiche :

Message
Test Endpoint failed : Application Status : 1020912, Application-Message : Failed to connect to S3 endpoint. Access denied.
Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to list bucket wan-dms Failed to connect to database., Application-Detailed-Message: failed to list bucket wan-dms AWS failed to list bucket List bucket failed with exception 'AccessDenied', message 'Access Denied', error type '15' AWS failed to list bucket Not retriable error: Access Denied
Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to connect to database.
« Error Details: [message=putDatabase call failed, errType=ERROR_RESPONSE, status=1020414, errMessage= Failed to connect to database., errDetails=] » (Informations sur l'erreur: [message=putDatabase call failed, errType=ERROR_RESPONSE, status=1020414, errMessage= Failed to connect to database., errDetails=])

Solution

Afin de remédier à ces problèmes, accordez les autorisations IAM minimales requises pour accéder au point de terminaison Amazon S3. Les points de terminaison source et cible Amazon S3 disposent d'autorisations minimales différentes pour AWS DMS.

L'exemple de stratégie IAM suivant s'applique à un point de terminaison source Amazon S3 :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
           
    "Action": [
                "s3:GetObject",    
                "s3:ListBucket"        
    ],
    
            "Resource": [
                "arn:aws:s3:::awsexamplebucket",   
                "arn:aws:s3:::awsexamplebucket/*" 
            ]
        }
    ]
}

Remarque : remplacez awsexamplebucket par le nom de votre compartiment.

L'exemple de stratégie IAM suivant s'applique à un point de terminaison cible Amazon S3 :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Resource": [
                "arn:aws:s3:::awsexamplebucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::awsexamplebucket"
            ]
        }
    ]
}

Remarque : remplacez awsexamplebucket par le nom de votre compartiment.

Important :

Pour remédier aux problèmes d'autorisations, procédez comme suit :

1.    Vérifiez que le rôle IAM dispose des autorisations minimales requises pour accéder au point de terminaison Amazon S3.

2.    Vérifiez que le nom du compartiment spécifié pour le point de terminaison Amazon S3 correspond à la ressource autorisée par le rôle IAM. Dans l'exemple précédent, ce rôle permet d'accéder à un seul compartiment, awsexamplebucket. Cependant, si awsexamplebucket2 correspond au nom de compartiment pour le point de terminaison Amazon S3, la connexion test échoue.

3.    Vérifiez que dms.amazonaws.com constitue l'entité de confiance associée au rôle IAM. Pour obtenir des informations supplémentaires, consultez la section Modification de la relation d'approbation pour un rôle existant et reportez-vous à l'exemple de stratégie suivant applicable à AWS DMS :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "dms.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

4.    Si vous utilisez AWS Organizations, vérifiez que le rôle IAM utilisé fait partie d'une organisation qui autorise l'accès à Amazon S3. Si votre organisation n'autorise pas l'accès, AWS DMS ne peut pas se connecter au point de terminaison Amazon S3 à l'aide de ce rôle IAM, même si le rôle dispose de toutes les autorisations requises. Si votre organisation n'autorise pas l'accès, contactez l'administrateur de votre compte pour autoriser Amazon S3 à accéder à votre organisation.