

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

En AWS Service Catalog, *los motores externos* se representan mediante un tipo de `EXTERNAL` producto. El tipo de `EXTERNAL` producto permite la integración de motores de aprovisionamiento de terceros, como Terraform. Puede usar motores externos para ampliar las capacidades de Service Catalog más allá de las AWS CloudFormation plantillas nativas, lo que permite el uso de otras herramientas de estructura como código (IaC).

El tipo de `EXTERNAL` producto le permite administrar e implementar recursos mediante la interfaz familiar de Service Catalog y, al mismo tiempo, aprovechar las funciones y la sintaxis específicas de la herramienta IaC que elija.

Para habilitar los tipos de `EXTERNAL` productos en Service Catalog, debe definir un conjunto de recursos estándar en su cuenta. Estos recursos se conocen como *motor*. Service Catalog delega tareas al motor en puntos específicos de las operaciones de aprovisionamiento y análisis de artefactos.

Un *artefacto de aprovisionamiento* representa la versión específica de un producto dentro de Service Catalog, lo que le permite administrar e implementar recursos coherentes.

Cuando llamas a [DescribeProvisioningParameters](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningParameters.html)las operaciones AWS Service Catalog de [DescribeProvisioningArtifact](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningArtifact.html)un artefacto de aprovisionamiento para un tipo de `EXTERNAL` producto, Service Catalog invoca una AWS Lambda función del motor. Esto es necesario para extraer la lista de parámetros del artefacto de aprovisionamiento proporcionado y devolverlos a. AWS Service Catalog Estos parámetros se utilizarán más adelante como parte del proceso de aprovisionamiento.

Cuando `EXTERNAL` aprovisiona un artefacto de aprovisionamiento mediante una llamada [ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html), Service Catalog primero realiza algunas acciones internamente y, a continuación, envía un mensaje a una cola de Amazon SQS en el motor. A continuación, el motor asume la función de *lanzamiento proporcionada (la función* de IAM que se asigna a un producto como restricción de lanzamiento), aprovisiona los recursos en función del artefacto de aprovisionamiento proporcionado e invoca la API para informar sobre el éxito o el fracaso. [NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html)

