Uso de archivos config y AWS compartidos para configurar los SDK y las herramientas de credentials de forma global
Los archivos AWS, config y credentials compartidos son la forma más común de especificar la autenticación y la configuración a un SDK o herramienta de AWS.
Los archivos config y credentials compartidos contienen un conjunto de perfiles. Un perfil es un conjunto de ajustes de configuración, en pares clave-valor, que utilizan los SDK de AWS, las AWS Command Line Interface (AWS CLI) y otras herramientas. Los valores de configuración se adjuntan a un perfil para configurar algún aspecto del SDK o la herramienta cuando se utiliza ese perfil. Estos archivos se “comparten”, ya que los valores se aplican a cualquier aplicación, proceso o SDK del entorno local de un usuario.
Tanto los archivos compartidos config como credentials son archivos de texto sin formato que contienen únicamente caracteres ASCII (codificados en UTF-8). Adoptan la forma de lo que generalmente se denomina archivos INI
Perfiles
Los ajustes de los archivos compartidos config y credentials están asociados a un perfil específico. Se pueden definir varios perfiles en el archivo para crear diferentes ajustes de configuración y aplicarlas en diferentes entornos de desarrollo.
El perfil [default] contiene los valores que utiliza un SDK o una operación de herramienta si no se especifica un perfil con nombre específico. También puede crear perfiles independientes a los que pueda hacer referencia de forma explícita por su nombre. Cada perfil puede usar diferentes configuraciones y valores según lo necesite la aplicación y la situación.
nota
[default] es simplemente un perfil sin nombre. Este perfil recibe su nombre default porque es el perfil predeterminado que usa el SDK si el usuario no especifica ningún perfil. No proporciona valores predeterminados heredados a otros perfiles. Si establece algo en el perfil [default] y no lo establece en un perfil con nombre, el valor no se establece cuando usa el perfil con nombre.
Establezca un perfil con nombre
El perfil [default] y varios perfiles con nombre pueden existir en el mismo archivo. Use la siguiente configuración para seleccionar qué configuración de perfil usará su SDK o herramienta al ejecutar el código. Los perfiles también se pueden seleccionar dentro del código o por comando cuando se trabaja con la AWS CLI.
Configure esta funcionalidad mediante los siguientes ajustes:
AWS_PROFILE- variable de entorno-
Cuando esta variable de entorno se establece en un perfil con nombre o “predeterminado”, todo el código de SDK y los comandos de la AWS CLI utilizan la configuración de ese perfil.
Ejemplo de configuración de variables de entorno en Linux/macOS mediante la línea de comandos:
export AWS_PROFILE="my_default_profile_name";Ejemplo de configuración de variables de entorno en Windows mediante la línea de comandos:
setx AWS_PROFILE "my_default_profile_name"
aws.profile: propiedad del sistema JVM-
Para el SDK para Kotlin en la JVM y el SDK para Java 2.x, puede establecer la propiedad del sistema aws.profile. Cuando el SDK cree un cliente de servicio, utiliza la configuración del perfil indicado, a menos que la configuración se anule en el código. El SDK para Java 1.x no admite esta propiedad del sistema.
nota
Si su aplicación está en un servidor que ejecuta varias aplicaciones, le recomendamos que utilice siempre perfiles con nombre en lugar del perfil predeterminado. El perfil predeterminado lo recoge automáticamente cualquier aplicación de AWS del entorno y lo comparte entre ellas. Por lo tanto, si otra persona actualiza el perfil predeterminado de su aplicación, puede afectar involuntariamente a los demás. Para evitarlo, defina un perfil con nombre en el archivo config compartido y, a continuación, utilice ese perfil con nombre en su aplicación configurándolo en su código. Puede usar la variable de entorno o la propiedad del sistema JVM para establecer el perfil con nombre si sabe que su alcance solo afecta a su aplicación.
Formato del archivo de configuración
El archivo config está organizado en secciones. Una sección es una colección con nombre de configuraciones y continúa hasta que se encuentra otra línea de definición de sección.
El archivo config es un archivo de texto sin formato que utiliza el formato siguiente:
-
Todas las entradas de una sección adoptan el formato general de
setting-name=value. -
Las líneas se pueden comentar si se inician con un carácter de almohadilla (
#).
Tipo de sección
La definición de una sección es una línea que aplica un nombre a un conjunto de ajustes. Las líneas de definición de sección comienzan y terminan con corchetes ([ ]). Dentro de los corchetes, hay un identificador de tipo de sección y un nombre personalizado para la sección. Puede utilizar letras, números, guiones (-) y guiones bajos (_), pero no espacios.
Tipo de sección: default
Ejemplo de línea de definición de sección: [default]
[default] es el único perfil que no requiere el identificador de sección profile.
En el siguiente ejemplo, se muestra un archivo config con un perfil [default]. Establece la configuración region. Todos los ajustes que sigan esta línea, hasta que se encuentre otra definición de sección, se incluirán en este perfil.
[default] #Full line comment, this text is ignored. region = us-east-2
Tipo de sección: profile
Ejemplo de línea de definición de sección: [profile
dev]
La línea de definición de la sección profile es una agrupación de configuración con nombre que se puede aplicar a diferentes escenarios de desarrollo. Para conocer mejor los perfiles con nombre, consulte la sección anterior sobre Perfiles.
El siguiente ejemplo muestra un archivo config con una línea de definición de sección profile y un perfil con nombre llamado foo. Todos los ajustes que sigan esta línea, hasta que se encuentre otra definición de sección, se incluirán en este perfil con nombre.
[profilefoo] ...settings...
Algunas configuraciones tienen su propio grupo anidado de subconfiguraciones, como la configuración s3 y las subconfiguraciones del siguiente ejemplo. Para asociar los subajustes al grupo, indéntelos con uno o más espacios.
[profile test] region = us-west-2 s3 = max_concurrent_requests=10 max_queue_size=1000
Tipo de sección: sso-session
Ejemplo de línea de definición de sección: [sso-session
my-sso]
La línea de definición de la sección sso-session nombra un grupo de ajustes que se utilizan para configurar un perfil con el que resolver las credenciales de AWS mediante AWS IAM Identity Center. Para obtener más información sobre la configuración de la autenticación de inicio de sesión único, consulte Uso de IAM Identity Center para autenticar el SDK y las herramientas de AWS. Un perfil está vinculado a una sección sso-session mediante un par clave-valor en el que sso-session es la clave y el nombre de la sección sso-session es el valor, como sso-session =
<name-of-sso-session-section>.
En el siguiente ejemplo, se configura un perfil que obtendrá credenciales de AWS a corto plazo para el rol de IAM “SampleRole” en la cuenta “111122223333” mediante un token de “my-sso”. La sección “my-sso” sso-session se menciona en la sección profile por su nombre mediante la clave sso-session.
[profiledev] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole[sso-sessionmy-sso] sso_region =us-east-1sso_start_url =https://my-sso-portal.awsapps.com/start
Tipo de sección: services
Ejemplo de línea de definición de sección: [services
dev]
nota
La sección services admite personalizaciones de puntos de conexión específicas del servicio y solo está disponible en los SDK y las herramientas que incluyen esta característica. Para ver si esta característica está disponible para tu SDK, consulta Soporte mediante SKD y herramientas de AWS para encontrar los puntos de conexión específicos del servicio.
La sección services es un grupo de ajustes que configura puntos de conexión personalizados para las solicitudes de Servicio de AWS. Un perfil está vinculado a una sección services mediante un par clave-valor en el que services es la clave y el nombre de la sección services es el valor, como services =
<name-of-services-section>.
La sección services se separa aun más en subsecciones por líneas <SERVICE> = , donde <SERVICE> es la clave del identificador de Servicio de AWS. El identificador de Servicio de AWS se basa en serviceId del modelo de la API, sustituyendo todos los espacios por guiones bajos y poniendo en minúsculas todas las letras. Para obtener una lista de todas las claves de identificación de servicio que se van a utilizar en la sección de services, consulte Identificadores de punto de conexión específicos del servicio. La clave del identificador del servicio va seguida de configuraciones anidadas, cada una en su propia línea y marcada con dos espacios.
En el siguiente ejemplo, se utiliza una definición de services para configurar el punto de conexión que se utilizará únicamente en las solicitudes realizadas únicamente al servicio Amazon DynamoDB. La sección "local-dynamodb" de services se menciona en la sección profile por su nombre mediante la clave services. La clave de identificación de Servicio de AWS es dynamodb. La subsección de servicio Amazon DynamoDB comienza en la línea dynamodb = . Todas las líneas inmediatamente siguientes que estén sangradas se incluyen en esa subsección y se aplican a ese servicio.
[profiledev] services =local-dynamodb[serviceslocal-dynamodb] dynamodb = endpoint_url =http://localhost:8000
Para obtener más información sobre la configuración de punto de conexión, consulte Puntos de conexión específicos del servicio.
Formato del archivo de credenciales
Por lo general, las reglas del archivo credentials son idénticas a las del archivo config, con la salvedad de que las secciones del perfil no comienzan por la palabra “profile”. Utilice únicamente el nombre exclusivo del perfil entre corchetes. El siguiente ejemplo muestra un archivo credentials con una línea de definición de sección de perfil llamada foo.
[foo] ...credential settings...
En el archivo credentials solo se pueden almacenar las siguientes configuraciones que se consideran “secretas” o confidenciales: aws_access_key_id, aws_secret_access_key yaws_session_token. Si bien estas configuraciones también se pueden colocar en el archivo config compartido, le recomendamos que mantenga estos valores confidenciales en un archivo credentials independiente. De esta forma, puede proporcionar permisos independientes para cada archivo, si es necesario.
En el siguiente ejemplo, se muestra un archivo credentials con un perfil [default]. Establece la configuración global de aws_access_key_id, aws_secret_access_key y aws_session_token.
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLEaws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYaws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
Independientemente de si utiliza un perfil específico o “default“ en el archivo config, cualquier configuración que aparezca aquí se combinará con la configuración del archivo credentials que utilice el mismo nombre de perfil. Si hay credenciales en ambos archivos para un perfil que comparte el mismo nombre, las claves del archivo de credenciales tienen prioridad.