Je peux accéder à Amazon S3 lorsque j'utilise l'interface de ligne de commande AWS (CLI AWS), mais j'obtiens une erreur Accès refusé lorsque j'utilise un kit AWS SDK. Pourquoi ?

Dernière mise à jour : 22/10/2020

Je peux accéder à mes ressources Amazon Simple Storage Service (Amazon S3) lorsque j'utilise l'interface de ligne de commande AWS (AWS CLI), mais j'obtiens une erreur Accès refusé lorsque j'utilise un kit SDK AWS. Comment puis-je corriger ce problème ?

Brève description

Suivez ces étapes de dépannage lorsque vous pouvez accéder à Amazon S3 à l'aide de l'interface de ligne de commande AWS (CLI AWS) mais pas d'un kit AWS SDK:

  1. Vérifiez que l'interface de ligne de commande AWS (CLI AWS) et le kit SDK AWS que vous utilisez sont configurés avec les mêmes informations d'identification.
  2. Vérifiez si les demandes du kit AWS SDK à Amazon S3 sont autorisées par un pare-feu, un proxy HTTP ou un point de terminaison Amazon Virtual Private Cloud (Amazon VPC).

Résolution

Vérifiez que l'interface de ligne de commande AWS (CLI AWS) et le kit AWS SDK que vous utilisez sont configurés avec les mêmes informations d'identification

Pour obtenir les informations d'identification configurées sur l'interface de ligne de commande AWS (CLI AWS), exécutez cette commande :

aws iam list-access-keys

Remarque : si vous recevez des erreurs lors de l'exécution des commandes de l'interface de ligne de commande AWS (CLI AWS), assurez-vous que vous utilisez la version la plus récente de l'interface de ligne de commande AWS (CLI AWS).

Si vous utilisez un rôle AWS Identity and Access Management (IAM) associé à l'interface de ligne de commande AWS (CLI AWS), exécutez cette commande pour obtenir le rôle :

aws sts get-caller-identity

Pour obtenir les informations d'identification configurées sur le kit SDK AWS que vous utilisez, exécutez un appel GetCallerIdentity à l'aide de votre client AWS Security Token Service (AWS STS). Par exemple, si vous utilisez AWS SDK for Python (Boto3), exécutez get_caller_identity.

Si l'interface de ligne de commande AWS (CLI AWS) et le kit AWS SDK utilisent des informations d'identification différentes, essayez d'utiliser le kit AWS SDK avec les informations d'identification stockées sur l'interface de ligne de commande AWS (CLI AWS).

Vérifiez si les demandes du kit AWS SDK à Amazon S3 sont autorisées par un pare-feu, un proxy HTTP ou un point de terminaison d’un VPC Amazon

Si les informations d'identification configurées sont identiques, vérifiez si les demandes adressées à Amazon S3 via l'interface de ligne de commande AWS (CLI AWS) et le kit SDK AWS proviennent de la même source. Par exemple, vérifiez si les demandes proviennent de la même instance Amazon Elastic Compute Cloud (Amazon EC2).

Si les demandes proviennent de sources différentes, vérifiez si la source utilisant le kit AWS SDK envoie des demandes via un pare-feu, un proxy HTTP ou un point de terminaison d’un VPC. Ensuite, vérifiez que le pare-feu, le proxy HTTP ou le point de terminaison d’un VPC autorise la demande que vous tentez d'envoyer à Amazon S3.

Par exemple, la stratégie de point de terminaison d’un VPC suivante autorise les autorisations de téléchargement et de chargement pour DOC-EXAMPLE-BUCKET. Si vous utilisez ce point de terminaison d’un VPC, l'accès à tout autre compartiment vous est refusé.

{
    "Statement": [
        {
            "Sid": "Access-to-specific-bucket-only",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ]
        }
    ]
  }

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?