

# Criar uma versão de mecanismo personalizada para RDS para SQL Server
<a name="sqlserver-dev-edition.creating-cev"></a>

Uma versão de mecanismo personalizada (CEV) para o RDS para SQL Server consiste na mídia de instalação do SQL Server Developer Edition importada para o Amazon RDS. É necessário fazer upload do instalador ISO básico e dos arquivos de atualização cumulativa (.exe) em seu bucket do Amazon S3. Depois de fazer upload, você deve fornecer a localização do Amazon S3 ao RDS para que ele baixe, valide e, posteriormente, crie a CEV.

## Limitações de nomenclatura
<a name="sqlserver-dev-edition.create-cev.naming-limitations"></a>

Ao criar uma CEV, você deve seguir convenções de nomenclatura específicas:
+ O nome da CEV deve seguir o padrão `major-version.minor-version.customized-string`.
+ `customized-string` pode conter de 1 a 50 caracteres alfanuméricos, sublinhados, travessões e pontos. Por exemplo: `16.00.4215.2.my-dev-cev` para SQL Server 2022.

Para listar todas as versões do mecanismo disponíveis, use o seguinte comando:

```
aws rds describe-db-engine-versions --engine sqlserver-dev-ee --output json --query "{DBEngineVersions: DBEngineVersions[?Status=='requires-custom-engine-version'].{Engine: Engine, EngineVersion: EngineVersion, Status: Status, DBEngineVersionDescription: DBEngineVersionDescription}}" 

{
    "DBEngineVersions": [
        {
            "Engine": "sqlserver-dev-ee",
            "EngineVersion": "16.00.4215.2.v1",
            "Status": "requires-custom-engine-version",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Developer Edition",
            "DBEngineVersionDescription": "SQL Server 2022 16.00.4215.2.v1"
        }
    ]
}
```

## AWS CLI
<a name="sqlserver-dev-edition.create-cev.CLI"></a>

**Como criar a versão do mecanismo personalizado**
+ Use o comando [create-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/create-custom-db-engine-version.html).

  São necessárias as seguintes opções:
  + `--engine`
  + `--engine-version`
  + `--database-installation-files-s3-bucket-name`
  + `--database-installation-files`
  + `--region`

  Também é possível especificar as seguintes opções:
  + `--database-installation-files-s3-prefix`
  + `--description`
  + `--tags`

  ```
  aws rds create-custom-db-engine-version \
  --engine sqlserver-dev-ee \
  --engine-version 16.00.4215.2.cev-dev-ss2022-cu21 \
  --region us-west-2 \
  --database-installation-files-s3-bucket-name my-s3-installation-media-bucket \
  --database-installation-files-s3-prefix sqlserver-dev-media \
  --database-installation-files "SQLServer2022-x64-ENU-Dev.iso" "SQLServer2022-KB5065865-x64.exe"
  ```

A criação da CEV normalmente leva de 15 a 30 minutos. Para monitorar o andamento da criação da CEV, use o seguinte comando:

```
# Check CEV status
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

## Ciclo de vida de uma CEV do RDS para SQL Server
<a name="sqlserver-dev-cev-lifecycle"></a>

Ao trabalhar com o SQL Server Developer Edition no RDS para SQL Server, suas versões do mecanismo personalizado passam por vários estados do ciclo de vida.


| Estado do ciclo de vida | Descrição | Quando ocorre | Ações disponíveis | 
| --- | --- | --- | --- | 
|  pending-validation  |  Estado inicial quando a CEV é criada.  |  Esse é o estado inicial após a criação com o comando `create-custom-db-engine-version`.  |  Monitorar o status via `describe-db-engine-version`.  | 
|  validar  |  Status da validação da CEV  |  O Amazon RDS está validando a versão personalizada do mecanismo (CEV). Esse processo assíncrono pode levar algum tempo para ser concluído.  |  Monitore o status até que a validação seja concluída.  | 
|  available  |  A validação da versão do mecanismo personalizada (CEV) foi concluída com êxito.  |  A versão personalizada do mecanismo (CEV) já está disponível. O Amazon RDS validou com êxito seus arquivos de atualização cumulativa e ISO do SQL Server. Agora é possível criar instâncias de banco de dados usando essa CEV.  |  Criar instâncias de banco de dados usando essa CEV.  | 
|  falha  |  O RDS para SQL Server não pode criar a versão personalizada do mecanismo (CEV) porque a verificação de validação falhou.  |  Falha na validação de ISO e mídia cumulativa.   |  Falha na validação do ISO. Confira o motivo da falha em `describe-db-engine-version`, corrija qualquer problema de arquivo, como incompatibilidade de hash ou conteúdo corrompido, e recrie sua versão personalizada do mecanismo (CEV).  | 
|  excluindo  |  A versão personalizada do mecanismo (CEV) é excluída  |  Depois que o cliente chama `delete-custom-db-engine-version` até a conclusão do fluxo de trabalho de exclusão.  |  Monitorar o status via `describe-db-engine-version`.  | 
|  incompatible-installation-media  |  O Amazon RDS não conseguiu validar a mídia de instalação fornecida para a versão personalizada do mecanismo (CEV).  |  A validação da versão personalizada do mecanismo (CEV) falhou. Este é um estado terminal.  |  Consulte failureReason via `describe-db-engine-versions` para acessar informações sobre por que a validação falhou; exclua a CEV.  | 

### Descrever o status da CEV.
<a name="sqlserver-dev-cev-status-check"></a>

É possível ver o status das suas CEVs usando o AWS CLI:

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status}'
```

Exemplo de resultado

```
| DescribeDBEngineVersions                     |
+------------+---------------------------------+
| Status | Version                             |
+------------+---------------------------------+
| available | 16.00.4215.2.cev-dev-ss2022-cu21    |
+------------+---------------------------------+
```

Quando uma CEV mostra o status `failed`, você pode determinar o motivo usando o seguinte comando:

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status,FailureReason:FailureReason}'
```