Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

930
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda