services rails elastic deploy aws app ruby-on-rails ruby amazon-web-services

ruby-on-rails - rails - elastic beanstalk



AWS S3: la cubeta a la que intenta acceder debe direccionarse utilizando el punto final especificado (7)

Durante la creación de S3Client puede especificar la asignación de punto final a una región en particular. Si se establece el valor predeterminado de s3.amazonaws.com se s3.amazonaws.com depósito en us-east-1 que es Virginia del Norte.

Más detalles sobre puntos finales S3 y regiones en documentos de AWS: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region .

Por lo tanto, siempre asegúrese de que el punto final / región cree el S3Client y acceda a los recursos S3 utilizando el mismo cliente en la misma región.

Si el depósito se crea desde la consola AWS S3, luego verifique la región desde la consola para ese depósito y luego cree un cliente S3 en esa región usando los detalles del punto final mencionados en el enlace anterior.

Estoy tratando de eliminar los archivos de imagen cargados con AWS-SDK-Core Ruby Gem.

Tengo el siguiente código:

require ''aws-sdk-core'' def pull_picture(picture) Aws.config = { :access_key_id => ENV["AWS_ACCESS_KEY_ID"], :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"], :region => ''us-west-2'' } s3 = Aws::S3::Client.new test = s3.get_object( :bucket => ENV["AWS_S3_BUCKET"], :key => picture.image_url.split(''/'')[-2], ) end

Sin embargo, recibo el siguiente error:

El depósito al que intenta acceder debe dirigirse utilizando el punto final especificado. Envíe todas las solicitudes futuras a este punto final.

Sé que la región es correcta porque si la cambio a us-east-1 , aparece el siguiente error:

La clave especificada no existe.

¿Qué estoy haciendo mal aquí?


Me enfrentaba a un error similar porque el cubo estaba en la región us-west-2 y el patrón de URL tenía un nombre de pila en la ruta. Una vez, cambié el patrón de URL para tener el nombre de cubo como subdominio de URL para obtener los archivos y funcionó.

Por ejemplo, la URL anterior era

https://s3.amazonaws.com/bucketname/filePath/filename

Luego lo reemplacé como

https://bucketname.s3.amazonaws.com/filePath/filename


Para las personas que todavía se enfrentan a este problema, intente agregar s3_host de la siguiente manera al hash de configuración

:storage => :s3, :s3_credentials => {:access_key_id => access key, :secret_access_key => secret access key}, :bucket => bucket name here, :s3_host_name => s3-us-west-1.amazonaws.com or whatever comes as per your region}.

Esto solucionó el problema para mí.


Para muchos paquetes API S3 (recientemente tuve este problema con el paquete npm s3 ) puede encontrarse con problemas donde se asume que la región es estándar de EE. UU., Y buscar por nombre requerirá que defina explícitamente la región si elige alojar un segmento. fuera de esa región.


Parece probable que este cubo se haya creado en una región diferente, IE no us-west-2. Esa es la única vez que he visto "El segmento al que está intentando acceder se debe direccionar utilizando el punto final especificado. Envíe todas las solicitudes futuras a este punto final".

El estándar de EE. UU. Es us-east-1


Recibí este error cuando intenté acceder a un depósito que no existía.

Por error, cambié una variable de ruta con la variable de nombre de depósito y, por lo tanto, el nombre del depósito tenía el valor de ruta de archivo. Así que tal vez doblemente, si el nombre del cubo que configura en su solicitud es correcto.