Obteniendo boto.exception.S3ResponseError: S3ResponseError: 403 Prohibido al cargar el archivo

Hay algunas otras preguntas sobre este tema:

boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

S3ResponseError: S3ResponseError: 403 Prohibido

S3ResponseError: 403 Prohibido mediante boto

Python: Amazon S3 no puede obtener el cazo: dice 403 Prohibido

Sin embargo, parece que puedo tener un problema diferente (por ejemplo, el sesgo del reloj no es un problema y ya he intentado configurar validate=False , y creo que tengo la clave correcta y la clave secreta porque al intentar una clave falsa o falsa me da diferentes errores). Aquí está mi guión:

 import boto import sys from boto.s3.key import Key BUCKET_NAME = sys.argv[1] AWS_ACCESS_KEY_ID = sys.argv[2] AWS_SECRET_ACCESS_KEY = sys.argv[3] conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) bucket = conn.get_bucket(BUCKET_NAME, validate=False) k = Key(bucket) k.key = 'barbaz' k.set_contents_from_filename('/tmp/barbaz.txt') 

Y el resultado:

 Traceback (most recent call last): File "/home/jonderry/sdmain/src/scripts/jenkins/upload_to_s3.py", line 16, in  k.set_contents_from_filename('/tmp/barbaz.txt') File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1360, in set_contents_from_filename encrypt_key=encrypt_key) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1291, in set_contents_from_file chunked_transfer=chunked_transfer, size=size) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 748, in send_file chunked_transfer=chunked_transfer, size=size) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 949, in _send_file_internal query_args=query_args File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 664, in make_request retry_handler=retry_handler File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1068, in make_request retry_handler=retry_handler) File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 939, in _mexe request.body, request.headers) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 882, in sender response.status, response.reason, body) boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden  AccessDeniedAccess Denied***someRequestId******someHostId 

¿Alguna idea de cuál es el problema, o cómo diagnosticar más?

Parece que no tienes derecho a escribir en este cubo. ¿Cuál es la política del cubo? ¿Puede asegurarse de que este usuario de IAM pueda poner en este cubo?

Esto también sucederá si la configuración de tiempo de su máquina es incorrecta

También tuve este problema cuando intenté validate=False , y ntpdate , y le ntpdate “Usuarios autenticados” el permiso para cargar / eliminar en AWS. Mi resolución es probablemente rara, pero en caso de que alguien más haya hecho esto:

Comencé a ejecutar mi aplicación Django con credenciales en mi entorno para mi cubeta ‘xyz’. Luego cambié las credenciales para cargarlas en el cubo ‘abc’ de mi amigo. Hubo una discrepancia entre estas credenciales, por lo que todo lo que tenía que hacer era reiniciar Gunicorn.