

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Motori esterni per AWS Service Catalog
<a name="external-engine"></a>

In AWS Service Catalog, *i motori esterni* sono rappresentati tramite un tipo di `EXTERNAL` prodotto. Il tipo di `EXTERNAL` prodotto consente l'integrazione di motori di provisioning di terze parti, come Terraform. È possibile utilizzare motori esterni per estendere le funzionalità di Service Catalog oltre i AWS CloudFormation modelli nativi, abilitando l'uso di altri strumenti Instructure as Code (IaC).

Il tipo di `EXTERNAL` prodotto consente di gestire e distribuire le risorse utilizzando l'interfaccia familiare di Service Catalog sfruttando al contempo le funzionalità e la sintassi specifiche dello strumento IaC scelto.

Per abilitare i tipi di `EXTERNAL` prodotto in Service Catalog, devi definire un set di risorse standard nel tuo account. Queste risorse sono note come *motore*. Service Catalog delega le attività al motore in punti specifici delle operazioni di analisi e provisioning degli artefatti.

Un elemento di *provisioning rappresenta* la versione specifica di un prodotto all'interno di Service Catalog, che consente di gestire e distribuire risorse coerenti.

Quando si richiamano AWS Service Catalog le [DescribeProvisioningParameters](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningParameters.html)operazioni [DescribeProvisioningArtifact](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningArtifact.html)per un elemento di provisioning per un tipo di `EXTERNAL` prodotto, Service Catalog richiama una AWS Lambda funzione nel motore. Ciò è necessario per estrarre l'elenco dei parametri dall'elemento di provisioning fornito e restituirli a. AWS Service Catalog Questi parametri verranno utilizzati successivamente come parte del processo di provisioning.

Quando effettui il `EXTERNAL` provisioning di un elemento di provisioning tramite chiamata [ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html), Service Catalog esegue prima alcune azioni internamente, quindi invia un messaggio a una coda Amazon SQS nel motore. Successivamente, il motore assume il ruolo di *lancio fornito (il ruolo* IAM assegnato a un prodotto come vincolo di lancio), effettua il provisioning delle risorse in base all'elemento di provisioning fornito e richiama l'API per segnalare l'esito positivo o negativo. [NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html)

