EC2-Classic から VPC への移行 - Amazon Elastic Compute Cloud

EC2-Classic から VPC への移行

2013 年 12 月 4 日以前に AWS アカウントを作成した場合、一部の AWS リージョンでは EC2-Classic がサポートされています。ネットワークの強化や新しいインスタンスの種類など、一部の Amazon EC2 リソースと機能には、仮想プライベートクラウド (VPC) が必要です。いくつかのリソースは EC2-Classic と VPC の間で共有できますが、ほかのリソースは共有できません。詳細については、「EC2-Classic と VPC との間でのリソースの共有とアクセス」を参照してください。VPC 専用の機能を利用するには、VPC に移行することをお勧めします。

EC2-Classic から VPC に移行するには、VPC で EC2-Classic リソースを移行または再作成する必要があります。リソースを完全に移行して再作成するか、ClassicLink を使用して時間の経過とともに増分移行を実行できます。

デフォルト VPC を取得するためのオプション

デフォルト VPC は、設定済みで使用準備ができている VPC であり、VPC 専用のリージョンでのみ使用できます。EC2-Classic をサポートするリージョンの場合、デフォルト以外の VPC を作成してリソースを設定できます。ただし、VPC を自分で設定しない場合や、VPC 設定に特定の要件がない場合は、デフォルト VPC を使用することをお勧めします。デフォルト VPC の詳細については、Amazon VPC ユーザーガイド の「デフォルト VPC とデフォルトサブネット」を参照してください。

以下に示しているのは、EC2-Classic をサポートする AWS アカウントがある場合にデフォルト VPC を使用するためのオプションです。

VPC 専用のリージョンに切り替える

既存のアカウントを使用してデフォルト VPC でリソースを設定する必要があるが、特定のリージョンを使用する必要がない場合は、このオプションを使用します。デフォルト VPC があるリージョンを見つけるには、「サポートされるプラットフォームの検出」を参照してください。

新しい AWS アカウントを作成する

新しい AWS アカウントは VPC のみをサポートしています。各リージョンにデフォルト VPC があるアカウントが必要な場合は、このオプションを使用します。

既存の AWS アカウントを VPC 専用に変換する

既存のアカウントで各リージョンにデフォルト VPC が必要な場合は、このオプションを使用します。アカウントを変換する前に、EC2-Classic リソースをすべて削除する必要があります。一部のリソースを VPC に移行することもできます。詳細については、「リソースを VPC に移行する」を参照してください。

EC2-Classic アカウントを変換するには

  1. EC2-Classic で使用するために作成したリソースを削除または移行します (該当する場合)。これには次のものが含まれます。

    • Amazon EC2 インスタンス

    • EC2-Classic セキュリティグループ (自分で削除できないデフォルトのセキュリティグループを除く)

    • EC2-Classic Elastic IP アドレス

    • クラシックロードバランサー

    • Amazon RDS のリソース

    • Amazon ElastiCache のリソース

    • Amazon Redshift のリソース

    • AWS Elastic Beanstalk のリソース

    • AWS Data Pipeline のリソース

    • Amazon EMR のリソース

    • AWS OpsWorks のリソース

  2. console.aws.amazon.com/support で AWS サポートセンターに移動します。

  3. [Create case (ケースの作成)] を選択します。

  4. [Account and billing support (アカウントおよび請求サポート)] を選択します。

  5. [Type (タイプ)] で、[Account (アカウント)] を選択します。[Category (カテゴリ)] で、[Convert EC2 Classic to VPC (EC2 Classic を VPC に変換)] を選択します。

  6. 必要に応じてその他の詳細を入力し、[Submit (送信)] を選択します。AWS はリクエストを確認し、お客様に連絡して、次の手順を案内します。

リソースを VPC に移行する

一部のリソースを VPC に移行または移動できます。一部のリソースは EC2-Classic から、同じリージョン内および同じ AWS アカウント内の VPC にのみ移行できます。リソースを移行できない場合は、VPC で使用する新しいリソースを作成する必要があります。

前提条件

開始する前に、VPC が必要です。デフォルト VPC がない場合は、以下のいずれかの方法を使用してデフォルト以外の VPC を作成できます。

  • Amazon VPC コンソールで、VPC ウィザードを使用して新しい VPC を作成します。詳細については、「Amazon VPC コンソールウィザードの設定」を参照してください。使用可能ないずれかの設定オプションを使用して VPC をすばやく設定する場合は、このオプションを使用します。

  • Amazon VPC コンソールで、要件に応じて VPC のコンポーネントを設定します。詳細については、「VPC とサブネット」を参照してください。特定のサブネットの番号など、VPC に特定の要件がある場合は、このオプションを使用します。

