es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El SDK de AWS en Go no toma información de región de un perfil.

Tratando de seguir el ejemplo oficial para listar los buckets.

sess, err := session.NewSessionWithOptions(session.Options{
    Profile: "mi-perfil",
})
if err != nil {
    exitErrorf("No se puede crear la sesión, %v", err)
}

// Crear cliente de servicio S3
svc := s3.New(sess)
result, err := svc.ListBuckets(nil)
if err != nil {
    exitErrorf("No se pueden listar los buckets, %v", err)
}

Ten en cuenta que mi-perfil (ubicado en ~/.aws/credentials) tiene información de región asociada.

[mi-perfil]
aws_access_key_id=XXXXXXX
aws_secret_access_key=XXXXXXX
region=us-east-1

El programa falla de la siguiente manera:

No se pueden listar los buckets, MissingRegion: no se pudo encontrar la configuración de región
exit status 1

editado: logré resolver esto agregando esta línea de código:

os.Setenv("AWS_REGION", "us-east-1")

Pero supongo que la forma adecuada debería ser que el SDK lea correctamente el perfil, ¿no?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el programa que falla al listar los buckets se debe a la falta de configuración de región en el perfil de AWS. El perfil my-profile en ~/.aws/credentials tiene información de región asociada, pero no está siendo leída por el SDK de AWS.

    Una forma de solucionar esto es estableciendo la variable de entorno AWS_REGION utilizando os.Setenv(). Sin embargo, esta no es la forma adecuada de resolver el problema.

    Para solucionar el problema, el SDK debe ser capaz de leer la información de región del perfil de AWS. Es posible que el perfil no se esté leyendo correctamente o no esté configurado adecuadamente. Verifica la configuración del perfil y vuelve a intentarlo.

    Alternativamente, puedes especificar directamente la información de región en las opciones de la sesión al crear la sesión:

    sess, err := session.NewSessionWithOptions(session.Options{
        Profile: "my-profile",
        Config: aws.Config{
            Region: aws.String("us-east-1"),
        },
    })
    

    Esto debería establecer la información de región para la sesión y permitir que el SDK lea correctamente el perfil.

Comments are closed.