環境の移動と Amazon EBS ボリュームのサイズ変更または暗号化 - AWS Cloud9

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

環境の移動と Amazon EBS ボリュームのサイズ変更または暗号化

AWS Cloud9 開発環境を Amazon EC2 インスタンスから別の Amazon EC2 インスタンスに移動できます。たとえば、次のようなアクションを実行したいかもしれません。

  • 正常なインスタンスと比較して、障害がある、または予期しない方法で実行されている Amazon EC2 インスタンスから環境を移転します。

  • 古いインスタンスから最新のシステム更新が適用されているインスタンスに 環境を移転します。

  • 環境が現在のインスタンスに対して使用率が高すぎるまたは低すぎるため、インスタンスのコンピューティングリソースを増やします。

プロジェクトファイルを保持したまま、新しい AWS Cloud9 EC2 環境に移行することで、 AWS Cloud9 サポートされている AMI から別の AMI にアップグレードできます。AMI の別のバージョンへのアップグレードが必要になる理由は次のとおりです。

  • 現在の環境の AMI end-of-life が限界に達し、サポートされなくなりました。

  • 必要なパッケージは、現在の AMI では古くなっています。

環境の Amazon EC2 インスタンスに関連付けられている Amazon Elastic Block Store (Amazon EBS) ボリュームのサイズ変更もできます。たとえば、次のアクションの一方または両方を実行したいかもしれません。

  • インスタンスのストレージ領域が不足している場合、ボリュームのサイズを増やします。

  • 使用していない余分なストレージ領域の支払いを避けるために、ボリュームのサイズを減らします。

環境を移動またはサイズ変更する前に、環境で実行中のプロセスの停止または環境へのスワップファイルの追加を試すことができます。メモリ不足や CPU 使用率が高い場合の対処方法の詳細については、トラブルシューティングを参照してください。

注記

このトピックでは、Amazon EC2 インスタンス間の環境移動または Amazon EBS ボリュームのサイズ変更についてのみ説明します。自社サーバーの 1 つの環境をサイズ変更したり、自社サーバーのいずれかのストレージ領域を変更する場合は、サーバーのドキュメンテーションを参照してください。

最後に、Amazon EBS リソースを暗号化して、 data-at-rest data-in-transit インスタンスとそれに接続された EBS ストレージの両方のセキュリティを確保できます。

環境の移動

