read code aws accessdenied amazon-web-services amazon-s3 aws-cli

amazon web services - code - AWS CLI S3 Se produjo un error de cliente(403) al llamar a la operación HeadObject: Prohibido



s3 bucket policy public read (13)

En mi caso, recibí este error al intentar obtener un objeto en una carpeta de S3. Pero en esa carpeta mi objeto no estaba aquí (puse la carpeta incorrecta), por lo que S3 envía este mensaje. Espero que te pueda ayudar también.

Estoy tratando de configurar una AMI de Amazon Linux (ami-f0091d91) y tengo una secuencia de comandos que ejecuta un comando de copia para copiar desde un cubo S3.

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

Este script funciona perfectamente en mi máquina local pero falla con el siguiente error en la imagen de Amazon:

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

Sin embargo, cuando lo ejecuto con la --no-sign-request , funciona perfectamente:

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

¿Alguien puede explicar qué está pasando?


Estaba recibiendo un 403 en solicitudes HEAD mientras que las solicitudes GET estaban funcionando. Resultó ser la configuración de CORS en los permisos s3. Tuve que agregar HEAD

<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>HEAD</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration>


He tenido este problema, agregando --recursive al comando ayudará.

En este punto, no tiene mucho sentido, ya que usted (como yo) solo está intentando copiar un solo archivo, ¡pero funciona!


Me lo imaginé. Tuve un error en mi plantilla de formación de nubes que estaba creando las instancias de EC2. Como resultado, las instancias de EC2 que intentaban acceder a los grupos de despliegue de código anteriores estaban en diferentes regiones (no en us-west-2). Parece que las políticas de acceso en los depósitos (propiedad de Amazon) solo permiten el acceso desde la región a la que pertenecen. Cuando solucioné el error en mi plantilla (era un mapa de parámetros incorrecto), el error desapareció.


Recibí este error con un evento de prueba mal configurado. Cambié el ARN de los depósitos de origen, pero olvidé editar el nombre predeterminado del depósito de S3.

Es decir, asegúrese de que en la sección de depósito del evento de prueba tanto el nombre de ARN como el de depósito estén configurados correctamente:

"bucket": { "arn": "arn:aws:s3:::your_bucket_name", "name": "your_bucket_name", "ownerIdentity": { "principalId": "EXAMPLE" }


Recibí este mensaje de error debido a que el reloj de mi instancia de EC2 no está sincronizado.

Pude arreglarlo en Ubuntu usando esto:

sudo ntpdate ntp.ubuntu.com sudo apt-get install ntp


También experimenté ese comportamiento. En mi caso, he encontrado que si la política de IAM no tiene acceso para leer el objeto ( s3:GetObject ), s3:GetObject el mismo error.

Estoy de acuerdo con usted en que el error provocado por aws console & cli no está realmente bien explicado y puede causar confusión.


También he experimentado este escenario.

Tengo un cubo con la política que utiliza AWS4-HMAC-SHA256. Resulta que mi awscli no está actualizado a la última versión. El mío fue aws-cli / 1.10.8. Actualizarlo ha resuelto el problema.

pip install awscli --upgrade --user

https://docs.aws.amazon.com/cli/latest/userguide/installing.html


Te estás perdiendo un permiso de HeadBucket .


Tratando de resolver este problema yo mismo, descubrí que no hay permiso de HeadBucket. Parece que hay, porque eso es lo que te dice el mensaje de error, pero en realidad la operación HEAD requiere el permiso ListBucket . También descubrí que mi política de IAM y mi política de depósito eran conflictivas. Asegúrate de revisar ambos.


Una de las razones para esto podría ser si intenta acceder a grupos de una región que requiere la firma V4. Trate de proporcionar explícitamente la región, como --region cn-north-1


en mi caso, el problema fue la declaración de Resource en la política de acceso del usuario.

Primero tuvimos "Resource": "arn:aws:s3:::BUCKET_NAME" , pero para tener acceso a los objetos dentro de un cubo, necesita un /* al final: "Resource": "arn:aws:s3:::BUCKET_NAME/*"


A client error (403) occurred when calling the HeadObject operation: Forbidden el error. A client error (403) occurred when calling the HeadObject operation: Forbidden error de A client error (403) occurred when calling the HeadObject operation: Forbidden para mi comando aws s3 cp s3://bucket/file file cli copy aws s3 cp s3://bucket/file file . Estaba usando un rol de IAM que tenía acceso completo a S3 usando una Inline Policy .

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

Si le doy el acceso completo a S3 desde las Managed Policies , entonces el comando funciona. Creo que esto debe ser un error de Amazon, porque las políticas en ambos casos fueron exactamente las mismas.