2016-12-29 19 views
0

runInstances(...)を使用して環境で作成したスナップショットからAWS Java APIを使用して簡単にインスタンスを作成できます。スナップショットは、一連のプロセスやその他のものを自動的に起動するように設定されているので、完全に機能的な設定ができます。AWS Java API - EC2(runInstances)を作成してコマンドを実行する

私がしたいのは、私が設定して起動時間を設定するコマンドをインスタンスが自動的に実行することです。ポーリングなし。これを行うための機能はありますか?

今すぐ私がJava Secure Channel libraryを使用して利用可能になったときにポーリングしています。しかし、私はそれを心配する必要はなく、可能な限りAWSに処理させてもらいたいと思っています。

方法/ときの事を実行に応じて、起動時にコマンドが変化するので、私のようなコマンドを実行する必要があります。インスタンスを作成するため

SomeBashScript.sh -e SOME_ID some_command 
+2

サウンズ? http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts – birryree

+0

私は「ポーリングなしで起動時間を設定する」と「set ATポーリングなしでの起動時間 "です。ユーザーデータ内に起動時刻スクリプトを構成することができ、S3バケット(または他の場所)から別のスクリプトまたは一部のデータをプルして、起動時スクリプトの動作を駆動することができます。 – jarmod

+0

@birryreeはい、それは私が考えていることです - それをまとめる方法を見るためにそのドキュメントを読む必要があります –

答えて

0

APIは、上でそれに利用できる次のような方法があります私はデータを起動するために使用していますRunInstancesRequestクラス:

public void setUserData(String userData)

これは@birryeeはUser Guideで言っていたまさにカバーしています。

私のサンプルアプリケーションは、したがって、物事が起動を取得するために、次のJavaコードを使用している

:あなたは `ユーザーData`たいよう

// create the actual request 
RunInstancesRequest request = new RunInstancesRequest(); 
request.withMinCount(1).withMaxCount(count); 
request.withKeyName("TheOwner"); 
request.withSecurityGroups("SSH"); 
request.withInstanceType(InstanceType.T2Micro); 
request.withImageId("MyImageID"); 
request.withRegion(Region.getRegion(Regions.US_EAST_1)); 

// add a web hook call to notify us when the instance is launched 
request.withUserData("#!/bin/bash\ncurl -X POST http://domain.com/email-me"); 

// launch it 
RunInstancesResult awsResponse = awsClient.runInstances(request); 
+0

あなたのuserdataスクリプトはそれよりも洗練されているはずです。たとえば、カールの試行が失敗する可能性があるため、スクリプトが実行されている時点で、基盤となるネットワークスタックが完全にアップしていない可能性があります。いくつかのアイデアはここにあります:http://stackoverflow.com/questions/24962839/waiting-for-network-link-to-be-up-before-continuing-in-bash – jarmod

+0

@jarmod実際の打ち上げのためにもう少し洗練されています。実際には、画像にあらかじめ展開されたシェルスクリプトがあります。シェルスクリプトは、ループ処理やネットワーク接続を待って、特殊なコマンドを実行するなど、すべてを処理します。でもありがとう! –

関連する問題