{"id":7982,"date":"2022-05-02T09:23:48","date_gmt":"2022-05-02T07:23:48","guid":{"rendered":"https:\/\/geko.cloud\/?p=7982"},"modified":"2022-05-02T09:23:48","modified_gmt":"2022-05-02T07:23:48","slug":"consejos-para-sacar-mayor-provecho-a-cdk-parte-2","status":"publish","type":"post","link":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/","title":{"rendered":"Consejos para sacar mayor provecho a CDK [Parte 2]"},"content":{"rendered":"<p>Consejos para sacar mayor provecho a CDK [Parte 2]<br \/>\nVolvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK.\u00a0 En el primer art\u00edculo hablamos de conceptos b\u00e1sicos, no de CDK sino de cualquier proyecto software, naming convention, testing y un tema muy relacionado con el cloud como es el tagging. Hoy hablaremos de gesti\u00f3n de propiedades pero, tambi\u00e9n hablaremos de temas que son puramente de CDK como constructs y CDK. Sin m\u00e1s dilaci\u00f3n empezamos.<\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Gesti\u00f3n de propiedades<\/h2>\n<p>Una pr\u00e1ctica muy habitual en cloudformation es a\u00f1adir par\u00e1metros a una template para poder personalizarla y as\u00ed usarla en diferentes entornos como desarrollo, preproducci\u00f3n o producci\u00f3n. En CDK tambi\u00e9n existen los par\u00e1metros tal y como est\u00e1n definidos en cloudformation. Sin embargo, no es buena pr\u00e1ctica usarlos y as\u00ed se recalca en la <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/parameters.html\" target=\"_blank\" rel=\"noopener\">documentaci\u00f3n oficial de CDK<\/a><\/strong>. AWS recomienda centralizar la gesti\u00f3n de propiedades en el <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/context.html\" target=\"_blank\" rel=\"noopener\">contexto de CDK<\/a><\/strong>. Este m\u00e9todo consiste en a\u00f1adir en el archivo context.json todas las propiedades que necesito para ejecutar mi aplicaci\u00f3n en todos los entornos. As\u00ed pues, volviendo al ejemplo anterior, dentro del archivo cdk.json definiremos propiedades para cada entorno de la siguiente manera:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8091 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-13.png\" alt=\"CDK geko consultor\u00eda cloud - 13\" width=\"862\" height=\"728\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-13.png 862w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-13-300x253.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-13-768x649.png 768w\" sizes=\"(max-width: 862px) 100vw, 862px\" \/><\/p>\n<p>Estas propiedades se utilizar\u00e1n dentro de la aplicaci\u00f3n tal y como se muestra en el siguiente c\u00f3digo de ejemplo que consiste en un stack que crea una instancia EC2 con una AMI Amazon Linux:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8093 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-14.png\" alt=\"CDK geko consultor\u00eda cloud - 14\" width=\"1177\" height=\"676\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-14.png 1177w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-14-300x172.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-14-1024x588.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-14-768x441.png 768w\" sizes=\"(max-width: 1177px) 100vw, 1177px\" \/><\/p>\n<p>La propiedad stage, que determina las propiedades de que entorno usar a la hora de desplegar, se define de la siguiente forma:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8095\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-2.jpg\" alt=\"\" width=\"1000\" height=\"85\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-2.jpg 1188w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-2-300x26.jpg 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-2-1024x87.jpg 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-2-768x65.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Es posible pasar propiedades por l\u00ednea de comandos utilizando el flag -c. De esta forma es posible desplegar en cualquier entorno cambiando solamente el valor de la key stage.<\/p>\n<p>Es un buen m\u00e9todo, sin embargo, si consideramos que una de las ventajas de CDK es poder utilizar las herramientas orientadas al desarrollo de aplicaciones tambi\u00e9n a la hora de provisionar infraestructura, \u00bfpor qu\u00e9 no utilizar un framework de gesti\u00f3n de propiedades conocido y que sea de confianza? O si en vuestra compa\u00f1\u00eda utilizais archivos YAML para configurar vuestras aplicaciones, si ya hab\u00e9is definido un ciclo de vida para las propiedades de vuestra aplicaciones, ten\u00e9is definido un conjunto de herramientas e incluso hab\u00e9is creado pipelines de CI-CD que gestionan dichas propiedades, \u00bfpor qu\u00e9 no reutilizar todos esos recursos ya disponibles ya probados y que cumplen con el compliance de la compa\u00f1\u00eda? Por un lado se reutiliza c\u00f3digo ya creado y por otro se adapta el c\u00f3digo a los procesos ya establecidos en los equipos de desarrollo de la empresa.<\/p>\n<p>Pero adem\u00e1s existe otra ventaja, supongamos que est\u00e1s provisionando infraestructura en CDK y necesitas definir secretos. Definir todas las propiedades en el archivo context.json es un problema porque si un usuario malicioso consigue acceder al archivo podr\u00e1 ver todos los secretos de todos los entornos. Si ya te has enfrentado con anterioridad a este problema y lo hab\u00e9is resuelto en vuestras pipelines de CD, \u00bfpor qu\u00e9 definir secretos en el contexto de CDK? Reutiliza tus pipelines y gestiona los secretos como lo haces para el resto de vuestras aplicaciones.<\/p>\n<p>&nbsp;<\/p>\n<p>En caso de que no sepas c\u00f3mo gestionar secretos o te est\u00e9s planteando nuevos m\u00e9todos, nuestra sugerencia es que utilices el servicio <strong><a href=\"https:\/\/docs.aws.amazon.com\/systems-manager\/latest\/userguide\/systems-manager-parameter-store.html\" target=\"_blank\" rel=\"noopener\">AWS System parameter store<\/a><\/strong>.\u00a0 Por si no lo sabias, parameter store permite guardar secretos de forma segura y tambi\u00e9n informaci\u00f3n de configuraci\u00f3n que tu aplicaci\u00f3n pueda necesitar, no solamente secretos y todo por un precio <strong><a href=\"https:\/\/aws.amazon.com\/es\/systems-manager\/pricing\/\" target=\"_blank\" rel=\"noopener\">asequible<\/a><\/strong>. Recuperar los valores guardados en parameter store desde CDK, en tiempo de s\u00edntesi es bastante simple como se puede ver <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/get_ssm_value.html\" target=\"_blank\" rel=\"noopener\">en la documentaci\u00f3n de CDK<\/a><\/strong>, a continuaci\u00f3n puedes ver un peque\u00f1o snippet de c\u00f3digo en el cual se recupera un secreto almacenado en Parameter Store:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8097\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-3.jpg\" alt=\"CDK geko consultor\u00eda cloud \" width=\"1000\" height=\"85\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-3.jpg 1189w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-3-300x25.jpg 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-3-1024x87.jpg 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/Captura-3-768x65.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Stacks<\/h2>\n<p>En esta segunda parte de \u00abConsejos para sacar mayor provecho a CDK\u00bb encontrar\u00e1s que en nuestra experiencia trabajando con CDK hemos notado que hay bastante confusi\u00f3n respecto a cu\u00e1ndo y c\u00f3mo usar stacks. Una duda muy t\u00edpica es definir el n\u00famero de stacks que tendr\u00e1 mi aplicaci\u00f3n de CDK. Como siempre, depende de varios factores, vamos a ver algunas pautas que te ayudar\u00e1n estructurar tu c\u00f3digo pero no son leyes grabadas en piedra y como siempre, todo depender\u00e1 de tu caso de uso.<\/p>\n<p>Respecto al n\u00famero de stacks, lo importante es tener en cuenta que recursos que necesitas crear y si tiene sentido agruparlos todos dentro de un stack o no. Por ejemplo, si necesitas crear una infraestructura para una nueva aplicaci\u00f3n software que se debe desplegar en producci\u00f3n, llamemos a esta hipot\u00e9tica aplicaci\u00f3n app-A, lo ideal ser\u00eda crear un stack con todos los recursos que app-A usar\u00e1. Si necesitas un ASG, un Security Groups, y un ALB, crea un stack con todos estos recursos porque todos guardan relaci\u00f3n, todos estos recursos son utilizados por la aplicaci\u00f3n app-A. Al concentrar los recursos dentro del mismo stack se reduce el overhead de gestionar varios stacks y queda un c\u00f3digo m\u00e1s limpio.<\/p>\n<p>Sin embargo, si tienes que crear una VPC u otro recurso susceptible de ser usado por otras aplicaciones aparte de app-A, te sugerimos separar los recursos en stacks diferentes. Por un lado un stack para los recursos que necesita app-A y por otro lado stacks para los recursos globales..<\/p>\n<p>En resumen, agrupa recursos que est\u00e1n relacionados entre s\u00ed de alguna forma, bien porque son necesarios para que una aplicaci\u00f3n funcione o bien porque son elementos que trabajan juntos, como por ejemplo una VPC con sus respectivas subnets y networks ACL. La \u00fanica excepci\u00f3n que merece la pena considerar es crear un stack para gestionar elementos que son extremadamente importantes o cr\u00edticos como por ejemplo una instancia RDS. Si la instancia RDS se encuentra en un stack separado, se aumenta el overhead de gesti\u00f3n pero reduce el riesgo de actualizar el stack por accidente.<\/p>\n<p>&nbsp;<\/p>\n<h2>Constructs<\/h2>\n<p>Los <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/constructs.html\" target=\"_blank\" rel=\"noopener\">constructs<\/a><\/strong> son la unidad base a partir de la cual se crean recursos en CDK. Todo recurso es generado por un construct. Existen diferentes tipos de constructs, Level 1 (L1), Level 2 (L2) y Level 3 (L3). Los constructs L1 hacen match 1 a 1 con los resources de Cloudformation. Es decir, para cada recurso de Cloudformation en CDK existe un construct con un prefijo CFN, que es capaz de crear dicho recurso. Adem\u00e1s los constructs L1 tendr\u00e1n los mismo atributos que su equivalente en Cloudformation. Los L2 son la versi\u00f3n \u201ccurated\u201d con valores por defecto y m\u00e1s sencillos de utilizar, pero tambi\u00e9n menos flexibles. Por \u00faltimo los L3 corresponden a patterns que est\u00e1n dise\u00f1ados para resolver problemas comunes dentro de AWS, como por ejemplo un API Gateway con una Lambda y una BD Dynamo como soluci\u00f3n serverless para una API.<\/p>\n<p>Todos los constructs est\u00e1n mantenidos por el equipo de CDK, sin embargo, en caso de necesidad siempre puedes crear tu propio construct y personalizarlo, adapt\u00e1ndolo a tus necesidades. La verdad es que no es una pr\u00e1ctica recomendada\u00a0 pero a veces es \u00fatil en determinados casos, sobre todo cuando usas un construct de tipo L2 que tiene unos valores por defecto que no encajan con tus necesidades. En todo caso, te recomendamos que no abuses de esta pr\u00e1ctica. Intenta crear el menor n\u00famero de constructs custom posible.<\/p>\n<p>Supongamos que el compliance de la compa\u00f1\u00eda es que los buckets no pueden ser accesibles de forma p\u00fablica y adem\u00e1s todos los objetos almacenados deben estar encriptados at rest. Una forma de satisfacer todos estos requisitos consistir\u00eda en crear tu propio construct custom y pedir al equipo de DevOps que utilicen este construct en lugar del construct L2 de la librer\u00eda de CDK. M\u00e1s abajo podemos ver una posible implementaci\u00f3n para nuestro construct custom. En el ejemplo se puede ver que el construct hereda de la clase Construct en lugar de la clase Bucket. Te aconsejamos hacerlo as\u00ed porque de esta forma puedes dise\u00f1ar constructs con un mayor grado de personalizaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8099 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-15.png\" alt=\"CDK geko consultor\u00eda cloud - 15\" width=\"721\" height=\"730\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-15.png 721w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-15-296x300.png 296w\" sizes=\"(max-width: 721px) 100vw, 721px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Si buscas una forma alternativa de vigilar el compliance de tu c\u00f3digo sin tener que crear tu propia librer\u00eda, te recomendamos utilizar <strong><a href=\"https:\/\/docs.aws.amazon.com\/cdk\/v2\/guide\/aspects.html\" target=\"_blank\" rel=\"noopener\">Aspects.<\/a><\/strong> Los Aspects son la forma de aplicar operaciones a todos los constructs de un determinado scope. Con un Aspect se puede comprobar que un determinado recurso sea privado, o que est\u00e9 encriptado.<\/p>\n<p>En la siguiente imagen, podemos ver un stack que crea un bucket S3 privado usando el custom construct del ejemplo anterior:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8101 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-16.png\" alt=\"CDK geko consultor\u00eda cloud - 16\" width=\"860\" height=\"598\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-16.png 860w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-16-300x209.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-16-768x534.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/p>\n<p>El atributo kms_key est\u00e1 vac\u00edo, por lo tanto, los objetos que se almacenen dentro del bucket no se encriptar\u00e1n. Por ello, hemos creado un Aspect llamado BucketChecker que comprueba que los buckets de la clase GekoPrivateBucket tengan definido el atributo encryption_key. En caso de que no lo tengan definido saltar\u00e1 una excepci\u00f3n:<\/p>\n<p>De esta forma, hacer comprobaciones sobre los recursos creados es f\u00e1cil y liviano.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8103 size-full\" src=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-17.png\" alt=\"\" width=\"1298\" height=\"329\" srcset=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-17.png 1298w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-17-300x76.png 300w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-17-1024x260.png 1024w, https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/image-17-768x195.png 768w\" sizes=\"(max-width: 1298px) 100vw, 1298px\" \/><\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Resumen sobre los \u00abConsejos para sacar mayor provecho a CDK\u00bb<\/h2>\n<p>Hemos llegado al fin de los \u00abConsejos para sacar mayor provecho a CDK\u00bb que quer\u00edamos compartir con vosotros. Tanto en el primer como en el segundo post, hemos tratado varios temas, sin embargo, hemos dado prioridad a dos conceptos clave. El primer concepto clave es c\u00f3mo estructurar el c\u00f3digo de una aplicaci\u00f3n CDK, es decir, n\u00famero de stacks que deber\u00eda tener una aplicaci\u00f3n, cuando y como crear un construct custom, c\u00f3mo deber\u00edan ser los test o c\u00f3mo lidiar con los identificadores de CDK.\u00a0 Una buena estructura ayuda a ahorrar deuda t\u00e9cnica y mejora la calidad del c\u00f3digo entregado.<\/p>\n<p>El segundo concepto clave es el de compliance. A lo largo de ambos posts, hemos aportado ideas de c\u00f3mo cumplir los hipot\u00e9ticos requisitos de un compliance. Una de las lecciones m\u00e1s importantes que hemos aprendido gestionando la infraestructura de nuestros clientes es que el compliance es un concepto realmente importante, si bien es cierto que implantarlo en una organizaci\u00f3n puede ser doloroso al principio. El compliance permite reducir riesgos, mejora el governance de la infraestructura y crea un marco de trabajo que ayuda a los diferentes equipos de una empresa (SRE, Development, SecOps, &#8230;) a relacionarse y llegar a acuerdos. Por esa raz\u00f3n el c\u00f3digo que generes en CDK deber\u00eda siempre tener en mente c\u00f3mo satisfacer el compliance de tu compa\u00f1\u00eda.<\/p>\n<p>Desde\u00a0<strong>Geko Consultor\u00eda Cloud,<\/strong> esperamos que ambos posts te hayan gustado y sobre todo que te resulten \u00fatiles, nada nos alegrar\u00eda m\u00e1s. Te invitamos a que si necesitas informaci\u00f3n sobre el mundo <a href=\"https:\/\/geko.cloud\/es\/\" target=\"_blank\" rel=\"noopener\"><strong>Cloud y DevOps<\/strong><\/a>,\u00a0<strong><a href=\"https:\/\/geko.cloud\/es\/contacto\/\" target=\"_blank\" rel=\"noopener\">nos contactes<\/a>\u00a0<\/strong>y sigas revisando\u00a0<strong><a href=\"https:\/\/geko.cloud\/es\/blog\/labs\/\" target=\"_blank\" rel=\"noopener\">nuestro blog<\/a><\/strong>\u00a0para encontrar otras publicaciones \u00fatiles.<\/p>\n<p>Ten\u00e9is la primera parte sobre <a href=\"https:\/\/geko.cloud\/es\/consejos-practicos-para-sacar-mayor-provecho-a-cdk-parte-1\/\" target=\"_blank\" rel=\"noopener\">\u00abConsejos para sacar mayor provecho a CDK\u00bb [Parte 1]<\/a> publicada en nuestro Blog!<\/p>\n<p>\u00a1Hasta la pr\u00f3xima!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Consejos para sacar mayor provecho a CDK [Parte 2] Volvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK.\u00a0 En el primer art\u00edculo hablamos de conceptos b\u00e1sicos, no de CDK sino de cualquier proyecto software, naming convention, testing y un tema muy relacionado con el cloud como es el tagging. Hoy hablaremos de [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":8002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[18],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Consejos para sacar mayor provecho a CDK [Parte 2] - Geko Cloud<\/title>\n<meta name=\"description\" content=\"Consejos para sacar mayor provecho a CDK [Parte 2]. Volvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Consejos para sacar mayor provecho a CDK [Parte 2] - Geko Cloud\" \/>\n<meta property=\"og:description\" content=\"Consejos para sacar mayor provecho a CDK [Parte 2]. Volvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Geko Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-02T07:23:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1640\" \/>\n\t<meta property=\"og:image:height\" content=\"924\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Javier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geko_cloud\" \/>\n<meta name=\"twitter:site\" content=\"@geko_cloud\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/\"},\"author\":{\"name\":\"Javier\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6\"},\"headline\":\"Consejos para sacar mayor provecho a CDK [Parte 2]\",\"datePublished\":\"2022-05-02T07:23:48+00:00\",\"dateModified\":\"2022-05-02T07:23:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/\"},\"wordCount\":1869,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"articleSection\":[\"Labs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/\",\"url\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/\",\"name\":\"Consejos para sacar mayor provecho a CDK [Parte 2] - Geko Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"datePublished\":\"2022-05-02T07:23:48+00:00\",\"dateModified\":\"2022-05-02T07:23:48+00:00\",\"description\":\"Consejos para sacar mayor provecho a CDK [Parte 2]. Volvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK\",\"breadcrumb\":{\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png\",\"width\":1640,\"height\":924,\"caption\":\"Consejos pr\u00e1cticos para sacar mayor provecho a CDK\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/geko.cloud\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Consejos para sacar mayor provecho a CDK [Parte 2]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/geko.cloud\/es\/#website\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"name\":\"Geko Cloud\",\"description\":\"Servicios de consultor\u00eda cloud y devops\",\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/geko.cloud\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/geko.cloud\/es\/#organization\",\"name\":\"Geko Cloud\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"width\":1650,\"height\":809,\"caption\":\"Geko Cloud\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/geko_cloud\",\"https:\/\/www.instagram.com\/gekocloud\/\",\"https:\/\/www.linkedin.com\/company\/gekocloud\",\"https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6\",\"name\":\"Javier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g\",\"caption\":\"Javier\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Consejos para sacar mayor provecho a CDK [Parte 2] - Geko Cloud","description":"Consejos para sacar mayor provecho a CDK [Parte 2]. Volvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/","og_locale":"es_ES","og_type":"article","og_title":"Consejos para sacar mayor provecho a CDK [Parte 2] - Geko Cloud","og_description":"Consejos para sacar mayor provecho a CDK [Parte 2]. Volvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK","og_url":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/","og_site_name":"Geko Cloud","article_published_time":"2022-05-02T07:23:48+00:00","og_image":[{"width":1640,"height":924,"url":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","type":"image\/png"}],"author":"Javier","twitter_card":"summary_large_image","twitter_creator":"@geko_cloud","twitter_site":"@geko_cloud","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#article","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/"},"author":{"name":"Javier","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6"},"headline":"Consejos para sacar mayor provecho a CDK [Parte 2]","datePublished":"2022-05-02T07:23:48+00:00","dateModified":"2022-05-02T07:23:48+00:00","mainEntityOfPage":{"@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/"},"wordCount":1869,"commentCount":0,"publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"image":{"@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","articleSection":["Labs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/","url":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/","name":"Consejos para sacar mayor provecho a CDK [Parte 2] - Geko Cloud","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage"},"image":{"@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","datePublished":"2022-05-02T07:23:48+00:00","dateModified":"2022-05-02T07:23:48+00:00","description":"Consejos para sacar mayor provecho a CDK [Parte 2]. Volvemos a la carga con nuestra lista de consejos pr\u00e1cticos para CDK","breadcrumb":{"@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#primaryimage","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2022\/04\/cdk-prova.png","width":1640,"height":924,"caption":"Consejos pr\u00e1cticos para sacar mayor provecho a CDK"},{"@type":"BreadcrumbList","@id":"https:\/\/geko.cloud\/es\/consejos-para-sacar-mayor-provecho-a-cdk-parte-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/geko.cloud\/es\/"},{"@type":"ListItem","position":2,"name":"Consejos para sacar mayor provecho a CDK [Parte 2]"}]},{"@type":"WebSite","@id":"https:\/\/geko.cloud\/es\/#website","url":"https:\/\/geko.cloud\/es\/","name":"Geko Cloud","description":"Servicios de consultor\u00eda cloud y devops","publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geko.cloud\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/geko.cloud\/es\/#organization","name":"Geko Cloud","url":"https:\/\/geko.cloud\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","width":1650,"height":809,"caption":"Geko Cloud"},"image":{"@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/geko_cloud","https:\/\/www.instagram.com\/gekocloud\/","https:\/\/www.linkedin.com\/company\/gekocloud","https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ"]},{"@type":"Person","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/7c019f6b932aa9a572eb16e0f57fd1b6","name":"Javier","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/25d931800703a3703848377afd700a83?s=96&d=mm&r=g","caption":"Javier"}}]}},"_links":{"self":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/7982"}],"collection":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/comments?post=7982"}],"version-history":[{"count":15,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/7982\/revisions"}],"predecessor-version":[{"id":8162,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/7982\/revisions\/8162"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media\/8002"}],"wp:attachment":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media?parent=7982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/categories?post=7982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/tags?post=7982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}