移動プロセスをスタートする前に、以下の条件に注意してください。

  • 環境を同じタイプの Amazon EC2 インスタンスに移動することはできません。移動する場合は、新しいインスタンスとして別の Amazon EC2 インスタンスタイプを選択する必要があります。

    重要

    環境を別の Amazon EC2 インスタンスタイプに移動する場合、そのインスタンスタイプは現在のものでもサポートされている必要があります AWS リージョン。 AWS Cloud9 各リージョンごとに使用できるインスタンスタイプをチェックするには、コンソールを使用して EC2 環境の作成している時は表示されている[[Configure settings] (設定の構成) に移動します。インスタンスタイプセクションでの選択は、 AWS リージョン コンソールの右上で選択したものによって決まります。

  • インスタンスタイプを変更する前に、環境に関連付けられている Amazon EC2 インスタンスを停止する必要があります。インスタンスが停止している間、お客様およびメンバーは、停止したインスタンスに関連付けられた環境を使用することはできません。

  • AWS インスタンスを新しいハードウェアに移動しますが、インスタンスの ID は変わりません。

  • インスタンスが Amazon VPC で実行されていて、パブリック IPv4 アドレスを持っている場合は、 AWS アドレスを解放し、インスタンスに新しいパブリック IPv4 アドレスを与えます。インスタンスは、プライベート IPv4 アドレスおよび Elastic IP アドレスまたは IPv6 アドレスを保持します。

  • インスタンスが停止している間のダウンタイムを計画しておいてください。このプロセスには数分かかることがあります。

環境を移動するには
  1. (オプション) 新しいインスタンスタイプに既存のインスタンス上でインストールされていないドライバーが必要な場合は、インスタンスに接続して、そのドライバーをインストールします。詳細については、Linux インスタンス用の Amazon EC2 ユーザーガイドの「インスタンスのサイズ変更の互換性」を参照してください。

  2. 現在 環境を表示しているすべてのウェブブラウザのタブを閉じます。

    重要

    現在環境を表示しているウェブブラウザのタブをすべて閉じないと、 AWS Cloud9 この手順を完了できなくなる可能性があります。具体的には、この手順中に間違ったタイミングで、環境に関連付けられている Amazon EC2 AWS Cloud9 インスタンスを再起動しようとする可能性があります。この手順を完了するまで、インスタンスは停止したままであることが必要です。

  3. まだサインインしていない場合は AWS Management Console、https://console.aws.amazon.com でサインインします。

    の管理者レベルの認証情報を使用してサインインすることをお勧めします。 AWS アカウントこれができない場合は、管理者に確認してください。 AWS アカウント

  4. Amazon EC2 コンソールを開きます。そのためには、[サービス]リストで[EC2]を選択します。

  5. AWS ナビゲーションバーで、 AWS リージョン 移動する環境を含む環境を選択します (たとえば、米国東部 (オハイオ))。

  6. サービスナビゲーションペインで[インスタンス]を展開して、その後、[インスタンス]を選択します。

  7. インスタンスのリストで、移動したい環境に関連付けられているインスタンスを選択します。EC2 環境の場合、インスタンス名はaws-cloud9- で始まり、環境名が続きます。例えば、環境名が my-demo-environment の場合、インスタンス名は aws-cloud9-my-demo-environment で始まります。

  8. インスタンスの状態が [停止] になっていない場合は、[アクション]、[インスタンスの状態]、[停止] を選択します。プロンプトが表示されたら、[停止する]を選択します。インスタンスが停止するまで、数分かかる場合があります。

  9. インスタンスの状態]が停止すると、インスタンスを選択したままで、[アクション]、[インスタンスの設定]、[インスタンスタイプの変更]を選択します。

  10. インスタンスタイプの変更]ダイアログボックスで、使用する環境に新しい[インスタンスタイプ]を選択します。

    注記

    インスタンスタイプがリストに表示されない場合は、そのインスタンスの設定と互換性がありません。例えば、仮想化のタイプが原因で、インスタンスに互換性がない場合があります。

  11. (オプション) 選択したインスタンスタイプが EBS 最適化をサポートしている場合は、[EBS 最適化]を選択して EBS 最適化を有効にするか、[EBS 最適化]を選択解除して EBS 最適化を無効にします。

    注記

    選択したインスタンスタイプがデフォルトで EBS 最適化される場合、[EBS 最適化]が選択され、この選択を解除することはできません。

  12. Apply]を選択して、新しい設定を受け入れます。

    注記

    この手順で先ほど[インスタンスタイプ]に別のインスタンスタイプを選択しなかった場合は、[適用]を選択しても何も起こりません。

  13. 環境を再び開きます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。

前の手順の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスタイプを変更する」を参照してください。

AWS Cloud9 EC2 環境を別の Amazon マシンイメージ (AMI) に移動する

このトピックでは、 AWS Cloud9 EC2 環境を Amazon Linux AMI AWS Cloud9 からサポートされている別の AMI に移行する方法について説明します。

注記

OS バージョンを更新せずに環境を新しいインスタンスに移行する場合は、を参照してください環境の移動

次のいずれかの手順を使用して、環境間でデータを移行できます。