Las llamadas que se reciben [UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)y [TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)se gestionan de forma similar, y cada una tiene una cola y una notificación 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**
+ [Consideraciones](#external-engine-considerations)
+ [Análisis de parámetros](#external-engine-parameters)
+ [Aprovisionando](#external-engine-provisioning)
+ [Actualización](#external-engine-updating)
+ [Terminando](#external-engine-terminating)
+ [Etiquetado](#external-engine-tagging)

## Consideraciones
<a name="external-engine-considerations"></a>

**Límite de un motor externo por cuenta de hub**

Solo puede usar un motor de `EXTERNAL` aprovisionamiento por cuenta de Service Catalog Hub. El *hub-and-spoke*modelo Service Catalog permite a la cuenta central crear productos básicos y compartir la cartera, mientras que las cuentas radiales importan carteras y aprovechan los productos.

Este límite se debe a que solo se `EXTERNAL` puede enrutar a un motor de una cuenta. Si un administrador quiere tener varios motores externos, debe configurar los motores externos (junto con las carteras y los productos) en diferentes cuentas centrales.

**Los motores externos solo admiten funciones de lanzamiento con restricciones de lanzamiento**

`EXTERNAL`*Los artefactos de aprovisionamiento solo admiten el aprovisionamiento con funciones de lanzamiento que se especifican mediante restricciones de lanzamiento.* Una restricción de lanzamiento especifica la función de IAM que asume Service Catalog cuando un usuario final lanza, actualiza o finaliza un producto. [Para obtener más información sobre las restricciones de lanzamiento, consulte AWS Service Catalog Restricciones de lanzamiento.](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html)

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

`EXTERNAL`Los artefactos de aprovisionamiento pueden ser de cualquier formato. Esto significa que, al crear un tipo de `EXTERNAL` producto, el motor debe extraer la lista de parámetros del artefacto de aprovisionamiento proporcionado y devolverlos a Service Catalog. Para ello, se crea una función Lambda en su cuenta que pueda aceptar el siguiente formato de solicitud, procesar el artefacto de aprovisionamiento y devolver el siguiente formato de respuesta.

**importante**  
Se debe asignar un nombre a la función Lambda. `ServiceCatalogExternalParameterParser`

**Sintaxis de la solicitud:**

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


****  

| **Campo** | **Tipo** | **Obligatorio** | **Descripción** | 
| --- | --- | --- | --- | 
| artefacto | objeto | Sí | Detalles del artefacto que se va a analizar. | 
| artefacto/ruta | cadena | Sí | Ubicación desde donde el analizador descarga el artefacto. Por ejemplo, paraAWS\_S3, esta es la URI de Amazon S3. | 
| artefacto/tipo | cadena | Sí | Tipo de artefacto. Valor permitido:AWS\_S3. | 
| LaunchRole | cadena | No | El nombre del recurso de Amazon (ARN) de la función de lanzamiento que se debe asumir al descargar el artefacto. Si no se proporciona ninguna función de lanzamiento, se utiliza la función de ejecución de Lambda. | 

**Sintaxis de la respuesta:**

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


****  

| **Campo** | **Tipo** | **Obligatorio** | **Descripción** | 
| --- | --- | --- | --- | 
| parameters | list | Sí | La lista de parámetros que Service Catalog solicita al usuario final al aprovisionar un producto o actualizar un producto aprovisionado. Si no hay ningún parámetro definido en el artefacto, se devuelve una lista vacía. | 
| key | cadena | Sí | La clave de parámetro. | 
| defaultValue | cadena | No | El valor por defecto del parámetro si el usuario final no proporciona ningún valor. | 
| type | cadena | Sí | El tipo esperado del valor del parámetro para el motor. Por ejemplo, una cadena, un booleano o un mapa. Los valores permitidos son específicos de cada motor. Service Catalog pasa cada valor de parámetro al motor en forma de cadena. | 
| Descripción | cadena | No | Descripción del parámetro. Se recomienda que sea fácil de usar. | 
| isNoEcho | booleano | no | Determina si el valor del parámetro no se repite en los registros. El valor predeterminado es false (los valores de los parámetros se repiten). | 

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

Para la [ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html)operación, Service Catalog delega el aprovisionamiento real de los recursos al motor. El motor se encarga de interactuar con la solución de iAC que elija (como Terraform) para aprovisionar los recursos tal como se definen en el artefacto. El motor también es responsable de notificar el resultado a Service Catalog.

Service Catalog envía todas las solicitudes de aprovisionamiento a una cola de Amazon SQS de su cuenta denominada. `ServiceCatalogExternalProvisionOperationQueue`

**Sintaxis de la solicitud:**

```
{
    "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** | **Obligatorio** | **Descripción** | 
| --- | --- | --- | --- | 
| token | cadena | Sí | El token que identifica esta operación. El token debe devolverse a Service Catalog para notificar los resultados de la ejecución. | 
| operación | cadena | Sí | Este campo debe ser PROVISION\_PRODUCT para esta operación. | 
| provisionedProductId | cadena | Sí | ID del producto aprovisionado. | 
| provisionedProductName | cadena | Sí | Nombre del producto aprovisionado. | 
| ID del producto | cadena | Sí | ID del producto. | 
| provisioningArtifactId | cadena | Sí | ID del artefacto de aprovisionamiento. | 
| recordId | cadena | Sí | ID del registro de Service Catalog para esta operación. | 
| launchRoleArn | cadena | Sí | Nombre de recurso de Amazon (ARN) para la función de IAM que se utilizará para el aprovisionamiento de recursos. | 
| artefacto | objeto | Sí | Detalles del artefacto que define cómo se aprovisionan los recursos. | 
| artefacto/ruta | cadena | Sí | Ubicación desde donde el motor descarga el artefacto. Por ejemplo, paraAWS\_S3, esta es la URI de Amazon S3. | 
| artefacto/tipo | cadena | Sí | Tipo de artefacto. Valor permitido:AWS\_S3. | 
| identidad | cadena | No | El campo no se utiliza actualmente. | 
| parameters | list | Sí | Lista de pares clave-valor de parámetros que el usuario ingresó en Service Catalog como entradas para esta operación. | 
| etiquetas | list | Sí | Lista key-value-pairs del usuario introducido en Service Catalog como etiquetas para aplicarlas a los recursos aprovisionados. | 

**Notificación de resultados del flujo de trabajo:**

Invoca la [NotifyProvisionProductEngineWorkflowResult ](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult .html)API con el objeto de respuesta especificado en la página de detalles de la API.

## Actualización
<a name="external-engine-updating"></a>

Para la [UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)operación, Service Catalog delega la actualización real de los recursos en el motor. El motor se encarga de interactuar con la solución de iAC que elijas (como Terraform) para actualizar los recursos tal y como se definen en el artefacto. El motor también es responsable de notificar el resultado a Service Catalog.

Service Catalog envía todas las solicitudes de actualización a una cola de Amazon SQS de su cuenta denominada. `ServiceCatalogExternalUpdateOperationQueue`

**Sintaxis de la solicitud:**

```
{
    "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** | **Obligatorio** | **Descripción** | 
| --- | --- | --- | --- | 
| token | cadena | Sí | El token que identifica esta operación. El token debe devolverse a Service Catalog para notificar los resultados de la ejecución. | 
| operación | cadena | Sí | Este campo debe ser UPDATE\_PROVISION\_PRODUCT para esta operación. | 
| provisionedProductId | cadena | Sí | ID del producto aprovisionado. | 
| provisionedProductName | cadena | Sí | Nombre del producto aprovisionado. | 
| ID del producto | cadena | Sí | ID del producto. | 
| provisioningArtifactId | cadena | Sí | ID del artefacto de aprovisionamiento. | 
| recordId | cadena | Sí | ID del registro de Service Catalog para esta operación. | 
| launchRoleArn | cadena | Sí | Nombre de recurso de Amazon (ARN) para la función de IAM que se utilizará para el aprovisionamiento de recursos. | 
| artefacto | objeto | Sí | Detalles del artefacto que define cómo se aprovisionan los recursos. | 
| artefacto/ruta | cadena | Sí | Ubicación desde donde el motor descarga el artefacto. Por ejemplo, paraAWS\_S3, esta es la URI de Amazon S3. | 
| artefacto/tipo | cadena | Sí | Tipo de artefacto. Valor permitido:AWS\_S3. | 
| identidad | cadena | No | El campo no se utiliza actualmente. | 
| parameters | list | Sí | Lista de pares clave-valor de parámetros que el usuario ingresó en Service Catalog como entradas para esta operación. | 
| etiquetas | list | Sí | Lista key-value-pairs del usuario introducido en Service Catalog como etiquetas para aplicarlas a los recursos aprovisionados. | 

**Notificación de resultados del flujo de trabajo:**

Invoca la [NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html)API con el objeto de respuesta especificado en la página de detalles de la API.

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

Para la [TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)operación, Service Catalog delega la terminación real de los recursos en el motor. El motor se encarga de interactuar con la solución de IaC que elija (como Terraform) para eliminar los recursos tal y como se definen en el artefacto. El motor también es responsable de notificar el resultado a Service Catalog.

Service Catalog envía todas las solicitudes de finalización a una cola de Amazon SQS de su cuenta denominada. `ServiceCatalogExternalTerminateOperationQueue`

**Sintaxis de la solicitud:**

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


****  

| **Campo** | **Tipo** | **Obligatorio** | **Descripción** | 
| --- | --- | --- | --- | 
| token | cadena | Sí | El token que identifica esta operación. El token debe devolverse a Service Catalog para notificar los resultados de la ejecución. | 
| operación | cadena | Sí | Este campo debe ser TERMINATE\_PROVISION\_PRODUCT para esta operación. | 
| provisionedProductId | cadena | Sí | ID del producto aprovisionado. | 
| provisionedProductName | cadena | Sí | Nombre del producto aprovisionado. | 
| recordId | cadena | Sí | ID del registro de Service Catalog para esta operación. | 
| launchRoleArn | cadena | Sí | Nombre de recurso de Amazon (ARN) para la función de IAM que se utilizará para el aprovisionamiento de recursos. | 
| identidad | cadena | No | El campo no se utiliza actualmente. | 

**Notificación de resultados del flujo de trabajo:**

Invoca la [NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html)API con el objeto de respuesta especificado en la página de detalles de la API.

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

Para administrar etiquetas a través de Resource Groups, su función de lanzamiento necesitará las siguientes declaraciones de permiso adicionales:

```
{
    "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**  
La función de lanzamiento también necesita permisos de etiquetado en los recursos específicos del artefacto, por ejemplo. `ec2:CreateTags`