Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Trabajando con el AWS CDK in Go

Modo de enfoque
Trabajando con el AWS CDK in Go - AWS Cloud Development Kit (AWS CDK) v2

Esta es la guía para AWS CDK desarrolladores de la versión 2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.

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.

Esta es la guía para AWS CDK desarrolladores de la versión 2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.

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.

Go es un lenguaje de cliente totalmente compatible AWS Cloud Development Kit (AWS CDK) y se considera estable. Para trabajar con el AWS CDK in Go se utilizan herramientas conocidas. La versión Go AWS CDK incluso usa identificadores tipo Go.

A diferencia de los otros lenguajes compatibles con CDK, Go no es un lenguaje de programación tradicional orientado a objetos. Este utiliza la composición, mientras que otros lenguajes suelen aprovechar la herencia. Hemos intentado emplear enfoques idiomáticos de Go en la medida de lo posible, sin embargo, existen aspectos en los que el CDK puede diferir.

En este tema se proporciona orientación para trabajar con el AWS CDK in Go. Consulte la publicación del blog sobre el anuncio para ver un tutorial de un proyecto sencillo de Go para AWS CDK.

Comience con Go

Para trabajar con el AWS CDK, debe tener una AWS cuenta y credenciales y tener instalados Node.js y el AWS CDK kit de herramientas. Consulte Empezando con la AWS CDK.

Los enlaces Go para el AWS CDK uso de la cadena de herramientas Go estándar, versión 1.18 o posterior. Puede utilizar el editor de su elección.

nota

Obsolescencia del lenguaje de terceros: la versión en otro lenguaje solo se admite hasta que el proveedor o la comunidad compartan su fecha de vida útil (EOL), y está sujeta a cambios con previo aviso.

Creación de un proyecto

Para crear un nuevo AWS CDK proyecto, se invoca cdk init en un directorio vacío. Utilice la opción --language y especifique go:

mkdir my-project cd my-project cdk init app --language go

cdk init utiliza el nombre de la carpeta del proyecto para asignar un nombre a varios elementos del proyecto, incluidas las clases, las subcarpetas y los archivos. Los guiones del nombre de la carpeta se convierten en guiones bajos. Sin embargo, de lo contrario, el nombre debe seguir la forma de un identificador de Go; por ejemplo, no debe comenzar por un número ni contener espacios.

El proyecto resultante incluye una referencia al módulo principal de AWS CDK Gogithub.com/aws/aws-cdk-go/awscdk/v2, engo.mod. Ejecute go get para instalar este y otros módulos necesarios.

Gestión de los módulos de AWS Construct Library

En la mayoría de la AWS CDK documentación y los ejemplos, la palabra «módulo» suele usarse para referirse a los módulos de AWS Construct Library, uno o más por AWS servicio, lo que difiere del uso idiomático del término en Go. La Biblioteca de constructos de CDK se proporciona en un módulo Go junto con los módulos individuales de la biblioteca de constructos, los cuales admiten los distintos servicios de AWS , que se proporcionan como paquetes Go dentro de ese módulo.

La compatibilidad con AWS Construct Library de algunos servicios se encuentra en más de un módulo de Construct Library (paquete Go). Por ejemplo, Amazon Route 53 tiene tres módulos de la Biblioteca de constructos, además del paquete principal de awsroute53, denominados awsroute53patterns awsroute53resolver y awsroute53targets.

El AWS CDK paquete principal, que necesitarás en la mayoría de AWS CDK las aplicaciones, se importa en código Go comogithub.com/aws/aws-cdk-go/awscdk/v2. Los paquetes de los distintos servicios de la biblioteca AWS Construct se encuentran engithub.com/aws/aws-cdk-go/awscdk/v2. Por ejemplo, el espacio de nombres del módulo Amazon S3 es github.com/aws/aws-cdk-go/awscdk/v2/awss3.

