

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.

# Déploiement d'applications Go avec Elastic Beanstalk
<a name="create_deploy_go"></a>

Ce chapitre fournit des instructions pour configurer et déployer votre application Web Go sur AWS Elastic Beanstalk. Elastic Beanstalk facilite le déploiement, la gestion et le dimensionnement de vos applications Web Go à l'aide d'Amazon Web Services.

Vous pouvez déployer votre application en quelques minutes à l'aide de l'interface de ligne de commande Elastic Beanstalk (EB CLI) ou de la console Elastic Beanstalk. Après avoir déployé votre application Elastic Beanstalk, vous pouvez continuer à utiliser l'EB CLI pour gérer votre application et votre environnement, ou vous pouvez utiliser la console Elastic Beanstalk, ou le. AWS CLI APIs

Suivez les step-by-step instructions [QuickStart pour Go](go-quickstart.md) pour créer et déployer une application Web *Hello World* Go avec l'interface de ligne de commande EB.

**Topics**
+ [

# QuickStart: Déployer une application Go sur Elastic Beanstalk
](go-quickstart.md)
+ [

# Configuration de votre environnement de développement Go pour Elastic Beanstalk
](go-devenv.md)
+ [

# Utilisation de la plateforme Go Elastic Beanstalk
](go-environment.md)

# QuickStart: Déployer une application Go sur Elastic Beanstalk
<a name="go-quickstart"></a>

Ce QuickStart didacticiel explique le processus de création d'une application Go et de son déploiement dans un AWS Elastic Beanstalk environnement.

**Non destiné à une utilisation en production**  
Les exemples sont destinés uniquement à des fins de démonstration. N'utilisez pas d'exemples d'applications en production.

