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

929
Vistas
AWS CloudFormation: la combinación de las funciones ImportValue y Sub provoca un error

Al cargar mi plantilla en CloudFormation, recibo el siguiente error de validación:

Error de validación de plantilla: error de plantilla: el atributo en Fn::ImportValue no debe depender de ningún recurso, valor importado o Fn::GetAZs

Tengo una plantilla de prueba a continuación que reproduce el problema:

 Resources: EC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: ami-3bfab942 InstanceType: t2.micro KeyName: mykeypair UserData: "Fn::Base64": !Sub | #!/bin/bash yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource EC2Instance --configsets testset --region ${AWS::Region} yum -y update Metadata: AWS::CloudFormation::Init: configSets: testset: - "testConfiguration" testConfiguration: commands: CreateTestFile: cwd: "~" command: "Fn::ImportValue": !Sub | touch ${myexport}

Para mantener las cosas tan simples como puedo, básicamente estoy tratando de crear un comando bash usando la exportación. Entonces, en el ejemplo anterior, quiero crear un archivo con un nombre basado en el valor de exportación. No entiendo el mensaje de error en el contexto de lo que intento hacer. He validado que la exportación existe en otra pila que he creado.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El problema no es Sub , pero no está utilizando ImportValue correctamente. Lo que realmente está importando en su código no es myexport , pero touch ${myexport} como un todo. Debe poner su ImportValue dentro de Sub .

Además, si el valor de exportación se llama literalmente myexport , no lo pones dentro ${} ; solo hace esto si es un parámetro que definió en la plantilla.

Podrías cambiar las últimas líneas por esto:

 command: !Sub - "touch ${filename}" - filename: !ImportValue myexport
over 4 years ago · Santiago Trujillo Denunciar

0

Solo como una alternativa de sintaxis a la respuesta aceptada, uno podría preferir hacer:

 command: !Sub ['touch ${filename}', filename: !ImportValue myexport]
over 4 years ago · Santiago Trujillo Denunciar

0

Estaba buscando hacer lo mismo pero con una sintaxis diferente ya que tenía contenido de subfunción de varias líneas. A continuación, se muestra el fragmento de código que funcionó para mí.

 UserData: Fn::Base64: !Sub - | #!/bin/bash -xe echo ${VpcId} - VpcId: !ImportValue MyVPCId
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