AWS CLI S3 une erreur client (403) est survenue lors de l'appel de L'opération HeadObject: Forbidden

j'essaie de configurer un AMI Linux Amazon(ami-f0091d91) et d'avoir un script qui exécute une commande de copie pour copier à partir d'un seau S3.

 aws --debug s3 cp s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.noarch.rpm .

Ce script fonctionne parfaitement sur ma machine locale, mais échoue avec l'erreur suivante sur l'Amazone Image:

2016-03-22 01:07:47,110 - MainThread - botocore.auth - DEBUG - StringToSign:
HEAD


Tue, 22 Mar 2016 01:07:47 GMT
x-amz-security-token:AQoDYXdzEPr//////////wEa4ANtcDKVDItVq8Z5OKms8wpQ3MS4dxLtxVq6Om1aWDhLmZhL2zdqiasNBV4nQtVqwyPsRVyxl1Urq1BBCnZzDdl4blSklm6dvu+3efjwjhudk7AKaCEHWlTd/VR3cksSNMFTcI9aIUUwzGW8lD9y8MVpKzDkpxzNB7ZJbr9HQNu8uF/st0f45+ABLm8X4FsBPCl2I3wKqvwV/s2VioP/tJf7RGQK3FC079oxw3mOid5sEi28o0Qp4h/Vy9xEHQ28YQNHXOBafHi0vt7vZpOtOfCJBzXvKbk4zRXbLMamnWVe3V0dArncbNEgL1aAi1ooSQ8+Xps8ufFnqDp7HsquAj50p459XnPedv90uFFd6YnwiVkng9nNTAF+2Jo73+eKTt955Us25Chxvk72nAQsAZlt6NpfR+fF/Qs7jjMGSF6ucjkKbm0x5aCqCw6YknsoE1Rtn8Qz9tFxTmUzyCTNd7uRaxbswm7oHOdsM/Q69otjzqSIztlwgUh2M53LzgChQYx5RjYlrjcyAolRguJjpSq3LwZ5NEacm/W17bDOdaZL3y1977rSJrCxb7lmnHCOER5W0tsF9+XUGW1LMX69EWgFYdn5QNqFk6mcJsZWrR9dkehaQwjLPcv/29QcM+b5u/0goazCtwU=
/aws-codedeploy-us-west-2/latest/codedeploy-agent.noarch.rpm
2016-03-22 01:07:47,111 - MainThread - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [HEAD]>
2016-03-22 01:07:47,111 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTPS connection (1): aws-codedeploy-us-west-2.s3.amazonaws.com
2016-03-22 01:07:47,151 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "HEAD /latest/codedeploy-agent.noarch.rpm HTTP/1.1" 403 0
2016-03-22 01:07:47,151 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amz-id-2': '0mRvGge9ugu+KKyDmROm4jcTa1hAnA5Ax8vUlkKZXoJ//HVJAKxbpFHvOGaqiECa4sgon2F1kXw=', 'server': 'AmazonS3', 'transfer-encoding': 'chunked', 'x-amz-request-id': '6204CD88E880E5DD', 'date': 'Tue, 22 Mar 2016 01:07:46 GMT', 'content-type': 'application/xml'}
2016-03-22 01:07:47,152 - MainThread - botocore.parsers - DEBUG - Response body:

2016-03-22 01:07:47,152 - MainThread - botocore.hooks - DEBUG - Event needs-retry.s3.HeadObject: calling handler <botocore.retryhandler.RetryHandler object at 0x7f421075bcd0>
2016-03-22 01:07:47,152 - MainThread - botocore.retryhandler - DEBUG - No retry needed.
2016-03-22 01:07:47,152 - MainThread - botocore.hooks - DEBUG - Event after-call.s3.HeadObject: calling handler <function enhance_error_msg at 0x7f4211085758>
2016-03-22 01:07:47,152 - MainThread - botocore.hooks - DEBUG - Event after-call.s3.HeadObject: calling handler <awscli.errorhandler.ErrorHandler object at 0x7f421100cc90>
2016-03-22 01:07:47,152 - MainThread - awscli.errorhandler - DEBUG - HTTP Response Code: 403
2016-03-22 01:07:47,152 - MainThread - awscli.customizations.s3.s3handler - DEBUG - Exception caught during task execution: A client error (403) occurred when calling the HeadObject operation: Forbidden
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/s3handler.py", line 100, in call
    total_files, total_parts = self._enqueue_tasks(files)
  File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/s3handler.py", line 178, in _enqueue_tasks
    for filename in files:
  File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/fileinfobuilder.py", line 31, in call
    for file_base in files:
  File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/filegenerator.py", line 142, in call
    for src_path, extra_information in file_iterator:
  File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/filegenerator.py", line 314, in list_objects
    yield self._list_single_object(s3_path)
  File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/filegenerator.py", line 343, in _list_single_object
    response = self._client.head_object(**params)
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 228, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 488, in _make_api_call
    model=operation_model, context=request_context
  File "/usr/local/lib/python2.7/site-packages/botocore/hooks.py", line 226, in emit
    return self._emit(event_name, kwargs)
  File "/usr/local/lib/python2.7/site-packages/botocore/hooks.py", line 209, in _emit
    response = handler(**kwargs)
  File "/usr/local/lib/python2.7/site-packages/awscli/errorhandler.py", line 70, in __call__
    http_status_code=http_response.status_code)