アーカイブをローカルマシンにダウンロードして環境を移動するには
  1. 同じアベイラビリティーゾーンに、異なるベースイメージを使用して新しい環境を作成します。

    1. EC2 環境を作成するセクションの手順を実行して新しい環境を作成します。

      注記

      プラットフォームを選択する際、環境の移行先のプラットフォームを選択します。

    2. デフォルトでは、環境は 10 GiB のボリュームで作成されます。アーカイブを新しい環境にアップロードまたは解凍するための十分なスペースがない場合は、環境で使用されている Amazon EBS ボリュームのサイズ変更手順を実行して Amazon EBS ボリュームサイズのサイズを変更します。

  2. 移行する環境を IDE で開きます。 AWS Cloud9

  3. AWS Cloud9 IDE がロードされたら、メニューから「ファイル」>「プロジェクトをダウンロード」を選択し、環境プロジェクトディレクトリの内容を含むアーカイブをダウンロードします。

  4. 新しい環境で AWS Cloud9 IDE を開きます。

  5. ファイル」>「ローカルファイルをアップロード...」を選択します。 アーカイブをアップロードするには。

  6. (オプション) .c9 古いディレクトリをにバックアップするには.c9.backup、環境ターミナルで以下のコマンドを実行します。

    cp .c9 .c9.backup

    設定ファイルを後で復元する場合には、これらのバックアップファイルが必要になることがあります。

  7. アーカイブを解凍するには、以下のコマンドを実行します。

    tar xzvf <old_environment_name>.tar.gz -C ~/
  8. プロジェクトディレクトリからアーカイブを削除するには、以下のコマンドを実行します。

    rm <old_environment_name>.tar.gz

    新しい環境が想定どおりに動作することを確認します。

  9. これで、古い環境を削除できます。

Amazon EBS ボリュームを使用して環境を移動するには

