2017-05-11 14 views
2

EC2インスタンスを作成したいですが、起動する前にインスタンスIDを使用してこのインスタンス用に生成されたものをいくつか行います。 aws ec2 run-instancesまたは別のaws ec2コマンドに、起動せずにAWS EC2インスタンスを作成するオプションがありますか?この問題を回避するには、UUIDを生成してこのインスタンスにタグを付け、インスタンスIDの代わりにこのUUIDを関連付けます。インスタンスの実行直後に停止しますが、よりスマートな方法が好ましいでしょう。EC2インスタンスを起動せずに作成する

+0

"do some stuff"とはどういう意味ですか?完全に動作する前にインスタンスに作用する適切な方法は、インスタンスにいくつかの[userdata](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)を与えることです。インスタンスをシャットダウンしたまま正しいデータから開始したい場合は、別のインスタンスで 'EBS'ボリュームを準備し、それをブートにアタッチすることができますが、私は推薦しません、userdatasは行く方法です。 – iMil

+0

@iMil "do some stuff"は、インスタンスによって使用されるいくつかのリソースを作成することを意味します。 '/ etc/rc.local'に存在しなければ設定できますが、これはより条件付きのコードを作成します。私はユーザーデータの仕組みを知っていますが、インスタンス上で何らかのアクションを実行すると、既存のイベントを開始してから作業を開始する前に、どのように役立つのか分かりません。インスタンスをリセットして、リソースを再度作成しないようにしたい。 – pt12lol

+0

実際にあなたがやろうとしていることは、userdatasがまさにそうであることです。それらは 'rc.local'の前に実行され、実際にあなたのLinuxシステムがマルチユーザステージに入る前に実行されます。別のオプションは、インスタンス作成時に必要な設定を行うAMI(例えば[packer](https://www.packer.io/)を使用)を作成することです。そして、btw、packerはAMIを構築するためにインスタンスを起動します:) – iMil

答えて

3

を私がコメントで@ pt12lolに言っていたように、これはuserdataがためですまさにです。 Amazonのドキュメントから

:あなたがアマゾンEC2でインスタンスを起動すると

、あなたは一般的な自動化された構成タスクを実行しても、インスタンスの後にスクリプトを実行するために使用することができインスタンスにユーザーデータを渡すためのオプションを持っています開始する。 Amazon EC2には、シェルスクリプトとcloud-initディレクティブという2種類のユーザーデータを渡すことができます。また、このデータをプレーンテキスト、ファイル(コマンドラインツールを使用してインスタンスを起動する場合に便利)、またはBase64エンコードのテキスト(API呼び出し用)として起動ウィザードに渡すこともできます。

ユーザDATASはaws CLIまたはAWSコンソールでのuserdataテキストボックスに--user-dataフラグを使用して、例えば、作成時にインスタンスに渡すことができます。

+0

これは質問の最も適用可能な解決策です。 _ – kosa

関連する問題