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

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

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

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

注記

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

コンピューティング環境に関連付ける前に、起動テンプレートを作成する必要があります。Amazon EC2 コンソールで起動テンプレートを作成できます。または、 AWS CLI または an 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

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

  • Amazon EC2 タグ

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

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

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

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

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

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

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

デフォルトおよびオーバーライド起動テンプレート

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

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

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

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

注記

コンピューティング環境ごとに最大 10 個 (10) の起動テンプレートを上書きできます。

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

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

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

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

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

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

を使用している場合 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 または an AWS SDK を使用する場合は、まずユーザーデータをbase64エンコードし、この Word JSON ファイルに示すように、CreateLaunchTemplate を呼び出すときにその文字列を UserDataパラメータの値として送信する必要があります。

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