AWS S3: el depósito al que intenta acceder debe abordarse utilizando el punto final especificado

185

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í?

usuario3575214
fuente
66
Esto me sucedió cuando accidentalmente especifiqué la región incorrecta para el depósito especificado.
The Muffin Man
Esto podría deberse a que se está utilizando un nombre de región de AWS incorrecto.
Dattatray

Respuestas:

311

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".

Estándar de EE. UU. Es us-east-1

Marcus Walser
fuente
30
Nunca hubiera pensado en eso, ¡pero funcionó para mí! En el SDK de AWS, la región "Estándar de EE. UU." Parece ser AWSRegionUSEast1.
Nerrolken
Estaba buscando una respuesta sobre cómo configurar la región. ¡Gracias!
Sylar
66
Si está utilizando el cliente Ruby, establezca ENV["AWS_REGION"]el valor correcto (p "us-east-1". Ej. ) Para el depósito antes de inicializar el cliente
Abe Voelker
¿Qué sucede si necesita usar más de un depósito (por ejemplo, desarrollo / preparación / producción, etc.)?
yekta
1
Tuve el mismo problema en Java. Tu solución ayudó. Usan nombres extraños en S3. Punto final para la región, clave para el nombre del objeto en el repositorio ...
Gangnus
21

Verifique 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

Jay Q.
fuente
2
¿Puedes explicar cómo? Reemplazar region: 'us-west-1',con qué?
Aamir Afridi
@AamirAfridi depende de qué SDK esté usando. Estoy usando iOS SDK, y en el proveedor de credenciales, hay un parámetro donde puede establecer la región. Lo configuré en la región que pretendo usar.
Jay Q.
Acabo de tener un ejemplo similar, donde optimicé la región de un depósito, pero omití actualizar el nombre de dominio. La solución fue reemplazar el nombre de dominio anterior con el nuevo, como se ve en la referencia de punto final en la consola S3 para ese depósito. Ejemplo: reemplacé https://s3.amazonaws.com/mybucket/myasset.jpgcon https://mybucket.s3-ap-southeast-2.amazonaws.com/myasset.jpgpara corregir ese error.
Fabien Haddadi
19

Estaba enfrentando un error similar porque el depósito estaba en la región us-west-2y 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

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

Luego lo reemplacé como

https://bucketname.s3.amazonaws.com/filePath/filename
prasun
fuente
Poner el nombre totalmente calificado funcionó para mí Ej. s3-ap-southeast-1.amazonaws.com/ng-spark/Java8.json para el cubo que está en la zona de disponibilidad de Singapur
Nilesh Gule
1

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.

Duncan
fuente
1

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.comentonces, se creará un depósito en el us-east-1que 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.

Rathan
fuente
1

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!

Peter Grainger
fuente
1

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.

kokociel
fuente
0

Para las personas que aún enfrentan 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í.

RamanSM
fuente
0

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.

Sven Möhring
fuente
0

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.

  • CÓDIGO DE ERROR: el depósito se configuró con la región ESTE.

s3Client = Nuevo AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint.USWest2)

  • REPARAR

s3Client = Nuevo AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint. USEast1 )

Tushar
fuente
0

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ó.

Shridhar Acharya
fuente
0

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'

Dansek
fuente
0

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.

CamHart
fuente
0

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á.

Code                         Name
US East (Ohio)               us-east-2

US East (N. Virginia)       us-east-1

US West (N. California)     us-west-1

US West (Oregon)            us-west-2

Asia Pacific (Hong Kong)    ap-east-1

Asia Pacific (Mumbai)       ap-south-1

Asia Pacific (Osaka-Local)  ap-northeast-3

Asia Pacific (Seoul)        ap-northeast-2

Asia Pacific (Singapore)    ap-southeast-1

Asia Pacific (Sydney)       ap-southeast-2

Asia Pacific (Tokyo)        ap-northeast-1

Canada (Central)            ca-central-1

Europe (Frankfurt)          eu-central-1

Europe (Ireland)            eu-west-1

Europe (London)             eu-west-2

Europe (Paris)             eu-west-3

Europe (Stockholm)         eu-north-1

Middle East (Bahrain)      me-south-1

South America (São Paulo)   sa-east-1

Puede encontrar su código de región haciendo clic en el nombre del depósito en la esquina derecha.

ingrese la descripción de la imagen aquí

Para detalles del modo Haga clic

Vikram Kodag
fuente