アーカイブをダウンロードできない場合、または結果のアーカイブが大きすぎる場合は、Amazon EBS ボリュームを使用して移行できます。また、~/environmentこの方法ではディレクトリの外部にあるファイルをコピーできます。

  1. 既存の環境で開いている AWS Cloud9 IDE タブをすべて閉じます。

  2. 以下のステップを実行して既存のインスタンスを停止します。

    1. AWS Cloud9 コンソールで、ナビゲートする環境を選択して詳細を表示します。

    2. [環境詳細] ページの [EC2 インスタンス] タブで、[EC2 インスタンスの管理] を選択します。

    3. EC2 コンソールで、インスタンスを選択してインスタンスの詳細に移動します。

    4. インスタンスの状態が Stopped に設定されていることを確認します。そうでない場合は、[インスタンス状態] ドロップダウンリストから [インスタンスを停止] を選択します。プロンプトが表示されたら、[Stop] を選択します。インスタンスが停止するまで、数分かかる場合があります。

  3. 同じアベイラビリティーゾーンに、異なるベースイメージを使用して新しい環境を作成します。

    1. EC2 環境を作成するセクションの手順を実行して新しい環境を作成します。

      注記

      プラットフォームを選択する際、環境の移行先のプラットフォームを選択します。

    2. デフォルトでは、環境は 10 GiB のボリュームで作成されます。ソースボリュームから新しい環境にファイルを移動するのに十分なスペースがない場合は、環境で使用されている Amazon EBS ボリュームのサイズ変更手順を実行して Amazon EBS ボリュームのサイズを変更します。

  4. 以下のステップを実行して、既存のインスタンスからボリュームをデタッチします。

    1. インスタンスの概要」ページで、「ストレージ」タブを選択し、ボリュームを選択します。選択したボリュームのデバイス名は、「ルートデバイスの詳細」セクションの「ルートデバイス名」で指定されているものと同じである必要があります。

    2. ボリュームの詳細ページで、「アクション」>「ボリュームをデタッチ」を選択します。

    3. ボリュームが正常にデタッチされたら、[Actions] > [Attach volume] を選択し、ドロップダウンリストから新しい環境のインスタンスを見つけて選択します。選択する Amazon EC2 インスタンスの名前には、 AWS Cloud9 aws-cloud9プレフィックスが付いた環境名が含まれている必要があります。

  5. 新しい環境で AWS Cloud9 IDE を開きます。

  6. 環境がロードされたら、新しくアタッチされたボリュームのデバイスを特定するために、ターミナルで以下のコマンドを実行します。

    lsblk

    次の出力例では、nvme0n1nvme0n1p1ルートデバイスのパーティションはすでにマウントされているため、nvme1n1p1そのパーティションもマウントする必要があります。/dev/nvme1n1p1そのデバイスのフルパスは以下のとおりです。

    Admin:~/environment $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 10G 0 disk ├─nvme0n1p1 259:2 0 10G 0 part / ├─nvme0n1p127 259:3 0 1M 0 part └─nvme0n1p128 259:4 0 10M 0 part /boot/efi nvme1n1 259:1 0 10G 0 disk ├─nvme1n1p1 259:5 0 10G 0 part └─nvme1n1p128 259:6 0 1M 0 part
    注記

    ターミナルでこのコマンドを実行すると、出力が変わります。

  7. 環境ターミナルで以下の手順を実行して、既存のボリュームをマウントします。

    1. ボリュームのパーティションをマウントする一時ディレクトリを作成するには、以下のコマンドを実行します。

      MOUNT_POINT=$(mktemp -d)
    2. lsblkコマンドのサンプル出力に基づいて、マウントするデバイスの次のパスを指定します。

      MOUNT_DEVICE=/dev/nvme1n1p1
      注記

      ターミナルでこのコマンドを実行すると、出力が変わります。

    3. 既存のボリュームをマウントするには、以下のコマンドを実行します。

      sudo mount $MOUNT_DEVICE $MOUNT_POINT
    4. 以下の手順を実行して、既存のボリュームが正しくマウントされているかどうかを確認します。

      1. ボリュームが出力に含まれていることを確認するには、以下のコマンドを実行します。

        df -h
      2. ボリュームの内容を確認するには、以下のコマンドを実行します。

        ls $MOUNT_POINT/home/ec2-user/environment/
  8. (オプション) .c9 古いディレクトリをにバックアップするには.c9.backup、環境ターミナルで以下のコマンドを実行します。

    cp .c9 .c9.backup

    設定ファイルを後で復元する場合には、これらのバックアップファイルが必要になることがあります。

  9. 既存のボリュームから古い環境をコピーするには、以下のコマンドを実行します。

    cp -R $MOUNT_POINT/home/ec2-user/environment ~
    注記

    必要に応じて、前述のコマンドを使用して環境ディレクトリの外部にファイルまたはディレクトリをコピーすることもできます。

    新しい環境が想定どおりに動作することを確認してください。

  10. 以前のデバイスをアンマウントするには、次の 2 つのコマンドのいずれかを実行します。

    sudo umount $MOUNT_DEVICE
    sudo umount $MOUNT_POINT
  11. アクション」ドロップダウンリストから「ボリュームのデタッチ」を選択し、ステップ 3 でアタッチしたボリュームをデタッチします。

  12. これで、古い環境とそのボリュームを削除できます。

    注記

    ボリュームは環境の Amazon EC2 インスタンスにアタッチされなくなったため、手動で削除する必要があります。これを行うには、ボリューム詳細ページで [Delete] を選択します。

