Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

527
Vistas
Cloudformation y almacén de parámetros: cómo seleccionar parámetros para el entorno

Quiero leer la URL de mi base de datos desde el almacén de parámetros en mi plantilla de CloudFormation. Esto es bastante fácil para una sola URL, pero no puedo entender cómo cambiar la URL con diferentes entornos.

Tengo cuatro entornos (desarrollo, integración, preproducción y producción) y sus detalles se almacenan en cuatro rutas diferentes en el almacén de parámetros:

 /database/dev/url /database/int/url /database/ppe/url /database/prod/url

Ahora quiero elegir la URL de la base de datos correcta al implementar a través de CloudFormation. ¿Cómo puedo hacer esto?

 Parameters: Environment: Type: String Default: dev AllowedValues: - dev - int - ppe - prod DatabaseUrl: Type: 'AWS::SSM::Parameter::Value<String>' # Obviously the '+' operator here won't work - so what do I do? Default: '/database/' + Environment + '/url'
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esta característica no es tan ordenada como uno desearía. En realidad, debe pasar el nombre/ruta de cada parámetro que desea buscar en el almacén de parámetros.

Modelo:

 AWSTemplateFormatVersion: 2010-09-09 Description: Example Parameters: BucketNameSuffix: Type: AWS::SSM::Parameter::Value<String> Default: /example/dev/BucketNameSuffix Resources: Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Sub parameter-store-example-${BucketNameSuffix}

Si no pasa ningún parámetro a la plantilla, BucketNameSuffix se completará con el valor almacenado en /example/dev/BucketNameSuffix . Si desea usar, por ejemplo, un valor de producción (señalado por /example/ prod /example/prod/BucketNameSuffix ), debe especificar el valor para el parámetro BucketNameSuffix , pero en lugar de pasar el valor real, debe pasar el nombre alternativo del parámetro a usar , entonces pasaría /example/prod/BucketNameSuffix .

 aws cloudformation update-stack --stack-name example-dev \ --template-body file://./example-stack.yml aws cloudformation update-stack --stack-name example-prod \ --template-body file://./example-stack.yml \ --parameters ParameterKey=BucketNameSuffix,ParameterValue=/example/prod/BucketNameSuffix

Una publicación de blog de AWS no tan buena sobre esto: https://aws.amazon.com/blogs/mt/integrating-aws-cloudformation-with-aws-systems-manager-parameter-store/

Debido a que pasar millones de parámetros sin sentido parece estúpido, en realidad podría generar una plantilla específica del entorno y establecer el valor Default: en la plantilla generada, de modo que para el entorno de producción, el valor Default sería /example/ prod /example/prod/BucketNameSuffix y luego puedo actualizar la pila de prod sin pasar cualquier parámetro.

over 4 years ago · Santiago Trujillo Denunciar

0

Puedes hacer uso de Fn::Únete aquí.

Aquí hay un pseudocódigo.

Tendrá que tomar Environment como parámetro, lo que ya está haciendo.

Creando la cadena requerida en los recursos donde se requiere DatabaseUrl.

 Resources : Instance : Type : 'AWS::Some::Resource' Properties : DatabaseURL : !Join [ "", [ "/database/", !Ref "Environment" , "/url ] ]

Espero que esto ayude.

Nota: no puede asignar un valor a un parámetro de forma dinámica utilizando alguna lógica de cálculo. Todos los valores de los parámetros definidos deben proporcionarse como Entrada.

over 4 years ago · Santiago Trujillo Denunciar

0

Me gusta Fn::Sub , que es mucho más limpio y fácil de leer.

 !Sub "/database/${Environment}/url"
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda