

# Solucionar problemas referentes à autenticação de banco de dados do IAM
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting"></a>

A seguir, é possível encontrar ideias de solução de problemas para alguns problemas comuns de autenticação de banco de dados do IAM e informações sobre logs e métricas do CloudWatch para autenticação de banco de dados do IAM.

## Exportar logs de erros de autenticação de banco de dados do IAM para o CloudWatch Logs
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.ErrorLogs"></a>

Os logs de erros de autenticação de banco de dados do IAM são armazenados no host do banco de dados e podem ser exportados para sua conta do CloudWatch Logs. Use os logs e os métodos de correção nesta página para solucionar problemas de autenticação de banco de dados do IAM.

Você pode habilitar as exportações de log para o CloudWatch Logs por meio do console, da AWS CLI e da API do RDS. Para obter instruções sobre o console, consulte [Publicação de logs de banco de dados no Amazon CloudWatch Logs](USER_LogAccess.Procedural.UploadtoCloudWatch.md).

Para exportar logs de erros de autenticação de banco de dados do IAM para o CloudWatch Logs ao criar uma instância de banco de dados por meio da AWS CLI, use o seguinte comando:

```
aws rds create-db-instance --db-instance-identifier {{mydbinstance}} \
--region {{us-east-1}} \
--db-instance-class {{db.t3.large}} \
--allocated-storage {{50}} \
--engine {{postgres}} \
--engine-version {{16}} \
--port {{5432}} \
--master-username {{master}} \
--master-user-password {{password}} \
--publicly-accessible \
--enable-iam-database-authentication \
--enable-cloudwatch-logs-exports=iam-db-auth-error
```

Para exportar logs de erros de autenticação de banco de dados do IAM para o CloudWatch Logs ao modificar uma instância de banco de dados por meio da AWS CLI, use o seguinte comando:

```
aws rds modify-db-instance --db-instance-identifier {{mydbinstance}} \
--region {{us-east-1}} \
--cloudwatch-logs-export-configuration '{"EnableLogTypes":["iam-db-auth-error"]}'
```

Para verificar se a instância de banco de dados está exportando logs de autenticação de banco de dados do IAM para o CloudWatch Logs, confira se o parâmetro `EnabledCloudwatchLogsExports` está definido como `iam-db-auth-error` na saída do comando `describe-db-instances`.

```
aws rds describe-db-instances --region us-east-1 --db-instance-identifier {{mydbinstance}}
            ...
            
             "EnabledCloudwatchLogsExports": [
                "iam-db-auth-error"
            ],
            ...
```

## Métricas do CloudWatch de autenticação de banco de dados do IAM
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.CWMetrics"></a>

O Amazon RDS fornece métricas quase em tempo real sobre a autenticação de banco de dados do IAM para sua conta do Amazon CloudWatch. A seguinte tabela lista as métricas de autenticação de banco de dados do IAM disponíveis usando o CloudWatch:


| Métrica | Descrição | 
| --- | --- | 
| `IamDbAuthConnectionRequests` | Número total de solicitações de conexão feitas com a autenticação de banco de dados do IAM. | 
| `IamDbAuthConnectionSuccess` | Número total de solicitações de autenticação de banco de dados do IAM bem-sucedidas. | 
| `IamDbAuthConnectionFailure` | Número total de solicitações de autenticação de banco de dados do IAM malsucedidas. | 
| `IamDbAuthConnectionFailureInvalidToken` | Número total de solicitações de autenticação de banco de dados do IAM malsucedidas devido a token inválido. | 
| `IamDbAuthConnectionFailureInsufficientPermissions` | Número total de solicitações de autenticação de banco de dados do IAM malsucedidas devido a políticas ou permissões incorretas. | 
| `IamDbAuthConnectionFailureThrottling` | Número total de solicitações de autenticação de banco de dados do IAM malsucedidas devido ao controle de utilização da autenticação de banco de dados do IAM. | 
| `IamDbAuthConnectionFailureServerError` | Número total de solicitações de autenticação de banco de dados do IAM malsucedidas devido a um erro interno do servidor no recurso de autenticação de banco de dados do IAM. | 

## Problemas e soluções comuns de
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.IssuesSolutions"></a>

 Você pode encontrar os problemas a seguir ao usar a autenticação de banco de dados do IAM. Use as etapas de correção na tabela para resolver os problemas:


| Erro | Métrica(s) | Causa | Solução | 
| --- | --- | --- | --- | 
| `[ERROR] Failed to authenticate the connection request for user {{db_user}} because the provided token is malformed or otherwise invalid. (Status Code: 400, Error Code: InvalidToken)` | `IamDbAuthConnectionFailure`<br />`IamDbAuthConnectionFailureInvalidToken` | O token de autenticação de banco de dados do IAM na solicitação de conexão não é um token SigV4a válido ou não está formatado corretamente. | Verifique a estratégia de geração de tokens em sua aplicação. Em alguns casos, observe se você está passando o token com uma formatação válida. Truncar o token (ou formatar incorretamente a string) tornará o token inválido.  | 
| `[ERROR] Failed to authenticate the connection request for user {{db_user}} because the token age is longer than 15 minutes. (Status Code: 400, Error Code:ExpiredToken)` | `IamDbAuthConnectionFailure`<br />`IamDbAuthConnectionFailureInvalidToken` | O token de autenticação de banco de dados do IAM expirou. Os tokens são válidos somente por 15 minutos. | Verifique a lógica de armazenamento em cache e/ou a reutilização de tokens em sua aplicação. Você não deve reutilizar tokens com mais de 15 minutos. | 
| `[ERROR] Failed to authorize the connection request for user {{db_user}} because the IAM policy assumed by the caller 'arn:aws:sts::123456789012:assumed-role/ <RoleName>/ <RoleSession>' is not authorized to perform `rds-db:connect` on the DB instance. (Status Code: 403, Error Code:NotAuthorized)` | `IamDbAuthConnectionFailure`<br />`IamDbAuthConnectionFailureInsufficientPermissions` | Esse erro pode ocorrer devido aos seguintes motivos:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Troubleshooting.html) | Verifique o perfil e/ou a política do IAM que você está assumindo em sua aplicação. Você deve assumir a mesma política para gerar o token e para se conectar ao banco de dados.  | 
| `[ERROR] Failed to authorize the connection request for user {{db_user}} due to IAM DB authentication throttling. (Status Code: 429, Error Code: ThrottlingException)` | `IamDbAuthConnectionFailure`<br />`IamDbAuthConnectionFailureThrottling` | Você está fazendo muitas solicitações de conexão ao banco de dados em um curto espaço de tempo. O limite de controle de utilização da autenticação de banco de dados do IAM é duzentas conexões por segundo. | Reduza a taxa de estabelecimento de novas conexões por meio da autenticação do IAM. Considere implementar o agrupamento de conexões usando o RDS Proxy para reutilizar as conexões estabelecidas em sua aplicação. | 
| `[ERROR] Failed to authorize the connection request for user {{db_user}} due to an internal IAM DB authentication error. (Status Code: 500, Error Code: InternalError)` | `IamDbAuthConnectionFailure`<br />`IamDbAuthConnectionFailureThrottling` | Houve um erro interno ao autorizar a conexão do banco de dados com a autenticação de banco de dados do IAM. | Entre em contato com https://aws.amazon.com/premiumsupport/ para investigar o problema. | 