カスタム の使用 AMI - Amazon EMR

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

カスタム の使用 AMI

Amazon 5EMR.7.0 以降を使用する場合、Amazon AMI用のデフォルトの Amazon Linux AMIの代わりにカスタム Amazon Linux を指定できますEMR。カスタムはAMI、次の操作を行う場合に役立ちます。

  • ブートストラップアクションを使用する代わりにアプリケーションを事前インストールして他のカスタマイズを行う。これにより、クラスターの起動時間を短縮し、スタートアップのワークフローを合理化できます。詳細と例については、「事前設定済みインスタンスAMIからのカスタム Amazon Linux の作成」を参照してください。

  • ブートストラップアクションが許可する以上の高度なクラスターおよびノード設定を実装する。

  • 5.24.0 より前の Amazon EMRバージョンを使用している場合は、クラスター内のEC2インスタンスのEBSルートデバイスボリューム (ブートボリューム) を暗号化します。デフォルトの と同様にAMI、カスタムの最小ルートボリュームサイズAMIは、Amazon EMRリリース 6.9 以前では 10GiB、Amazon EMRリリース 6.10 以降では 15GiB です。詳細については、「暗号化された Amazon EBSルートデバイスボリュームAMIを使用したカスタム の作成」を参照してください。

    注記

    Amazon EMRバージョン 5.24.0 以降では、 をキープロバイダー AWS KMS として指定すると、セキュリティ設定オプションを使用してEBSルートデバイスとストレージボリュームを暗号化できます。詳細については、「ローカルディスク暗号化」を参照してください。

カスタム は、クラスターを作成するのと同じ AWS リージョンに存在するAMI必要があります。また、EC2インスタンスアーキテクチャと一致する必要があります。例えば、m5.xlarge インスタンスには x86_64 アーキテクチャがあります。したがって、カスタム を使用して m5.xlarge をプロビジョニングするにはAMI、カスタムにも x86_64 アーキテクチャAMIが必要です。同様に、arm64 アーキテクチャを持つ m6g.xlarge インスタンスをプロビジョニングするには、カスタムに arm64 アーキテクチャAMIが必要です。インスタンスタイプの Linux を識別する方法の詳細については、「Amazon ユーザーガイドAMI」の「Linux の検索」を参照してください。 AMI EC2

重要

EMR Amazon Linux または Amazon Linux 2 Amazon マシンイメージ (AMIs) を実行する クラスターは、デフォルトの Amazon Linux 動作を使用し、再起動が必要な重要および重要なカーネル更新を自動的にダウンロードしてインストールしません。これは、デフォルトの Amazon Linux を実行する他の Amazon EC2インスタンスと同じ動作ですAMI。Amazon EMRリリースが利用可能になった後に、再起動が必要な新しい Amazon Linux ソフトウェア更新 (カーネル、NVIDIA、CUDA更新など) が利用可能になった場合、デフォルトを実行するEMRクラスターインスタンスは、それらの更新を自動的にダウンロードしてインストールAMIしません。カーネルの更新を取得するには、最新の Amazon Linux を使用するEMRように Amazon をカスタマイズできますAMI AMI

事前設定済みインスタンスAMIからのカスタム Amazon Linux の作成

Amazon 用カスタム Amazon Linux を作成するためにソフトウェアをプリインストールし、その他の設定を実行するAMIための基本的な手順EMRは次のとおりです。

  • ベース Amazon Linux からインスタンスを起動しますAMI。

  • インスタンスに接続してソフトウェアをインストールし、他のカスタマイズを行います。

  • 設定したインスタンスの新しいイメージ (AMI スナップショット) を作成します。

カスタマイズ済みのインスタンスに基づいてイメージを作成したら、そのイメージを暗号化されたターゲットにコピーできます (「暗号化された Amazon EBSルートデバイスボリュームAMIを使用したカスタム の作成」を参照)。

チュートリアル: カスタムソフトウェアがインストールされたインスタンスAMIから を作成する

