

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

# Motores externos para AWS Service Catalog
<a name="external-engine"></a>

Em AWS Service Catalog, *os motores externos* são representados por meio de um tipo de `EXTERNAL` produto. O tipo de `EXTERNAL` produto permite a integração de mecanismos de provisionamento de terceiros, como o Terraform. Você pode usar mecanismos externos para estender os recursos do Service Catalog além dos AWS CloudFormation modelos nativos, permitindo o uso de outras ferramentas de infraestrutura como código (IaC).

O tipo de `EXTERNAL` produto permite gerenciar e implantar recursos usando a interface familiar do Service Catalog e, ao mesmo tempo, aproveitar os recursos e a sintaxe específicos da ferramenta IaC escolhida.

Para habilitar tipos de `EXTERNAL` produtos no Service Catalog, você deve definir um conjunto de recursos padrão em sua conta. Esses recursos são conhecidos como *mecanismo*. O Service Catalog delega tarefas ao mecanismo em pontos específicos das operações de análise e provisionamento de artefatos.

Um *artefato de provisionamento* representa a versão específica de um produto no Service Catalog, permitindo que você gerencie e implante recursos consistentes.

Quando você chama [DescribeProvisioningArtifact](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningArtifact.html)ou AWS Service Catalog[DescribeProvisioningParameters](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningParameters.html)opera um artefato de provisionamento para um tipo de `EXTERNAL` produto, o Service Catalog invoca uma AWS Lambda função no mecanismo. Isso é necessário para extrair a lista de parâmetros do artefato de provisionamento fornecido e devolvê-los ao. AWS Service Catalog Esses parâmetros serão usados posteriormente como parte do processo de provisionamento.

Quando você `EXTERNAL` provisiona um artefato de provisionamento por meio de uma chamada [ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html), o Service Catalog primeiro executa algumas ações internamente e, em seguida, envia uma mensagem para uma fila do Amazon SQS no mecanismo. Em seguida, o mecanismo assume a função de *lançamento fornecida (a função* do IAM que você atribui a um produto como restrição de lançamento), provisiona os recursos com base no artefato de provisionamento fornecido e invoca a [NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html)API para relatar sucesso ou falha.

As chamadas para [UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)e [TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)são tratadas de forma semelhante, com cada uma tendo uma fila e Notify distintas: APIs
+ [NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html)
+ [NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html)
+ [NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html).

