2021/05/27

AWSのVM Importとは?AWSのVM Importの利点や使用方法などを解説!

 
  

AWSのVM Importとは?


AWSのVM ImportとはVMという仮想マシンイメージを仮想化環境からAWS EC2にインポートすることを指します。

これにより、アプリのAWS EC2への移行やイメージのコピー、イメージのリポジトリを作成することでセキュリティを強化することができます。

AWSのVM Importの利点


AWSのVMの機能を使えば、VMをインポートすることによって、すでに情報が設定されている仮想マシーンイメージを出し入れすることができます。他にもいくつか利点があるので、詳しく紹介します。

アプリやワークロードをEC2に移行する

VM内で設定した情報の保存やアプリやワークロードのインポートにより、同じイメージから複数のインスタンスを実行することができます。

さらに、そのアプリやワークロードの要件が変わるたびにインスタンスを変える必要もありません。

イメージカタログをEC2にコピーする

すでにあるイメージカタログにEC2をコピーすることができます。これによって、VMからAMIを作ることができるようになり、AMIはEC2内でイメージカタログとして機能します。

災害復旧対策をして使える

インポートされたイメージをElastic Block Store-backedのAMIとして保存することで、EC2でそれらを起動することができるようになります。

さらに、インスタンスを起動するまでにはElastic Block Store分の料金以外は支払う必要がありません。

AWSのVM Importの使用方法


AWSのVM Importの使用方法について、実際のコードを見ながら確認していきます。ここでは、イメージとしてインポートする場合とスナップショットとしてディスクをインポートする場合に分けて説明します。

イメージとしてVMをインポートする

VMイメージファイルをAWS S3にアップロードし、AWS CLIを使うことでアップロードすることができます。ここでは、イメージのインポートからインポートタスクを作成します。以下の二つの例を参考にしましょう。

1つのディスクでイメージをインポートする

以下のコマンドを使い、一つのディスクでイメージをインポートします。

aws ec2 import-image --description "My server VM" --disk-containers "file://C:\import\containers.json"

こちらは、containers.jsonファイルの例です。

[
  {
    "Description": "My Server OVA",
    "Format": "ova",
    "UserBucket": {
        "S3Bucket": "my-import-bucket",
        "S3Key": "vms/my-server-vm.ova"
    }
}]

複数のディスクを含むイメージをインポートする

以下のコマンドを使い、複数のディスクでイメージをインポートします。

$ C:\> aws ec2 import-image --description "My server disks" --disk-containers "file://C:\import\containers.json"

こちらは、containers.json ファイルの例です。

[
  {
    "Description": "First disk",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "my-import-bucket",
        "S3Key": "disks/my-server-vm-disk1.vmdk"
    }
  },          
  {
    "Description": "Second disk",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "my-import-bucket",
        "S3Key": "disks/my-server-vm-disk2.vmdk"
    }
  }
]

暗号化オプションを有効にした状態でインポート

以下のコマンドを使い、暗号化オプション有効にした状態でインポートします。

aws ec2 import-image --description "My server disks" --encrypted --kms-key-id 0ea3fef3-80a7-4778-9d8c-1c0c6EXAMPLE --disk-containers "file://C:\import\containers.json"

イメージのインポートタスクの監視

以下のコマンドを使用して、インポートタスクを監視します。

aws ec2 describe-import-image-tasks --import-task-ids import-ami-1234567890abcdef0

イメージのインポートを終えると、次のようなコードが出力されます。

{
    "ImportImageTasks": [
        {
            "ImportTaskId": "import-ami-01234567890abcdef",
            "ImageId": "ami-1234567890EXAMPLE",
            "SnapshotDetails": [
                {
                    "DiskImageSize": 705638400.0,
                    "Format": "ova",
                    "SnapshotId": "snap-111222333444aaabb"
                    "Status": "completed",
                    "UserBucket": {
                        "S3Bucket": "my-import-bucket",
                        "S3Key": "vms/my-server-vm.ova"
                    }
                }
            ],
            "Status": "completed"
        }
    ]
}

イメージのインポートタスクをキャンセル

以下のコマンドを使用して、インポートタスクをキャンセルします。

aws ec2 cancel-import-task --import-task-id import-ami-1234567890abcdef0

スナップショットとしてディスクをインポートする

以下のコマンドを使い、スナップショットとしてディスクをインポートします。

aws ec2 import-snapshot --description "My server VM" --disk-container "file://C:\import\containers.json"

containers.json ファイルは、ドキュメント内に必要な情報を含みます。

{
    "Description": "My server VMDK",
    "Format": "VMDK",
    "UserBucket": {
        "S3Bucket": "my-import-bucket",
        "S3Key": "vms/my-server-vm.vmdk"
    }
}

以下のコードが応答結果になります。

{
    "Description": "My server VM",
    "ImportTaskId": "import-snap-1234567890abcdef0",
    "SnapshotTaskDetail": {
        "Description": "My server VMDK",
        "DiskImageSize": "0.0",
        "Format": "VMDK",
        "Progress": "3",
        "Status": "active",
        "StatusMessage": "pending",
        "UserBucket": {
            "S3Bucket": "my-import-bucket",
            "S3Key": "vms/my-server-vm.vmdk"
        }
    }
}

スナップショットのインポートタスクの監視

以下のコマンドを使用して、インポートタスクを監視します。

aws ec2 describe-import-snapshot-tasks --import-task-ids import-snap-1234567890abcdef0

以下のコードが応答結果になります。

{
    "ImportSnapshotTasks": [
        {
            "Description": "My server VM",
            "ImportTaskId": "import-snap-1234567890abcdef0",
            "SnapshotTaskDetail": {
                "Description": "My server VMDK",
                "DiskImageSize": "3.115815424E9",
                "Format": "VMDK",
                "Progress": "22",
                "Status": "active",
                "StatusMessage": "downloading/converting",
                "UserBucket": {
                    "S3Bucket": "my-import-bucket",
                    "S3Key": "vms/my-server-vm.vmdk"
                },
            }
        }
    ]
}

スナップショットのインポートタスクをキャンセル

以下のコードを使用して、インポートタスクをキャンセルします。

aws ec2 cancel-import-task --import-task-id import-snap-1234567890abcdef0

AWSのVM Importを実際に使ってみよう!


いかがだったでしょうか?

今回は、AWSのVM Importについて紹介しました。VM Importを使えば、VMをAMIとしてEC2にインポートしたり、イメージカタログとしてコピーすることもできます。

ぜひこの記事を参考に、AWSのVM Importを実際に使ってみてください。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】