Le chiamate verso [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)vengono gestite in modo simile, ognuna con una coda distinta e Notify: 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**
+ [Considerazioni](#external-engine-considerations)
+ [Analisi dei parametri](#external-engine-parameters)
+ [Fornitura](#external-engine-provisioning)
+ [Aggiornamento in corso](#external-engine-updating)
+ [Terminare](#external-engine-terminating)
+ [Assegnazione di tag](#external-engine-tagging)

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

**Limite di un motore esterno per account hub**

È possibile utilizzare un solo motore di `EXTERNAL` provisioning per account hub Service Catalog. Il *hub-and-spoke*modello Service Catalog consente all'account hub di creare prodotti di base e condividere il portafoglio, mentre gli account spoke importano i portafogli e sfruttano i prodotti.

Questo limite è dovuto al fatto che `EXTERNAL` può essere indirizzato a un solo motore in un account. Se un amministratore desidera disporre di più motori esterni, deve configurare i motori esterni (insieme ai portafogli e ai prodotti) in diversi account hub.

**I motori esterni supportano solo ruoli di lancio con vincoli di avvio**

`EXTERNAL`*gli artefatti di provisioning supportano solo il provisioning con ruoli di avvio specificati utilizzando i vincoli di avvio.* Un vincolo di avvio specifica il ruolo IAM che Service Catalog assume quando un utente finale avvia, aggiorna o chiude un prodotto. [Per ulteriori informazioni sui vincoli di lancio, consulta Launch Constraints.AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html)

## Analisi dei parametri
<a name="external-engine-parameters"></a>

`EXTERNAL`gli artefatti di approvvigionamento possono essere di qualsiasi formato. Ciò significa che quando si crea un tipo di `EXTERNAL` prodotto, il motore deve estrarre l'elenco dei parametri dall'elemento di provisioning fornito e restituirli a Service Catalog. Questo viene fatto creando una funzione Lambda nell'account in grado di accettare il seguente formato di richiesta, elaborare l'elemento di provisioning e restituire il seguente formato di risposta.

**Importante**  
La funzione Lambda deve essere denominata. `ServiceCatalogExternalParameterParser`

**Sintassi della richiesta:**

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


****  

| **Campo** | **Tipo** | **Campo obbligatorio** | **Descrizione** | 
| --- | --- | --- | --- | 
| artefatto | oggetto | Sì | Dettagli sull'artefatto da analizzare. | 
| artefatto/percorso | stringa | Sì | Posizione da cui il parser scarica l'artefatto. Ad esempio, perAWS\_S3, questo è l'URI di Amazon S3. | 
| artefatto/tipo | stringa | Sì | Tipo di artefatto. Valore consentito:. AWS\_S3 | 
| LaunchRole | stringa | No | L'Amazon Resource Name (ARN) del ruolo di avvio da assumere durante il download dell'artefatto. Se non viene fornito alcun ruolo di avvio, viene utilizzato il ruolo di esecuzione di Lambda. | 

**Sintassi della risposta:**

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


****  

| **Campo** | **Tipo** | **Campo obbligatorio** | **Descrizione** | 
| --- | --- | --- | --- | 
| parametri | elenco | Sì | L'elenco dei parametri che Service Catalog chiede all'utente finale di fornire durante il provisioning di un prodotto o l'aggiornamento di un prodotto fornito. Se nell'elemento non è definito alcun parametro, viene restituito un elenco vuoto. | 
| key | stringa | Sì | La chiave del parametro. | 
| defaultValue | stringa | No | Il valore predefinito del parametro se l'utente finale non fornisce un valore. | 
| tipo | stringa | Sì | Il tipo previsto del valore del parametro per il motore. Ad esempio, una stringa, un valore booleano o una mappa. I valori consentiti sono specifici per ogni motore. Service Catalog passa ogni valore di parametro al motore come stringa. | 
| description | stringa | No | Descrizione del parametro. Si raccomanda che sia facile da usare. | 
| isNoEcho | booleano | no | Determina se il valore del parametro non viene ripreso nei log. Il valore predefinito è falso (i valori dei parametri vengono ripresi). | 

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

Per l'[ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html)operazione, Service Catalog delega l'effettivo approvvigionamento delle risorse al motore. Il motore è responsabile dell'interfacciamento con la soluzione IaC preferita (come Terraform) per fornire le risorse come definito nell'artefatto. Il motore è inoltre responsabile della notifica del risultato a Service Catalog.

Service Catalog invia tutte le richieste di Provision a una coda Amazon SQS nel tuo account denominato. `ServiceCatalogExternalProvisionOperationQueue`

**Sintassi della richiesta:**

```
{
    "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** | **Campo obbligatorio** | **Descrizione** | 
| --- | --- | --- | --- | 
| token | stringa | Sì | Il token che identifica questa operazione. Il token deve essere restituito a Service Catalog per notificare i risultati dell'esecuzione. | 
| operation | stringa | Sì | Questo campo deve essere utilizzato PROVISION\_PRODUCT per questa operazione. | 
| provisionedProductId | stringa | Sì | ID del prodotto fornito. | 
| provisionedProductName | stringa | Sì | Nome del prodotto fornito. | 
| ID del prodotto | stringa | Sì | ID del prodotto. | 
| provisioningArtifactId | stringa | Sì | ID dell'elemento di approvvigionamento. | 
| recordId | stringa | Sì | ID del record Service Catalog per questa operazione. | 
| launchRoleArn | stringa | Sì | Amazon Resource Name (ARN) per il ruolo IAM da utilizzare per il provisioning delle risorse. | 
| artefatto | oggetto | Sì | Dettagli sull'artefatto che definisce il modo in cui vengono fornite le risorse. | 
| artefatto/percorso | stringa | Sì | Posizione da cui il motore scarica l'artefatto. Ad esempio, perAWS\_S3, questo è l'URI di Amazon S3. | 
| artefatto/tipo | stringa | Sì | Tipo di artefatto. Valore consentito:. AWS\_S3 | 
| identità | stringa | No | Il campo non è attualmente utilizzato. | 
| parametri | elenco | Sì | Elenco delle coppie chiave-valore dei parametri immesse dall'utente in Service Catalog come input per questa operazione. | 
| tag | elenco | Sì | Elenco key-value-pairs degli utenti inseriti in Service Catalog come tag da applicare alle risorse fornite. | 

**Notifica dei risultati del flusso di lavoro:**

Richiama l'[NotifyProvisionProductEngineWorkflowResult ](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult .html)API con l'oggetto di risposta specificato nella pagina dei dettagli dell'API.

## Aggiornamento in corso
<a name="external-engine-updating"></a>

Per l'[UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)operazione, Service Catalog delega l'aggiornamento effettivo delle risorse al motore. Il motore è responsabile dell'interfacciamento con la soluzione IaC preferita (come Terraform) per l'aggiornamento delle risorse come definito nell'artefatto. Il motore è inoltre responsabile della notifica del risultato a Service Catalog.

Service Catalog invia tutte le richieste di aggiornamento a una coda Amazon SQS nel tuo account denominato. `ServiceCatalogExternalUpdateOperationQueue`

**Sintassi della richiesta:**

```
{
    "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** | **Campo obbligatorio** | **Descrizione** | 
| --- | --- | --- | --- | 
| token | stringa | Sì | Il token che identifica questa operazione. Il token deve essere restituito a Service Catalog per notificare i risultati dell'esecuzione. | 
| operation | stringa | Sì | Questo campo deve essere utilizzato UPDATE\_PROVISION\_PRODUCT per questa operazione. | 
| provisionedProductId | stringa | Sì | ID del prodotto fornito. | 
| provisionedProductName | stringa | Sì | Nome del prodotto fornito. | 
| ID del prodotto | stringa | Sì | ID del prodotto. | 
| provisioningArtifactId | stringa | Sì | ID dell'elemento di approvvigionamento. | 
| recordId | stringa | Sì | ID del record Service Catalog per questa operazione. | 
| launchRoleArn | stringa | Sì | Amazon Resource Name (ARN) per il ruolo IAM da utilizzare per il provisioning delle risorse. | 
| artefatto | oggetto | Sì | Dettagli sull'artefatto che definisce il modo in cui vengono fornite le risorse. | 
| artefatto/percorso | stringa | Sì | Posizione da cui il motore scarica l'artefatto. Ad esempio, perAWS\_S3, questo è l'URI di Amazon S3. | 
| artefatto/tipo | stringa | Sì | Tipo di artefatto. Valore consentito:. AWS\_S3 | 
| identità | stringa | No | Il campo non è attualmente utilizzato. | 
| parametri | elenco | Sì | Elenco delle coppie chiave-valore dei parametri immesse dall'utente in Service Catalog come input per questa operazione. | 
| tag | elenco | Sì | Elenco key-value-pairs degli utenti inseriti in Service Catalog come tag da applicare alle risorse fornite. | 

**Notifica dei risultati del flusso di lavoro:**

Richiama l'[NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html)API con l'oggetto di risposta specificato nella pagina dei dettagli dell'API.

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

Per l'[TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)operazione, Service Catalog delega l'effettiva cessazione delle risorse al motore. Il motore è responsabile dell'interfacciamento con la soluzione IaC preferita (come Terraform) per terminare le risorse come definito nell'artefatto. Il motore è inoltre responsabile della notifica del risultato a Service Catalog.

Service Catalog invia tutte le richieste Terminate a una coda Amazon SQS nel tuo account denominato. `ServiceCatalogExternalTerminateOperationQueue`

**Sintassi della richiesta:**

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


****  

| **Campo** | **Tipo** | **Campo obbligatorio** | **Descrizione** | 
| --- | --- | --- | --- | 
| token | stringa | Sì | Il token che identifica questa operazione. Il token deve essere restituito a Service Catalog per notificare i risultati dell'esecuzione. | 
| operation | stringa | Sì | Questo campo deve essere utilizzato TERMINATE\_PROVISION\_PRODUCT per questa operazione. | 
| provisionedProductId | stringa | Sì | ID del prodotto fornito. | 
| provisionedProductName | stringa | Sì | Nome del prodotto fornito. | 
| recordId | stringa | Sì | ID del record Service Catalog per questa operazione. | 
| launchRoleArn | stringa | Sì | Amazon Resource Name (ARN) per il ruolo IAM da utilizzare per il provisioning delle risorse. | 
| identità | stringa | No | Il campo non è attualmente utilizzato. | 

**Notifica dei risultati del flusso di lavoro:**

Richiama l'[NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html)API con l'oggetto di risposta specificato nella pagina dei dettagli dell'API.

## Assegnazione di tag
<a name="external-engine-tagging"></a>

Per gestire i tag tramite Resource Groups, il tuo ruolo di lancio richiede le seguenti istruzioni di autorizzazione aggiuntive:

```
{
    "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**  
Il ruolo di lancio richiede anche le autorizzazioni di etichettatura sulle risorse specifiche dell'artefatto, ad esempio. `ec2:CreateTags`