

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Moteurs externes pour AWS Service Catalog
<a name="external-engine"></a>

Dans AWS Service Catalog, *les moteurs externes* sont représentés par un type de `EXTERNAL` produit. Le type de `EXTERNAL` produit permet l'intégration de moteurs de provisionnement tiers, tels que Terraform. Vous pouvez utiliser des moteurs externes pour étendre les fonctionnalités de Service Catalog au-delà des AWS CloudFormation modèles natifs, ce qui permet d'utiliser d'autres outils d'instructure en tant que code (IaC).

Le type de `EXTERNAL` produit vous permet de gérer et de déployer des ressources à l'aide de l'interface familière de Service Catalog tout en tirant parti des fonctionnalités et de la syntaxe spécifiques de l'outil IaC que vous avez choisi.

Pour activer les types de `EXTERNAL` produits dans Service Catalog, vous devez définir un ensemble de ressources standard dans votre compte. Ces ressources sont connues sous le nom de *moteur*. Service Catalog délègue des tâches au moteur à des moments spécifiques des opérations d'analyse et de provisionnement des artefacts.

Un *artefact de provisionnement* représente la version spécifique d'un produit dans Service Catalog, ce qui vous permet de gérer et de déployer des ressources cohérentes.

Lorsque vous appelez [DescribeProvisioningArtifact](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningArtifact.html)ou AWS Service Catalog effectuez [DescribeProvisioningParameters](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningParameters.html)des opérations pour un artefact d'approvisionnement pour un type de `EXTERNAL` produit, Service Catalog invoque une AWS Lambda fonction dans le moteur. Cela est nécessaire pour extraire la liste des paramètres de l'artefact de provisionnement fourni et les renvoyer à. AWS Service Catalog Ces paramètres seront utilisés ultérieurement dans le cadre du processus de provisionnement.

Lorsque vous approvisionnez un artefact de `EXTERNAL` provisionnement en appelant [ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html), Service Catalog exécute d'abord certaines actions en interne, puis envoie un message à une file d'attente Amazon SQS dans le moteur. Ensuite, le moteur assume le rôle de *lancement fourni (le rôle* IAM que vous attribuez à un produit en tant que contrainte de lancement), provisionne les ressources en fonction de l'artefact de provisionnement fourni et invoque l'[NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html)API pour signaler le succès ou l'échec.

