0

これが私がやりたいことです。私のcfnテンプレートは、マイクロ、ラージなど、さまざまなタイプのEC2インスタンスを起動するために使用されます。

ただし、そのインスタンスタイプのコアの数に基づいて、userdataスクリプトセクションで特定のことを別の方法で実行したいと思います。

私はどちらにもオープンです:

  1. テンプレート内のコアの数をプログラムで確認する、または
  2. コアの数を入力パラメーターとしてテンプレートに渡します。

そうは言っても、ここに私の2つの質問があります。

  1. テンプレートからシステムにクエリを実行してコア数を取得することは可能ですか?はいの場合、誰かが私に方法を教えてもらえますか?

  2. しかし、もっと重要なことは、テンプレートのuserdataセクションでこの値を使用することは可能ですか?

PS:AWSフォーラムでも同じ質問をしました。

4

1 に答える 1

0

これをプログラムで発見する方法はわかりませんが[以下を参照]、パラメーターの値をuserdataセクションに挿入することはできます。次に例を示します。

UserData: {
  "Fn::Base64": {
    "Fn::Join: [
      "",
      [
        "all of the script up to the missing value",
        {"Ref": "NumberOfCoresParameterName"},
        "all of the script after the missing value"
      ]
    ]
  }
}

この例で"NumberOfCoresParameterNameは、は、値を挿入するパラメータに付ける名前です。

この"Fn::Base64"関数は、その値をUserDataに必要なbase64でエンコードされた文字列に変換します。

"Fn::Join"2つのパラメータを取ります。結合する文字列の間に挿入する文字列(ここでは空の文字列)と、結合する文字列の配列です。他の"Ref"文字列の途中にあるオブジェクトは、パラメーターの値に置き換えられます。

追加のために編集:コアの数を取得する方法はわかりませんが、コマンドを使用してAWSインスタンスタイプを取得できます

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

t1.microこれにより、、などの文字列が返されますm1.large。AWSのドキュメントを使用して、そのインスタンスタイプに含まれるコアの数を確認できます。ただし、この結果をテンプレート内で使用する方法はわかりません。UserDataセクションで必要なことをすべて実行するシェルスクリプトを作成できます。

于 2013-03-03T02:53:25.077 に答える