**Topics**
+ [Considerações](#external-engine-considerations)
+ [Análise de parâmetros](#external-engine-parameters)
+ [Provisionamento](#external-engine-provisioning)
+ [Atualização](#external-engine-updating)
+ [Encerrando](#external-engine-terminating)
+ [Tags](#external-engine-tagging)

## Considerações
<a name="external-engine-considerations"></a>

**Limite de um mecanismo externo por conta de hub**

Você só pode usar um mecanismo de `EXTERNAL` provisionamento por conta do hub do Service Catalog. O *hub-and-spoke*modelo Service Catalog permite que a conta hub crie produtos básicos e compartilhe o portfólio, enquanto as contas spoke importam portfólios e aproveitam os produtos.

Esse limite é porque só `EXTERNAL` pode ser roteado para um mecanismo em uma conta. Se um administrador quiser ter vários mecanismos externos, ele deverá configurar os mecanismos externos (junto com os portfólios e produtos) em diferentes contas do hub.

**Mecanismos externos suportam apenas funções de lançamento com restrições de lançamento**

`EXTERNAL`*artefatos de provisionamento suportam somente o provisionamento com funções de lançamento que são especificadas usando restrições de lançamento.* Uma restrição de lançamento especifica a função do IAM que o Service Catalog assume quando um usuário final lança, atualiza ou encerra um produto. Para obter mais informações sobre restrições de lançamento, consulte Restrições de [AWS Service Catalog lançamento](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html).

## Análise de parâmetros
<a name="external-engine-parameters"></a>

`EXTERNAL`os artefatos de provisionamento podem ser de qualquer formato. Isso significa que, ao criar um tipo de `EXTERNAL` produto, o mecanismo precisa extrair a lista de parâmetros do artefato de provisionamento fornecido e devolvê-los ao Service Catalog. Isso é feito criando uma função Lambda em sua conta que pode aceitar o seguinte formato de solicitação, processar o artefato de provisionamento e retornar o seguinte formato de resposta.

**Importante**  
A função Lambda deve ser nomeada. `ServiceCatalogExternalParameterParser`

**Sintaxe da solicitação:**

```
{
    "artifact": {
        "path": "{{string}}",
        "type": "{{string}}"
    },
    "launchRoleArn": "{{string}}"
}
```


****  

| **Campo** | **Tipo** | **Obrigatório** | **Descrição** | 
| --- | --- | --- | --- | 
| artefato | objeto | Sim | Detalhes do artefato a ser analisado. | 
| artefato/caminho | string | Sim | Local de onde o analisador baixa o artefato. Por exemplo, paraAWS\_S3, esse é o URI do Amazon S3. | 
| artefato/tipo | string | Sim | Tipo de artefato. Valor permitido:AWS\_S3. | 
| Função de lançamento | string | Não | O Amazon Resource Name (ARN) da função de lançamento a ser assumida ao baixar o artefato. Se nenhuma função de lançamento for fornecida, a função de execução do Lambda será usada. | 

**Sintaxe da resposta:**

```
{
    "parameters": [
        {
            "key": "{{string}}"
            "{{defaultValue}}": "{{string}}",
            "type": "{{string}}",
            "description": "{{string}}",
            "isNoEcho": boolean
        },
    ]
}
```


****  

| **Campo** | **Tipo** | **Obrigatório** | **Descrição** | 
| --- | --- | --- | --- | 
| parameters | listar | Sim | A lista de parâmetros que o Service Catalog solicita que o usuário final forneça ao provisionar um produto ou atualizar um produto provisionado. Se nenhum parâmetro for definido no artefato, uma lista vazia será retornada. | 
| key | string | Sim | A chave de parâmetro. | 
| defaultValue | string | Não | O valor padrão do parâmetro se o usuário final não fornecer um valor. | 
| type | string | Sim | O tipo esperado do valor do parâmetro para o motor. Por exemplo, uma string, booleano ou mapa. Os valores permitidos são específicos para cada motor. O Service Catalog passa cada valor de parâmetro para o mecanismo como uma string. | 
| descrição | string | Não | Descrição do parâmetro. Recomenda-se que seja fácil de usar. | 
| isNoEcho | booleano | não | Determina se o valor do parâmetro não é repetido nos registros. O valor padrão é falso (os valores dos parâmetros são repetidos). | 

## Provisionamento
<a name="external-engine-provisioning"></a>

Para a [ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html)operação, o Service Catalog delega o provisionamento real dos recursos ao mecanismo. O mecanismo é responsável pela interface com a solução de IaC de sua escolha (como o Terraform) para provisionar recursos conforme definido no artefato. O mecanismo também é responsável por notificar o Service Catalog sobre o resultado.

O Service Catalog envia todas as solicitações de provisão para uma fila do Amazon SQS em sua conta chamada. `ServiceCatalogExternalProvisionOperationQueue`

**Sintaxe da solicitação:**

```
{
    "token": "{{string}}",
    "operation": "{{string}}",
    "provisionedProductId": "{{string}}",
    "provisionedProductName": "{{string}}",
    "productId": "{{string}}",
    "provisioningArtifactId": "{{string}}",
    "recordId": "{{string}}",
    "launchRoleArn": "{{string}}",
    "artifact": {
        "path": "{{string}}",
        "type": "{{string}}"
    },
    "identity": {
        "principal": "{{string}}",
        "awsAccountId": "{{string}}",
        "organizationId": "{{string}}"
    },
    "parameters": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ],
    "tags": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ]
}
```


****  

| **Campo** | **Tipo** | **Obrigatório** | **Descrição** | 
| --- | --- | --- | --- | 
| token | string | Sim | O token que identifica essa operação. O token deve ser devolvido ao Service Catalog para notificar os resultados da execução. | 
| operação | string | Sim | Esse campo deve ser PROVISION\_PRODUCT para essa operação. | 
| provisionedProductId | string | Sim | ID do produto provisionado. | 
| provisionedProductName | string | Sim | Nome do produto provisionado. | 
| ID do produto | string | Sim | ID do produto. | 
| provisioningArtifactId | string | Sim | ID do artefato de provisionamento. | 
| recordId | string | Sim | ID do registro do Service Catalog para essa operação. | 
| launchRoleArn | string | Sim | Nome de recurso da Amazon (ARN) para a função do IAM a ser usada para provisionar recursos. | 
| artefato | objeto | Sim | Detalhes do artefato que define como os recursos são provisionados. | 
| artefato/caminho | string | Sim | Local de onde o motor baixa o artefato. Por exemplo, paraAWS\_S3, esse é o URI do Amazon S3. | 
| artefato/tipo | string | Sim | Tipo de artefato. Valor permitido:AWS\_S3. | 
| identidade | string | Não | O campo não é usado atualmente. | 
| parameters | listar | Sim | Lista de pares de valores-chave de parâmetros que o usuário inseriu no Service Catalog como entradas para essa operação. | 
| tags | listar | Sim | Lista key-value-pairs do usuário inserido no Service Catalog como tags para aplicar aos recursos provisionados. | 

**Notificação do resultado do fluxo de trabalho**

Invoque a [NotifyProvisionProductEngineWorkflowResult ](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult .html)API com o objeto de resposta especificado na página de detalhes da API.

## Atualização
<a name="external-engine-updating"></a>

Para a [UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)operação, o Service Catalog delega a atualização real dos recursos ao mecanismo. O mecanismo é responsável pela interface com a solução de IaC de sua escolha (como o Terraform) para atualizar os recursos conforme definido no artefato. O mecanismo também é responsável por notificar o Service Catalog sobre o resultado.

O Service Catalog envia todas as solicitações de atualização para uma fila do Amazon SQS em sua conta chamada. `ServiceCatalogExternalUpdateOperationQueue`

**Sintaxe da solicitação:**

```
{
    "token": "{{string}}",
    "operation": "{{string}}",
    "provisionedProductId": "{{string}}",
    "provisionedProductName": "{{string}}",
    "productId": "string",
    "provisioningArtifactId": "{{string}}",
    "recordId": "{{string}}",
    "launchRoleArn": "{{string}}",
    "artifact": {
        "path": "{{string}}",
        "type": "{{string}}"
    },
    "identity": {
        "principal": "{{string}}",
        "awsAccountId": "{{string}}",
        "organizationId": "{{string}}"
    },
    "parameters": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ],
    "tags": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ]
}
```


****  

| **Campo** | **Tipo** | **Obrigatório** | **Descrição** | 
| --- | --- | --- | --- | 
| token | string | Sim | O token que identifica essa operação. O token deve ser devolvido ao Service Catalog para notificar os resultados da execução. | 
| operação | string | Sim | Esse campo deve ser UPDATE\_PROVISION\_PRODUCT para essa operação. | 
| provisionedProductId | string | Sim | ID do produto provisionado. | 
| provisionedProductName | string | Sim | Nome do produto provisionado. | 
| ID do produto | string | Sim | ID do produto. | 
| provisioningArtifactId | string | Sim | ID do artefato de provisionamento. | 
| recordId | string | Sim | ID do registro do Service Catalog para essa operação. | 
| launchRoleArn | string | Sim | Nome de recurso da Amazon (ARN) para a função do IAM a ser usada para provisionar recursos. | 
| artefato | objeto | Sim | Detalhes do artefato que define como os recursos são provisionados. | 
| artefato/caminho | string | Sim | Local de onde o motor baixa o artefato. Por exemplo, paraAWS\_S3, esse é o URI do Amazon S3. | 
| artefato/tipo | string | Sim | Tipo de artefato. Valor permitido:AWS\_S3. | 
| identidade | string | Não | O campo não é usado atualmente. | 
| parameters | listar | Sim | Lista de pares de valores-chave de parâmetros que o usuário inseriu no Service Catalog como entradas para essa operação. | 
| tags | listar | Sim | Lista key-value-pairs do usuário inserido no Service Catalog como tags para aplicar aos recursos provisionados. | 

**Notificação do resultado do fluxo de trabalho**

Invoque a [NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html)API com o objeto de resposta especificado na página de detalhes da API.

## Encerrando
<a name="external-engine-terminating"></a>

Para a [TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)operação, o Service Catalog delega o encerramento real dos recursos ao mecanismo. O mecanismo é responsável pela interface com a solução de IaC de sua escolha (como o Terraform) para encerrar os recursos conforme definido no artefato. O mecanismo também é responsável por notificar o Service Catalog sobre o resultado.

O Service Catalog envia todas as solicitações de encerramento para uma fila do Amazon SQS em sua conta chamada. `ServiceCatalogExternalTerminateOperationQueue`

**Sintaxe da solicitação:**

```
{
    "token": "{{string}}",
    "operation": "{{string}}",
    "provisionedProductId": "{{string}}",
    "provisionedProductName": "{{string}}",
    "recordId": "{{string}}",
    "launchRoleArn": "{{string}}",
    "identity": {
        "principal": "{{string}}",
        "awsAccountId": "{{string}}",
        "organizationId": "{{string}}"
    }
}
```


****  

| **Campo** | **Tipo** | **Obrigatório** | **Descrição** | 
| --- | --- | --- | --- | 
| token | string | Sim | O token que identifica essa operação. O token deve ser devolvido ao Service Catalog para notificar os resultados da execução. | 
| operação | string | Sim | Esse campo deve ser TERMINATE\_PROVISION\_PRODUCT para essa operação. | 
| provisionedProductId | string | Sim | ID do produto provisionado. | 
| provisionedProductName | string | Sim | Nome do produto provisionado. | 
| recordId | string | Sim | ID do registro do Service Catalog para essa operação. | 
| launchRoleArn | string | Sim | Nome de recurso da Amazon (ARN) para a função do IAM a ser usada para provisionar recursos. | 
| identidade | string | Não | O campo não é usado atualmente. | 

**Notificação do resultado do fluxo de trabalho**

Invoque a [NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html)API com o objeto de resposta especificado na página de detalhes da API.

## Tags
<a name="external-engine-tagging"></a>

Para gerenciar tags por meio de Resource Groups, sua função inicial precisa das seguintes declarações de permissão adicionais:

```
{
    "Effect": "Allow",
    "Action": [
        "resource-groups:CreateGroup",
        "resource-groups:ListGroupResources"
    ],
    "Resource": "*"
},
{
    "Effect": "Allow",
    "Action": [
        "tag:GetResources",
        "tag:GetTagKeys",
        "tag:GetTagValues",
        "tag:TagResources",
        "tag:UntagResources"
    ],
    "Resource": "*"
}
```

**nota**  
A função de lançamento também precisa de permissões de marcação nos recursos específicos do artefato, como. `ec2:CreateTags`