Creating a Task Definition
Amazon ECS上でDocker containersを起動する前にtask definitionを作る必要がある。 新しい task definition を作る
- Amazon ECS コンソールを開く
- ナビゲーショバーから task definitionを登録したいregionを選択する
- ナビゲーションパネルからTask Definitionsを選択
- Task DefinitionsページでCreate new Task Definitionを選択
- (オプション)もしJSON形式のtask defnitionを使いたい場合以下の手順
- Create a Task Defnitionページでページの下までスクロールしてConfigure via JSONを選択
- JSON形式のtask definitionをテキストエリアにペーストしてSaveする
- 情報を確認してCreate
- Task Defnition Nameフィールドで task definitionの名前を入力、255文字(大文字、小文字)、数字、ハイフン、アンダースコアが可能
- (オプション)Task Roleフィールドでは、taskで作られたコンテナがAWS APIsを呼び出すための権限を提供するIAM roleを選択。詳細はIAM Roles for Tasksを参照
note ここではAmazon EC2 Container Service Task Roleをもったroleが示されている。TaskのためのIAM Roleの作り方はCreating an IAM Role and Policy for your Tasksを参照 - (オプション) Network Modeフィールドでは、使いたいDocker network modeを選択。対応可能な network mode はDocker run referenceのNetwork settingsで説明している
defaultのDcoker network modeはbridgeとなっている。もし network mode が noneがセットされていると catiner definitonではport mappingsを指定できない。そしてtaskのコンテナは外部への接続を持たない。bridge modeによって仮想ネットワークスタックの代わりにホストネットワークスタックを使用する事によってより高いパフォーマンスを提供する。しかし、ホストポートに対応しているマップングされたコンテナポートは露出してしまう。ポートマッピングですでに使っていると、一つのcontainer instanceの同じtaskで複数の実体化が出来ない、もしくは動的ポートマッピングの利用が出来ない。 - task definition内にある個々のコンテナは以下のステップ
- Add Cotainer Definitionを選択
- 必要な個々のフィールド満たし、必要であればオプションフィールドも入力(Advanced container configurationメニューでより多くの コンテナパラメータを利用可能)。詳細はTask Definition Parametersを参照
- Addで コンテナを task definitionに追加
- (オプション) Add volumeを選び、task の data volumesを設定。詳細はUsig Data Volumes in Tasksを参照
- Nameフィールドvolumeの名前を入力、255文字まで(大文字小文字)、数字、ハイフン、アンダースコア使う可能
- (オプション) Sourcde Pathフィールドに、container instanceがコンテナに提供するpathを入力。もし空であればDcoker daemonがホストパスをアサインする。もしsourcde pathを指定すると手動で消すまで指定されたロケーションを維持する。もし host container instance上にsource pathが存在しなければ、 docker daemonがそれを作る。もし ロケーションがあればsource pathの中身をコンテナにエクスポートされる。
- Createを選び終了する