2017-11-06 6 views
1

私は現在、AWSのJavascript SDKを使用してカスタムEC2インスタンスを起動しています。AWS SDKを使用して新しく作成されたEC2インスタンスでスクリプトを実行するにはどうすればよいですか?

しかし、これらのインスタンスは、Githubからリポジトリをクローン化し、ソフトウェアスタックをインストールし、いくつかのサービスを設定するなど、作成時にいくつかのタスクを実行できるようにする必要があります。

これは、ローカル仮想マシンの展開と同様の動作をエミュレートするためのものです。このケースでは、私は、仕事を終わらせるためにAnabilitiesといくつかのプロビジョニングスクリプトを実行します。

AWSのJavascript SDKを使用してこれを達成するためのAWSのさまざまなサービスの中で最適なオプションは何ですか?

私はたぶん、私がちょうど作成したインスタンスでいくつかのタスクを実行するためにいくつかのランタイムを取得した変数を渡したテンプレートスクリプトを持つことができますか? user-dataについて読んでいますが、AWSのSDKにどのように記述されているのかわかりません。また、カスタマイズ可能ではないようです。一日の終わりに

は、私はこれを行うにはSDKを使用する方法が必要だと思う:

「新しく​​作成されたインスタンスでは、これらを交換し、そのような場所に保存されているこのスクリプトを実行します スクリプト内のプレースホルダの値は、これらを使用して今すぐお返事します。 "

ご意見はありますか?

答えて

1

新しいインスタンスを起動すると、その時点で同じAWS SDK/API呼び出しでuser-dataを指定できます。サーバー初期化コードを置くのに最適な場所です。

SDKを使用してインスタンス上のスクリプトを開始する唯一の方法は、SSMサービスの実行コマンド機能を使用する方法です。しかし、インスタンスにはすでにAWS SSMエージェントがインストールされている必要があります。これはリモートサーバー管理には最適ですが、user-dataは、最初の起動時にインスタンスを初期化する方が適切です。

+0

は、ご返信いただきありがとうございます。 'EC2.runInstances'メソッドで使用される' params'オブジェクトの 'UserData'フィールドの使用を意味しますか? http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#runInstances-property – Joum

+0

これは、JavaScript SDKを使用して起動しているインスタンスに 'user-data'スクリプトを渡す方法です。 –

1

Mark B.が述べたように、UserDataはインスタンスの起動時にコマンドを実行する方法です。あなたがここにjavascriptで質問をタグ付けしたようec2.runInstancesコマンドでこれを渡しに例を示します

let AWS = require('aws-sdk') 
let ec2 = new AWS.EC2({region: 'YOUR_REGION'}) 
// Example commands to create a folder, a file and delete it 
let commands = [ 
    '#!/usr/bin/env bash', 
    'mkdir /home/ubuntu/test', 
    'touch /home/ubuntu/test/examplefile', 
    'rm -rf /home/ubuntu/test' 
]; 
let params = { 
    ...YOUR PARAMS HERE... 
    UserData: new Buffer(commands.join("\n")).toString('base64') 
} 
// You need to encode it with Base64 for it to be executed by the userdata interpreter 
ec2.runInstances(params).promise().then(res => { console.log(res); }) 
関連する問題