Estoy tratando de eliminar 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 direccionarse 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 us-east-1
, aparece el siguiente error:
La clave especificada no existe.
¿Qué estoy haciendo mal aquí?
ruby-on-rails
ruby
amazon-web-services
amazon-s3
usuario3575214
fuente
fuente
Respuestas:
Parece probable que este depósito se haya creado en una región diferente, es decir, no us-west-2. Esa es la única vez que he visto "El depósito al que está intentando acceder debe abordarse utilizando el punto final especificado. Envíe todas las solicitudes futuras a este punto final".
fuente
ENV["AWS_REGION"]
el valor correcto (p"us-east-1"
. Ej. ) Para el depósito antes de inicializar el clienteVerifique la ubicación de su depósito en la consola, luego use esto como referencia a qué punto final usar: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
fuente
region: 'us-west-1',
con qué?https://s3.amazonaws.com/mybucket/myasset.jpg
conhttps://mybucket.s3-ap-southeast-2.amazonaws.com/myasset.jpg
para corregir ese error.Estaba enfrentando un error similar porque el depósito estaba en la región
us-west-2
y el patrón de URL tenía el nombre del depósito en la ruta. Una vez, cambié el patrón de URL para que tuviera nombre de cubo como subdominio de URL para tomar los archivos y funcionó.Por ejemplo, la URL anterior era
Luego lo reemplacé como
fuente
Para muchos paquetes S3 API (recientemente tuve este problema con el paquete npm s3 ), puede encontrarse con problemas en los que se supone que la región es estándar de EE. UU., Y la búsqueda por nombre requerirá que defina explícitamente la región si elige alojar un depósito fuera de esa región.
fuente
Durante la creación de S3Client, puede especificar la asignación de punto final a una región en particular. Si el valor predeterminado es
s3.amazonaws.com
entonces, se creará un depósito en elus-east-1
que se encuentra North Virginia.Más detalles sobre puntos finales y regiones S3 en documentos de AWS: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region .
Por lo tanto, asegúrese siempre del punto final / región al crear el Cliente S3 y acceda a los recursos S3 utilizando el mismo cliente en la misma región.
Si el depósito se crea desde la consola de AWS S3, compruebe la región desde la consola para ese depósito y luego cree un cliente S3 en esa región utilizando los detalles del punto final mencionados en el enlace anterior.
fuente
Ninguna de las respuestas anteriores solucionó mi problema.
Las respuestas anteriores probablemente sean la causa de su problema, pero mi problema fue que estaba usando el nombre de cubo incorrecto. Era un nombre de cubo válido, simplemente no era mi cubo.
El cubo al que apuntaba estaba en una región diferente a la de mi función lambda, ¡así que verifique el nombre de su cubo!
fuente
Encontré este problema al usar un perfil de AWS diferente. Vi el error cuando estaba usando una cuenta con permisos de administrador, por lo que la posibilidad de problemas de permisos parecía poco probable.
Es realmente un motivo favorito mío que AWS es tan propenso a emitir mensajes de error que tienen tan poca correlación con las acciones requeridas, desde la perspectiva del usuario.
fuente
Para las personas que aún enfrentan este problema, intente agregar s3_host de la siguiente manera al hash de configuración
Esto solucionó el problema para mí.
fuente
Recibí este error cuando intenté acceder a un depósito que no existía.
Cambié por error una variable de ruta con la variable de nombre del depósito, por lo que el nombre del depósito tenía el valor de la ruta del archivo. Entonces, tal vez verifique dos veces si el nombre del depósito que configuró en su solicitud es correcto.
fuente
Tuve el mismo error Ocurrió cuando el cliente s3 se creó con un punto final diferente al que se configuró al crear un depósito.
s3Client = Nuevo AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint.USWest2)
s3Client = Nuevo AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint. USEast1 )
fuente
Me he enfrentado al mismo problema. Después de mucha lucha, descubrí que el problema real es con las dependencias de com.amazonaws. Después de agregar dependencias, este error desapareció.
fuente
Vivo en el Reino Unido, seguí intentando por la región 'us-west-2'. Entonces redirigido a 'eu-west-2'. La región correcta para S3 es 'eu-west-2'
fuente
Esto ocurrió para mí cuando tenía una restricción de IP de origen en la política utilizada por el usuario (clave de acceso / clave secreta) para crear el depósito s3. Mi IP fue precisa, pero por alguna razón no funcionó y dio este error.
fuente
Después de una larga búsqueda, encontré una solución que funciona. El problema se debió al error
region-code
.a continuación se encuentra la lista de códigos de región, configure el apropiado y su problema se resolverá.
Puede encontrar su código de región haciendo clic en el nombre del depósito en la esquina derecha.
Para detalles del modo Haga clic
fuente