カスタム AMI の使用 - AWS OpsWorks

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

カスタム AMI の使用

重要

この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post または AWS Premium Support を通じて AWS Support チームにお問い合わせください。

AWS OpsWorks スタックは、カスタム Amazon マシンイメージ (AMIsつの方法でインスタンスをカスタマイズできます。どちらのアプローチでも、インストールするパッケージおよびパッケージバージョンの種類や設定方法などをコントロールできます。ただし、それぞれの利点は異なるため、どちらが最適であるかは要件によって変わります。

カスタム AMI の使用を検討する必要がある主な状況は、次のとおりです。

  • インスタンスの起動後に特定のパッケージをインストールするのではなく、特定のパッケージを事前にバンドルする場合。

  • レイヤーに一貫したベースイメージを提供するようにパッケージ更新のタイミングを管理する場合。

  • インスタンス (特に負荷ベースのインスタンス) を迅速に起動する場合。

Chef レシピの使用を検討すべき主な場合は、次のとおりです。

  • カスタム AMI より柔軟性が高い場合。

  • 更新が容易な場合。

  • 実行中のインスタンスで更新を実行できる場合。

現実的には、両方の手法を組み合わせることが最適なソリューションと考えることもできます。recipe の詳細については、「クックブックとレシピ」を参照してください。

カスタム AMIs と AWS OpsWorks スタックの連携方法

インスタンスにカスタム AMI を指定するには、新しいインスタンスを作成するときにインスタンスのオペレーティングシステムとしてカスタム AMI を使用するを選択します。次に、 AWS OpsWorks スタックはスタックのリージョンにあるカスタム AMIs のリストを表示し、リストから適切なものを選択します。詳細については、「レイヤーへのインスタンスの追加」を参照してください。

注記

スタックのデフォルトオペレーティングシステムとして特定のカスタム AMI を指定することはできません。スタックのデフォルトオペレーティングシステムとして Use custom AMI を設定できますが、特定の AMI を指定できるのは、新しいインスタンスをレイヤーに追加するときのみです。詳細については、「レイヤーへのインスタンスの追加」および「新しいスタックを作成する」を参照してください。カスタム AMI またはコミュニティで作成された AMI から作成された他のオペレーティングシステム (CentOS 6.x など) を使用してインスタンスを作成できる場合もありますが、そのような方法は公式にはサポートされていません。

このトピックでは、カスタム AMI を作成または使用する前に考慮する必要がある一般的な問題について説明します。

開始時の動作

インスタンスを起動すると、 AWS OpsWorks スタックは指定されたカスタム AMI を使用して新しい Amazon EC2 インスタンスを起動します。 AWS OpsWorks スタックは cloud-init を使用してインスタンスに AWS OpsWorks スタックエージェントをインストールし、エージェントはインスタンスの Setup レシピと Deploy レシピを実行します。インスタンスがオンラインになると、エージェントは新しく追加されたインスタンスを含め、スタックのすべてのインスタンスに対して Configure レシピを実行します。

レイヤーの選択

AWS OpsWorks スタックエージェントは通常、インストールされているパッケージと競合しません。ただし、インスタンスは少なくとも 1 つのレイヤーのメンバーである必要があります。 AWS OpsWorks スタックは常にそのレイヤーのレシピを実行するため、問題が発生する可能性があります。カスタム AMI を持つインスタンスをそのレイヤーに追加する前に、レイヤーのレシピによるインスタンスへの操作について正確に理解する必要があります。

インスタンスでレイヤータイプ別に実行されるレシピを確認するには、そのレイヤーを含むスタックを開きます。次に、ナビゲーションペインの [Layers] (レイヤー) をクリックし、目的のレイヤーの [Recipes] (レシピ) をクリックします。実際のコードを表示するには、レシピの名前をクリックします。

注記

Linux AMIs、競合の可能性を減らす方法の 1 つは、 AWS OpsWorks スタックを使用して、カスタム AMI の基礎となるインスタンスをプロビジョニングおよび設定することです。詳細については、「AWS OpsWorks スタックインスタンスからカスタム Linux AMI を作成する」を参照してください。

アプリケーションの処理

パッケージに加えて、AMI にアプリケーションを含めたい場合もあります。大規模で複雑なアプリケーションがある場合、AMI に含めると、インスタンスの起動時間を短縮できます。AMI に小さなアプリケーションを含めることはできますが、通常、 AWS OpsWorks スタックによるアプリケーションのデプロイに比べて、時間上の利点はほとんどまたはまったくありません。

1 つのオプションは、アプリケーションを AMI に含めると共に、リポジトリからインスタンスにアプリケーションをデプロイするアプリケーションを作成することです。このアプローチでは、起動時間が短縮されるだけでなく、インスタンスの実行後にアプリケーションを更新する際に便利な方法を使用できます。Chef レシピはべき等であるため、リポジトリのバージョンがインスタンスのバージョンと同じである限り、デプロイレシピはアプリケーションを変更しません。

AWS OpsWorks スタック用のカスタム AMI の作成

AWS OpsWorks スタックでカスタム AMI を使用するには、まずカスタマイズされたインスタンスから AMI を作成する必要があります。2 つのオプションから選択できます。

  • Amazon EC2 コンソールまたは API を使用して、AWS OpsWorks スタック対応 AMI のいずれかの 64 ビット版に基づくインスタンスを作成およびカスタマイズします。

  • Linux AMIs OpsWorks を使用して、関連するレイヤーの設定に基づいて Amazon EC2 インスタンスを作成します。

カスタム Linux AMI を作成する前に、 /tmpパーティションnoexecで を無効にして、 AWS OpsWorks スタックがカスタム Linux インスタンスにエージェントをインストールできるようにします。

注記

AMI はすべてのインスタンスタイプに対応している訳ではないことにご注意ください。開始する AMI が、使用するインスタンスタイプと互換性があることを確認してください。特に、R3 インスタンスタイプには、ハードウェアアシストによる仮想化(HVM)AMI が必要です。

次に Amazon EC2 コンソールまたは API を使用して、カスタマイズしたインスタンスからカスタム AMI を作成します。インスタンスをレイヤーに追加し、カスタム AMI を指定することで、同じリージョンのすべてのスタックでカスタム AMI を使用できます。カスタム AMI を使用するインスタンスの作成方法の詳細については、「レイヤーへのインスタンスの追加」を参照してください。

注記

デフォルトでは、 AWS OpsWorks スタックは起動時にすべての Amazon Linux 更新プログラムをインストールし、最新のリリースを提供します。また Amazon Linux は新しいバージョンを約 6 か月ごとにリリースしており、大きな変更が実施される場合もあります。デフォルトで、Amazon Linux に基づくカスタム AMI は、新しいバージョンがリリースされると自動的に更新されます。カスタム AMI は特定の Amazon Linux バージョンにロックしておき、新しいバージョンをテストするまで更新を延期できるようにすることをお勧めします。詳細については、「AMI を特定のバージョンに固定するにはどうすればよいですか?」を参照してください。

Amazon EC2 を使用したカスタム AMI の作成

カスタム AMI を作成する最も簡単な方法 (Windows AMI の唯一のオプション) は、Amazon EC2 コンソールまたは API を使用してタスク全体を実行することです。次のステップの詳細については、[独自の AMI の作成] を参照してください。

Amazon EC2 コンソールまたは API を使用してカスタム AMI を作成するには
  1. いずれかのAWS OpsWorks スタック対応 AMI の 64 ビット版を使用してインスタンスを作成します。

  2. インスタンスを設定し、パッケージをインストールするなどして、ステップ 1 からインスタンスをカスタマイズします。インストールしたものすべてが、AMI に基づいてすべてのインスタンス上で再現されるため、特定のインスタンスに固有の項目は含めないでください。

  3. インスタンスを停止し、カスタム AMI を作成します。

AWS OpsWorks スタックインスタンスからカスタム Linux AMI を作成する

カスタマイズされた AWS OpsWorks Stacks Linux インスタンスを使用して AMI を作成するには、 によって作成されたすべての Amazon EC2 インスタンスに一意の ID OpsWorks が含まれていることに注意してください。このようなインスタンスからカスタム AMI を作成した場合、その ID が含まれ、AMI に基づくすべてのインスタンスが同じ ID を持つことになります。カスタム AMI に基づくインスタンスが確実に固有の ID を得るには、AMI を作成する前に、カスタマイズしたインスタンスから ID を削除する必要があります。

AWS OpsWorks スタックインスタンスからカスタム AMI を作成するには
  1. Linux スタックを作成し、1 つ以上のレイヤーを追加して、カスタマイズしたインスタンスの設定を定義します。組み込みレイヤー、完全なカスタムレイヤーに加え、必要に応じてカスタマイズしたレイヤーを使用できます。詳細については、「AWS OpsWorks スタックのカスタマイズ」を参照してください。

  2. レイヤーを編集し、 を無効にします AutoHealing。

  3. 任意の Linux ディストリビューションを使用してインスタンスをレイヤーに追加し、起動します。Amazon EBS-backed インスタンスの使用をお勧めします。インスタンスの詳細ページを開き、後で使用できるよう Amazon EC2 ID を記録します。

  4. インスタンスがオンラインである場合は、SSH でログインし、インスタンスのオペレーティングシステムに応じて次の 4 つのステップのいずれかを実行します。

  5. Chef 11 または Chef 12 スタックの Amazon Linux インスタンス、または Chef 11 スタックの Red Hat Enterprise Linux 7 インスタンスの場合、次を実行します。

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef

      注記

      Chef 12 スタックのインスタンスについて、このコマンドに次の 2 つのフォルダを追加します。

      • /var/chef

      • /opt/chef

    4. sudo rpm -e opsworks-agent-ruby

    5. sudo rpm -e chef

  6. Chef 12 スタックの Ubuntu 16.04 LTS または 18.04 LTS インスタンスでは、次を実行します。

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    3. sudo apt-get -y remove chef

    4. sudo dpkg -r opsworks-agent-ruby

    5. systemctl stop apt-daily.timer

    6. systemctl stop apt-daily-upgrade.timer

    7. rm /var/lib/systemd/timers/stamp-apt-daily.timer

    8. rm /var/lib/systemd/timers/stamp-apt-daily-upgrade.timer

  7. Chef 12 スタックの他のサポートされている Ubuntu バージョンでは、次を実行します。

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    4. sudo apt-get -y remove chef

    5. sudo dpkg -r opsworks-agent-ruby

  8. Chef 12 スタックの Red Hat Enterprise Linux 7 インスタンスの場合は、次を実行します。

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef /var/chef

    3. sudo rpm -e opsworks-agent-ruby

    4. sudo rpm -e chef

  9. このステップは、インスタンスタイプによって異なります。

  10. スタックをクリーンアップするには、 AWS OpsWorks スタックコンソールに戻り、スタックからインスタンスを削除します

カスタム Windows AMI の作成

次の手順では、Windows Server 2022 Base 用のカスタム AMI を作成します。Amazon EC2 管理コンソールで、他の Windows Server オペレーティングシステムを選択できます。

重要

現在、 AWS OpsWorks スタックエージェントは、英語 - 米国 (en-US) 以外のシステム UI 言語を使用する Windows ベースのインスタンスにはインストールできず、 AWS OpsWorks スタックは管理できません。

Sysprep を使用したカスタム Windows AMI の作成

通常、Sysprep を使用してカスタム Windows AMI を作成するとインスタンスの起動が遅くなりますが、よりクリーンなプロセスとなります。で作成されたイメージから作成されたインスタンスの初回起動には、セットアップや設定など、Sysprepアクティビティ、再起動、 AWS OpsWorks スタックのプロビジョニング、および最初の AWS OpsWorks スタックの実行により、さらに時間がSysprepかかります。Amazon EC2 コンソールで、カスタム Windows AMI を作成するためのステップを完了します。

Sysprep でカスタム Windows AMI を作成するには
  1. Amazon EC2 コンソールで、[Launch Instance (インスタンスを起動する)] を選択します。

  2. [Microsoft Windows Server 2022 Base] を見つけて、[選択] を選択します。

  3. 目的のインスタンスタイプを選択し、[Configure Instance Details] を選択します。AMI で、マシン名、ストレージ、セキュリティグループ設定などの設定変更を行います。[Launch] (起動する) を選択します。

  4. インスタンスのブートプロセスが終了したら、パスワードを使用して、Windows の [リモートデスクトップ接続] ウィンドウでインスタンスに接続します。

  5. Windows のスタート画面で の開始 を選択し、EC2 コンソールが表示されるec2configserviceまで入力を開始します。 EC2ConfigServiceSettings コンソールを開きます。

  6. 全般 タブで、 UserData 実行を有効にする チェックボックスがオンになっていることを確認します (このオプションは では必須ではありませんがSysprep、 AWS OpsWorks スタックがエージェントをインストールするために必要です)。[Set the computer name of the instance...] (インスタンスのコンピュータ名の設定...) オプションのチェックボックスをオフにします。このオプションをオンにすると、 AWS OpsWorks スタックで再起動が繰り返されることがあるためです。

  7. [Image] (イメージ) タブで、[Administrator Password] (管理者パスワード) を、Amazon EC2 が SSH キーで取得できるパスワードを自動的に生成することを許可する [Random] (ランダム)、または自分のパスワードを指定する [Specify] (指定) のいずれかに設定します。Sysprep はこの設定を保存します。独自のパスワードを指定した場合は、都合の良い場所にパスワードを保存します。[Keep Existing] は選択しないことをお勧めします。

  8. [Apply] を選択し、[Shutdown with Sysprep] を選択します。確認を求められたら、[Yes] を選択します。

  9. インスタンスが停止したら、Amazon EC2 コンソールで [インスタンス] リストのインスタンスを右クリックし、[イメージ] を選択して、[イメージの作成] を選択します。

  10. [Create Image] ページで、イメージの名前と説明を指定し、ボリュームの設定を指定します。終了したら、[Create Image] を選択します。

  11. [Images] ページを開き、イメージが [pending] 段階から [available] に変わるのを待ちます。新しい AMI を使用する準備ができました。

Sysprep を使用しないカスタム Windows AMI の作成

Amazon EC2 コンソールで、カスタム Windows AMI を作成するためのステップを完了します。

Sysprep なしでカスタム Windows AMI を作成するには
  1. Amazon EC2 コンソールで、[Launch Instance] (インスタンスを起動する) を選択します。

  2. [Microsoft Windows Server 2022 Base] を見つけて、[選択] を選択します。

  3. 目的のインスタンスタイプを選択し、[Configure Instance Details] を選択します。AMI で、マシン名、ストレージ、セキュリティグループ設定などの設定変更を行います。[Launch] (起動する) を選択します。

  4. インスタンスのブートプロセスが終了したら、パスワードを使用して、Windows の [リモートデスクトップ接続] ウィンドウでインスタンスに接続します。

  5. インスタンスで、C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml を開き、次の 2 つの設定を変更してから、ファイルを保存して閉じます。

    • Ec2SetPasswordEnabled

    • Ec2HandleUserDataEnabled

  6. リモートデスクトップセッションからの接続を切り、Amazon EC2 コンソールに戻ります。

  7. [Instances] リストで、インスタンスを停止します。

  8. インスタンスが停止したら、コンソールで [Instances] (インスタンス) リストのインスタンスを右クリックし、[Image] (イメージ) を選択して、[Create Image] (イメージの作成) を選択します。

  9. [Create Image] ページで、イメージの名前と説明を指定し、ボリュームの設定を指定します。終了したら、[Create Image] を選択します。

  10. [Images] ページを開き、イメージが [pending] 段階から [available] に変わるのを待ちます。新しい AMI を使用する準備ができました。

カスタム Windows AMI を使用した新しいインスタンスの追加

イメージが [available] 状態に変わったら、カスタム Windows AMI に基づいて新しいインスタンスを作成できます。[Operating system] (オペレーティングシステム) のリストから [Use custom Windows AMI] (カスタム Window AMI を使用する) を選択すると、 AWS OpsWorks Stacks はカスタム AMI のリストを表示します。

カスタム Windows AMI に基づいて新しいインスタンスを追加するには
  1. 新しい AMI が使用可能になったら、 AWS OpsWorks スタックコンソールに移動し、Windows スタックのインスタンスページを開き、ページの下部にある + インスタンスを選択して新しいインスタンスを追加します。

  2. [New] タブの [Advanced] を選択します。

  3. [Operating system] ドロップダウンリストで、[Use custom Windows AMI] を選択します。

  4. [Custom AMI] ドロップダウンリストで、作成した AMI を選択し、[Add Instance] を選択します。

これで、インスタンスを起動して実行できるようになりました。