Como obter o nome do host correto ao usar o ElasticIP em um modelo do CloudFormation

2

Estou usando um ip elástico em um modelo do CloudFormation

"ServerEIP" : {
 "Type" : "AWS::EC2::EIP",
 "Properties" : {
 }
},

Mais tarde, tenho uma instância do EC2

"Server" : {
  "Type" : "AWS::EC2::Instance",
  ...

Como desejo tornar o endereço IP de várias instâncias conhecidas entre si, consulte aqui , estou usando o EIPAssociation para vincular o Elastic IP à instância do EC2:

"ServerIPAssoc" : {
     "Type" : "AWS::EC2::EIPAssociation",
     "Properties" : {
         "InstanceId" : { "Ref" : "Server" },
         "EIP" : { "Ref" : "ServerEIP" }
     }
 },

Agora, no meu script de inicialização na instância que é executada como init.d-script, estou lendo o "nome do host público" da instância:

PUBLIC_HOSTNAME='curl http://169.254.169.254/latest/meta-data/public-hostname'

Agora, o que acontece aqui é que eu pareço inicialmente receber um nome de host incorreto! O mais provável é o do endereço IP público inicial que é atribuído à instância do EC2 antes da associação do ElasticIP ocorrer!

Eu já tentei esperar o nome do host público, mas ele não teve efeito quando o sono não era muito longo (ou seja, abaixo de 30 segundos).

Existe alguma outra maneira que eu possa garantir que eu recebo o "nome do host público" do endereço IP elástico e não aquele que é jogado fora?!?

    
por centic 05.04.2013 / 15:36

1 resposta

1

No final, usei alguns segundos de atraso durante a inicialização para permitir que o nome do host / ip real fosse resolvido antes de fazer a chamada REST durante a inicialização!

    
por 08.04.2013 / 12:09