2013-08-20 20 views
10

tuzu ve bu yazıyı kullanarak örneği oluşturulur otomatik olarak route53 bir örneğini kaydetmek için bir araç kurmak çalışıyorum: örnek-id ve ve ana bilgisayar adını almak için http://cantina.co/2012/01/25/automated-dns-for-aws-instances-using-route-53/Örnek adından AWS'deki örnek nasıl alınır?

makale kullanır ec2-metadata. Bunun yerine örnek ismini elde etmek için bir örnek varsa, bash kullanmanın bir yolu olup olmadığını merak ediyorum. ec2-metadata sadece örnek kimliğini gösterir gibi görünüyor. Şimdiden teşekkürler.

cevap

0

Bash ile neye benzeyeceğinden emin değilsiniz, ancak örnek kimliğini elde edebilmek için örneğin kendisinden bir SDK kullanabilirsiniz. Ec2 başvurusunu sorgular ve ec2 instance kimliğini iletirsiniz. bakmak yakut sdk olur kullanma gibi: - bakınız başta

i = ec2.instances["i-12345678"] 
puts i.dns_name 
10

Birinci ve Amazon EC2Örnek Meta Veri Servis diğer bazı İsimler instance-id yanında bu aradığınız şey olabilir eğer oldukça sağlar Instance Metadata Categories:

  • hostname - örneğinin özel makine adı. Çoklu ağ arayüzlerinin mevcut olduğu durumlarda, bu eth0 cihazını (cihaz numarası 0 olan cihaz) ifade eder.
  • local-hostname - Örneğin özel DNS ana bilgisayar adı. Çoklu ağ arayüzlerinin mevcut olduğu durumlarda, bu eth0 cihazını (cihaz numarası 0 olan cihaz) ifade eder.
  • public-hostname - Örneğin genel DNS'si. Örnek bir VPC'de ise, bu kategori yalnızca enableDnsHostnames özniteliği true olarak ayarlanmışsa döndürülür.

Gerçi AWS Management Console de ortaya konulduğu gibi Adı arıyorsanız, gerçekten onu almak için Tools for Amazon Web Services birini kullanarak başvurmak gerekir - Adı aslında sadece normal etiket olduğunu bariz amaç için çoğu AWS hizmetinde kullanılacak olan Ad (bkz. Tagging Your Amazon EC2 Resources) anahtarıyla. yapabildin, --query seçeneğiyle inşa ile nelerin mümkün olduğunu daha gelişmiş CLI JSON çıkış işleme için

aws ec2 describe-tags \ 
--filters Name=resource-id,Values=i-abcd1234 Name=key,Values=Name \ 
--query Tags[].Value --output text 
+3

You Ayrıca --query komut satırı parametresini --output ile doğrudan örnek ismini çıkarmak için kullanabilirsiniz, örn .: "aws ec2 define-tags --filters Name = resource-id, Values ​​= i-abcd1234 Name = key, Values = Name --query Etiketler []. Value - çıkış metni ' –

+1

@CarlosP - Ben gerçekten önerdiğin daha kolay bir yaklaşımla cevabı güncelledim (' --query 'seçeneği AWS CLI'de mevcut değildi) Git, bunu işaret ettiğin için teşekkürler! –

-2

Yapılandırmada çalışmayan tanım etiketlerinin 'UnauthorizedOperation' hatasıyla başarısız olduğunu gördük.Got bu tarif-örnekleri ile çalışma: ~/.aws/config:

aws ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 

Komut geçerli kullanıcının çenesinde gelen yapılandırma dosyasının [varsayılan] bölümünü bölge ve erişim tuşlarını kullanarak. Başka bir kullanıcının bölge/tuşlarını kullanın ihtiyacı (AWS konsolunun IAM pano bulunabilir), bu gibi komutta bu dosyada başka bölümüne ekleyin örneğin [kullanıcı2] için ve kullanabilirsiniz:

aws --profile user2 ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text