セキュリティグループ

VPC のインスタンスで EC2-Classic インスタンスと同じセキュリティグループのルールを使用する場合は、Amazon EC2 コンソールを使用して既存の EC2-Classic セキュリティグループのルールを新しい VPC のセキュリティグループにコピーできます。

同じリージョンの同じ AWS アカウントの新しいセキュリティグループにのみセキュリティグループのルールをコピーできます。別のリージョンまたは別の AWS アカウントを使用する場合は、新しいセキュリティグループを作成し、手動でルールを追加する必要があります。詳細については、「Linux インスタンスの Amazon EC2 セキュリティグループ」を参照してください。

セキュリティグループのルールを新しいセキュリティグループにコピーするには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Security Groups] を選択します。

  3. EC2-Classic インスタンスに関連付けられたセキュリティグループを選択してから、[Actions (アクション)]、[Copy to new (新規にコピー)] の順に選択します。

    注記

    EC2-Classic セキュリティグループを特定するには、[VPC ID] 列を確認します。各 EC2-Classic セキュリティグループについて、この列の値は空白または - 記号です。

  4. [Create Security Group] ダイアログボックスで、新しいセキュリティグループの名前と説明を指定します。[VPC] リストから使用している VPC を選択します。

  5. [Inbound] タブには、EC2-Classic セキュリティグループのルールが自動入力されます。必要に応じてルールを変更できます。[Outbound] タブには、すべてのアウトバウンドトラフィックを許可するルールが自動的に作成されます。セキュリティグループのルールの変更方法については、「Linux インスタンスの Amazon EC2 セキュリティグループ」を参照してください。

    注記

    他のセキュリティグループを参照する EC2-Classic セキュリティグループのルールを定義した場合、VPC セキュリティグループでそのルールを使用することはできません。同じ VPC のセキュリティグループを参照するようにルールを変更します。

  6. [作成] を選択します。

Elastic IP アドレス

VPC 用に EC2-Classic で割り当てられた Elastic IP アドレスを移行できます。Elastic IP アドレスを別のリージョンまたは AWS アカウントに移行することはできません。詳細については、「EC2-Classic からの Elastic IP アドレスの移行」を参照してください。

EC2-Classic で割り当てられた Elastic IP アドレスを特定するには

Amazon EC2 コンソールのナビゲーションペインで、[Elastic IP] を選択します。[Scope (スコープ)] 列で、その値は [standard (標準)] です。

または、以下の describe-addresses コマンドを使用します。

aws ec2 describe-addresses --filters Name=domain,Values=standard

AMI とインスタンス

AMI は Amazon EC2 インスタンスを起動するためのテンプレートです。既存の EC2-Classic インスタンスに基づいて独自の AMI を作成し、その AMI を使用して VPC でインスタンスを起動できます。

EC2-Classic インスタンスを特定する

EC2-Classic と VPC の両方で実行されているインスタンスがある場合は、EC2-Classic インスタンスを特定できます。Amazon EC2 コンソールのナビゲーションペインで、[インスタンス] を選択します。[VPC ID] 列で、各 EC2-Classic インスタンスの値は空白または - 記号です。

または、以下の describe-instances AWS CLI コマンドを使用し、--query パラメータを使用して、VpcId の値が null であるインスタンスのみを表示します。

aws ec2 describe-instances --query 'Reservations[*].Instances[?VpcId==`null`]'

AMI を作成する

EC2-Classic インスタンスを特定したら、そのインスタンスから AMI を作成できます。

Windows AMI を作成するには

詳細については、「カスタム Windows AMI の作成」を参照してください。

Linux AMI を作成するには

Linux AMI の作成に使用する方法は、インスタンスのルートデバイスタイプと、インスタンスが実行されるオペレーティングシステムのプラットフォームによって異なります。インスタンスのルートデバイスタイプを確認するには、[Instances] ページに移動し、インスタンスを選択して、[Description ] タブの [Root device type] フィールドの情報を確認します。この値が ebs の場合、インスタンスは EBS-Backed です。この値が instance-storeの場合、インスタンスは、Instance Store-Backed です。また、describe-instances AWS CLI コマンドを使用してルートデバイスタイプを確認することもできます。

以下の表では、インスタンスのルートデバイスタイプ、およびソフトウェアプラットフォームに基づいて Linux AMI を作成するオプションを示しています。

重要

