カスタム AMI の使用 - AWS OpsWorks

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

カスタム AMI の使用

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

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

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

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

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

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

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

  • 更新が容易な場合。

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

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

カスタム AMI と AWS OpsWorks スタックの連携の仕組み

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

注記

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

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

開始時の動作

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

Layer の選択

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

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

注記

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

アプリケーションの処理

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

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

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

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

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

  • Linux AMI では、OpsWorks を使用して、関連する Layer の設定に基づく Amazon EC2 インスタンスを作成します。

カスタム Linux AMI を作成する前に、noexec/tmp許可するパーティションAWS OpsWorksカスタム Linux インスタンスにエージェントをインストールするためのスタック。

注記

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

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

注記

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

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

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

Amazon EC2 コンソールまたは API を使用してカスタム AMI を作成するには

  1. いずれかの AWS OpsWorks スタック対応 AMI の 64 ビット版を使用してインスタンスを作成します。

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

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

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

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

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

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

  2. Layer を編集し、自動ヒーリングを無効にします。

  3. 任意の Linux ディストリビューションを使用してインスタンスを Layer に追加し、起動します。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. このステップは、インスタンスタイプによって異なります。

    • Amazon EBS-Backed インスタンスの場合は、を使用します。AWS OpsWorksコンソールをインスタンスを停止する」で説明されているように AMI を作成します。Amazon EBS-Backed Linux AMI の作成..

    • Instance store-backed インスタンスの場合は、「Instance store-backed Linux AMI の作成」に記載されている方法で AMI を作成した後に、AWS OpsWorks スタックコンソールを使用してインスタンスを停止します。

      AMI を作成する際は、必ず証明書ファイルを含めます。たとえば、呼び出すことができます。ec2-bundle-volコマンドを-i引数を-i $(find /etc /usr /opt -name '*.pem' -o -name '*.crt' -o -name '*.gpg' | tr '\n' ',')。バンドルするとき、apt パブリックキーを削除しないでください。デフォルトの ec2-bundle-vol コマンドがこのタスクを処理します。

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

カスタム Windows AMI の作成

次の手順では、Windows Server 2012 R2 用のカスタム AMI を作成します。Amazon EC2 マネジメントコンソールで、他の Windows Server オペレーティングシステムを選択できます。利用できる最も古いリリースの Windows Server は、Windows Server 2003 R2 です。

重要

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

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

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

Sysprep でカスタム Windows AMI を作成するには

  1. Amazon EC2 コンソールで、[] を選択します。インスタンスを起動する

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

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

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

  5. Windows の場合を起動[] 画面で、を起動と入力し、ec2configservice結果が表示されるまで、configサービスセッティングconsole. コンソールを開きます。

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

  7. リポジトリの []イメージタブで、設定Administrator PasswordのいずれかにランダムSSH キーで取得できるパスワードを Amazon EC2 が自動的に生成できるようにするか、またはを指定する独自のパスワードを指定するには。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 コンソールで、[] を選択します。インスタンスを起動する

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

  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. インスタンスが停止したら、Amazon EC2 コンソールで、インスタンスリストで [] を選択します。イメージ[] を選択してから、イメージの作成

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

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

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

イメージが [available] 状態に変わったら、カスタム Windows AMI に基づいて新しいインスタンスを作成できます。[] を選択する場合カスタム Windows AMI の使用からのオペレーティングシステムリスト、AWS OpsWorksスタックには、カスタム AMI のリストが表示されます。

カスタム Windows AMI に基づいて新しいインスタンスを追加するには

  1. 新しい AMI が利用可能になったら、AWS OpsWorks スタックコンソールに移動し、Windows スタックの [Instances (インスタンス)] ページを開き、ページ下部近くにある [+ Instance (+ インスタンス)] を選択して新しいインスタンスを追加します。

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

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

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

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