0

cloudformation テンプレートを使用して ec2 インスタンスを作成しました。コマンドラインから cloudformation テンプレートの名前を取得できるタグ付け以外の方法はありますか?

4

1 に答える 1

0

方法 1: タグ付け

タグ付けは、そのデータを取得するための最もクリーンで簡単な方法です。いくつかの事前作業を行う必要があり、これは既存のインスタンスでは機能しませんが、高速で信頼性が高くなります。

方法 2: 相互参照

インスタンス ID がある場合は、Cloudformation にその兄弟スタック リソースを検索するように依頼できます。そこから、スタック名、ID などを推測できます。

c = boto.cloudformation.connect_to_region('us-east-1')
c.describe_stack_resources(physical_resource_id='i-830e2869')[0].stack_name

インスタンスがスタックの一部でない場合、Stack for i-830e2869 does not exist400 エラーが発生します。

方法 3: ユーザー データ

私は認めます-これはかなり創造的だったので、それを考えてくれたことに敬意を表します。

curl http://169.254.169.254/latest/user-data | grep 'cfn-init -s' | awk '{print $3}'

これが機能する理由は、Cloudformation によって作成されたインスタンスを実行/opt/aws/bin/cfn-initしてパッケージをインストール/opt/aws/bin/cfn-signalし、作成の成功を報告する必要があり、パラメータの 1 つがスタック名であるためです。

誰かがユーザー データを編集すると失敗しますが、少しハックな感じがしますが、かなり信頼できるようです。スクリプトパラメーターへの依存が脆弱であるため、本番環境での使用はまだお勧めしません。

于 2014-11-30T05:58:55.000 に答える