インスタンスタイプには、PV と HVM 仮想化の両方をサポートするものもありますが、どちらか一方のみサポートするものもあります。AMI を使用して現在のインスタンスタイプと異なるインスタンスタイプを起動する場合、そのインスタンスタイプで AMI が提供する仮想化のタイプがサポートされていることを確認します。AMI で PV 仮想化がサポートされ、HVM 仮想化をサポートするインスタンスタイプを使用する場合は、必要に応じて、基になる HVM AMI にソフトウェアを再インストールします。PV および HVM 仮想化の詳細については、「Linux AMI 仮想化タイプ」を参照してください。

インスタンスのルートデバイスタイプ アクション
EBS

インスタンスから EBS-backed AMI を作成します。詳細については、「Amazon EBS-Backed Linux AMI の作成」を参照してください。

インスタンスストア

AMI ツールを使用してインスタンスから instance store-backed AMI を作成します。詳細については、「Instance Store-Backed Linux AMI の作成」を参照してください。

インスタンスストア

instance store-backed インスタンスを EBS-backed インスタンスに変換します。詳細については、「Instance store-backed AMI を Amazon EBS-backed AMI に変換する」を参照してください。

(オプション) AMI を共有またはコピーする

AMI を使用して新しい AWS アカウントでインスタンスを起動するには、最初に AMI を新しいアカウントと共有する必要があります。詳細については、「共有特定の AWS アカウントと AMI をする」を参照してください。

AMI を使用して別のリージョンの VPC でインスタンスを起動するには、最初に AMI をそのリージョンにコピーする必要があります。詳細については、「コピー」を参照してください。

(オプション) Amazon EBS ボリュームにデータを保存する

Amazon EBS ボリュームを作成して、物理ハードドライブを使用するように、そのボリュームを使用してインスタンスのデータをバックアップおよび保存できます。Amazon EBS ボリュームは同アベイラビリティーゾーンのすべてのインスタンスにアタッチおよびデタッチできます。EC2-Classic のインスタンスからボリュームをデタッチして、同じアベイラビリティーゾーンの VPC で起動する新しいインスタンスにアタッチできます。

Amazon EBS ボリュームの詳細については、次のトピックを参照してください。

Amazon EBS ボリュームのデータをバックアップするには、定期的にボリュームのスナップショットを作成します。詳細については、「Amazon EBS スナップショットの作成」を参照してください。必要な場合は、スナップショットから Amazon EBS ボリュームを作成できます。詳細については、「スナップショットからボリュームを作成する」を参照してください。

VPC でインスタンスを起動する

AMI を作成したら、Amazon EC2 起動ウィザードを使用してインスタンスを VPC に起動できます。インスタンスは、既存の EC2-Classic インスタンスと同じデータと構成です。

注記

この機会を利用して、現行世代のインスタンスタイプにアップグレードします。 ただし、AMI が提供する仮想化のタイプ (PV または HVM) をインスタンスタイプがサポートしていることを確認してください。PV および HVM 仮想化の詳細については、「Linux AMI 仮想化タイプ」を参照してください。

VPC でインスタンスを起動するには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ダッシュボードで、[Launch Instance (インスタンスの起動)] を選択します。

  3. [ Choose an Amazon Machine Image] ページで、[My AMIs] カテゴリを選択し、作成した AMI を選択します。または、別のアカウントからの AMI を共有した場合は、[Ownership (所有権)] フィルタリストで [Shared with me (自分と共有)] を選択します。EC2-Classic アカウントからの共有した AMI を選択します。

  4. [Choose an Instance Type] ページで、インスタンスのタイプを選択し、[Next: Configure Instance Details] を選択します。

  5. [Configure Instance Details] ページで、[Network] リストから VPC を選択します。[Subnet] リストから必要なサブネットを選択します。必要な他の詳細を設定し、[Configure Security Group (セキュリティグループの設定)] ページが表示されるまでウィザードの次のページに進みます。

  6. [Select an existing group (既存のグループを選択)] を選択し、VPC 用に作成したセキュリティグループを選択します。[Review and Launch] を選択します。

  7. インスタンスの詳細を確認し、[Launch] を選択して、キーペアを指定し、インスタンスを起動します。

ウィザードの各ステップで設定できるパラメータの詳細については、「インスタンス起動ウィザードを使用してインスタンスを起動する」を参照してください。

Amazon RDS DB インスタンス

EC2-Classic DB インスタンスを同じリージョンの同じアカウントの VPC に移動できます。詳細については、Amazon RDS ユーザーガイド の「DB インスタンスの VPC の更新」を参照してください。