最新の Amazon Linux に基づいてEC2インスタンスを起動するには AMI
  1. AWS CLI を使用して、既存の からインスタンスを作成する次のコマンドを実行しますAMI。MyKeyName をインスタンスへの接続に使用するキーペアに置き換え、MyAmiId 適切な Amazon Linux の ID を持つ AMI。最新の についてはIDs、AMI「Amazon Linux AMI」を参照してください。

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws ec2 run-instances --image-id MyAmiID \ --count 1 --instance-type m5.xlarge \ --key-name MyKeyName --region us-west-2

    InstanceId出力値は、次のステップで MyInstanceId として使用します。

  2. 次のコマンドを実行します。

    aws ec2 describe-instances --instance-ids MyInstanceId

    PublicDnsName 出力値は、次のステップでインスタンスに接続するために使用します。

インスタンスに接続してソフトウェアをインストールするには
  1. Linux インスタンスでシェルコマンドを実行できる SSH接続を使用します。詳細については、「Amazon EC2 ユーザーガイド」の「 を使用した Linux インスタンスへの接続SSH」を参照してください。

  2. 必要なカスタマイズを行います。例:

    sudo yum install MySoftwarePackage sudo pip install MySoftwarePackage
カスタマイズしたイメージからスナップショットを作成するには

Amazon EMRクラスターAMIでカスタム を使用する方法

カスタム を使用してAMI、次の 2 つの方法で Amazon EMRクラスターをプロビジョニングできます。

  • クラスター内のすべてのEC2インスタンスAMIに 1 つのカスタムを使用します。

  • クラスターで使用されるインスタンスEC2タイプAMIsごとに異なるカスタムを使用します。

EMR クラスターをプロビジョニングするときは、2 つのオプションのうち 1 つのみを使用できます。クラスターの起動後に変更することはできません。

Amazon EMRクラスターAMIsで単一または複数のカスタムを使用するための考慮事項
考慮事項 単一カスタム AMI 複数のカスタム AMIs

同じクラスターAMIs内のカスタムで x86 プロセッサと Graviton2 プロセッサの両方を使用する

サポート対象外

サポート対象

AMI カスタマイズはインスタンスタイプによって異なります

サポート対象外

サポート対象

実行中のクラスターに新しいタスクインスタンスグループ/フリートを追加するAMIsときにカスタムを変更します。注:既存のインスタンスグループ/フリートAMIのカスタムを変更することはできません。

サポート対象外

サポート対象

AWS コンソールを使用してクラスターを起動する

サポート対象

サポート対象外

AWS CloudFormation を使用してクラスターを起動する

サポート対象

サポート対象

EMR クラスターAMIで 1 つのカスタムを使用する

クラスターの作成時にカスタム AMI ID を指定するには、次のいずれかを使用します。

Amazon EMR console
コンソールAMIから 1 つのカスタムを指定するには
  1. にサインインし AWS Management Console、https://console.aws.amazon.com/emr で Amazon EMRコンソールを開きます。

  2. 左側のナビゲーションペインの EMRでEC2クラスター を選択し、クラスターの作成 を選択します。

  3. [名前とアプリケーション][オペレーティングシステムオプション] を探します。カスタム AMIを選択し、カスタム フィールドに AMI ID AMIを入力します。

  4. クラスターに適用するその他のオプションを選択します。

  5. クラスターを起動するには、[クラスターの作成] を選択します。

AWS CLI
AMI で 1 つのカスタムを指定するには AWS CLI
  • --custom-ami-id パラメータを使用して、aws emr create-clusterコマンドの実行時に AMI ID を指定します。

    次の例では、20 GiB のブートボリュームAMIで単一のカスタムを使用するクラスターを指定します。詳細については、「Amazon EBSルートデバイスボリュームのカスタマイズ」を参照してください。

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws emr create-cluster --name "Cluster with My Custom AMI" \ --custom-ami-id MyAmiID --ebs-root-volume-size 20 \ --release-label emr-5.7.0 --use-default-roles \ --instance-count 2 --instance-type m5.xlarge

Amazon EMRクラスターAMIsで複数のカスタムを使用する

複数のカスタム を使用してクラスターを作成するにはAMIs、次のいずれかを使用します。

AWS マネジメントコンソールは現在、複数のカスタム を使用したクラスターの作成をサポートしていませんAMIs。

