Tutorial de Go para AWS Cloud9 - AWS Cloud9

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

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 de Go para AWS Cloud9

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

El uso de este tutorial y la creación de esta muestra pueden generar cargos en su cuenta de AWS. 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 y Precios de Amazon S3.

Requisitos previos

Antes de utilizar este ejemplo, asegúrese de que su configuración cumpla los siguientes requisitos:

  • Debe tener un entorno de desarrollo de AWS Cloud9 EC2. 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.

  • Ya tiene abierto el IDE de AWS Cloud9 para el 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 Apertura de un entorno en AWS Cloud9.

Paso 1: Instalar las herramientas necesarias

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

  1. En una sesión del terminal del IDE de AWS Cloud9, confirme si Go ya está instalado. Para ello, ejecute el comando go version . (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.

  2. 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
  3. 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 en el sitio web del lenguaje de programación Go.

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

    2. 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
    3. Guarde el archivo.

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

    . ~/.bashrc
  6. 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

En el IDE de AWS Cloud9, 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

  1. En el IDE de AWS Cloud9, en la barra de menús, elija Run (Ejecutar), Run Configurations (Configuraciones de ejecución), New Run Configuration (Nueva configuración de ejecución).

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

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

    2. 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" }
    3. 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.

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

    5. Elija la pestaña hello.go para hacerla activa.

  3. 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 de Go en el IDE de AWS Cloud9
  4. 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 for Go

Puede mejorar esta muestra para utilizar el AWS SDK for Go y crear un bucket de Amazon S3, mostrar una lista de los buckets disponibles y, a continuación, eliminar el bucket que acaba de crear.

En este paso, se instala y configura el AWS SDK for Go, que proporciona un práctico método para interactuar con los servicios de AWS, como Amazon S3, desde el código de Go. Antes de instalar el AWS SDK for Go, debe configurar la variable de entorno GOPATH. Una vez instalado el AWS SDK for Go y establecida la variable de entorno GOPATH, debe configurar la administración de credenciales en el entorno. El AWS SDK for Go necesita estas credenciales para interactuar con los servicios de AWS.

Para establecer la variable de entorno GOPATH

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

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

    GOPATH=~/environment/go export GOPATH
  3. Guarde el archivo.

  4. 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
  5. 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 AWS SDK for Go

Ejecute el comando go get especificando la ubicación del código fuente del AWS SDK for Go.

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

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

Para configurar la administración de credenciales en su entorno

Cada vez que utilice el AWS SDK for Go para llamar a un servicio de AWS, debe proporcionar un conjunto de credenciales con la llamada. Estas credenciales determinan si el AWS SDK for 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 a los servicios de AWS desde un entorno en AWS Cloud9 y, a continuación, vuelva a este tema.

Para obtener información adicional, consulte Especificación de credenciales en la Guía para desarrolladores de AWS SDK for Go.

Paso 5: Agregar el código de AWS SDK

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 IDE de AWS Cloud9, 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: Ejecutar el código de AWS SDK

  1. En el IDE de AWS Cloud9, en la barra de menús, elija Run (Ejecutar), Run Configurations (Configuraciones de ejecución), New Run Configuration (Nueva configuración de ejecución).

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

  3. En Command (Comando), escriba s3.go YOUR_BUCKET_NAME THE_AWS_REGION , donde YOUR_BUCKET_NAME es el nombre del bucket que quiere crear y después eliminar y THE_AWS_REGION es el ID de la región de AWS en la que desea crear el bucket. Por ejemplo, para la región EE.UU. Este (Ohio), utilice us-east-2. Para ver más ID, visite Amazon Simple Storage Service (Amazon S3) en la Referencia general de Amazon Web Services.

    nota

    Los nombres de bucket de Amazon S3 deben ser únicos en AWS, no solo en la cuenta de AWS.

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

Para evitar que se apliquen cargos continuos en su cuenta de AWS después de terminar de usar esta muestra, debe eliminar el entorno. Para obtener más información, consulte Eliminación de un entorno en AWS Cloud9.