ClassicLink 機能によって、VPC への増分移行の管理が容易になります。ClassicLink を使用すると、EC2-Classic インスタンスを同じリージョンのアカウント内の VPC にリンクできます。これにより、新しい VPC リソースは、プライベート IPv4 アドレスを使用して、EC2-Classic インスタンスと通信できます。アプリケーションが完全に VPC で実行されるようになるまで、機能のコンポーネントを 1 つずつ移行できます。

移行中にプロセスを中断できない多層アプリケーションがある場合など、移行中にダウンタイムを許容できない場合は、このオプションを使用します。

ClassicLink の詳細については、「ClassicLink」を参照してください。

ClassicLink を効果的に使用するには、最初に、VPC に移行する必要があるアプリケーションのコンポーネントを把握し、その機能を移行する順序を確認する必要があります。

たとえば、プレゼンテーションのウェブサーバー、バックエンドのデータベースサーバー、トランザクションの認証ロジックを利用するアプリケーションがあるとします。この場合、認証ロジックから移行プロセスを開始し、次にデータベースサーバー、最後にウェブサーバーの順に移行することを決定できます。

その後、リソースの移行または再作成を開始できます。詳細については、「リソースを VPC に移行する」を参照してください。

新しい VPC のインスタンスを設定し、アプリケーションの機能を VPC で利用できるようにした後、ClassicLink を使用して、新しい VPC のインスタンスと EC2-Classic インスタンスの間のプライベート IP 通信を有効にすることができます。まず、ClassicLink に対して VPC を有効にする必要があります。

ClassicLink 用に VPC を有効にするには

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. 画面左枠のナビゲーションペインで、[Your VPCs] を選択します。

  3. VPC を選択し、[Actions (アクション)]、[Enable ClassicLink (ClassicLink の有効化)] の順に選択します。

  4. [はい、有効化する] を選択します。

VPC で ClassicLink を有効にしたら、EC2-Classic インスタンスを VPC にリンクできます。

インスタンスを VPC にリンクするには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. EC2-Classic インスタンスを選択し、[Actions (アクション)]、[ClassicLink]、[Link to VPC (VPC にリンク)] の順に選択します。

    注記

    インスタンスが running 状態であることを確認します。

  4. ClassicLink が有効な VPC を選択します (ClassicLink が有効な VPC のみが表示されます)。

  5. インスタンスに関連付ける VPC セキュリティグループを 1 つ以上選択します。終了したら [Link to VPC] を選択します。

アプリケーションのサイズや移行する必要がある機能に応じて、ここまでのステップを繰り返して、アプリケーションのすべてのコンポーネントを EC2-Classic から VPC に移動します。

EC2-Classic インスタンスと VPC インスタンスの間で内部コミュニケーションを有効にした後、アプリケーションが EC2-Classic プラットフォーム内のサービスではなく、VPC 内の移行されたサービスを使用するように、アプリケーションを更新する必要があります。そのための詳細な手順は、アプリケーションの設計によって異なります。通常、この作業では、EC2-Classic インスタンスではなく VPC インスタンスの IP アドレスを指すように送信先 IP アドレスを更新します。

このステップを完了し、アプリケーションが VPC から機能していることをテストしたら、EC2-Classic インスタンスを終了し、VPC の ClassicLink を無効にすることができます。また、不要になった EC2-Classic リソースをクリーンアップして、そのリソースに対する料金が発生しないようにすることもできます。たとえば、Elastic IP アドレスを解放し、EC2-Classic インスタンスに関連付けられていたボリュームを削除できます。

例: シンプルなウェブアプリケーションを移行する

この例では、AWS を使用して、ガーデニングウェブサイトをホストします。ウェブサイトを管理するには、EC2-Classic で 3 個のインスタンスを実行します。インスタンス A とインスタンス B は公開ウェブアプリケーションをホストします。これらのインスタンス間でトラフィックの負荷を分散するには Elastic Load Balancing を使用します。インスタンス A と B に Elastic IP アドレスを割り当てると、これらのインスタンスの設定と管理に使用する静的 IP アドレスが割り当てられます。インスタンス C は、ウェブサイトの MySQL データベースを保持します。ドメイン名 www.garden.example.com を登録し、Route 53 を使用すると、ロードバランサーの DNS 名と関連付けられたエイリアスレコードが設定されたホストゾーンが作成されます。


                EC2-Classic のウェブアプリケーション