環境で使用されている Amazon EBS ボリュームのサイズ変更

  1. サイズを変更したい Amazon EBS ボリュームの Amazon EC2 インスタンスに関連付けられている環境を開きます。

  2. 環境用の AWS Cloud9 IDE で、次の内容のファイルを作成し、拡張子 .sh (例:resize.sh) を付けてファイルを保存します。

    注意

    このスクリプトは、AL2023、Amazon Linux 2、Amazon Linux、または Ubuntu サーバーを実行する EC2 インスタンスに接続した Amazon EBS ボリュームに対して有効であり、IMDSv2 を使用するように設定されています。

    このスクリプトは、Nitro ベースのインスタンスで NVMe ブロックデバイスとして公開される Amazon EBS ボリュームのサイズも変更します。Nitro システムをベースにしたインスタンスリストについては、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「Nitro ベースのインスタンス」を参照してください。

    #!/bin/bash # Specify the desired volume size in GiB as a command line argument. If not specified, default to 20 GiB. SIZE=${1:-20} # Get the ID of the environment host Amazon EC2 instance. TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 60") INSTANCEID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/instance-id 2> /dev/null) REGION=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/placement/region 2> /dev/null) # Get the ID of the Amazon EBS volume associated with the instance. VOLUMEID=$(aws ec2 describe-instances \ --instance-id $INSTANCEID \ --query "Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId" \ --output text \ --region $REGION) # Resize the EBS volume. aws ec2 modify-volume --volume-id $VOLUMEID --size $SIZE # Wait for the resize to finish. while [ \ "$(aws ec2 describe-volumes-modifications \ --volume-id $VOLUMEID \ --filters Name=modification-state,Values="optimizing","completed" \ --query "length(VolumesModifications)"\ --output text)" != "1" ]; do sleep 1 done # Check if we're on an NVMe filesystem if [[ -e "/dev/xvda" && $(readlink -f /dev/xvda) = "/dev/xvda" ]] then # Rewrite the partition table so that the partition takes up all the space that it can. sudo growpart /dev/xvda 1 # Expand the size of the file system. # Check if we're on AL2 or AL2023 STR=$(cat /etc/os-release) SUBAL2="VERSION_ID=\"2\"" SUBAL2023="VERSION_ID=\"2023\"" if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]] then sudo xfs_growfs -d / else sudo resize2fs /dev/xvda1 fi else # Rewrite the partition table so that the partition takes up all the space that it can. sudo growpart /dev/nvme0n1 1 # Expand the size of the file system. # Check if we're on AL2 or AL2023 STR=$(cat /etc/os-release) SUBAL2="VERSION_ID=\"2\"" SUBAL2023="VERSION_ID=\"2023\"" if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]] then sudo xfs_growfs -d / else sudo resize2fs /dev/nvme0n1p1 fi fi
  3. IDE のターミナルセッションから、resize.sh ファイルが格納されているディレクトリに移動します。それから次のコマンドを実行し、20 を Amazon EBS ボリュームのリサイズとして希望する Gib 単位のサイズに置き換えます。

    • bash resize.sh 20
    • chmod +x resize.sh ./resize.sh 20

を使用する Amazon EBS ボリュームを暗号化する AWS Cloud9

Amazon EBS 暗号化では、次のデータが暗号化されます。

  • ボリューム内の保管中のデータ

  • ボリュームとインスタンスの間で移動されるすべてのデータ

  • ボリュームから作成されたすべてのスナップショット

  • それらのスナップショットから作成されたすべてのボリューム

Amazon EBS ボリュームには、 AWS Cloud9 EC2 開発環境が使用する2 つの暗号化オプションがあります。

  • デフォルトでの暗号化 – 作成する新しい EBS ボリュームとスナップショットコピーの暗号化を強制するように AWS アカウント を設定できます。暗号化は、デフォルトでは、 AWS リージョンのレベルで有効になっています。そのため、そのリージョン内の個々のボリュームまたはスナップショットに対して有効にすることはできません。さらに、Amazon EBS は、インスタンスの起動時に作成されるボリュームを暗号化します。そのため、EC2 環境を作成する前にこの設定を有効にする必要があります。詳細については、Linux インスタンス用の Amazon EC2 ユーザーガイドのデフォルトで暗号化」を参照してください。

  • EC2 環境で使用される既存の Amazon EBS ボリュームの暗号化 — EC2 インスタンス用に作成済みの特定の Amazon EBS ボリュームを暗号化できます。このオプションでは、 AWS Key Management Service (AWS KMS) を使用して暗号化されたボリュームへのアクセスを管理します。関連する手順については、「AWS Cloud9 が使用する既存の Amazon EBS ボリュームを暗号化する」を参照してください。

重要

