

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á.

# Adicionando recursos de terceiros ao AWS Config
<a name="customresources-adding"></a>

Siga estas etapas para adicionar um recurso de terceiros ao AWS Config.

**Topics**
+ [Etapa 1: Configurar o ambiente de desenvolvimento](#customresources-setupdevenvironment)
+ [Etapa 2: Modelar seu recurso](#customresources-modelresource)
+ [Etapa 3: gerar artefatos](#generateartifactsforcfnsubmit)
+ [Etapa 4: registrar o recurso](#customresources-registerresource)
+ [Etapa 5: publicar a configuração do recurso](#customresources-publishresourceconfiguration)

## Etapa 1: Configurar o ambiente de desenvolvimento
<a name="customresources-setupdevenvironment"></a>

Instale e configure a CloudFormation AWS CLI. AWS CLI Isso permite que você modele e registre seus recursos personalizados. Para obter mais informações, consulte [Recursos personalizados](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) e [O que é a interface de linha de CloudFormation comando?](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html) .

## Etapa 2: Modelar seu recurso
<a name="customresources-modelresource"></a>

Crie um esquema de provedor de recursos que esteja em conformidade com a configuração do tipo de recurso e faça sua validação.

1. Use o comando `init` para criar seu projeto de provedor de recursos e gerar os arquivos necessários.

   ```
   $ cfn init
   Initializing new project
   ```

1. O comando `init` inicia um assistente que orienta você na configuração do projeto, incluindo a especificação do nome do recurso. Para esta demonstração, especifique `MyCustomNamespace::Testing::WordPress`.

   ```
   Enter resource type identifier (Organization::Service::Resource): MyCustomNamespace::Testing::WordPress
   ```

1. Insira um nome de pacote para o recurso.

   ```
   Enter a package name (empty for default 'com.custom.testing.wordpress'): com.custom.testing.wordpress 
   Initialized a new project in /workplace/user/custom-testing-wordpress
   ```
**nota**  
Para garantir que todas as dependências do projeto sejam resolvidas corretamente, você pode importar o projeto gerado para o seu IDE com o suporte do Maven.  
Por exemplo, se estiver usando o IntelliJ IDEA, você precisará fazer o seguinte:  
No menu **Arquivo**, escolha **Novo**, em seguida, escolha **Projeto das origens existentes**.
Navegue até o diretório de projeto
Na caixa de diálogo **Importar projeto**, escolha **Importar projeto do modelo externo** e, em seguida, escolha **Maven**.
Escolha **Avançar** e aceite todos os padrões para concluir a importação do projeto.

1. Abra o arquivo `mycustomnamespace-testing-wordpress.json` que contém o esquema para o recurso. Copie e cole o esquema a seguir em `mycustomnamespace-testing-wordpress.json`.

   ```
   {
     "typeName": "MyCustomNamespace::Testing::WordPress",
     "description": "An example resource that creates a website based on WordPress 5.2.2.",
     "properties": {
       "Name": {
         "description": "A name associated with the website.",
         "type": "string",
         "pattern": "^[a-zA-Z0-9]{1,219}\\Z",
         "minLength": 1, "maxLength": 219
       },
       "SubnetId": {
         "description": "A subnet in which to host the website.",
         "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z",
         "type": "string"
       },
       "InstanceId": {
         "description": "The ID of the instance that backs the WordPress site.",
         "type": "string"
       },
       "PublicIp": {
         "description": "The public IP for the WordPress site.",
         "type": "string"
       }
     },
     "required": [ "Name", "SubnetId" ],
     "primaryIdentifier": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "readOnlyProperties": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "additionalProperties": false
   }
   ```

1. Valide o esquema.

   ```
   $ cfn validate
   ```

1. Atualize os arquivos gerados automaticamente no pacote do provedor de recursos para visualizar as atualizações do esquema do provedor de recursos. Após o início do projeto do provedor de recursos, AWS CLI ele gera arquivos e códigos de suporte para o provedor de recursos. Gere novamente o código para ver o esquema atualizado.

   ```
   $ cfn generate
   ```
**nota**  
Ao usar o Maven, como parte do processo de criação, o comando `generate` é executado automaticamente antes que o código seja compilado. Portanto, suas alterações nunca sairão de sincronia com o código gerado.  
Esteja ciente de que a CloudFormation CLI deve estar em um local que o Maven/the sistema possa encontrar. Para obter mais informações, consulte [Setting up your environment for developing extensions](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html#resource-type-setup).

Para obter mais informações, consulte [Modeling Resource Providers for Use in CloudFormation](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-model.html).

## Etapa 3: gerar artefatos
<a name="generateartifactsforcfnsubmit"></a>

Execute o comando a seguir para gerar artefatos para o `cfn submit`.

```
$ mvn package
```

## Etapa 4: registrar o recurso
<a name="customresources-registerresource"></a>

AWS Config não exige que os manipuladores do provedor de recursos realizem o rastreamento da configuração do seu recurso. Execute o comando a seguir para registrar o recurso.

```
$ cfn submit
```

Para obter mais informações, consulte [Registrando provedores de recursos para uso em CloudFormation modelos](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-register.html).

## Etapa 5: publicar a configuração do recurso
<a name="customresources-publishresourceconfiguration"></a>

Determine a configuração para MyCustomNamespace: :Testing::WordPress.

```
{
  "Name": "MyWordPressSite",
  "SubnetId": "subnet-abcd0123",
  "InstanceId": "i-01234567",
  "PublicIp": "my-wordpress-site.com"
}
```

Determine a ID da versão do esquema a partir de CloudFormation `DescribeType`. 

Em AWS Config, você pode ver se essa configuração de recurso é aceita. Para avaliar a conformidade, você pode AWS Config criar regras usando esse recurso.

(Opcional) para automatizar a gravação da configuração, implemente coletores de configuração periódicos ou baseados em alterações.