で Amazon EC2 起動テンプレートを使用する AWS Batch - AWS Batch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

で Amazon EC2 起動テンプレートを使用する AWS Batch

AWS Batch はAmazon EC2 EC2 起動テンプレートの使用をサポートします。起動テンプレートを使用すると、カスタマイズされた AMIs を作成することなく、 AWS Batch コンピューティングリソースのデフォルト設定を変更できます。

注記

起動テンプレートは AWS Fargate リソースではサポートされていません。

コンピューティング環境に関連付ける前に、起動テンプレートを作成する必要があります。起動テンプレートは、Amazon EC2 コンソールから作成することができます。または、 AWS CLI または AWS SDK を使用できます。たとえば、次の JSON ファイルは、デフォルトの AWS Batch コンピューティングリソース AMI の Docker データボリュームのサイズを変更し、暗号化するように設定する起動テンプレートを表します。

{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Encrypted": true, "VolumeSize": 100, "VolumeType": "gp2" } } ] } }

という名前のファイルに JSON を保存lt-data.jsonし、次の AWS CLI コマンドを実行することで、前の起動テンプレートを作成できます。

aws ec2 --region <region> create-launch-template --cli-input-json file://lt-data.json

起動テンプレートの詳細については、「Amazon EC2 ユーザーガイド」の「起動テンプレートからのインスタンスの起動」を参照してください。

起動テンプレートを使用してコンピューティング環境を作成する場合、次の既存のコンピューティング環境パラメータを起動テンプレートに移動できます。

注記

上記のパラメータ (Amazon EC2 タグ以外) が起動テンプレートおよびコンピューティング環境設定の両方で指定されているとします。その場合は、コンピューティング環境パラメータが優先されます。Amazon EC2 タグは、起動テンプレートとコンピューティング環境設定間でマージされます。タグキーの対立がある場合、コンピューティング環境設定の値が優先されます。

  • Amazon EC2 のキーペア

  • Amazon EC2 AMI ID

  • セキュリティグループ ID

  • Amazon EC2 タグ

次の起動テンプレートパラメータは、 によって無視されます AWS Batch。

  • インスタンスタイプ (コンピューティング環境作成時にインスタンスタイプを指定)

  • インスタンスロール (コンピューティング環境作成時にインスタンスロールを指定)

  • ネットワークインターフェイスサブネット (コンピューティング環境の作成時に、サブネットを指定)

  • インスタンス市場オプション (スポットインスタンス設定を制御するAWS Batch 必要があります)

  • API の終了を無効にする (インスタンスのライフサイクルを制御するAWS Batch 必要がある)

AWS Batch は、インフラストラクチャの更新中にのみ、起動テンプレートを新しい起動テンプレートバージョンで更新します。詳細については、「コンピューティング環境を更新します。」を参照してください。

起動テンプレートのデフォルトと上書き

コンピューティング環境のデフォルトの起動テンプレートと、特定のインスタンスタイプとファミリーの上書き起動テンプレートを定義できます。これは、コンピューティング環境のほとんどのインスタンスタイプにデフォルトのテンプレートが使用されるようにするために役立ちます。

置換変数 $Default$Latestは、特定のバージョンに名前を付ける代わりに使用できます。オーバーライド起動テンプレートを指定しない場合、デフォルトの起動テンプレートが自動的に適用されます。

$Default または $Latest変数のいずれかを使用する場合、 AWS Batch はコンピューティング環境の作成時に現在の情報を適用します。デフォルトまたは最新バージョンが今後変更される場合は、UpdateComputeEnvironment または AWS Management Console - を使用して情報を更新する必要があります AWS Batch。

柔軟性を高めるために、特定のコンピューティングインスタンスタイプまたはファミリーに適用されるオーバーライド起動テンプレートを定義できます。

注記

コンピューティング環境ごとに最大 10 (10) 個のオーバーライド起動テンプレートを指定できます。

targetInstanceTypes パラメータを使用して、このオーバーライド起動テンプレートを使用するインスタンスタイプまたはファミリーを選択します。インスタンスタイプまたはファミリーは、まず instanceTypesパラメータで識別する必要があります。

起動テンプレートの上書きを定義し、後で削除する場合は、空の配列を渡して UpdateComputeEnvironment API オペレーションで overridesパラメータの設定を解除できます。UpdateComputeEnvironment API オペレーションを送信するときに、 overridesパラメータを含めないことを選択することもできます。詳細については、「LaunchTemplateSpecification.overrides」を参照してください。

詳細については、 AWS Batch API リファレンスガイドのLaunchTemplateSpecificationOverride.targetInstanceTypes「」を参照してください。

起動テンプレートの Amazon EC2 ユーザーデータ

起動テンプレート内の Amazon EC2 ユーザーデータを、cloud-init をインスタンス起動時に提供できます。ユーザーデータは、以下を含む一般的な設定シナリオを実行できます。ただし、これらに限定されるものではありません。

起動テンプレートの Amazon EC2 ユーザーデータは、MIME マルチパートアーカイブの形式であることが必要です。これは、ユーザーデータがコンピューティングリソースの設定に必要な他のユーザー AWS Batch データとマージされるためです。複数のユーザーデータブロックと単一の MIME マルチパートファイルを組み合わせることができます。たとえば、Amazon ECS コンテナエージェントの設定情報を書き込むユーザーデータシェルスクリプトを使用して、Docker デーモンを設定するクラウドブートフックを組み合わせることができます。

を使用している場合は AWS CloudFormation、AWS::CloudFormation::Init タイプを cfn-init ヘルパースクリプトとともに使用して、一般的な設定シナリオを実行できます。

MIME マルチパートファイルには次のコンポーネントが含まれます。

  • コンテンツの種類およびパート境界の宣言: Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • MIME バージョンの宣言: MIME-Version: 1.0

  • 次のコンポーネントを含む 1 つ以上のユーザーデータブロック:

    • ユーザーデータブロックの始まりを示す開始境界: --==BOUNDARY==。この境界の前の行は空白にしておく必要があります。

    • ブロックのコンテンツの種類の宣言: Content-Type: text/cloud-config; charset="us-ascii"。コンテンツの種類の詳細については、Cloud-Init のドキュメントを参照してください。コンテンツタイプ宣言の後の行は空白にしておく必要があります。

    • ユーザーデータのコンテンツ (例えば、シェルコマンドや cloud-init ディレクティブのリスト)。

  • MIME マルチパートファイルの終わりを示す、終了境界: --==BOUNDARY==--。この境界の前の行は空白にしておく必要があります。

注記

Amazon EC2 コンソールの起動テンプレートにユーザーデータを追加するには、ユーザーデータをプレーンテキストとして貼り付けます。または、ファイルからアップロードすることもできます。 AWS CLI または AWS SDK を使用する場合は、この base64 JSON ファイルに示すように、CreateLaunchTemplate を呼び出すときに、まずユーザーデータをエンコードし、その文字列を UserDataパラメータの値として送信する必要があります。

{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..." } }