AWS Cloud9 IDE がデフォルトで暗号化されている Amazon EBS ボリュームを使用している場合、 AWS Identity and Access Management AWS KMS key のサービスにリンクされたロールにはこれらの EBS AWS Cloud9 ボリュームへのアクセスが必要です。アクセスが提供されないと、 AWS Cloud9 IDE が起動できず、デバッグが困難になる可能性があります。

アクセスを提供するには、、のサービスにリンクされたロールを Amazon EBS ボリュームで使用される KMS キーに追加します。 AWS Cloud9AWSServiceRoleForAWSCloud9このタスクの詳細については、「AWS 規範的ガイダンスパターン」の「デフォルト暗号化で Amazon EBS ボリュームを使用する AWS Cloud9 IDE の作成」を参照してください。

AWS Cloud9 が使用する既存の Amazon EBS ボリュームを暗号化する

既存の Amazon EBS ボリュームを暗号化するには、を使用して AWS KMS KMS キーを作成する必要があります。置き換えるボリュームのスナップショットを作成した後、KMS キーを使用してスナップショットのコピーを暗号化します。

次に、そのスナップショットを使用して暗号化されたボリュームを作成します。次に、EC2 インスタンスからデタッチし、暗号化されたボリュームをアタッチすることで、暗号化されていないボリュームを置き換えます。

kai最後に、カスタマーマネージドキーのキーポリシーを更新して、 AWS Cloud9 サービスロールのアクセスを有効にする必要があります。

注記

次の手順の中心は、カスタマーマネージドキーを使用してボリュームを暗号化する方法です。アカウントでは AWS マネージドキー for an を使用することもできます AWS のサービス 。Amazon EBS のエイリアスは aws/ebs です。このデフォルトの暗号化オプションを選択した場合は、カスタマーマネージドキーを作成するステップ 1 をスキップします。また、キーポリシーを更新するステップ 8 をスキップします。これは、のキーポリシーを変更できないためです AWS マネージドキー。

既存の Amazon EBS ボリュームを暗号化するには
  1. AWS KMS コンソールで、対称 KMS キーを作成します。詳細については、AWS Key Management Service デベロッパーガイドの「対称 KMS キーの作成」を参照してください。

  2. Amazon EC2 コンソールで、環境で使用されている Amazon EBS-backed インスタンスを停止します。コンソールまたはコマンドラインを使用して、ドインスタンスを停止タグを追加できます

  3. Amazon EC2 コンソールのナビゲーションペインで、[Snapshots] (スナップショット) を選択して、暗号化したい既存のボリュームのスナップショットを作成します

  4. Amazon EC2 コンソールのナビゲーションペインで、[スナップショット ]を選択して、スナップショットをコピーしますスナップショットのコピーダイアログボックスで、暗号化を有効にするには、以下の操作を実行します。

    • このスナップショットを暗号化するを選択します。

    • [Master Key] (マスターキー) には、作成済みの KMS キーを選択します。(を使用している場合は AWS マネージドキー、(デフォルト) の aws/ebs 設定のままにします)

  5. 暗号化されたスナップショット から新しいボリュームを作成します

    注記

    暗号化されたスナップショットから作成された新しい Amazon EBS ボリュームは、自動的に暗号化されます。

  6. Amazon EC2インスタンスから古い Amazon EBS ボリュームをデタッチします。

  7. 新しい暗号化ボリュームを Amazon EC2 インスタンスに添付します。

  8. AWS Management Console デフォルトビュー、ポリシービュー、または API を使用して KMS AWS Management Console キーのキーポリシーを更新します。 AWS KMS 次のキーポリシーステートメントを追加してAWSServiceRoleForAWSCloud9、 AWS Cloud9 サービスが KMS キーにアクセスできるようにします。

    注記

    を使用している場合は AWS マネージドキー、このステップをスキップしてください。

    { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:{Partition}:iam::{AccountId}:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:{Partition}:iam::{AccountId}:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }
  9. Amazon EC2 インスタンスを再起動します。Amazon EC2 インスタンスの再起動の詳細については、「インスタンスを停止して起動する」を参照してください。