例 - AWS CLIを使用して、複数のカスタム を使用してインスタンスグループクラスターを作成する AMIs

バージョン AWS CLI1.20.21 以降を使用すると、クラスターAMI全体に 1 つのカスタムを割り当てることも、クラスター内のすべてのインスタンスノードAMIsに複数のカスタムを割り当てることもできます。

次の例は、各ノードタイプ (プライマリ、コア、タスク) にわたって 2 つのインスタンスタイプ (m5.xlarge) を使用して作成された均一インスタンスグループクラスターを示します。各ノードには複数のカスタム がありますAMIs。この例では、複数のカスタムAMI設定のいくつかの機能を示しています。

  • クラスターレベルでAMI割り当てられたカスタムはありません。これは、クラスターの起動が失敗する原因となるAMI、複数のカスタム AMIs と単一のカスタム の間の競合を回避するためです。

  • クラスターは、プライマリ、コア、個々のタスクノードAMIsにまたがって複数のカスタムを持つことができます。これにより、プリインストールされたアプリケーション、高度なクラスター設定、暗号化された Amazon EBSルートデバイスボリュームなど、個々のAMIカスタマイズが可能になります。

  • インスタンスグループのコアノードは、1 つのインスタンスタイプと対応するカスタム のみを持つことができますAMI。同様に、プライマリノードは、インスタンスタイプ を 1 つだけ持つことができ、対応するカスタム を持つことができますAMI。

  • クラスターは、複数のタスクノードを持つことができます。

aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-234567 InstanceGroupType=TASK,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-345678 InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-456789
例 - AWS CLIバージョン 1.20.21 以降を使用して、複数のインスタンスタイプと複数のカスタムを持つ実行中のインスタンスグループクラスターにタスクノードを追加します。 AMIs

バージョン 1.20.21 以降を使用すると、実行中の AWS CLIクラスターAMIsに追加するインスタンスグループに複数のカスタムを追加できます。次の例に示すように、CustomAmiId 引数を add-instance-groups コマンドとともに使用できます。同じ複数のカスタム AMI ID (ami-123456) が複数のノードで使用されていることに注意してください。

aws emr create-cluster --instance-groups InstanceGroupType=PRIMARY,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 InstanceGroupType=TASK,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-234567 { "ClusterId": "j-123456", ... } aws emr add-instance-groups --cluster-id j-123456 --instance-groups InstanceGroupType=Task,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-345678
例 - AWS CLIバージョン 1.20.21 以降を使用して、インスタンスフリートクラスター、複数のカスタム AMIs、複数のインスタンスタイプ、オンデマンドプライマリ、オンデマンドコア、複数のコアノードとタスクノードを作成します。
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-456789},{InstanceType=m6g.xlarge, CustomAmiId=ami-567890}']
例 - AWS CLIバージョン 1.20.21 以降を使用して、複数のインスタンスタイプと複数のカスタムを持つ実行中のクラスターにタスクノードを追加します。 AMIs
aws emr create-cluster --instance-fleets InstanceFleetType=PRIMARY,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge, CustomAmiId=ami-123456}'] InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}'] { "ClusterId": "j-123456", ... } aws emr add-instance-fleet --cluster-id j-123456 --instance-fleet InstanceFleetType=TASK,TargetSpotCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-234567},{InstanceType=m6g.xlarge, CustomAmiId=ami-345678}']

AMI パッケージリポジトリの更新の管理

初回起動時に、Amazon Linux はデフォルトでパッケージリポジトリAMIsに接続し、他のサービスを開始する前にセキュリティアップデートをインストールします。要件に応じて、Amazon AMIのカスタム を指定するときに、これらの更新を無効にすることを選択できますEMR。この機能を無効にするオプションは、カスタム を使用する場合にのみ使用できますAMI。デフォルトでは、Amazon Linux カーネル更新および再起動を必要とするその他のソフトウェアパッケージは更新されません。ネットワーク設定では、Amazon S3 HTTPS の Amazon Linux リポジトリを許可HTTPして出力する必要があることに注意してください。そうしないと、セキュリティ更新は成功しません。 Amazon S3

