Linuxec2インスタンスにSSH接続するときにどのインスタンスを使用しているかを特定する方法が必要です。コマンドラインからインスタンスを一意に識別し、これを http://console.aws.amason.com に関連付けられるようにしたい
次のいずれかが役立ちます。
AMI
Private DNS
Public DNS
Tags
UbuntuとRedHatのインスタンスを使用しています。
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サービスをモデルにしています。利用可能なデータの量とタイプは異なりますが、データへのアクセスは同じです。
個人的には、ファクトを実行するだけです。 (人形の一部)
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
EC2インスタンスの情報を取得するには、2つの方法を使用できます。
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
インスタンスメタデータクエリツールを使用する
これは基本的に最初のメソッドのラッパーです。 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つの方法のいずれかと、メタデータ属性のいずれかを使用して、インスタンスを識別できます。
たぶんこんな感じ?
AmazonEC2およびAmazonS3へのシンプルなコマンドラインアクセス http://aws.Amazon.com/developertools/739