import ( "github.com/aws/aws-cdk-go/awscdk/v2/awss3" // ... )

Una vez que haya importado los módulos de la Biblioteca de constructos (paquetes Go) para los servicios que desee usar en su aplicación, podrá acceder a las construcciones de ese módulo utilizando, por ejemplo, awss3.Bucket.

Administrar las dependencias en Go

En Go, las versiones de las dependencias se definen en go.mod. El valor predeterminado go.mod es similar al que se muestra aquí.

module my-package go 1.16 require ( github.com/aws/aws-cdk-go/awscdk/v2 v2.16.0 github.com/aws/constructs-go/constructs/v10 v10.0.5 github.com/aws/jsii-runtime-go v1.29.0 )

Los nombres de los paquetes (módulos, en el lenguaje de Go) se especifican a través de una URL con el número de versión requerido adjunto. El sistema de módulos de Go no admite rangos de versiones.

Ejecute el comando go get para instalar todos los módulos necesarios y actualizarlos en go.mod. Para ver una lista de las actualizaciones disponibles para sus dependencias, ejecute go list -m -u all.

AWS CDK Modismos en Go

Nombres de campos y métodos

Los nombres de campos y métodos utilizan camel casing (likeThis) en TypeScript, el idioma de origen del CDK. En Go, estos siguen las convenciones de Go, al igual que las mayúsculas (LikeThis).

Limpieza

En su método main, use defer jsii.Close() para asegurarse de que la aplicación CDK se limpie sola.

Valores faltantes y conversión de punteros

En Go, los valores que faltan en los AWS CDK objetos, como los paquetes de propiedades, se representan mediante. nil Go no tiene tipos que acepten valores nulos; el único tipo que puede contener nil es un puntero. Por lo tanto, para permitir que los valores sean opcionales, todas las propiedades, argumentos y valores de retorno de CDK son punteros, incluso en el caso de los tipos primitivos. Esto se aplica tanto a los valores obligatorios como opcionales. Si un valor obligatorio se vuelve opcional, no será necesario cambiar el tipo de valor.

Al pasar valores o expresiones literales, utilice las siguientes funciones auxiliares para crear punteros a los valores.

  • jsii.String

  • jsii.Number

  • jsii.Bool

  • jsii.Time

Para mantener la coherencia, recomendamos que utilice los punteros de forma similar cuando defina sus propios constructos, aunque pueda parecer más conveniente, por ejemplo, recibir constructos como una cadena en lugar de id como puntero a una cadena.

Cuando se trate de AWS CDK valores opcionales, tanto valores primitivos como tipos complejos, deberías probar los punteros de forma explícita para asegurarte de que no lo están nil antes de hacer cualquier cosa con ellos. Go no tiene “azúcar sintáctico” que ayude a gestionar los valores vacíos o faltantes, como ocurre en otros lenguajes. Sin embargo, se garantiza la existencia de los valores obligatorios en las agrupaciones de propiedades y estructuras similares (de lo contrario, los constructos no funcionan), por lo que no es necesario verificar nil en estos valores.

Constructos y accesorios

Las construcciones, que representan uno o más AWS recursos y sus atributos asociados, se representan en Go como interfaces. Por ejemplo, awss3.Bucket es una interfaz. Cada constructo tiene una función de fábrica, como awss3.NewBucket, para devolver una estructura que implementa la interfaz correspondiente.

Todas las funciones de fábrica tienen tres argumentos: el scope en el que se define el constructo, su elemento principal en el árbol de constructos, un id y props, una agrupación de pares clave/valor que el constructo utiliza para configurar los recursos que crea. El patrón de la “agrupación de atributos” también se utiliza en otras partes del AWS CDK.

En Go, los accesorios se representan mediante un tipo de estructura específica para cada constructo. Por ejemplo, awss3.Bucket toma un argumento de tipo accesorio awss3.BucketProps. Usa una estructura literal para escribir argumentos de utilería.

var bucket = awss3.NewBucket(stack, jsii.String("amzn-s3-demo-bucket"), &awss3.BucketProps{ Versioned: jsii.Bool(true), })

Estructuras genéricas

En algunos lugares, AWS CDK utiliza JavaScript matrices u objetos sin tipo como entrada a un método. (Consulte, por ejemplo, el método AWS CodeBuild de BuildSpec.fromObject()). En Go, estos objetos se representan como sectores y una interfaz vacía.

El CDK proporciona diversas funciones auxiliares, como jsii.Strings, para crear segmentos que contienen tipos primitivos.

jsii.Strings("One", "Two", "Three")

Desarrollo de constructos personalizados

En Go, suele ser más sencillo escribir un nuevo constructo que extender uno existente. En primer lugar, defina un nuevo tipo de estructura, incrustando de forma anónima uno o más tipos existentes en caso de que se desee una semántica similar a la de una extensión. Escriba métodos para cualquier funcionalidad nueva que vaya a agregar y los campos necesarios para almacenar los datos que necesite. Defina una interfaz de accesorios si su constructo la necesita. Por último, escriba una función de fábrica NewMyConstruct() para devolver una instancia de su constructo.

Si simplemente está cambiando algunos valores predeterminados en un constructo existente o agregando un comportamiento simple en esta instancia, no necesita toda esa configuración. En su lugar, escriba una función de fábrica que invoque a la función de fábrica del constructo que está “extendiendo”. En otros lenguajes de CDK, por ejemplo, puede crear un constructo TypedBucket que aplique el tipo de objetos de un bucket de Amazon S3 al anular el tipo s3.Bucket, y, en el inicializador del nuevo tipo, añada una política de bucket que solo permita agregar al bucket extensiones de nombre de archivo especificadas. En Go, es más fácil escribir simplemente un NewTypedBucket que devuelva un s3.Bucket (uso instanciado s3.NewBucket) a la que se haya agregado una política de bucket adecuada. No es necesario ningún tipo de constructo nuevo porque la funcionalidad ya está disponible en el constructo de bucket estándar; el nuevo simplemente proporciona una forma más sencilla de configurarlo.

Construir, sintetizar e implementar

Compila AWS CDK automáticamente la aplicación antes de ejecutarla. Sin embargo, puede resultar útil compilar la aplicación manualmente para comprobar si hay errores y realizar pruebas. Para ello, ejecute go build en una línea de comandos solicitados desde el directorio raíz del proyecto.

Para ejecutar las pruebas que haya escrito, use go test en la línea de comandos solicitados.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.