警告

カスタム を指定する場合は、再起動時にインストールされているすべてのパッケージを更新することを強くお勧めしますAMI。パッケージを更新しないことを選択すると、他のセキュリティリスクが生じます。

では AWS Management Console、カスタム AMIを選択すると、更新を無効にするオプションを選択できます。

では AWS CLI、 create-cluster コマンドを使用する--custom-ami-idときに --repo-upgrade-on-boot NONEとともに を指定できます。

Amazon ではAPI、 EMR RepoUpgradeOnBootパラメータNONEに を指定できます。

暗号化された Amazon EBSルートデバイスボリュームAMIを使用したカスタム の作成

Amazon Linux AMI for Amazon の Amazon EBSルートデバイスボリュームを暗号化するにはEMR、暗号化されていない から暗号化されたターゲットAMIにスナップショットイメージをコピーします。暗号化されたEBSボリュームの作成の詳細については、「Amazon ユーザーガイド」の「Amazon EBS暗号化」を参照してください。 EC2 スナップショットAMIのソースは、ベース Amazon Linux にすることもAMI、カスタマイズAMIしたベース Amazon Linux からAMI派生した からスナップショットをコピーすることもできます。

注記

Amazon EMRバージョン 5.24.0 以降では、 をキープロバイダー AWS KMS として指定すると、セキュリティ設定オプションを使用してEBSルートデバイスとストレージボリュームを暗号化できます。詳細については、「ローカルディスク暗号化」を参照してください。

外部キープロバイダーまたは AWS KMS キーを使用して、EBSルートボリュームを暗号化できます。Amazon が でクラスターEMRを作成するには、Amazon がEMR使用するサービスロール (通常はデフォルトの EMR_DefaultRole) に、少なくともボリュームの暗号化と復号を許可する必要がありますAMI。をキープロバイダー AWS KMS として使用する場合は、次のアクションを許可する必要があります。

  • kms:encrypt

  • kms:decrypt

  • kms:ReEncrypt*

  • kms:CreateGrant

  • kms:GenerateDataKeyWithoutPlaintext"

  • kms:DescribeKey"

これを行う最も簡単な方法としては、次のチュートリアルで説明するように、キーユーザーとしてロールを追加します。以下のポリシーステートメントの例は、ロールのポリシーをカスタマイズする必要がある場合に使用してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EmrDiskEncryptionPolicy", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:CreateGrant", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": [ "*" ] } ] }

チュートリアル: KMSキーを使用して暗号化されたルートデバイスボリュームAMIを持つカスタム を作成する

この例の最初のステップは、KMSキーARNの を検索するか、新しいキーを作成することです。キーの作成の詳細については、「AWS Key Management Service デベロッパーガイド」の「キーの作成」を参照してください。次の手順では、デフォルトのサービスロール EMR_DefaultRole をキーユーザーとしてキーポリシーに追加する方法を示します。キーを作成または編集するときに、キーのARN値を書き留めます。を作成するときは、ARN上位の を使用しますAMI。

コンソールを使用して Amazon のサービスロールEC2を暗号化キーユーザーのリストに追加するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/kms で AWS Key Management Service (AWS KMS) コンソールを開きます。

  2. を変更するには AWS リージョン、ページの右上隅にあるリージョンセレクタを使用します。

  3. 使用するKMSキーのエイリアスを選択します。

  4. [Key Users] のキーの詳細ページで、[Add] を選択します。

  5. アタッチダイアログボックスで、Amazon EMRサービスロールを選択します。デフォルトロールの名前は EMR_DefaultRole です。

  6. 添付を選択します。

AMI で暗号化された を作成するには AWS CLI
  • から aws ec2 copy-image コマンド AWS CLI を使用して、暗号化されたEBSルートデバイスボリュームと変更したキーAMIを持つ を作成します。指定した--kms-key-id値を、作成または変更したキーARNの完全部分に置き換えます。

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws ec2 copy-image --source-image-id MyAmiId \ --source-region us-west-2 --name MyEncryptedEMRAmi \ --encrypted --kms-key-id arn:aws:kms:us-west-2:12345678910:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

