

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.

# Configuration de l'instance de build pour une application Amplify
<a name="custom-build-instance"></a>

Amplify Hosting propose des tailles d'instance de build configurables qui vous permettent de fournir à l'instance de build de votre application les ressources de processeur, de mémoire et d'espace disque dont elle a besoin. Avant la sortie de cette fonctionnalité, Amplify fournissait une configuration d'instance de build de taille fixe de 8 GiB de mémoire et 4 v. CPUs

Amplify prend en charge trois types d'instances de build : StandardLarge, et. XLarge Si vous ne spécifiez aucun type d'instance, Amplify utilise l'instance par défautStandard. Vous pouvez configurer le type d'instance de build pour une application à l'aide de la console Amplify, du AWS CLI, ou du. SDKs 

Le coût de chaque type d'instance de construction est calculé par minute de construction. Pour plus d'informations sur la tarification, consultez la page [AWS Amplify Pricing](https://aws.amazon.com/amplify/pricing/) (Tarification). 

Le tableau suivant décrit les spécifications de calcul pour chaque type d'instance de build :


| Type d'instance de construction | v CPUs | Mémoire | Espace disque | 
| --- | --- | --- | --- | 
| Standard | 4 v CPUs | 8 GiO | 128 Go | 
| Large | 8 v CPUs | 16 GiO | 128 Go | 
| XLarge | 36 v CPUs | 72 GiB | 256 Go | 

**Topics**
+ [Comprendre les types d'instances de build](#understanding-build-instance-sizes)
+ [Configuration du type d'instance de build dans la console Amplify](#configure-build-instance-type)
+ [Configuration de la mémoire de segment d'une application pour utiliser de grands types d'instances](#configuring-heap-memory)

## Comprendre les types d'instances de build
<a name="understanding-build-instance-sizes"></a>



Le paramètre du type d'instance de build est configuré au niveau de l'application et s'étend à toutes les branches de l'application. Les principaux détails suivants s'appliquent aux types d'instances de build :
+ Le type d'instance de build que vous configurez pour une application s'applique automatiquement aux branches créées automatiquement et aux aperçus des pull requests.
+ Le quota du service de *tâches simultanées* s'applique à tous les types d'instances de build de votre Compte AWS. Par exemple, si votre limite de *tâches simultanées* est de cinq, vous pouvez exécuter jusqu'à 5 builds pour tous les types d'instances de votre Compte AWS.
+ Le coût de chaque type d'instance de construction est calculé par minute de construction. Le processus d'allocation des instances de build peut nécessiter des frais supplémentaires avant le début de votre build. Pour les instances plus importantes, en particulier XLarge, votre build peut rencontrer une latence avant le début de la compilation, en raison de ce temps de surcharge. Cependant, vous n'êtes facturé que pour le temps de construction réel, et non pour les frais généraux.

Vous pouvez configurer le type d'instance de build lorsque vous créez une nouvelle application ou vous pouvez mettre à jour le type d'instance sur une application existante. Pour obtenir des instructions sur la configuration de ce paramètre dans la console Amplify, consultez. [Configuration du type d'instance de build dans la console Amplify](#configure-build-instance-type) Vous pouvez également mettre à jour ce paramètre à l'aide du SDKs. Pour plus d'informations, consultez le [CreateApp](https://docs.aws.amazon.com/amplify/latest/APIReference/API_CreateApp.html), et [UpdateApp](https://docs.aws.amazon.com/amplify/latest/APIReference/API_UpdateApp.html) APIs dans la référence de l'*API Amplify*.

Si votre compte contient déjà des applications créées avant la sortie de la fonctionnalité de type d'instance de génération personnalisable, elles utilisent le type d'Standardinstance par défaut. Lorsque vous mettez à jour le type d'instance de build pour une application existante, toutes les versions mises en file d'attente ou en cours avant votre mise à jour utiliseront le type d'instance de build configuré précédemment. Par exemple, si vous avez une application existante dont la `main` branche est déployée sur Amplify et que vous mettez à jour son type d'instance de build de **Standard** à **Large**, toutes les nouvelles versions que vous initierez depuis la `main` branche utiliseront le type d'instance de build **Large**. Toutefois, toutes les versions en cours au moment de la mise à jour du type d'instance de construction continueront de s'exécuter sur l'instance **standard**. 

## Configuration du type d'instance de build dans la console Amplify
<a name="configure-build-instance-type"></a>

Utilisez la procédure suivante pour configurer le type d'instance de build lorsque vous créez une nouvelle application Amplify.

**Pour configurer le type d'instance de build pour une nouvelle application**

1. Connectez-vous à la console [Amplify AWS Management Console](https://console.aws.amazon.com/amplify/) et ouvrez-la.

1. Sur la page **Toutes les applications**, choisissez **Créer une nouvelle application**.

1. **Sur la page **Commencer à créer avec Amplify**, choisissez votre fournisseur de dépôt Git, puis choisissez Next.**

1. Sur la page **Ajouter une branche de référentiel**, procédez comme suit :

   1. Dans la liste des **référentiels récemment mis à jour**, sélectionnez le nom du référentiel à connecter.

   1. Dans la liste **Branche**, sélectionnez le nom de la branche du référentiel à connecter.

   1. Choisissez **Suivant**.

1. Sur la page des **paramètres de l'application**, ouvrez la section **Paramètres avancés**.

1. Pour le **type d'instance de** génération, choisissez le type d'instance souhaité dans la liste.

1. Si vous déployez une application basée sur l'exécution Node.js, configurez la taille de mémoire du segment de mémoire pour utiliser efficacement un type d'instance de grande taille. Vous pouvez le faire sur la page des **paramètres de l'application** en définissant une variable d'environnement ou en mettant à jour les paramètres de compilation. Pour de plus amples informations, veuillez consulter [Configuration de la mémoire de segment d'une application pour utiliser de grands types d'instances](#configuring-heap-memory). 
   + Définir une variable d'environnement

     1. Dans la section **Paramètres avancés**, **Variables d'environnement**, choisissez **Ajouter un nouveau**. 

     1. Pour **Key**, entrez**NODE\$1OPTIONS**.

     1. Pour le champ **Valeur**, saisissez `--max-old-space-size=memory_size_in_mb`. Remplacez *memory\$1size\$1in\$1mb* par la taille de mémoire de tas souhaitée en mégaoctets.
   + Mettre à jour les paramètres de compilation

     1. Dans la section **Paramètres** de génération, choisissez **Modifier le fichier YML**.

     1. Ajoutez la commande suivante à la `preBuild` phase. Remplacez *memory\$1size\$1in\$1mb* par la taille de mémoire de tas souhaitée en mégaoctets.

        ```
        export NODE_OPTIONS='--max-old-space-size=memory_size_in_mb'
        ```

     1. Choisissez **Enregistrer**.

1. Choisissez **Next**.

1. Sur la page **Révision**, choisissez **Enregistrer et déployer**.

Utilisez la procédure suivante pour configurer le type d'instance de build pour une application Amplify existante.

**Pour configurer le type d'instance de build pour une application existante**

1. Connectez-vous à la console [Amplify AWS Management Console](https://console.aws.amazon.com/amplify/) et ouvrez-la.

1. Choisissez l'application pour laquelle vous souhaitez configurer le type d'instance de build.

1. Dans le volet de navigation, choisissez **Hosting**, puis choisissez **Build settings**.

1. Sur la page **des paramètres** de compilation, dans la section **Paramètres avancés**, choisissez **Modifier**.

1. Sur la page **Modifier les paramètres**, pour **Créer le type d'instance**, choisissez le type d'instance souhaité dans la liste.

1. Choisissez **Enregistrer**. Cette modification prendra effet lors du prochain déploiement de l'application.

1. (Facultatif) Pour déployer immédiatement l'application mise à jour, procédez comme suit :

   1. Dans le panneau de navigation, sélectionnez **Présentation**.

   1. Sur la page de présentation de votre application, choisissez la branche à redéployer. 

   1. Sur la page **Déploiement**, choisissez un déploiement, tel que le déploiement le plus récent. Choisissez ensuite **Redéployer cette version**. Un nouveau déploiement va commencer.

   1. Une fois le déploiement terminé, les paramètres de compilation de l'application indiquent que la branche utilise le type d'instance de build mis à jour.

## Configuration de la mémoire de segment d'une application pour utiliser de grands types d'instances
<a name="configuring-heap-memory"></a>

Si vous créez des applications gourmandes en mémoire, consultez cette section pour comprendre comment configurer votre application pour utiliser des types d'instances de grande taille. Les langages de programmation et les frameworks s'appuient souvent sur l'allocation de mémoire dynamique, également appelée mémoire en tas, pendant l'exécution pour gérer les besoins en mémoire des applications. La mémoire en tas est demandée par l'environnement d'exécution et allouée par le système d'exploitation hôte. Par défaut, les environnements d'exécution imposent une limite de taille de segment maximale disponible pour l'application. Cela signifie qu'aucune mémoire supplémentaire ne sera disponible pour l'application au-delà de la taille du segment de mémoire, même si le système d'exploitation ou le conteneur hôte dispose d'une plus grande quantité de mémoire disponible.

Par exemple, l'environnement d'exécution JavaScript Node.js v8 impose une limite de taille de segment par défaut qui dépend de plusieurs facteurs, notamment de la taille de la mémoire de l'hôte. Par conséquent, Standard les instances de Large build ont une taille de tas Node.js par défaut de 2 096 Mo et l'XLargeinstance a une taille de tas par défaut de 4 144 Mo. Par conséquent, la création d'une application nécessitant 6 000 Mo de mémoire en utilisant la taille de mémoire par défaut de Node.js sur n'importe quel type d'instance de build Amplify entraînera l'échec de la génération en raison d' out-of-memoryune erreur.

Pour contourner les limites de mémoire par défaut du fichier Node.js en matière de mémoire, vous pouvez effectuer l'une des opérations suivantes :
+ Définissez la variable d'`NODE_OPTIONS`environnement de votre application Amplify sur la valeur. `--max-old-space-size=memory_size_in_mb` Pour`memory_size_in_mb`, spécifiez la taille de mémoire de segment de mémoire souhaitée en mégaoctets.

  Pour obtenir des instructions, veuillez consulter [Définition de variables d'environnement](setting-env-vars.md). 
+ Ajoutez la commande suivante à la `preBuild` phase dans la spécification de construction de votre application Amplify.

  ```
  export NODE_OPTIONS='--max-old-space-size=memory_size_in_mb'
  ```

  Vous pouvez mettre à jour les spécifications de construction dans la console Amplify ou dans le `amplify.yml` fichier de votre application dans le référentiel de votre projet. Pour obtenir des instructions, veuillez consulter [Configuration des paramètres de compilation pour une application Amplify](build-settings.md).

  L'exemple de spécification de construction Amplify suivant définit une taille de mémoire de tas Node.js à 7 000 Mo pour créer une application frontale React :

  ```
  version: 1
  frontend:
    phases:
      preBuild:
        commands:
          # Set the heap size to 7000 MB
          - export NODE_OPTIONS='--max-old-space-size=7000'
          # To check the heap size memory limit in MB
          - node -e "console.log('Total available heap size (MB):', v8.getHeapStatistics().heap_size_limit / 1024 / 1024)"
          - npm ci --cache .npm --prefer-offline
      build:
        commands:
          - npm run build
    artifacts:
      baseDirectory: build
      files:
        - '**/*'
    cache:
      paths:
        - .npm/**/*
  ```

Pour utiliser efficacement les types d'instances de grande taille, il est important de configurer une taille de mémoire de segment suffisante. La configuration d'un segment de mémoire réduit pour une application gourmande en mémoire risque d'entraîner un échec de compilation. Il est possible que les journaux de compilation de l'application n'indiquent pas directement une out-of-memory erreur, car le moteur d'exécution de l'application peut se bloquer de manière inattendue. La configuration d'une taille de segment aussi grande que la mémoire de l'hôte peut entraîner le remplacement ou l'arrêt d'autres processus par le système d'exploitation hôte, ce qui peut perturber votre processus de compilation. À titre de référence, Node.js recommande de définir une taille de mémoire maximale de 1 536 Mo sur une machine disposant d'environ 2 000 Mo de mémoire afin de laisser de la mémoire pour d'autres utilisations.

La taille de tas optimale dépend des besoins de votre application et de l'utilisation des ressources. Si vous rencontrez out-of-memory des erreurs, commencez par une taille de tas modérée, puis augmentez-la progressivement selon les besoins. À titre indicatif, nous recommandons de commencer avec 6 000 Mo pour un type d'Standardinstance, 12 000 Mo pour un type d'Largeinstance et 60 000 Mo pour un type d'XLargeinstance. 