0

Je suis donc tout nouveau dans CloudFormation et j'essaie de créer une page index.html en utilisant Nginx qui affiche une ligne de texte, le nom DNS public du serveur et la région AWS. Je fais mon code de pile dans YAML. Cela fait partie du code qui est sous UserData:AWS CloudFormation - Métadonnées Ubuntu Nginx

sudo apt-get update 
sudo apt-get install -y nginx 
sudo service nginx start 
cd /var/www/html 
echo "<title>CloudFormation</title><h1>Name</h1><p>This page created entirely by CloudFormation</p>" > index.html 

Je ne sais pas comment passer les métadonnées dans index.html avec la commande echo. J'ai essayé !Sub {EC2Instance.PublicDnsName} qui n'a pas fonctionné. Apparemment, le moyen est d'utiliser le service Web Amazon Metadata et d'obtenir les valeurs en utilisant certaines commandes puis en les passant dans l'index.html mais comme je code dans une pile et que je n'utilise pas la console, je ne connais pas la syntaxe. Quelqu'un at-il des pointeurs?

Répondre

0

Désolé mon code est trop long donc je ne peux pas poster dans le commentaire. Je n'utilise pas yaml mais je peux faire le code attendu dans json comme ci-dessous. J'utilise la syntaxe Fn::Base64 et Fn::join. Vous pouvez le référencer et migrer vers yaml.

"UserData": { 
    "Fn::Base64": { 
    "Fn::Join": [ 
     "", 
     [ 
     "#!/bin/bash", 
     "\n", 
     "sudo apt-get update\n", 
     "sudo apt-get install -y nginx\n", 
     "sudo service nginx start\n", 
     "\n", 
     "cat > /var/www/html/index.html << \"EOF\"\n", 
     "<title>CloudFormation</title>\n", 
     "<h1>Name</h1><p>This page created entirely by CloudFormation. Author: ", 
     { 
      "Ref": "Author_name_in_parameter" 
     }, 
     "</p>\n", 
     "EOF\n", 
     "\n" 
     ] 
    ] 
    } 
}