

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Usa AWS Secrets Manager secretos en los GitHub trabajos
<a name="retrieving-secrets_github"></a>

Para usar un secreto en un GitHub trabajo, puedes usar una GitHub acción para recuperar los secretos AWS Secrets Manager y añadirlos como [variables de entorno](https://docs.github.com/en/actions/learn-github-actions/environment-variables) enmascaradas en tu GitHub flujo de trabajo. Para obtener más información sobre GitHub las acciones, consulte [Descripción de GitHub las acciones](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions) en los *GitHub documentos*.

Cuando añades un secreto a tu GitHub entorno, estará disponible para todos los demás pasos de tu GitHub trabajo. Siga las instrucciones de [Security Hardening for GitHub Actions para](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions) evitar que se haga un uso indebido de los secretos de su entorno.

Puede establecer la cadena completa del valor del secreto como el valor de la variable de entorno o, si la cadena es JSON, puede analizar el elemento JSON para establecer variables de entorno individuales para cada par clave-valor de JSON. Si el valor del secreto es binario, la acción lo convierte en una cadena.

Para ver las variables de entorno creadas a partir de sus secretos, active el registro de depuración. *Para obtener más información, consulte [Habilitar el registro de depuración](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging) en los documentos. GitHub *

Para usar las variables de entorno creadas a partir de tus secretos, consulta [Variables de entorno](https://docs.github.com/en/actions/learn-github-actions/environment-variables) en los *GitHub documentos*.

## Requisitos previos
<a name="retrieving-secrets_github_prereq"></a>

Para usar esta acción, primero debes configurar AWS las credenciales y configurarlas Región de AWS en tu GitHub entorno siguiendo este `configure-aws-credentials` paso. Siga las instrucciones de la [acción Configurar AWS credenciales para que GitHub las acciones](https://github.com/aws-actions/configure-aws-credentials) **asuman el rol directamente mediante el proveedor GitHub OIDC**. Esto permite utilizar credenciales de corta duración y evitar almacenar claves de acceso adicionales fuera de Secrets Manager.

El rol de IAM que asume la acción debe tener los siguientes permisos:
+ `GetSecretValue` sobre los secretos que quiere recuperar.
+ `ListSecrets` sobre todos los secretos.
+ (Opcional) KMS key si `Decrypt` los secretos están cifrados con un. clave administrada por el cliente

Para obtener más información, consulte [Autenticación y control de acceso para AWS Secrets Manager](auth-and-access.md).

## De uso
<a name="retrieving-secrets_github_usage"></a>

Para utilizar la acción, agregue un paso al flujo de trabajo que emplea la siguiente sintaxis.

```
- name: Step name
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: |
      secretId1
      ENV_VAR_NAME, secretId2
    name-transformation: (Optional) uppercase|lowercase|none
    parse-json-secrets: (Optional) true|false
```Parameters

`secret-ids`  
ARN, nombres y prefijos de nombres de los secretos.  
Para establecer el nombre de la variable de entorno, escríbalo antes del identificador del secreto, seguido de una coma. Por ejemplo, `ENV_VAR_1, secretId` crea una variable de entorno denominada **ENV\$1VAR\$11** a partir del `secretId` del secreto. El nombre de las variables de entorno pueden componerse de letras mayúsculas, números y guiones bajos.  
Para usar un prefijo, ingrese al menos tres caracteres seguidos de un asterisco. Por ejemplo, `dev*` hace coincidir todos los secretos con un nombre que comience por **dev**. El número máximo de secretos coincidentes que pueden recuperarse es de 100. Si establece el nombre de la variable y el prefijo coincide con varios secretos, la acción devuelve un error.

`name-transformation`  
De forma predeterminada, el paso crea el nombre de cada variable de entorno a partir del nombre del secreto, transformado para incluir solo letras mayúsculas, números y guiones bajos, de modo que no comience con un número. En el caso de las letras del nombre, puede configurar el paso para usar letras minúsculas con `lowercase` o no cambiar el tipo de letra con `none`. El valor predeterminado es `uppercase`.

`parse-json-secrets`  
(Opcional) De forma predeterminada, la acción establece el valor de la variable de entorno en toda la cadena JSON del valor del secreto. Establezca `parse-json-secrets` en `true` para crear variables de entorno para cada par clave-valor en el archivo JSON.   
Tenga en cuenta que, si el archivo JSON utiliza claves que distinguen entre mayúsculas y minúsculas, como “nombre” y “Nombre”, la acción tendrá conflictos de nombres duplicados. En este caso, establezca `parse-json-secrets` en `false` y analice el valor del secreto de JSON por separado. 

## Nombre de variable de entorno
<a name="retrieving-secrets_github_alias"></a>

Las variables de entorno creadas por la acción reciben el mismo nombre que los secretos de los que provienen. Las variables de entorno tienen requisitos de nomenclatura más estrictos que los secretos, por lo que la acción transforma los nombres de los secretos para cumplir esos requisitos. Por ejemplo, la acción transforma las letras minúsculas en mayúsculas. Si analiza el JSON del secreto, el nombre de la variable de entorno incluye tanto el nombre del secreto como el nombre de la clave JSON, por ejemplo, `MYSECRET_KEYNAME`. Puede configurar la acción para que no transforme las letras minúsculas.

Si dos variables de entorno terminan con el mismo nombre, la acción fallará. En este caso, debe especificar los nombres que quiere usar para las variables de entorno como *alias*.

Ejemplos de casos en los que los nombres pueden entrar en conflicto:
+ Tanto un secreto llamado «MySecret» como un secreto llamado «mysecret» se convertirían en variables de entorno denominadas «MYSECRET».
+ Tanto un secreto denominado “Secret\$1keyname” como un secreto analizado por JSON denominado “Secret” con una clave denominada “keyname” se convertirían en variables de entorno denominadas “SECRET\$1KEYNAME”.

Puede establecer el nombre de la variable de entorno especificando un *alias*, como se muestra en el siguiente ejemplo, que crea una variable denominada `ENV_VAR_NAME`.

```
secret-ids: |
  ENV_VAR_NAME, secretId2
```

**Alias en blanco**
+ Si establece `parse-json-secrets: true` e introduce un alias en blanco, seguido de una coma y, a continuación, el ID del secreto, la acción asignará a la variable de entorno el mismo nombre que a las claves JSON analizadas. Los nombres de las variables no incluyen el nombre del secreto. 

  Si el secreto no contiene un JSON válido, la acción crea una variable de entorno y le asigna el mismo nombre que el nombre del secreto.
+ Si establece `parse-json-secrets: false` e introduce un alias en blanco, seguido de una coma y el ID del secreto, la acción asigna un nombre a las variables de entorno como si no hubiera especificado un alias.

El siguiente ejemplo muestra un alias en blanco.

```
,secret2
```

## Ejemplos
<a name="retrieving-secrets_github_examples"></a>

**Example 1. Obtención de secretos por nombre y por ARN**  
En el ejemplo siguiente, se crean variables de entorno para los secretos identificados por nombre y por ARN.  

```
- name: Get secrets by name and by ARN
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: |
      exampleSecretName
      arn:aws:secretsmanager:us-east-2:123456789012:secret:test1-a1b2c3
      0/test/secret
      /prod/example/secret
      SECRET_ALIAS_1,test/secret
      SECRET_ALIAS_2,arn:aws:secretsmanager:us-east-2:123456789012:secret:test2-a1b2c3
      ,secret2
```
Variables de entorno creadas:  

```
EXAMPLESECRETNAME: secretValue1
TEST1: secretValue2
_0_TEST_SECRET: secretValue3
_PROD_EXAMPLE_SECRET: secretValue4
SECRET_ALIAS_1: secretValue5
SECRET_ALIAS_2: secretValue6
SECRET2: secretValue7
```

**Example 2. Obtención de todos los secretos que comienzan por un prefijo**  
En el siguiente ejemplo, se crean variables de entorno para todos los secretos con nombres que comienzan por. *beta*  

```
- name: Get Secret Names by Prefix
  uses: 2
  with:
    secret-ids: |
      beta*    # Retrieves all secrets that start with 'beta'
```
Variables de entorno creadas:  

```
BETASECRETNAME: secretValue1
BETATEST: secretValue2
BETA_NEWSECRET: secretValue3
```

**Example 3. Análisis del archivo JSON en secreto**  
En el siguiente ejemplo, se crean variables de entorno mediante el análisis del archivo JSON del secreto.  

```
- name: Get Secrets by Name and by ARN
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: |
      test/secret
      ,secret2
    parse-json-secrets: true
```
El secreto `test/secret` tiene el siguiente valor del secreto.  

```
{
  "api_user": "user",
  "api_key": "key",
  "config": {
    "active": "true"
  }
}
```
El secreto `secret2` tiene el siguiente valor del secreto.  

```
{
  "myusername": "alejandro_rosalez",
  "mypassword": "EXAMPLE_PASSWORD"
}
```
Variables de entorno creadas:  

```
TEST_SECRET_API_USER: "user"
TEST_SECRET_API_KEY: "key"
TEST_SECRET_CONFIG_ACTIVE: "true"
MYUSERNAME: "alejandro_rosalez"
MYPASSWORD: "EXAMPLE_PASSWORD"
```

**Example 4. Uso de letras minúsculas para los nombres de las variables de entorno**  
En el siguiente ejemplo, se crea una variable de entorno con un nombre en minúscula.  

```
- name: Get secrets
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: exampleSecretName
    name-transformation: lowercase
```
Variable de entorno creada:  

```
examplesecretname: secretValue
```