**Topics**
+ [

## Votre AWS compte
](#go-quickstart-aws-account)
+ [

## Conditions préalables
](#go-quickstart-prereq)
+ [

## Étape 1 : créer une application Go
](#go-quickstart-create-app)
+ [

## Étape 2 : Déployez votre application Go avec l'interface de ligne de commande EB
](#go-quickstart-deploy)
+ [

## Étape 3 : Exécutez votre application sur Elastic Beanstalk
](#go-quickstart-run-eb-ap)
+ [

## Étape 4 : nettoyer
](#go-tutorial-cleanup)
+ [

## AWS ressources pour votre application
](#go-quickstart-eb-resources)
+ [

## Étapes suivantes
](#go-quickstart-next-steps)
+ [

## Déployez avec la console Elastic Beanstalk
](#go-quickstart-console)

## Votre AWS compte
<a name="go-quickstart-aws-account"></a>

Si vous n'êtes pas encore AWS client, vous devez créer un AWS compte. L'inscription vous permet d'accéder à Elastic Beanstalk AWS et aux autres services dont vous avez besoin.

Si vous avez déjà un AWS compte, vous pouvez passer à[Conditions préalables](#go-quickstart-prereq).

### Créez un AWS compte
<a name="go-quickstart-aws-account-procedure"></a>

#### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

#### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Après vous être inscrit à un Compte AWS, sécurisez Utilisateur racine d'un compte AWS AWS IAM Identity Center, activez et créez un utilisateur administratif afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, voir [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

## Conditions préalables
<a name="go-quickstart-prereq"></a>

Pour suivre les procédures décrites dans ce guide, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes, les commandes sont précédées d'un symbole d'invite (\$1) et du nom du répertoire actuel, le cas échéant.

```
~/eb-project$ this is a command
this is output
```

Sous Linux et macOS, vous pouvez utiliser le shell et le gestionnaire de package de votre choix. Sur Windows, vous pouvez [installer le sous-système Windows pour Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) afin d'obtenir une version intégrée à Windows d'Ubuntu et de Bash.

### INTERFACE DE LIGNE DE COMMANDE (CLI) EB
<a name="go-quickstart-prereq.ebcli"></a>

Ce tutoriel utilise également l'interface de ligne de commande Elastic Beanstalk (CLI EB). Pour de plus amples informations sur l'installation et la configuration de la CLI EB, veuillez consulter [Installation de la CLI EB avec un script de configuration (recommandé)](eb-cli3.md#eb-cli3-install) et [Configuration de l'interface de ligne de commande EB](eb-cli3-configuration.md).

## Étape 1 : créer une application Go
<a name="go-quickstart-create-app"></a>

Créez un répertoire de projet.

```
~$ mkdir eb-go
~$ cd eb-go
```

Créez ensuite une application qui vous allez déployer à l'aide d'Elastic Beanstalk. Nous allons créer un service RESTful Web « Hello World ».

Cet exemple affiche un message d'accueil personnalisé qui varie selon le chemin d'accès utilisé pour accéder au service.

Créez un fichier texte dans le répertoire nommé `application.go` avec le contenu suivant :

**Example `~/eb-go/application.go`**  

```
package main

import (
	"fmt"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	if r.URL.Path == "/" {
		fmt.Fprintf(w, "Hello World! Append a name to the URL to say hello. For example, use %s/Mary to say hello to Mary.", r.Host)
	} else {
		fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:])
	}
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":5000", nil)
}
```

## Étape 2 : Déployez votre application Go avec l'interface de ligne de commande EB
<a name="go-quickstart-deploy"></a>

Créez ensuite votre environnement d'applications et déployez votre application configurée avec Elastic Beanstalk.

**Création d'un environnement et déploiement de votre application Go**

1. Initialisez votre référentiel de la CLI EB avec la commande **eb init** :

   ```
   ~/eb-go$ eb init -p go go-tutorial --region us-east-2
   Application go-tutorial has been created.
   ```

   Cette commande crée une application nommée `go-tutorial` et configure votre référentiel local pour créer des environnements avec la dernière version de la plateforme Go.

1. (Facultatif) Exécutez à **eb init** nouveau pour configurer une paire de clés par défaut afin de pouvoir utiliser SSH pour vous connecter à l' EC2 instance qui exécute votre application.

   ```
   ~/eb-go$ eb init
   Do you want to set up SSH for your instances?
   (y/n): y
   Select a keypair.
   1) my-keypair
   2) [ Create new KeyPair ]
   ```

   Sélectionnez une paire de clés si vous en avez déjà une, ou suivez les invites pour en créer une. Si vous ne voyez pas l'invite ou que vous avez besoin de modifier vos paramètres ultérieurement, exécutez **eb init -i**.

1. Créez un environnement et déployez-y votre application avec **eb create**. Elastic Beanstalk crée automatiquement un fichier zip pour votre application et le démarre sur le port 5000.

   ```
   ~/eb-go$ eb create go-env
   ```

   Il faut environ cinq minutes à Elastic Beanstalk pour créer votre environnement.

## Étape 3 : Exécutez votre application sur Elastic Beanstalk
<a name="go-quickstart-run-eb-ap"></a>

Lorsque le processus de création de votre environnement est terminé, ouvrez votre site Web avec**eb open**.

```
~/eb-go$ eb open
```

Félicitations \$1 Vous avez déployé une application Go avec Elastic Beanstalk \$1 Celle-ci ouvre une fenêtre de navigation en utilisant le nom de domaine créé pour votre application.

## Étape 4 : nettoyer
<a name="go-tutorial-cleanup"></a>

Vous pouvez mettre fin à votre environnement lorsque vous avez fini d'utiliser votre application. Elastic Beanstalk AWS met fin à toutes les ressources associées à votre environnement.

Pour terminer votre environnement Elastic Beanstalk avec l'EB CLI, exécutez la commande suivante.

```
~/eb-go$ eb terminate
```

## AWS ressources pour votre application
<a name="go-quickstart-eb-resources"></a>

Vous venez de créer une application à instance unique. Il s'agit d'un exemple d'application simple avec une seule EC2 instance, il ne nécessite donc pas d'équilibrage de charge ni de dimensionnement automatique. Pour les applications à instance unique, Elastic Beanstalk crée les ressources suivantes : AWS 
+ **EC2 instance** — Une machine EC2 virtuelle Amazon configurée pour exécuter des applications Web sur la plateforme de votre choix.

  Chaque plateforme exécute un ensemble distinct de logiciels, de fichiers de configuration et de scripts pour prendre en charge une version de langage, une infrastructure ou un conteneur web spécifiques, ou une combinaison de ces éléments. La plupart des plateformes utilisent Apache ou nginx comme proxy inverse qui traite le trafic web devant votre application web, lui transmet les demandes, traite les ressources statiques et génère des journaux d'accès et d'erreurs.
+ **Groupe de sécurité d'instance** : groupe EC2 de sécurité Amazon configuré pour autoriser le trafic entrant sur le port 80. Cette ressource permet au trafic HTTP provenant de l'équilibreur de charge d'atteindre l' EC2 instance qui exécute votre application Web. Par défaut, le trafic n'est pas autorisé sur les autres ports.
+ **Compartiment Amazon S3** – Emplacement de stockage pour votre code source, les journaux et autres artefacts qui sont créés lorsque vous utilisez Elastic Beanstalk.
+ ** CloudWatch Alarmes Amazon** : deux CloudWatch alarmes qui surveillent la charge sur les instances de votre environnement et sont déclenchées si la charge est trop élevée ou trop faible. Lorsqu'une alarme est déclenchée, votre groupe Auto Scaling s'adapte en fonction, à la hausse ou à la baisse.
+ **CloudFormation stack** : Elastic CloudFormation Beanstalk utilise pour lancer les ressources de votre environnement et propager les modifications de configuration. Les ressources sont définies dans un modèle, que vous pouvez afficher dans la [console CloudFormation](https://console.aws.amazon.com/cloudformation).
+  **Nom de domaine** : nom de domaine qui permet d'accéder à votre application Web dans le formulaire **subdomain*. *region*.elasticbeanstalk.com*. 

Elastic Beanstalk gère toutes ces ressources. Lorsque vous arrêtez votre environnement, Elastic Beanstalk arrête toutes les ressources qu'il contient.

## Étapes suivantes
<a name="go-quickstart-next-steps"></a>

Dès que vous disposez d'un environnement exécutant une application, vous pouvez à tout moment déployer une nouvelle version de l'application ou une application totalement différente. Le déploiement d'une nouvelle version d'application est très rapide car il ne nécessite ni le provisionnement ni le redémarrage des instances. EC2 Vous pouvez également explorer votre nouvel environnement à l'aide de la console Elastic Beanstalk. Pour connaître les étapes détaillées, consultez la section [Explorez votre environnement](GettingStarted.md#GettingStarted.Explore) dans le chapitre *Mise* en route de ce guide.

Une fois que vous avez déployé un exemple d'application ou deux, et que vous êtes prêt à développer et exécuter les applications Go en local, consultez [Configuration de votre environnement de développement Go pour Elastic Beanstalk](go-devenv.md).

## Déployez avec la console Elastic Beanstalk
<a name="go-quickstart-console"></a>

Vous pouvez également utiliser la console Elastic Beanstalk pour lancer l'exemple d'application. Pour connaître les étapes détaillées, voir [Création d'un exemple d'application](GettingStarted.md#GettingStarted.CreateApp) dans le chapitre *Mise* en route de ce guide.

# Configuration de votre environnement de développement Go pour Elastic Beanstalk
<a name="go-devenv"></a>

Cette rubrique fournit des instructions pour configurer un environnement de développement Go afin de tester votre application localement avant de la déployer AWS Elastic Beanstalk. Il fait également référence à des sites Web qui fournissent des instructions d'installation pour des outils utiles. 

## Installation de Go
<a name="go-devenv-go"></a>

Pour exécuter des applications Go localement, installez Go. Si vous n'avez pas besoin d'une version spécifique, procurez-vous la dernière version prise en charge par Elastic Beanstalk. Pour obtenir la liste des versions prises en charge, accédez à [Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go) dans le document * Plateformes AWS Elastic Beanstalk *.

Téléchargez Go à l'[adresse https://golang. org/doc/install](https://golang.org/doc/install).

## Installation du AWS SDK pour Go
<a name="go-devenv-awssdk"></a>

Si vous devez gérer AWS des ressources depuis votre application, installez le AWS SDK for Go à l'aide de la commande suivante.

```
$ go get github.com/aws/aws-sdk-go
```

Pour plus d'informations, veuillez consulter [Kit SDK AWS pour Go](https://aws.amazon.com/sdk-for-go/).

# Utilisation de la plateforme Go Elastic Beanstalk
<a name="go-environment"></a>

Cette rubrique explique comment configurer, créer et exécuter vos applications Go sur Elastic Beanstalk.

AWS Elastic Beanstalk prend en charge un certain nombre de branches de plate-forme pour différentes versions du langage de programmation Go. Voir [Go](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go) dans le document *AWS Elastic Beanstalk Plateformes* pour une liste complète.

Pour des applications Go simples, il existe deux façons de déployer votre application :
+ Fournissez un groupe source avec un fichier source à la racine appelé `application.go` qui contient le package principal pour votre application. Elastic Beanstalk crée le binaire à l'aide de la commande suivante :

  ```
  go build -o bin/application application.go
  ```

  Une fois que l'application est créée, Elastic Beanstalk la démarre sur le port 5000.
+ Fournissez un groupe source avec un fichier binaire appelé `application`. Le fichier binaire peut être situé soit à la racine du bundle de fichiers source, soit dans le répertoire `bin/` du bundle de fichiers source. Si vous placez le fichier binaire `application` dans les deux emplacements, Elastic Beanstalk utilise le fichier du répertoire `bin/`.

  Elastic Beanstalk lance cette application sur le port 5000.

Dans les deux cas, grâce à nos branches de plateforme Go prises en charge, vous pouvez également fournir les exigences du module dans un fichier appelé`go.mod`. Pour plus d'informations, consultez [Migrer vers des modules Go](https://blog.golang.org/migrating-to-go-modules) dans le blog Go.

Pour des applications Go plus complexes, il existe deux façons de déployer votre application :
+ Fournissez un bundle source qui inclut vos fichiers sources d'application, avec un [Buildfile](go-buildfile.md) et un [Procfile](go-procfile.md). Le Buildfile inclut une commande pour générer l'application et le Procfile inclut des instructions pour exécuter l'application.
+ Fournissez un groupe source qui inclut vos fichiers binaires d'application, avec un Procfile. Le Procfile inclut des instructions pour exécuter l'application.

La plateforme Go inclut un serveur proxy pour servir les ressources statiques et transférer le trafic vers votre application. Vous pouvez [étendre ou remplacer la configuration du serveur proxy par défaut](go-nginx.md) pour les scénarios avancés.

Pour plus d'informations sur les différentes manières d'étendre une plateforme Elastic Beanstalk basée sur Linux, consultez [Extension des plateformes Linux Elastic Beanstalk](platforms-linux-extend.md).

## Configuration de votre environnement Go
<a name="go-options"></a>

Les paramètres de la plateforme Go vous permettent d'affiner le comportement de vos EC2 instances Amazon. Vous pouvez modifier la configuration de l'instance Amazon de l'environnement Elastic Beanstalk à l'aide EC2 de la console Elastic Beanstalk.

Utilisez la console Elastic Beanstalk pour permettre la rotation des journaux sur Amazon S3 et configurer des variables que votre application peut lire à partir de l'environnement.

**Pour configurer votre environnement Go dans la console Elastic Beanstalk**

1. Ouvrez la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk), puis **dans la liste des régions, sélectionnez votre**. Région AWS

1. Dans le panneau de navigation, choisissez **Environments** (Environnements), puis choisissez le nom de votre environnement dans la liste.

1. Dans le panneau de navigation, choisissez **Configuration**.

1. Dans la catégorie de configuration **Mises à jour, surveillance et journalisation**, sélectionnez **Modifier**.

### Options du journal
<a name="go-options-logs"></a>

La section Options du journal a deux paramètres :
+ **Instance profile (Profil d'instance)** – Spécifie le profil d'instance qui est autorisé à accéder au compartiment Amazon S3 associé à votre application.
+ **Activer la rotation des fichiers journaux vers Amazon S3** : indique si les fichiers journaux des EC2 instances Amazon de votre application sont copiés dans le compartiment Amazon S3 associé à votre application.

### Fichiers statiques
<a name="go-options-staticfiles"></a>

Pour améliorer les performances, la section des **Fichiers statiques** vous permet de configurer le serveur proxy pour proposer des fichiers statiques (HTML ou images, par exemple) à partir d'un ensemble de répertoires dans votre application web. Pour chaque répertoire, vous définissez le chemin virtuel sur le mappage de répertoires. Lorsque le serveur proxy reçoit une demande pour un fichier dans le chemin spécifié, il fournit le fichier directement au lieu d'acheminer la demande vers votre application.

Pour en savoir plus sur la configuration des fichiers statiques à l'aide des fichiers de configuration ou de la console Elastic Beanstalk, consultez [Service de fichiers statiques](environment-cfg-staticfiles.md).

### Propriétés de l'environnement
<a name="go-options-properties"></a>

La section **Propriétés de l'environnement** vous permet de définir les paramètres de configuration de l'environnement sur EC2 les instances Amazon qui exécutent votre application. Les propriétés de l'environnement sont passées en tant que paires clé-valeur à l'application.

Dans l'environnement Go en cours d'exécution dans Elastic Beanstalk, les variables d'environnement sont accessibles à l'aide de la fonction `os.Getenv`. Par exemple, vous pouvez lire une propriété nommée `API_ENDPOINT` sur une variable avec le code suivant :

```
endpoint := os.Getenv("API_ENDPOINT")
```

Pour plus d'informations, consultez [Variables d'environnement et autres paramètres du logiciel](environments-cfg-softwaresettings.md).

## Espaces de noms de la configuration Go
<a name="go-namespaces"></a>

Vous pouvez utiliser un [fichier de configuration](ebextensions.md) pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être [spécifiques à la plate-forme](command-options-specific.md) ou s'appliquer à [toutes les plateformes](command-options-general.md) du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en *espaces de noms.*

La plate-forme Go ne définit aucun espace de noms spécifique à la plate-forme. Vous pouvez configurer le proxy pour qu'il traite les fichiers statiques à l'aide de l'espace de noms `aws:elasticbeanstalk:environment:proxy:staticfiles`. Pour plus de détails et un exemple, reportez-vous à la section [Service de fichiers statiques](environment-cfg-staticfiles.md).

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d’informations, consultez [Options de configuration](command-options.md).

## Plateforme Go d'AMI Amazon Linux (antérieure à Amazon Linux 2)
<a name="go.alami"></a>

Si votre environnement Elastic Beanstalk Go utilise une version de plateforme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans cette section.

**Remarques**  
Les informations contenues dans cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Espaces de noms de configuration Go — AMI Amazon Linux () AL1
<a name="go.alami.namespaces"></a>

Vous pouvez utiliser un [fichier de configuration](ebextensions.md) pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être [spécifiques à la plate-forme](command-options-specific.md) ou s'appliquer à [toutes les plateformes](command-options-general.md) du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en *espaces de noms.*

**Note**  
Les informations contenues dans cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.

La plateforme Go de l'AMI Amazon Linux prend en charge l'espace de noms de configuration spécifique à la plateforme en plus des [espaces de noms pris en charge par toutes les plateformes](command-options-general.md). L'espace de noms `aws:elasticbeanstalk:container:golang:staticfiles` vous permet de définir des options qui mappe des chemins d'accès sur votre application web vers des dossiers dans le groupe source de votre application incluant le contenu statique.

Par exemple, ce [fichier de configuration](ebextensions.md) indique au serveur proxy de servir les fichiers dans le dossier `staticimages` du chemin `/images` :

**Example .ebextensions/go-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:container:golang:staticfiles:
    /html: statichtml
    /images: staticimages
```

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d’informations, consultez [Options de configuration](command-options.md).

# Configuration de commandes de démarrage personnalisées avec un Procfile sur Elastic Beanstalk
<a name="go-procfile"></a>

Pour spécifier des commandes personnalisées pour démarrer une application Go, incluez un fichier nommé `Procfile` à la racine de votre groupe source.

Pour plus de détails sur l'écriture et l'utilisation d'un`Procfile`, voir[Buildfile et Procfile](platforms-linux-extend.build-proc.md).

**Example Procfile**  

```
web: bin/server
queue_process: bin/queue_processor
foo: bin/fooapp
```

Vous devez appeler l'application principale `web` et la répertorier comme première commande dans votre fichier `Procfile`. Elastic Beanstalk expose la principale application `web` sur l'URL racine de l'environnement ; par exemple, `http://my-go-env.elasticbeanstalk.com`.

Elastic Beanstalk exécute également n'importe quelle application dont le nom n'a pas le préfixe `web_`, mais ces applications ne sont pas disponibles à l'extérieur de votre instance.

Elastic Beanstalk s'attend à ce que les processus s'exécutant à partir du fichier `Procfile` le fassent en continu. Elastic Beanstalk surveille ces applications et redémarre tout processus qui s'arrête. Pour les processus de courte durée, utilisez une commande [Buildfile](go-buildfile.md).

## Utilisation d'un Procfile sur AMI Amazon Linux (antérieure à Amazon Linux 2)
<a name="go-procfile.alami"></a>

Si votre environnement Elastic Beanstalk Go utilise une version de plateforme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans cette section.

**Remarques**  
Les informations contenues dans cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

### Passage de port — AMI Amazon Linux (AL1)
<a name="go-procfile.alami.ports"></a>

**Note**  
Les informations contenues dans cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.

Elastic Beanstalk configure le proxy nginx pour transmettre les demandes à votre application sur le numéro de port indiqué dans la [propriété d'environnement](go-environment.md#go-options) `PORT` de votre application. Votre application doit toujours écouter sur ce port. Vous pouvez accéder à cette variable dans votre d'application en appelant la méthode `os.Getenv("PORT")`.

Elastic Beanstalk utilise le numéro de port spécifié dans la propriété d'environnement `PORT` pour le port de la première application dans le fichier `Procfile`. Il augmente ensuite le numéro de port de 100 pour chaque application ultérieure dans le fichier `Procfile`. Si la propriété d'environnement `PORT` n'est pas définie, Elastic Beanstalk utilise 5000 pour le port initial.

Dans l'exemple précédent, la propriété d'environnement `PORT` pour l'application `web` est 5000, l'application `queue_process` est 5100 et l'application `foo` est 5200. 

Vous pouvez spécifier le port initial en définissant l'option `PORT` avec l'espace de noms [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment), comme illustré dans l'exemple suivant. 

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  <first_port_number>
```

Pour de plus amples informations sur la définition des propriétés d'environnement pour votre application, veuillez consulter [Paramètres d'option](ebextensions-optionsettings.md).

# Construction et configuration personnalisées avec un fichier de construction sur Elastic Beanstalk
<a name="go-buildfile"></a>

Pour spécifier une commande personnalisée de configuration et de build pour votre application Go, incluez un fichier nommé `Buildfile` à la racine de votre groupe source. Le nom de fichier est sensible à la casse. Utilisez le format suivant pour le `Buildfile` : 

```
<process_name>: <command>
```

La commande dans votre `Buildfile` doit correspondre à l'expression régulière suivante : `^[A-Za-z0-9_]+:\s*.+$`.

Elastic Beanstalk ne surveille pas l'application exécutée avec un fichier `Buildfile`. Utilisez un `Buildfile` pour les commandes qui s'exécutent pendant de courtes durées et s'arrêtent après avoir terminé leurs tâches. Pour les processus d'applications longue durée qui ne doivent pas se fermer, utilisez plutôt le [Procfile](go-procfile.md).

Dans l'exemple suivant d'un `Buildfile`, `build.sh` est un script shell qui se trouve à la racine du bundle de fichiers source :

```
make: ./build.sh
```

Tous les chemins d'accès dans le `Buildfile` sont par rapport à la racine du groupe source. Si vous savez à l'avance où les fichiers résident sur l'instance, vous pouvez inclure des chemins d'accès absolus dans le `Buildfile`.

# Configuration du serveur proxy
<a name="go-nginx"></a>

Elastic Beanstalk utilise nginx comme proxy inverse pour mapper votre application à votre équilibreur de charge Elastic Load Balancing sur le port 80. Elastic Beanstalk fournit une configuration nginx par défaut que vous pouvez étendre ou remplacer totalement par votre propre configuration.

Par défaut, Elastic Beanstalk configure le serveur proxy nginx pour transmettre les demandes à votre application sur le port 5000. Vous pouvez remplacer le port par défaut en définissant la [propriété d'environnement](go-environment.md#go-options) `PORT` sur le port que votre application écoute.

**Note**  
Le port que votre application écoute n'affecte pas le port que le serveur nginx écoute pour recevoir des demandes de l'équilibreur de charge.

**Configuration du serveur proxy sur la version de votre plateforme**  
Toutes les AL2 plateformes AL2 023/ prennent en charge une fonctionnalité de configuration de proxy uniforme. Pour plus d'informations sur la configuration du serveur proxy sur les versions de votre plate-forme exécutant AL2 023/AL2, consultez. [Configuration du proxy inverse](platforms-linux-extend.proxy.md) 

## Configuration du proxy sur l'AMI Amazon Linux (antérieure à Amazon Linux 2)
<a name="go-nginx.alami"></a>

**Remarques**  
Les informations contenues dans cette rubrique s'appliquent uniquement aux branches de plate-forme basées sur l'AMI Amazon Linux (AL1). AL2Les branches de AL2 plate-forme 023/ sont incompatibles avec les versions précédentes de la plateforme Amazon Linux AMI (AL1) et *nécessitent des paramètres de configuration différents*.
 [Le 18 juillet 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk a défini le statut de toutes les branches de la plateforme sur la base de l'AMI AL1 Amazon Linux () comme étant supprimées.** Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez [Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2](using-features.migration-al.md).

Si votre environnement Elastic Beanstalk Go utilise une version de plateforme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations de cette section.

### Extension et remplacement de la configuration du proxy par défaut — Amazon Linux AMI () AL1
<a name="go-nginx.alami.extending"></a>

Elastic Beanstalk utilise nginx comme proxy inverse pour mapper votre application vers votre équilibreur de charge sur le port 80. Si vous souhaitez fournir votre propre configuration nginx, vous pouvez remplacer la configuration par défaut fournie par Elastic Beanstalk en incluant le fichier `.ebextensions/nginx/nginx.conf` dans votre bundle de fichiers source. Si ce fichier est présent, Elastic Beanstalk utilise à la place le fichier de configuration par défaut nginx.

Si vous souhaitez inclure des directives en plus de celles du bloc `nginx.conf` `http`, vous pouvez également fournir des fichiers de configuration supplémentaires dans le répertoire `.ebextensions/nginx/conf.d/` de votre bundle de fichiers source. Tous les fichiers de ce répertoire doivent avoir l'extension `.conf`. 

Pour tirer parti des fonctionnalités fournies par Elastic Beanstalk, comme [Rapports et surveillance de l'état de santé améliorés dans Elastic Beanstalk](health-enhanced.md), mappages d'application automatiques et fichiers statiques, vous devez inclure la ligne suivante dans le bloc `server` de votre fichier de configuration nginx :

```
include conf.d/elasticbeanstalk/*.conf;
```