VPC への移行の最初の部分では、ニーズに適合する VPC アーキテクチャの種類を決定します。この場合、次のように決定しました: ウェブサーバーに 1 つのパブリックサブネット、データベースサーバーに 1 つのプライベートサブネット。ウェブサイトが成長したら、サブネットにウェブサーバーとデータベースサーバーを追加できます。デフォルトでは、プライベートサブネットのインスタンスはインターネットにアクセスできません。ただし、パブリックサブネットのネットワークアドレス変換 (NAT) デバイスを介してインターネットアクセスを有効にすることができます。インターネットから提供されるデータベースサーバーの定期的な更新やパッチをサポートするように、NAT デバイスを設定できます。Elastic IP アドレスを VPC に移行し、パブリックサブネットでロードバランサーを作成してウェブサーバー間のトラフィックの負荷を分散します。


                VPC のウェブアプリケーション

VPC にウェブアプリケーションを移行するには、次の手順に従います。

  • VPC を作成する: この場合、Amazon VPC コンソールで VPC ウィザードを使用して、VPC と サブネットを作成できます。2 番目のウィザード設定では 1 つのプライベートサブネットと 1 つのパブリックサブネットを持つ VPC を作成し、自分のパブリックサブネットの NAT デバイスを起動して、設定します。詳細については、Amazon VPC ユーザーガイド の「パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。

  • セキュリティグループを設定する: EC2-Classic 環境では、ウェブサーバー用に 1 つのセキュリティグループ、データベースサーバー用にもう 1 つのセキュリティグループを設定します。Amazon EC2 コンソールを使用して、VPC の新しいセキュリティグループに、各セキュリティグループのルールをコピーします。詳細については、「セキュリティグループ」を参照してください。

    ヒント

    最初に他のセキュリティグループから参照されるセキュリティグループを作成します。

  • AMI を作成して新しいインスタンスを起動する: いずれかのウェブサーバーから AMI を作成し、データベースサーバーから 2 番目の AMI を作成します。その後、パブリックサブネットで代替ウェブサーバーを起動し、プライベートサブネットで代替データベースサーバーを起動します。詳細については、「AMI を作成する」を参照してください。

  • NAT デバイスを設定する: NAT インスタンスを使用している場合、プライベートサブネットからの HTTP および HTTPS トラフィックを許可するためのセキュリティグループを作成する必要があります。詳細については、「NAT インスタンス」を参照してください。NAT ゲートウェイを使用している場合は、プライベートサブネットからのトラフィックは自動的に許可されます。

  • データベースを設定する: EC2-Classic でデータベースサーバーから AMI を作成したとき、そのインスタンスに保存されているすべての設定情報は AMI にコピーされています。場合によっては、新しいデータベースサーバーに接続し、設定の詳細を更新する必要があります。たとえば、EC2-Classic でウェブサーバーに完全な読み取り、書き込み、変更のアクセス許可を付与するようにデータベースを設定した場合、代わりに新しい VPC ウェブサーバーに同じアクセス許可を付与するように設定ファイルを更新する必要があります。

  • ウェブサーバーを設定する: ウェブサーバーは EC2-Classic のインスタンスと同じ設定にします。たとえば、EC2-Classic でデータベースを使用するようにウェブサーバーを構成した場合、新しいデータベースインスタンスをポイントするようにウェブサーバーの設定を更新します。

    注記

    起動時に別の方法で指定しない限り、デフォルト以外のサブネットで起動されたインスタンスにデフォルトでパブリック IP アドレスは割り当てられません。新しいデータベースサーバーにパブリック IP アドレスが割り当てられていない可能性があります。この場合、新しいデータベースサーバーのプライベート DNS 名を使用するようにウェブサーバーの設定ファイルを更新できます。同じ VPC のインスタンスはプライベート IP アドレスを使用して互いに通信できます。

  • Elastic IP アドレスを移行する: Elastic IP アドレスと EC2-Classic のウェブサーバーの関連付けを解除し、VPC に移行します。移行した後、VPC 内の新しいウェブサーバーに関連付けることができます。詳細については、「EC2-Classic からの Elastic IP アドレスの移行」を参照してください。

  • 新しいロードバランサーを作成する: インスタンスへのトラフィックの負荷を分散するために引き続き Elastic Load Balancing を使用するには、VPC のロードバランサーのさまざまな設定方法を理解している必要があります。詳細については、Elastic Load Balancing ユーザーガイド を参照してください。

  • DNS レコードを更新する: パブリックサブネットのロードバランサーを設定した後、www.garden.example.com ドメインが新しいロードバランサーをポイントしていることを確認します。そのためには、Route 53 で DNS レコードとエイリアスレコードセットを更新します。Route 53 の使用の詳細については、「Route 53 の使用を開始する」を参照してください。

  • EC2-Classic のリソースをシャットダウンする: ウェブアプリケーションが VPC アーキテクチャ内で動作していることを確認した後、EC2-Classic のリソースをシャットダウンして、これらに対する課金を停止することができます。