

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Use AWS Secrets Manager segredos em GitHub empregos
<a name="retrieving-secrets_github"></a>

Para usar um segredo em um GitHub trabalho, você pode usar uma GitHub ação para recuperar segredos AWS Secrets Manager e adicioná-los como [variáveis de ambiente](https://docs.github.com/en/actions/learn-github-actions/environment-variables) mascaradas em seu GitHub fluxo de trabalho. Para obter mais informações sobre GitHub ações, consulte [Entendendo GitHub ações](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions) nos *GitHub documentos.*

Quando você adiciona um segredo ao seu GitHub ambiente, ele fica disponível para todas as outras etapas do seu GitHub trabalho. Siga as orientações em [Fortalecimento de segurança para GitHub ações para ajudar a evitar que segredos em seu ambiente sejam usados indevidamente](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions).

É possível definir a cadeia de caracteres inteira no valor do segredo como o valor da variável de ambiente ou, caso a cadeia de caracteres seja JSON, pode analisar o JSON a fim de definir variáveis de ambiente individuais para cada par chave-valor JSON. Se o valor do segredo for um binário, a ação o converterá em uma cadeia de caracteres.

Para visualizar as variáveis de ambiente criadas utilizando seus segredos, ative o log de depuração. Para obter mais informações, consulte [Habilitando o registro de depuração](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging) no *GitHub Docs*.

Para usar as variáveis de ambiente criadas a partir de seus segredos, consulte [Variáveis de ambiente](https://docs.github.com/en/actions/learn-github-actions/environment-variables) na *GitHub documentação.*

## Pré-requisitos
<a name="retrieving-secrets_github_prereq"></a>

Para usar essa ação, primeiro você precisa configurar AWS as credenciais e defini-las Região da AWS em seu GitHub ambiente usando a `configure-aws-credentials` etapa. Siga as instruções em [Configurar ações de AWS credenciais para que GitHub as ações](https://github.com/aws-actions/configure-aws-credentials) **assumam a função diretamente usando o provedor GitHub OIDC**. Isso permite que você use credenciais de curta duração e evite armazenar chaves de acesso adicionais externas ao Secrets Manager.

O perfil do IAM que a ação assume deve ter as seguintes permissões:
+ `GetSecretValue` sobre os segredos que você deseja recuperar.
+ `ListSecrets` em todos os segredos.
+ (Opcional) `Decrypt` KMS key se os segredos estiverem criptografados com um chave gerenciada pelo cliente.

Para obter mais informações, consulte [Autenticação e controle de acesso para AWS Secrets Manager](auth-and-access.md).

## Usage
<a name="retrieving-secrets_github_usage"></a>

Para usar a ação, adicione uma etapa ao fluxo de trabalho que use a sintaxe a seguir.

```
- 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
```Parâmetros

`secret-ids`  
ARNS, nomes e prefixos de nomes dos segredos.  
Para definir o nome da variável de ambiente, insira-o antes do ID do segredo e acrescente uma vírgula. Por exemplo, o `ENV_VAR_1, secretId` cria uma variável de ambiente chamada **ENV\$1VAR\$11** utilizando o `secretId` do segredo. O nome da variável de ambiente pode consistir em letras maiúsculas, números e sublinhados.  
Para usar um prefixo, digite pelo menos três caracteres seguidos de um asterisco. Por exemplo, `dev*` corresponde a todos os segredos com um nome que começa em **dev**. O número máximo de segredos correspondentes que podem ser recuperados é 100. Se você definir o nome da variável e o prefixo corresponder a diversos segredos, a ação falhará.

`name-transformation`  
Por padrão, a etapa cria cada nome de variável de ambiente utilizando o nome do segredo, o qual é transformado para incluir apenas letras maiúsculas, números e sublinhados, bem como não começar com um número. Para as letras no nome, é possível configurar a etapa para usar letras minúsculas com `lowercase` ou não alterar as maiúsculas e minúsculas das letras com `none`. O valor padrão é `uppercase`.

`parse-json-secrets`  
(Opcional) Por padrão, a ação define o valor da variável de ambiente para a cadeia de caracteres JSON inteira no valor do segredo. Defina `parse-json-secrets` como `true` para criar variáveis de ambiente para cada par chave-valor no JSON.   
Observe que, se o JSON usar chaves que diferenciam maiúsculas de minúsculas, como “nome” e “Nome”, a ação apresentará conflitos de nomes duplicados. Nesse caso, defina os `parse-json-secrets` como `false` e analise o valor do segredo JSON separadamente. 

## Nomeação de variáveis de ambiente
<a name="retrieving-secrets_github_alias"></a>

As variáveis de ambiente criadas pela ação são nomeadas da mesma forma que os segredos dos quais elas vêm. As variáveis de ambiente têm requisitos de nomenclatura mais rígidos do que os segredos, portanto, a ação transforma os nomes de segredos para atender a esses requisitos. Por exemplo, a ação transforma letras minúsculas em letras maiúsculas. Se você analisar o JSON do segredo, o nome da variável de ambiente incluirá tanto o nome do segredo quanto o nome da chave JSON, por exemplo, `MYSECRET_KEYNAME`. É possível configurar a ação para não transformar letras minúsculas.

Se duas variáveis de ambiente terminarem com o mesmo nome, a ação falhará. Nesse caso, você deverá especificar os nomes que deseja usar para as variáveis de ambiente como *aliases*.

Exemplos de quando os nomes podem entrar em conflito:
+ Um segredo chamado "MySecret" e um segredo chamado “mysecret” se tornariam variáveis de ambiente chamadas “MYSECRET”.
+ Um segredo chamado "secret\$1keyname" e um segredo analisado em JSON chamado "Secret" com uma chave chamada "keyname" se tornariam variáveis de ambiente chamadas "SECRET\$1KEYNAME".

É possível definir o nome da variável de ambiente especificando um *alias*, conforme mostrado no exemplo a seguir, que cria uma variável chamada `ENV_VAR_NAME`.

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

**Aliases em branco**
+ Se você definir `parse-json-secrets: true` e inserir um alias em branco, seguido por uma vírgula e depois pelo ID do segredo, a ação nomeará a variável de ambiente da mesma forma que as chaves JSON analisadas. Os nomes das variáveis não incluem o nome do segredo. 

  Se o segredo não contiver um JSON válido, a ação criará uma variável de ambiente e a nomeará da mesma forma que o nome do segredo.
+ Se você definir `parse-json-secrets: false` e inserir um alias em branco, seguido por uma vírgula e depois pelo ID do segredo, a ação nomeará as variáveis de ambiente como se você não especificasse um alias.

Veja a seguir um exemplo de um alias em branco.

```
,secret2
```

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

**Example 1. Obtenha segredos por nome e por ARN**  
O exemplo a seguir cria variáveis de ambiente para segredos identificados por nome e 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
```
Variáveis de ambiente criadas:  

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

**Example 2. Obtenha todos os segredos que começam com determinado prefixo**  
O exemplo a seguir cria variáveis de ambiente para todos os segredos com nomes que começam com*beta*.  

```
- name: Get Secret Names by Prefix
  uses: 2
  with:
    secret-ids: |
      beta*    # Retrieves all secrets that start with 'beta'
```
Variáveis de ambiente criadas:  

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

**Example 3. Análise do JSON no segredo**  
O exemplo a seguir cria variáveis de ambiente ao analisar o JSON no segredo.  

```
- 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
```
O segredo `test/secret` tem o seguinte valor de segredo.  

```
{
  "api_user": "user",
  "api_key": "key",
  "config": {
    "active": "true"
  }
}
```
O segredo `secret2` tem o seguinte valor de segredo.  

```
{
  "myusername": "alejandro_rosalez",
  "mypassword": "EXAMPLE_PASSWORD"
}
```
Variáveis de ambiente criadas:  

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

**Example 4 Use letras minúsculas para nomes de variáveis de ambiente**  
O exemplo a seguir cria uma variável de ambiente com um nome em minúsculas.  

```
- name: Get secrets
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: exampleSecretName
    name-transformation: lowercase
```
Variável de ambiente criada:  

```
examplesecretname: secretValue
```