

 AWS Cloud9 n'est plus disponible pour les nouveaux clients. Les clients existants d’ AWS Cloud9 peuvent continuer à l’utiliser normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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.

# Tutoriel Go pour AWS Cloud9
<a name="sample-go"></a>

Ce didacticiel vous permet d'exécuter du code Go dans un environnement de AWS Cloud9 développement.

Le fait de suivre ce didacticiel et de créer cet exemple peut entraîner des frais sur votre AWS compte. Il peut s'agir de frais pour des services tels qu'Amazon EC2 et Amazon S3. Pour en savoir plus, consultez les sections [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/) et [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/).

**Topics**
+ [Conditions préalables](#sample-go-prereqs)
+ [Étape 1 : Installer les outils requis](#sample-go-install)
+ [Étape 2 : Ajouter du code](#sample-go-code)
+ [Étape 3 : Exécuter le code](#sample-go-run)
+ [Étape 4 : Installation et configuration du AWS SDK pour Go](#sample-go-sdk)
+ [Étape 5 : ajouter le code du AWS SDK](#sample-go-sdk-code)
+ [Étape 6 : Exécuter le code du AWS SDK](#sample-go-sdk-run)
+ [Étape 7 : nettoyer](#sample-go-clean-up)

## Conditions préalables
<a name="sample-go-prereqs"></a>

Avant d'utiliser cet exemple, vérifiez que votre configuration respecte les conditions requises suivantes :
+ **Vous devez disposer d'un environnement de développement AWS Cloud9 EC2 existant.** Cet exemple suppose que vous disposez déjà d'un environnement EC2 connecté à une instance Amazon EC2 s'exécutant sur Amazon Linux ou Ubuntu Server. Si vous utilisez un autre type d'environnement ou de système d'exploitation, vous devrez peut-être adapter les instructions de cet exemple pour configurer les outils associés. Pour de plus amples informations, veuillez consulter [Création d'un environnement dans AWS Cloud9](create-environment.md).
+ **L' AWS Cloud9 IDE correspondant à l'environnement existant est déjà ouvert.** Lorsque vous ouvrez un environnement, AWS Cloud9 ouvre l'IDE correspondant à cet environnement dans votre navigateur Web. Pour de plus amples informations, veuillez consulter [Ouvrir un environnement dans AWS Cloud9](open-environment.md).

## Étape 1 : Installer les outils requis
<a name="sample-go-install"></a>

Dans cette étape, vous installez et configurez Go, ce qui est nécessaire pour exécuter cet exemple de code.

1. Dans une session de terminal dans l' AWS Cloud9 IDE, vérifiez si Go est déjà installé en exécutant la **`go version`**commande. (Pour démarrer une nouvelle séance de terminal, dans la barre de menus, choisissez **Window**, **New Terminal**.) En cas de réussite, la sortie doit contenir le numéro de version de Go. Dans le cas contraire, un message d'erreur est généré. Si Go est installé, passez directement à [Étape 2 : Ajouter du code](#sample-go-code).

1. Exécutez la commande ** `yum update` ** (pour Amazon Linux) ou la commande ** `apt update` ** (pour Ubuntu Server) afin d'être sûr que les mises à jour de sécurité et les correctifs les plus récents sont installés.

   Pour Amazon Linux :

   ```
   sudo yum -y update
   ```

   Pour Ubuntu Server :

   ```
   sudo apt update
   ```

1. Pour installer Go, exécutez les commandes suivantes, l'une après l'autre.

   ```
   wget https://storage.googleapis.com/golang/go1.9.3.linux-amd64.tar.gz # Download the Go installer.
   sudo tar -C /usr/local -xzf ./go1.9.3.linux-amd64.tar.gz              # Install Go.
   rm ./go1.9.3.linux-amd64.tar.gz                                       # Delete the installer.
   ```

   Les commandes précédentes supposent l'utilisation de la dernière version stable de Go au moment de la rédaction de cette rubrique. Pour plus d'informations, consultez [Downloads](https://golang.org/dl/) sur le site web du langage de programmation Go.

1. Ajoutez le chemin d'accès au fichier binaire Go dans votre variable d'environnement `PATH`, comme suit.

   1. Ouvrez votre fichier de profil shell (par exemple, `~/.bashrc`) pour le modifier.

   1. À la fin de cette ligne de code, tapez les éléments suivants. Le code ressemble désormais à :

      ```
      PATH=$PATH:/usr/local/go/bin
      ```

   1. Enregistrez le fichier.

1. Définissez le fichier `~/.bashrc` en tant que source, afin que le terminal puisse désormais trouver le fichier binaire Go que vous venez de référencer.

   ```
   . ~/.bashrc
   ```

1. Vérifiez que Go est maintenant correctement installé et configuré en exécutant la commande ** `go version` **. En cas de réussite, la sortie contient le numéro de version de Go.

## Étape 2 : Ajouter du code
<a name="sample-go-code"></a>

Dans l' AWS Cloud9 IDE, créez un fichier avec ce contenu et enregistrez le fichier sous son nom`hello.go`. (Pour créer un fichier, dans la barre de menus, choisissez **Fichier**, **Nouveau fichier**. Pour l'enregistrer, choisissez **Fichier**, **Enregistrer**.)

```
package main

import (
  "fmt"
  "os"
  "strconv"
)

func main() {
  fmt.Printf("Hello, World!\n")

  fmt.Printf("The sum of 2 and 3 is 5.\n")

  first, _ := strconv.Atoi(os.Args[1])
  second, _ := strconv.Atoi(os.Args[2])
  sum := first + second

  fmt.Printf("The sum of %s and %s is %s.",
    os.Args[1], os.Args[2], strconv.Itoa(sum))
}
```

## Étape 3 : Exécuter le code
<a name="sample-go-run"></a>

1. Dans l' AWS Cloud9 IDE, dans la barre de menus, choisissez **Run, Run** **Configurations**, **New Run Configuration**.

1. Dans l'onglet **[New] - Idle ([Nouveau] - Inactif)**, choisissez **Runner: Auto (Exécuteur : Auto)**, puis **Go**.
**Note**  
Si **Go** n'est pas disponible, vous pouvez créer un exécuteur personnalisé pour Go.  
Dans l'onglet **[New] - Idle ([Nouveau] - Inactif)**, choisissez **Runner: Auto (Exécuteur : Auto)**, puis **New Runner (Nouvel exécuteur)**.
Dans l'onglet **My Runner.run**, remplacez le contenu de l'onglet par le code suivant.  

      ```
      {
        "cmd" : ["go", "run", "$file", "$args"],
        "info" : "Running $project_path$file_name...",
        "selector" : "source.go"
      }
      ```
Choisissez **File (Fichier)**, **Save As (Enregistrer sous)** dans la barre de menus, et enregistrez le fichier sous le nom `Go.run` dans le dossier `/.c9/runners`.
Dans l'onglet **[New] - Idle ([Nouveau] - Inactif)**, choisissez **Runner: Auto (Exécuteur : Auto)**, puis **Go**.
Choisissez l'onglet **hello.go** pour l'activer.

1. Pour **Commande)**, saisissez `hello.go 5 9`. Dans le code, `5` représente `os.Args[1]` et `9` représente `os.Args[2]`.  
![\[Résultat de l'exécution du code Go dans l' AWS Cloud9 IDE\]](http://docs.aws.amazon.com/fr_fr/cloud9/latest/user-guide/images/ide-go-simple.png)

1. Choisissez le bouton **Run** et comparez la sortie.

   ```
   Hello, World!
   The sum of 2 and 3 is 5.
   The sum of 5 and 9 is 14.
   ```

## Étape 4 : Installation et configuration du AWS SDK pour Go
<a name="sample-go-sdk"></a>

Vous pouvez améliorer cet exemple AWS SDK pour Go pour créer un compartiment Amazon S3, répertorier vos compartiments disponibles, puis supprimer le compartiment que vous venez de créer.

Au cours de cette étape, vous installez et configurez le AWS SDK pour Go, ce qui constitue un moyen pratique d'interagir avec AWS des services tels qu'Amazon S3, à partir de votre code Go. Avant d'installer le kit AWS SDK pour Go, vous devez définir votre variable d'environnement `GOPATH`. Après avoir installé le kit AWS SDK pour Go et défini votre variable d'environnement `GOPATH`, vous devez configurer la gestion des informations d'identification dans votre environnement. Ils ont AWS SDK pour Go besoin de ces informations d'identification pour interagir avec AWS les services.

### Pour définir votre variable d'environnement GOPATH
<a name="sample-go-sdk-set-gopath"></a>

1. Ouvrez votre fichier `~/.bashrc` pour le modifier.

1. Après la dernière ligne du fichier, saisissez ce code.

   ```
   GOPATH=~/environment/go
      
   export GOPATH
   ```

1. Enregistrez le fichier.

1. Définissez le fichier `~/.bashrc` en tant que source, afin que le terminal puisse désormais trouver la variable d'environnement `GOPATH` que vous venez de référencer.

   ```
   . ~/.bashrc
   ```

1. Vérifiez que la variable d'environnement `GOPATH` est correctement définie en exécutant la commande **`echo $GOPATH`**. En cas de réussite, la valeur `/home/ec2-user/environment/go` ou `/home/ubuntu/environment/go` doit être renvoyée en sortie.

### Pour installer AWS SDK pour Go
<a name="sample-go-sdk-install-sdk"></a>

Exécutez la **`go get`**commande en spécifiant l'emplacement de la AWS SDK pour Go source.

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

Go installe la AWS SDK pour Go source à l'emplacement spécifié par votre variable d'`GOPATH`environnement, à savoir le `go` dossier de votre environnement.

### Pour configurer la gestion des informations d'identification dans votre environnement
<a name="sample-go-sdk-creds"></a>

Chaque fois que vous utilisez le AWS SDK pour Go pour appeler un AWS service, vous devez fournir un ensemble d'informations d'identification avec l'appel. Ces informations d'identification déterminent s'il AWS SDK pour Go dispose des autorisations appropriées pour effectuer cet appel. Si les informations d'identification ne sont pas associées aux autorisations nécessaires, l'appel échoue.

Au cours de cette étape, vous allez stocker vos informations d'identification dans l'environnement. Pour ce faire, suivez les instructions de la rubrique [Téléphoner Services AWS depuis un environnement dans AWS Cloud9](credentials.md), puis revenez à cette rubrique.

Pour plus d'informations, consultez [Spécification des informations d’identification](https://docs.aws.amazon.com/sdk-for-go/latest/developer-guide/configuring-sdk.html#specifying-credentials) dans le *Guide du développeur AWS SDK pour Go *.

## Étape 5 : ajouter le code du AWS SDK
<a name="sample-go-sdk-code"></a>

Au cours de cette étape, vous allez ajouter du code supplémentaire pour interagir avec Amazon S3, créer un compartiment, répertorier les compartiments disponibles, puis supprimer le compartiment que vous venez de créer. Vous exécuterez ce code ultérieurement.

Dans l' AWS Cloud9 IDE, créez un fichier avec ce contenu et enregistrez le fichier sous son nom`s3.go`.

```
package main

import (
	"fmt"
	"os"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
)

func main() {

	if len(os.Args) < 3 {
		fmt.Printf("Usage: go run s3.go <the bucket name> <the AWS Region to use>\n" +
			"Example: go run s3.go my-test-bucket us-east-2\n")
		os.Exit(1)
	}

	sess := session.Must(session.NewSessionWithOptions(session.Options{
		SharedConfigState: session.SharedConfigEnable,
	}))
	svc := s3.New(sess, &aws.Config{
		Region: aws.String(os.Args[2]),
	})

	listMyBuckets(svc)
	createMyBucket(svc, os.Args[1], os.Args[2])
	listMyBuckets(svc)
	deleteMyBucket(svc, os.Args[1])
	listMyBuckets(svc)
}

// List all of your available buckets in this AWS Region.
func listMyBuckets(svc *s3.S3) {
	result, err := svc.ListBuckets(nil)

	if err != nil {
		exitErrorf("Unable to list buckets, %v", err)
	}

	fmt.Println("My buckets now are:\n")

	for _, b := range result.Buckets {
		fmt.Printf(aws.StringValue(b.Name) + "\n")
	}

	fmt.Printf("\n")
}

// Create a bucket in this AWS Region.
func createMyBucket(svc *s3.S3, bucketName string, region string) {
	fmt.Printf("\nCreating a new bucket named '" + bucketName + "'...\n\n")

	_, err := svc.CreateBucket(&s3.CreateBucketInput{
		Bucket: aws.String(bucketName),
		CreateBucketConfiguration: &s3.CreateBucketConfiguration{
			LocationConstraint: aws.String(region),
		},
	})

	if err != nil {
		exitErrorf("Unable to create bucket, %v", err)
	}

	// Wait until bucket is created before finishing
	fmt.Printf("Waiting for bucket %q to be created...\n", bucketName)

	err = svc.WaitUntilBucketExists(&s3.HeadBucketInput{
		Bucket: aws.String(bucketName),
	})
}

// Delete the bucket you just created.
func deleteMyBucket(svc *s3.S3, bucketName string) {
	fmt.Printf("\nDeleting the bucket named '" + bucketName + "'...\n\n")

	_, err := svc.DeleteBucket(&s3.DeleteBucketInput{
		Bucket: aws.String(bucketName),
	})

	if err != nil {
		exitErrorf("Unable to delete bucket, %v", err)
	}

	// Wait until bucket is deleted before finishing
	fmt.Printf("Waiting for bucket %q to be deleted...\n", bucketName)

	err = svc.WaitUntilBucketNotExists(&s3.HeadBucketInput{
		Bucket: aws.String(bucketName),
	})
}

// If there's an error, display it.
func exitErrorf(msg string, args ...interface{}) {
	fmt.Fprintf(os.Stderr, msg+"\n", args...)
	os.Exit(1)
}
```

## Étape 6 : Exécuter le code du AWS SDK
<a name="sample-go-sdk-run"></a>

1. Dans l' AWS Cloud9 IDE, dans la barre de menus, choisissez **Run, Run** **Configurations**, **New Run Configuration**.

1. Dans l'onglet **[New] - Idle ([Nouveau] - Inactif)**, choisissez **Runner: Auto (Exécuteur : Auto)**, puis **Go**.

1. Dans **Command**`s3.go YOUR_BUCKET_NAME THE_AWS_REGION `, saisissez ` YOUR_BUCKET_NAME ` le nom du compartiment que vous souhaitez créer puis supprimer, ainsi ` THE_AWS_REGION ` que l'ID de la AWS région dans laquelle vous souhaitez créer le compartiment. Par exemple, pour la région USA Est (Ohio), utilisez `us-east-2`. Pour en savoir plus IDs, consultez [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) dans le. *Référence générale d'Amazon Web Services*
**Note**  
Les noms des compartiments Amazon S3 doivent être uniques pour l'ensemble de votre compte AWS, et pas uniquement pour ce qui est de votre AWS compte.

1. Choisissez le bouton **Run** et comparez la sortie.

   ```
   My buckets now are:
   
   Creating a new bucket named 'my-test-bucket'...
   
   My buckets now are:
   
   my-test-bucket
   
   Deleting the bucket named 'my-test-bucket'...
   
   My buckets now are:
   ```

## Étape 7 : nettoyer
<a name="sample-go-clean-up"></a>

Pour éviter que votre AWS compte ne soit débité une fois que vous aurez terminé d'utiliser cet exemple, vous devez supprimer l'environnement. Pour obtenir des instructions, veuillez consulter [Supprimer un environnement dans AWS Cloud9](delete-environment.md).