起動テンプレートのサポート - AWS Batch

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

起動テンプレートのサポート

AWS Batch に EC2 コンピューティング環境で Amazon EC2 起動テンプレートを使用するためのサポートが追加されました。起動テンプレートでは、カスタム AMI を作成する必要なく、AWS Batch コンピューティングリソースのデフォルト設定を変更できます。

注記

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

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

{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvdcz", "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

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

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

注記

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

  • Amazon EC2 のキーペア

  • Amazon EC2 AMI ID

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

  • Amazon EC2 タグ

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

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

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

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

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

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

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

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

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

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

使用している OSAWS CloudFormation、AWS::CloudFormation::Inittype は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==--.閉じる境界の前の行は空白のままにしておく必要があります。

自分で MIME マルチパートファイルを作成するときに使用できる例は、次の通りです。

注記

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

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

例: 既存の Amazon EFS ファイルシステムのマウント

このサンプル MIME マルチパートファイルは、コンピューティングリソースを設定して amazon-efs-utils パッケージをインストールし、既存の Amazon EFS ファイルシステムを /mnt/efs にマウントします。

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-efs-utils runcmd: - file_system_id_01=fs-abcdef123 - efs_directory=/mnt/efs - mkdir -p ${efs_directory} - echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab - mount -a -t efs defaults --==MYBOUNDARY==--

例: デフォルトの Amazon ECS コンテナエージェント設定の上書き

このサンプル MIME マルチパートファイルは、コンピューティングリソースのデフォルトの Docker イメージクリーンアップ設定を上書きします。

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config --==MYBOUNDARY==--

例: 既存の Amazon FSx for Lustre ファイルシステムのマウント

このサンプル MIME マルチパートファイルは、コンピューティングリソースを設定してlustre2.10パッケージを Extras Library から作成し、既存の FSx for Lustre ファイルシステムをにマウントします/scratchそしてマウント名はfsx。この例は Amazon Linux 2 用です。他の Linux ディストリビューションのインストール手順については、Lustre クライアントのインストールAmazon FSx for Lustre ユーザーガイド。詳細については、次を参照してください。Amazon FSx ファイルシステムの自動マウントAmazon FSx for Lustre ユーザーガイド

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" runcmd: - file_system_id_01=fs-0abcdef1234567890 - region=us-east-2 - fsx_directory=/scratch - amazon-linux-extras install -y lustre2.10 - mkdir -p ${fsx_directory} - mount -t lustre ${file_system_id_01}.fsx.${region}.amazonaws.com@tcp:fsx ${fsx_directory} --==MYBOUNDARY==--

コンテナプロパティの volumes および mountPoints メンバーでは、マウントポイントをコンテナにマッピングする必要があります。

{ "volumes": [ { "host": { "sourcePath": "/scratch" }, "name": "Scratch" } ], "mountPoints": [ { "containerPath": "/scratch", "sourceVolume": "Scratch" } ], }