

 AWS Cloud9 ya no está disponible para nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Tutorial Go para AWS Cloud9
<a name="sample-go"></a>

Este tutorial te permite ejecutar código de Go en un entorno de AWS Cloud9 desarrollo.

Si sigues este tutorial y creas este ejemplo, es posible que se hagan cargos en tu AWS cuenta. Entre estos se incluyen posibles cargos por servicios como Amazon EC2 y Amazon S3. Para obtener más información, consulte [Precios de Amazon EC2](https://aws.amazon.com/ec2/pricing/) y [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

**Topics**
+ [Requisitos previos](#sample-go-prereqs)
+ [Paso 1: Instalar las herramientas necesarias](#sample-go-install)
+ [Paso 2: Agregar el código](#sample-go-code)
+ [Paso 3: Ejecutar el código](#sample-go-run)
+ [Paso 4: Instalar y configurar el AWS SDK para Go](#sample-go-sdk)
+ [Paso 5: Agrega el código AWS del SDK](#sample-go-sdk-code)
+ [Paso 6: ejecuta el código AWS del SDK](#sample-go-sdk-run)
+ [Paso 7: limpiar](#sample-go-clean-up)

## Requisitos previos
<a name="sample-go-prereqs"></a>

Antes de utilizar este ejemplo, asegúrese de que su configuración cumpla los siguientes requisitos:
+ **Debe tener un entorno de desarrollo AWS Cloud9 EC2 existente.** En este ejemplo, se da por hecho que ya tiene un entorno de EC2 que está conectado a una instancia de Amazon EC2 que ejecuta Amazon Linux o Ubuntu Server. Si tiene otro tipo de entorno o sistema operativo, es posible que tenga que adaptar las instrucciones de este ejemplo para configurar herramientas relacionadas. Para obtener más información, consulte [Crear un entorno en AWS Cloud9](create-environment.md).
+ **Ya tiene abierto el AWS Cloud9 IDE del entorno existente.** Al abrir un entorno, AWS Cloud9 abre el IDE de ese entorno en el navegador web. Para obtener más información, consulte [Abrir un entorno en AWS Cloud9](open-environment.md).

## Paso 1: Instalar las herramientas necesarias
<a name="sample-go-install"></a>

En este paso, va a instalar y configurar Go, necesario para ejecutar este ejemplo.

1. En una sesión de terminal en el AWS Cloud9 IDE, ejecute el **`go version`**comando para confirmar si Go ya está instalado. (Para iniciar una nueva sesión del terminal, en la barra de menús, seleccione **Window [Ventana]**, **New Terminal [Nuevo terminal]**). Si se ejecuta correctamente, el resultado debería contener el número de versión de Go. De lo contrario, se debería obtener un mensaje de error como resultado. Si Go está instalado, continúe en [Paso 2: Agregar el código](#sample-go-code).

1. Ejecute el comando ** `yum update` ** (para Amazon Linux) o ** `apt update` ** (para Ubuntu Server) para garantizar que las últimas actualizaciones de seguridad y correcciones de errores están instaladas.

   Para Amazon Linux:

   ```
   sudo yum -y update
   ```

   Para Ubuntu Server:

   ```
   sudo apt update
   ```

1. Para instalar Go, ejecute estos comandos de uno en uno.

   ```
   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.
   ```

   Los comandos anteriores suponen que se emplea la última versión estable de Go en el momento en que este tema se escribió. Para obtener más información, consulte [Downloads](https://golang.org/dl/) en el sitio web del lenguaje de programación Go.

1. Agregue la ruta de los binarios de Go a la variable de entorno `PATH`, como se muestra a continuación.

   1. Abra el archivo de perfil de shell (por ejemplo, `~/.bashrc`) para editarlo.

   1. Al final de esta línea de código, escriba lo siguiente, de forma que el código ahora pasará a tener este aspecto.

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

   1. Guarde el archivo.

1. Dé el origen del archivo `~/.bashrc` para que el terminal pueda encontrar el binario de Go al que acaba de hacer referencia.

   ```
   . ~/.bashrc
   ```

1. Confirme que Go ya está instalado y configurado correctamente ejecutando el comando ** `go version` **. Si es así, el resultado contendrá el número de versión de Go.

## Paso 2: Agregar el código
<a name="sample-go-code"></a>

En el AWS Cloud9 IDE, cree un archivo con este contenido y guárdelo con el nombre`hello.go`. (Para crear un archivo, en la barra de menús, elija **File** [Archivo], **New File** [Archivo nuevo]. Para guardar el archivo, elija **File** [Archivo], **Save** [Guardar]).

```
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))
}
```

## Paso 3: Ejecutar el código
<a name="sample-go-run"></a>

1. En el AWS Cloud9 IDE, en la barra de menús, seleccione **Ejecutar**, **Ejecutar configuraciones**, **Nueva configuración de ejecución**.

1. En la pestaña **[New] - Idle (Nuevo - Inactivo)**, elija **Runner: Auto (Ejecutor: automático)** y, a continuación, elija **Go**.
**nota**  
Si **Go** no está disponible, puede crear un ejecutor personalizado para Go.  
En la pestaña **[New] - Idle (Nuevo - Inactivo)**, elija **Runner: Auto (Ejecutor: automático)** y, a continuación, elija **New Runner (Ejecutor nuevo)**.
En la pestaña **My Runner.run (Mi Runner.run)**, sustituya el contenido de la pestaña por este código.  

      ```
      {
        "cmd" : ["go", "run", "$file", "$args"],
        "info" : "Running $project_path$file_name...",
        "selector" : "source.go"
      }
      ```
Elija **File (Archivo)**, **Save As (Guardar como)** en la barra de menús y guarde el archivo como `Go.run` en la carpeta `/.c9/runners`.
En la pestaña **[New] - Idle (Nuevo - Inactivo)**, elija **Runner: Auto (Ejecutor: automático)** y, a continuación, elija **Go**.
Elija la pestaña **hello.go** para hacerla activa.

1. En **Command (Comando)**, escriba `hello.go 5 9`. En el código, `5` representa `os.Args[1]` y `9` representa `os.Args[2]`.  
![\[Resultado de la ejecución del código Go en el AWS Cloud9 IDE\]](http://docs.aws.amazon.com/es_es/cloud9/latest/user-guide/images/ide-go-simple.png)

1. Elija el botón **Run (Ejecutar)** y compare los resultados.

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

## Paso 4: Instalar y configurar el AWS SDK para Go
<a name="sample-go-sdk"></a>

Puede mejorar este ejemplo para usarlo AWS SDK para Go para crear un bucket de Amazon S3, enumerar los buckets disponibles y, a continuación, eliminar el bucket que acaba de crear.

En este paso, instalas y configuras el AWS SDK para Go, que proporciona una forma cómoda de interactuar con AWS servicios como Amazon S3, desde tu código Go. Antes de instalar el AWS SDK para Go, debe configurar la variable de entorno `GOPATH`. Una vez instalado el AWS SDK para Go y establecida la variable de entorno `GOPATH`, debe configurar la administración de credenciales en el entorno. AWS SDK para Go Necesita estas credenciales para interactuar con AWS los servicios.

### Para establecer la variable de entorno GOPATH
<a name="sample-go-sdk-set-gopath"></a>

1. Abra el archivo `~/.bashrc` para editarlo.

1. Después de la última línea, escriba este código.

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

1. Guarde el archivo.

1. Dé el origen del archivo `~/.bashrc` para que el terminal pueda encontrar la variable de entorno `GOPATH` a la que acaba de hacer referencia.

   ```
   . ~/.bashrc
   ```

1. Confirme que la variable de entorno `GOPATH` está establecida correctamente ejecutando el comando ** `echo $GOPATH` **. Si es correcto, el resultado debe ser `/home/ec2-user/environment/go` o `/home/ubuntu/environment/go`.

### Para instalar el AWS SDK para Go
<a name="sample-go-sdk-install-sdk"></a>

Ejecute el **`go get`**comando especificando la ubicación de la AWS SDK para Go fuente.

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

Go instala la AWS SDK para Go fuente en la ubicación especificada por la variable de `GOPATH` entorno, que es la `go` carpeta de su entorno.

### Para configurar la administración de credenciales en el entorno
<a name="sample-go-sdk-creds"></a>

Cada vez que utilice el AWS SDK para Go para llamar a un AWS servicio, debe proporcionar un conjunto de credenciales con la llamada. Estas credenciales determinan si AWS SDK para Go tiene los permisos adecuados para realizar esa llamada. Si las credenciales no cubren los permisos adecuados, la llamada no se realizará correctamente.

En este paso, se almacenan las credenciales dentro del entorno. Para ello, siga las instrucciones de [Llamar Servicios de AWS desde un entorno de AWS Cloud9](credentials.md) y, a continuación, vuelva a este tema.

Para obtener información adicional, consulte [Especificación de credenciales](https://docs.aws.amazon.com/sdk-for-go/latest/developer-guide/configuring-sdk.html#specifying-credentials) en la *Guía para desarrolladores de AWS SDK para Go *.

## Paso 5: Agrega el código AWS del SDK
<a name="sample-go-sdk-code"></a>

En este paso, agregará algo más de código, esta vez para interactuar con Amazon S3 y crear un bucket, ver una lista de los buckets disponibles y después eliminar el bucket que acaba de crear. Ejecutará este código más adelante.

En el AWS Cloud9 IDE, cree un archivo con este contenido y guárdelo con el nombre`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)
}
```

## Paso 6: ejecuta el código AWS del SDK
<a name="sample-go-sdk-run"></a>

1. En el AWS Cloud9 IDE, en la barra de menús, elija **Ejecutar**, **Ejecutar configuraciones**, **Nueva configuración de ejecución**.

1. En la pestaña **[New] - Idle (Nuevo - Inactivo)**, elija **Runner: Auto (Ejecutor: automático)** y, a continuación, elija **Go**.

1. En **Comando**`s3.go YOUR_BUCKET_NAME THE_AWS_REGION `, escriba el nombre del depósito que desea crear y, a continuación, eliminar, y ` THE_AWS_REGION ` el ID de la AWS región en la que desea crear el depósito. ` YOUR_BUCKET_NAME ` Por ejemplo, para la región EE.UU. Este (Ohio), utilice `us-east-2`. Para obtener más información IDs, consulte [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) en. *Referencia general de Amazon Web Services*
**nota**  
Los nombres de los buckets de Amazon S3 deben ser únicos en todas AWS las AWS cuentas, no solo en ellas.

1. Elija el botón **Run (Ejecutar)** y compare los resultados.

   ```
   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:
   ```

## Paso 7: limpiar
<a name="sample-go-clean-up"></a>

Para evitar que se hagan cargos continuos a tu AWS cuenta una vez que hayas terminado de usar este ejemplo, debes eliminar el entorno. Para obtener instrucciones, consulte [Eliminar un entorno en AWS Cloud9](delete-environment.md).