コマンドの出力は、AMI作成した の ID を提供します。この ID は、クラスターの作成時に指定できます。詳細については、「EMR クラスターAMIで 1 つのカスタムを使用する」を参照してください。ソフトウェアAMIをインストールし、他の設定を実行して、これをカスタマイズすることもできます。詳細については、「事前設定済みインスタンスAMIからのカスタム Amazon Linux の作成」を参照してください。

ベストプラクティスと考慮事項

Amazon AMIのカスタム を作成するときはEMR、次の点を考慮してください。

  • Amazon 7.x EMR シリーズは Amazon Linux 2023 に基づいています。これらの Amazon EMRバージョンでは、カスタム に Amazon Linux 2023 に基づくイメージを使用する必要がありますAMIs。基本カスタム を検索するにはAMI、「Linux の検索AMI」を参照してください。

  • 7.x より前のEMRバージョンの Amazon では、Amazon Linux 2023 AMIsはサポートされていません。

  • Amazon EMR 5.30.0 以降、および Amazon EMR 6.x シリーズは Amazon Linux 2 に基づいています。これらの Amazon EMRバージョンでは、カスタム に Amazon Linux 2 に基づくイメージを使用する必要がありますAMIs。基本カスタム を検索するにはAMI、「Linux の検索AMI」を参照してください。

  • 5.30.0 および 6.x より前の Amazon EMRバージョンでは、Amazon Linux 2 AMIsはサポートされていません。

  • 64 ビット Amazon Linux を使用する必要がありますAMI。32 ビットAMIはサポートされていません。

  • 複数の Amazon EBSボリュームAMIsを持つ Amazon Linux はサポートされていません。

  • カスタマイズは、最新の EBS-backed Amazon Linux AMIに基づいています。Amazon Linux AMIsおよび対応する AMI のリストについてはIDs、「Amazon LinuxAMI」を参照してください。

  • カスタム を作成するために、既存の Amazon EMRインスタンスのスナップショットをコピーしないでくださいAMI。これを行うと、エラーになります。

  • Amazon と互換性のあるHVM仮想化タイプとインスタンスのみがサポートEMRされています。AMI カスタマイズプロセスを進めるEMR際には、Amazon と互換性のあるHVMイメージとインスタンスタイプを必ず選択してください。互換性のあるインスタンスおよび仮想化タイプについては、「サポートされるインスタンスタイプ」を参照してください。

  • サービスロールには に対する起動許可が必要です。そのためAMI、 AMI はパブリックであるか、 の所有者であるか、所有者がAMI共有している必要があります。

  • アプリケーションと同じ名前AMIで にユーザーを作成すると、エラー (、hadoophdfsyarn、 など) が発生しますspark

  • /tmp/var、および /emr ( に存在する場合AMI) の内容は、起動時に/mnt/emrそれぞれ /mnt/tmp/mnt/var、および に移動されます。ファイルは保持されますが、大量のデータがあると、スタートアップに予想以上の時間がかかる場合があります。

  • AMI 作成日が 2018-08-11 の Amazon Linux AMIに基づくカスタム Amazon Linux を使用する場合、Oozie サーバーは起動できません。Oozie を使用する場合は、別の作成日の Amazon Linux AMI ID AMIに基づいてカスタムを作成します。次の AWS CLI コマンドを使用して、2018.03 バージョンのIDsすべての HVM Amazon Linux AMIs のイメージのリストをリリース日とともに返すことができます。これにより、ベースAMIとして適切な Amazon Linux を選択できます。を us-west-2 などのリージョン識別子 MyRegion に置き換えます。

    aws ec2 --region MyRegion describe-images --owner amazon --query 'Images[?Name!=`null`]|[?starts_with(Name, `amzn-ami-hvm-2018.03`) == `true`].[CreationDate,ImageId,Name]' --output text | sort -rk1
  • 標準以外のドメイン名と VPCで を使用する場合は AmazonProvidedDNS、オペレーティングシステムDNS設定で rotateオプションを使用しないでください。

詳細については、「Amazon ユーザーガイド」の「Amazon EBS-backed Linux の作成AMI」を参照してください。 EC2