Les appels vers [UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)et [TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)sont traités de la même manière, chacun ayant une file d'attente et une notification distinctes 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**
+ [Considérations](#external-engine-considerations)
+ [Analyse des paramètres](#external-engine-parameters)
+ [Allouer](#external-engine-provisioning)
+ [Mise à jour](#external-engine-updating)
+ [Résiliation](#external-engine-terminating)
+ [Identification](#external-engine-tagging)

## Considérations
<a name="external-engine-considerations"></a>

**Limite d'un moteur externe par compte hub**

Vous ne pouvez utiliser qu'un seul moteur de `EXTERNAL` provisionnement par compte du hub Service Catalog. Le *hub-and-spoke*modèle Service Catalog permet au compte hub de créer des produits de base et de partager le portefeuille, tandis que les comptes satellites importent des portefeuilles et tirent parti des produits.

Cette limite est due au fait que le routage ne `EXTERNAL` peut être effectué que vers un seul moteur par compte. Si un administrateur souhaite disposer de plusieurs moteurs externes, il doit configurer les moteurs externes (ainsi que les portefeuilles et les produits) dans différents comptes du hub.

**Les moteurs externes ne prennent en charge que les rôles de lancement soumis à des contraintes de lancement**

`EXTERNAL`les artefacts de provisionnement prennent uniquement en charge le provisionnement avec des rôles de lancement spécifiés à l'aide de contraintes de *lancement*. Une contrainte de lancement spécifie le rôle IAM assumé par Service Catalog lorsqu'un utilisateur final lance, met à jour ou met fin à un produit. Pour plus d'informations sur les contraintes de lancement, consultez la section [Contraintes de AWS Service Catalog lancement](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html).

## Analyse des paramètres
<a name="external-engine-parameters"></a>

`EXTERNAL`les artefacts de provisionnement peuvent être de n'importe quel format. Cela signifie que lors de la création d'un type de `EXTERNAL` produit, le moteur doit extraire la liste des paramètres de l'artefact de provisionnement fourni et les renvoyer à Service Catalog. Cela se fait en créant une fonction Lambda dans votre compte capable d'accepter le format de demande suivant, de traiter l'artefact de provisionnement et de renvoyer le format de réponse suivant.

**Important**  
La fonction Lambda doit être nommée. `ServiceCatalogExternalParameterParser`

**Syntaxe de la demande :**

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


****  

| **Champ** | **Type** | **Obligatoire** | **Description** | 
| --- | --- | --- | --- | 
| artefact | objet | Oui | Détails de l'artefact à analyser. | 
| artéfact/chemin | chaîne | Oui | Emplacement à partir duquel l'analyseur télécharge l'artefact. Par exemple, pourAWS\_S3, il s'agit de l'URI Amazon S3. | 
| artéfact/type | chaîne | Oui | Type d'artefact. Valeur autorisée :AWS\_S3. | 
| Rôle de lancement | chaîne | Non | Nom de ressource Amazon (ARN) du rôle de lancement à assumer lors du téléchargement de l'artefact. Si aucun rôle de lancement n'est fourni, le rôle d'exécution du Lambda est utilisé. | 

**Syntaxe de la réponse :**

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


****  

| **Champ** | **Type** | **Obligatoire** | **Description** | 
| --- | --- | --- | --- | 
| parameters | liste | Oui | Liste des paramètres que Service Catalog demande à l'utilisateur final de fournir lors du provisionnement d'un produit ou de la mise à jour d'un produit provisionné. Si aucun paramètre n'est défini dans l'artefact, une liste vide est renvoyée. | 
| key | chaîne | Oui | Clé de paramètre. | 
| defaultValue | chaîne | Non | La valeur par défaut du paramètre si l'utilisateur final ne fournit aucune valeur. | 
| type | chaîne | Oui | Type attendu de la valeur de paramètre pour le moteur. Par exemple, une chaîne, un booléen ou une carte. Les valeurs autorisées sont spécifiques à chaque moteur. Service Catalog transmet chaque valeur de paramètre au moteur sous forme de chaîne. | 
| description | chaîne | Non | Description du paramètre. Il est recommandé que cela soit convivial. | 
| isNoEcho | boolean | non | Détermine si la valeur du paramètre n'est pas répercutée dans les journaux. La valeur par défaut est false (les valeurs des paramètres sont répercutées). | 

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

Pour le [ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html)fonctionnement, Service Catalog délègue le provisionnement réel des ressources au moteur. Le moteur est chargé de l'interfaçage avec la solution IaC de votre choix (telle que Terraform) pour fournir les ressources telles que définies dans l'artefact. Le moteur est également chargé de notifier le résultat à Service Catalog.

Service Catalog envoie toutes les demandes de fourniture à une file d'attente Amazon SQS dans votre compte nommé. `ServiceCatalogExternalProvisionOperationQueue`

**Syntaxe de la demande :**

```
{
    "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}}"
        }
    ]
}
```


****  

| **Champ** | **Type** | **Obligatoire** | **Description** | 
| --- | --- | --- | --- | 
| jeton | chaîne | Oui | Le jeton qui identifie cette opération. Le jeton doit être renvoyé à Service Catalog pour notifier les résultats de l'exécution. | 
| fonctionnement | chaîne | Oui | Ce champ doit être PROVISION\_PRODUCT réservé à cette opération. | 
| provisionedProductId | chaîne | Oui | ID du produit approvisionné. | 
| provisionedProductName | chaîne | Oui | Nom du produit approvisionné. | 
| ID du produit | chaîne | Oui | Identifiant du produit. | 
| provisioningArtifactId | chaîne | Oui | ID de l'artefact d'approvisionnement. | 
| recordId | chaîne | Oui | ID de l'enregistrement Service Catalog pour cette opération. | 
| launchRoleArn | chaîne | Oui | Amazon Resource Name (ARN) pour le rôle IAM à utiliser pour le provisionnement des ressources. | 
| artefact | objet | Oui | Détails de l'artefact qui définit la manière dont les ressources sont provisionnées. | 
| artéfact/chemin | chaîne | Oui | Emplacement à partir duquel le moteur télécharge l'artefact. Par exemple, pourAWS\_S3, il s'agit de l'URI Amazon S3. | 
| artéfact/type | chaîne | Oui | Type d'artefact. Valeur autorisée :AWS\_S3. | 
| une | chaîne | Non | Le champ n'est actuellement pas utilisé. | 
| parameters | liste | Oui | Liste des paires clé-valeur de paramètres que l'utilisateur a saisies dans Service Catalog en tant qu'entrées pour cette opération. | 
| tags | liste | Oui | Liste key-value-pairs des utilisateurs entrés dans Service Catalog sous forme de balises à appliquer aux ressources mises en service. | 

**Notification des résultats du flux de travail :**

Appelez l'[NotifyProvisionProductEngineWorkflowResult ](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult .html)API avec l'objet de réponse spécifié sur la page de détails de l'API.

## Mise à jour
<a name="external-engine-updating"></a>

Pour l'[UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)opération, Service Catalog délègue la mise à jour effective des ressources au moteur. Le moteur est chargé de l'interfaçage avec la solution IaC de votre choix (telle que Terraform) pour mettre à jour les ressources telles que définies dans l'artefact. Le moteur est également chargé de notifier le résultat à Service Catalog.

Service Catalog envoie toutes les demandes de mise à jour à une file d'attente Amazon SQS dans votre compte nommé. `ServiceCatalogExternalUpdateOperationQueue`

**Syntaxe de la demande :**

```
{
    "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}}"
        }
    ]
}
```


****  

| **Champ** | **Type** | **Obligatoire** | **Description** | 
| --- | --- | --- | --- | 
| jeton | chaîne | Oui | Le jeton qui identifie cette opération. Le jeton doit être renvoyé à Service Catalog pour notifier les résultats de l'exécution. | 
| fonctionnement | chaîne | Oui | Ce champ doit être UPDATE\_PROVISION\_PRODUCT réservé à cette opération. | 
| provisionedProductId | chaîne | Oui | ID du produit approvisionné. | 
| provisionedProductName | chaîne | Oui | Nom du produit approvisionné. | 
| ID du produit | chaîne | Oui | Identifiant du produit. | 
| provisioningArtifactId | chaîne | Oui | ID de l'artefact d'approvisionnement. | 
| recordId | chaîne | Oui | ID de l'enregistrement Service Catalog pour cette opération. | 
| launchRoleArn | chaîne | Oui | Amazon Resource Name (ARN) pour le rôle IAM à utiliser pour le provisionnement des ressources. | 
| artefact | objet | Oui | Détails de l'artefact qui définit la manière dont les ressources sont provisionnées. | 
| artéfact/chemin | chaîne | Oui | Emplacement à partir duquel le moteur télécharge l'artefact. Par exemple, pourAWS\_S3, il s'agit de l'URI Amazon S3. | 
| artéfact/type | chaîne | Oui | Type d'artefact. Valeur autorisée :AWS\_S3. | 
| une | chaîne | Non | Le champ n'est actuellement pas utilisé. | 
| parameters | liste | Oui | Liste des paires clé-valeur de paramètres que l'utilisateur a saisies dans Service Catalog en tant qu'entrées pour cette opération. | 
| tags | liste | Oui | Liste key-value-pairs des utilisateurs entrés dans Service Catalog sous forme de balises à appliquer aux ressources mises en service. | 

**Notification des résultats du flux de travail :**

Appelez l'[NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html)API avec l'objet de réponse spécifié sur la page de détails de l'API.

## Résiliation
<a name="external-engine-terminating"></a>

Pour l'[TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html)opération, Service Catalog délègue la mise hors service effective des ressources au moteur. Le moteur est chargé de l'interfaçage avec la solution IaC de votre choix (telle que Terraform) pour mettre fin aux ressources telles que définies dans l'artefact. Le moteur est également chargé de notifier le résultat à Service Catalog.

Service Catalog envoie toutes les demandes de résiliation à une file d'attente Amazon SQS nommée dans votre compte. `ServiceCatalogExternalTerminateOperationQueue`

**Syntaxe de la demande :**

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


****  

| **Champ** | **Type** | **Obligatoire** | **Description** | 
| --- | --- | --- | --- | 
| jeton | chaîne | Oui | Le jeton qui identifie cette opération. Le jeton doit être renvoyé à Service Catalog pour notifier les résultats de l'exécution. | 
| fonctionnement | chaîne | Oui | Ce champ doit être TERMINATE\_PROVISION\_PRODUCT réservé à cette opération. | 
| provisionedProductId | chaîne | Oui | ID du produit approvisionné. | 
| provisionedProductName | chaîne | Oui | Nom du produit approvisionné. | 
| recordId | chaîne | Oui | ID de l'enregistrement Service Catalog pour cette opération. | 
| launchRoleArn | chaîne | Oui | Amazon Resource Name (ARN) pour le rôle IAM à utiliser pour le provisionnement des ressources. | 
| une | chaîne | Non | Le champ n'est actuellement pas utilisé. | 

**Notification des résultats du flux de travail :**

Appelez l'[NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html)API avec l'objet de réponse spécifié sur la page de détails de l'API.

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

Pour gérer les tags via Resource Groups, votre rôle de lancement a besoin des déclarations d'autorisation supplémentaires suivantes :

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

**Note**  
Le rôle de lancement nécessite également des autorisations de balisage sur les ressources spécifiques de l'artefact, telles que. `ec2:CreateTags`