web-dev-qa-db-ja.com

コマンドラインでログイン中にec2 Linuxインスタンス情報を取得するにはどうすればよいですか(パブリックDNS、AMIなど)

Linuxec2インスタンスにSSH接続するときにどのインスタンスを使用しているかを特定する方法が必要です。コマンドラインからインスタンスを一意に識別し、これを http://console.aws.amason.com に関連付けられるようにしたい

次のいずれかが役立ちます。

  AMI
  Private DNS
  Public DNS
  Tags

UbuntuとRedHatのインスタンスを使用しています。

6
Rob Bednark

Boto pythonライブラリなどではなく、bashシェルからこれを実行したいと思います...

169.254.169.254でメタデータサービスをクエリできるはずです。

例えば.

AMI_ID=$(curl http://169.254.169.254/latest/meta-data/AMI-id)

使用可能なメタデータのリストを取得できます。

curl http://169.254.169.254/latest/meta-data/

これは http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html に記載されています

注:私はopenstackのメタデータサービスに慣れていますが、これはAmazon EC2サービスをモデルにしています。利用可能なデータの量とタイプは異なりますが、データへのアクセスは同じです。

14
cas

個人的には、ファクトを実行するだけです。 (人形の一部)

 ec2_AMI_id => AMI-ffffff 
 ec2_AMI_launch_index => 0 
 ec2_AMI_manifest_path =>(不明)
 ec2_block_device_mapping_ebs1 => /dev/sda[._ > /dev/sdf
ec2_block_device_mapping_ephemeral0 => /dev/sdb
ec2_block_device_mapping_ephemeral1 => /dev/sdc
ec2_block_device_mapping_ephemeral2 =>/dev__em__ephemeral2 =>/dev/sdd dev/sde 
 ec2_block_device_mapping_root => /dev/sda1
ec2_hostname => ip-xxx.xxx.xxx.xxx.ap-southeast-1.compute.internal 
 ec2_instance_id => i-e999fff4 
 ec2_instance_type => m1.medium 
 ec2_kernel_id => aki-a9999af4 
 ec2_local_hostname => ip-xxx.xxx.xxx.xxx.ap-southeast-1.compute .internal 
 ec2_local_ipv4 => xxx.xxx.xxx.xxx 
 ec2_placement_availability_zone => ap-southeast-1b 
 ec2_profile => default-paravirtual 
 ec2_public_hostname => ec -xxx.xxx.xxx.xxx.ap-southeast-1.compute.amazonaws.com 
 ec2_public_ipv4 => xxx。 xxx.xxx.xxx 
1
Sirex

EC2インスタンスの情報を取得するには、2つの方法を使用できます。

  1. EC2APIからインスタンスメタデータとユーザーデータにアクセスする

    インスタンスのCLIから、次のURIを使用してすべてのインスタンスメタデータを取得します。

    http://169.254.169.254/latest/meta-data/

    利用可能なカテゴリのリストが表示されます。 AMI IDが必要な場合は、curlリクエストを作成します。

    curl http://169.254.169.254/latest/meta-data/AMI-id

  2. インスタンスメタデータクエリツールを使用する

    これは基本的に最初のメソッドのラッパーです。 https://aws.Amazon.com/code/1825 を参照してください。

    このツールがプリインストールされているインスタンスタイプもあれば、ツールをダウンロードしてインストールする必要があるインスタンスタイプもあります。

    ツールが表示されたら、次のコマンドを実行します。

    ec2metadata

    すべてのインスタンスプロパティのリストが表示されるはずです。これは、その情報をプログラムで使用するのに非常に便利です。

SSH経由でシェルにログインしているときにインスタンスを識別したい場合は、インスタンスの起動時にEC2のユーザーデータ機能を使用してCLIプロンプトにインスタンスIDを追加できます。

インスタンスを起動するときに、ユーザーデータフィールドに次のスクリプトを追加するだけです。

#cloud-config
apt_upgrade: false
preserve_hostname: true
runcmd:
  - hostname "`ec2metadata --instance-id`"
  - echo "127.0.0.1 `ec2metadata --instance-id`" >> /etc/hosts
  - echo "`ec2metadata --instance-id`" > /etc/hostname

このスクリプトは開始時に実行され、インスタンスのホスト名をインスタンスIDで変更します。

上記の2つの方法のいずれかと、メタデータ属性のいずれかを使用して、インスタンスを識別できます。

0

たぶんこんな感じ?

AmazonEC2およびAmazonS3へのシンプルなコマンドラインアクセス http://aws.Amazon.com/developertools/739

0
David Csonka