カスタム AMI の使用 - AWS OpsWorks

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

カスタム AMI の使用

重要

AWS OpsWorks Stacks 新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 OpsWorks 日まではコンソール、API、CLI、 CloudFormation およびリソースを通常どおり使用できますが、2024 年 5 月 26 日をもって廃止されます。この移行に備えて、 AWS Systems Manager できるだけ早くスタックをに移行することをおすすめします。詳細については、「AWS OpsWorks Stacks サポート終了に関する FAQ」および「AWS OpsWorks Stacks アプリケーションを Application Manager AWS Systems Manager に移行する」を参照してください。

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

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

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

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

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

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

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

  • 更新が容易な場合。

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

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

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

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

注記

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

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

開始時の動作

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

レイヤーの選択

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

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

注記

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

アプリケーションの処理

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

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

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

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

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

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

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

注記

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

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

注記

デフォルトでは、 AWS OpsWorks Stacks は起動時にすべての 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 Stacks インスタンスからカスタム AMI を作成するには
  1. Linux スタックを作成し、1 つ以上のレイヤーを追加して、カスタマイズしたインスタンスの設定を定義します。組み込みレイヤー、完全なカスタムレイヤーに加え、必要に応じてカスタマイズしたレイヤーを使用できます。詳細については、「AWS OpsWorks スタックのカスタマイズ」を参照してください。

  2. Layer を編集して無効にします 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 Stacks コンソールに戻り、スタックからインスタンスを削除して、スタックをクリーンアップします。

カスタム Windows AMI の作成

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

重要

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

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

通常、Sysprep を使用してカスタム Windows AMI を作成するとインスタンスの起動が遅くなりますが、よりクリーンなプロセスとなります。で作成されたイメージから作成されたインスタンスの初回起動は、Sysprepアクティビティ、再起動、 AWS OpsWorks スタックのプロビジョニング、およびセットアップと設定を含むスタックの初回実行のため、Sysprep時間がかかります。 AWS OpsWorks 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 のスタート画面で [Start] を選択し、結果に EC2 ec2configservice コンソールが表示されるまで入力を開始します。ConfigServiceSettingsコンソールを開きます。

  6. [General] タブで [Enable UserData execution] チェックボックスがオンになっていることを確認します (このオプションは必須ではありませんがSysprep、 AWS OpsWorks Stacks がエージェントをインストールするためには必須です)。[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 Stacks コンソールに移動し、Windows スタックの [Instances] ページを開き、ページの下部にある [+ Instance] を選択して新しいインスタンスを追加します。

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

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

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

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