ClientError: A client error (403) occurred when calling the HeadObject operation: Forbidden
2016-03-22 01:07:47,153 - Thread-1 - awscli.customizations.s3.executor - DEBUG - Received print task: PrintTask(message='A client error (403) occurred when calling the HeadObject operation: Forbidden', error=True, total_parts=None, warning=None)
A client error (403) occurred when calling the HeadObject operation: Forbidden

Cependant, quand je le lance avec le --no-sign-request option, il fonctionne parfaitement:

 aws --debug --no-sign-request s3 cp s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.noarch.rpm .

quelqu'un Peut-il expliquer ce qui se passe?

25
demandé sur MojoJojo 2016-03-22 04:36:36

10 réponses

j'ai pensé à elle. J'avais une erreur dans mon modèle de formation de nuage qui créait les instances EC2. Par conséquent, les instances EC2 qui tentaient d'accéder aux seaux de déploiement de code ci-dessus se trouvaient dans des régions différentes (et non pas à us-west-2). Il semble que les politiques d'accès sur les seaux (détenue par Amazon) ne permettre l'accès de la région ils appartiennent. Quand j'ai corrigé l'erreur dans mon template (c'était une erreur de paramétrage), l'erreur a disparu

11
répondu MojoJojo 2017-04-12 09:50:54

j'obtenais l'erreur A client error (403) occurred when calling the HeadObject operation: Forbidden pour ma commande aws cli copyaws s3 cp s3://bucket/file file. J'ai été en utilisant un rôle IAM qui avait S3 complète de l'accès à l'aide d'un Inline Policy.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

si je lui donne le plein accès S3 de la Managed Policies à la place, la commande fonctionne. Je pense que cela doit être un bug D'Amazon, parce que les politiques dans les deux cas étaient exactement les mêmes.

10
répondu shadi 2016-05-31 05:55:24

j'ai eu ce problème, ajouter --recursive pour la commande d'aide.

à ce stade, cela n'a pas tout à fait de sens puisque vous (comme moi) essayez seulement de copier un seul fichier vers le bas, mais cela fait l'affaire!

6
répondu Scott Bennett-McLeish 2017-10-04 07:19:14

une des raisons de cela pourrait être si vous essayez d'accéder aux seaux d'une région qui nécessite la signature V4. Essayez de fournir explicitement la région, comme --region cn-north-1

3
répondu Saurabh 2017-05-25 14:55:59

en essayant de résoudre ce problème moi-même, j'ai découvert qu'il n'y a pas de permission de HeadBucket. Il semble que oui, parce que c'est ce que le message d'erreur vous dit, mais en fait le HEAD opération nécessite l' ListBucket permission. J'ai aussi découvert que ma Politique de mie et ma Politique de seau étaient contradictoires. Assurez-vous de vérifier.

3
répondu andrew lorien 2018-06-06 07:31:16

dans mon cas, j'ai eu cette erreur en essayant d'obtenir un objet sur un dossier S3 bucket. Mais dans ce dossier, mon objet n'était pas là (j'ai mis le mauvais dossier), donc S3 envoyer ce message. Espérons qu'il pourrait vous aider aussi.

3
répondu Vince 2018-08-10 06:37:54

dans mon cas, le problème était le Resource énoncé dans la Politique d'accès de l'utilisateur.

nous avons d'Abord eu "Resource": "arn:aws:s3:::BUCKET_NAME", mais afin d'avoir accès aux objets dans un seau vous avez besoin d'un /* à la fin: "Resource": "arn:aws:s3:::BUCKET_NAME/*"

2
répondu trudolf 2018-05-09 04:24:44

j'ai eu cette erreur avec un événement de test mal configuré. J'ai changé l'ARN des seaux source mais j'ai oublié d'éditer le nom par défaut de S3.

C'est-à-dire. assurez-vous que dans la section bucket de l'événement test, le nom ARN et le nom bucket sont correctement définis:

"bucket": {
  "arn": "arn:aws:s3:::your_bucket_name",
  "name": "your_bucket_name",
  "ownerIdentity": {
    "principalId": "EXAMPLE"
  }
0
répondu quax 2018-09-22 03:33:13

je recevais ce message d'erreur parce que l'horloge de mon instance EC2 n'était pas synchronisée.

j'ai été en mesure de fixer sur Ubuntu à l'aide de ceci:

sudo ntpdate ntp.ubuntu.com
sudo apt-get install ntp
0
répondu Tatsu 2018-09-29 17:17:37

il Vous manque un HeadBucket permission.

-3
répondu cohadar 2018-04-20 12:43:41