[AWS] VMファイルのインポート
AWSでは仮想ファイルをインポートしてEC2やWorkspacesにインポートして使用することができます。
ここではS3を経由してEC2にインポートする方法を記載します。
1. VDI→OVAファイルの変換
AWSにインポートするために、vdiファイルをova形式にコンバートします。
※元からova形式ファイルの場合はこの作業は不要です。
- (1) Oracle VM VirtualBoxを起動します。
- (2) 仮想マシンを新規作成して、「すでにある仮想ハードディスクファイルを使用する(U)」を選択し、元のvdiファイルを指定します。
- (3) メニューバー「ファイル」→「仮想アプライアンスのエクスポート(E)」を実行します。
- (4) 該当の仮想マシンを指定して、任意のディレクトリを選択後に「エクスポート」ボタンをクリックします。
2. S3へのアップロード
ovaファイルをS3(Amazon Simple Storage Service)にアップロードします。
(1) S3バケットの作成
ovaファイルを一時的に保存しておくS3のバケットを作成します。
バケット名は任意ですが、他ユーザを含めた全てのバケット名と重複しない名前を指定する必要があります。
ここではコマンドライン(AWS CLI)で作成します。
C:\>aws s3 mb s3://(s3バケット名)
【例】
C:\>aws s3 mb s3://s3example-bucket
正常に作成された場合には以下のように表示されます。
make_bucket: s3example-bucket
念のため、S3バケットの一覧を表示します。
(2) VM Import用サービスロールの作成
VM Importでは、アカウント内で特定の操作を実行するにはロールが必要です。
ここではvmimportという名前のロールを作成し、そのロールにVM Importのアクセス権限を付与します。
「trust-policy.json」という名前のファイルを作成し、以下の内容を記述します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:ExternalId": "vmimport"
}
}
}
]
}
以下のコマンドを実行します。
C:\>aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
(3) ポリシーのアタッチ
S3バケットのポリシーを定義します。
「role-policy.json」というファイルを作成し、以下の内容を記述します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::(S3バケット名)"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::(S3バケット名)/*"
]
},
{
"Effect": "Allow",
"Action":[
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
※「(S3バケット名)」に先ほど作成したS3バケット名を記載します。
ポリシーをアタッチします。
C:\>aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
(4) S3へのアップロード
VMファイルをS3で作成したバケットにアップロードします。
C:\>aws s3 cp (VMファイル名) s3://(S3バケット名)
【例】
C:\>aws s3 cp vm_example.ova s3://s3example-bucket
アップロードしたファイルを確認します。
C:\>aws s3 ls s3://(S3バケット名)
【例】
C:\>aws s3 ls s3://s3example-bucket
3. インポートタスクの作成
AWS CLI コマンド import-image を使用してインポートタスクを作成します。
(1) 定義ファイルの作成
インポートするS3バケット名およびファイル名を指定したファイルを作成します。
ここでは、「containers.json」とします。
[
{
"Description": "Example",
"Format": "ova",
"UserBucket": {
"S3Bucket": "(S3バケット名)",
"S3Key": "(ファイル名)"
}
}]
(2) インポートタスクの作成
インポートタスクを作成します。
C:\>aws ec2 import-image --description "Example" --disk-containers file://containers.json
以下のようなステータス画面が表示されます。
{
"Description": "Example",
"ImportTaskId": "import-ami-xxxxxxxxxxxxx",
"Progress": "2",
"SnapshotDetails": [
{
"DiskImageSize": 0.0,
"Format": "OVA",
"UserBucket": {
"S3Bucket": "(S3バケット名)",
"S3Key": "(ファイル名)"
}
}
],
"Status": "active",
"StatusMessage": "pending"
}
なお、ステータスには、以下のものがあります。
active |
インポートタスクは進行中です。 |
deleting |
インポートタスクはキャンセルされています。 |
deleted |
インポートタスクはキャンセルされました。 |
updating |
インポートのステータスを更新しています。 |
validating |
インポートしたイメージを検証中です。 |
validated |
インポートしたイメージが検証されました。 |
converting |
インポートしたイメージを AMI に変換しています。 |
completed |
インポートタスクは完了し、AMI はすぐに使用できます。 |
また、「ImportTaskId」は「タスクID」で、これを指定して進捗状況を見ることができます。
C:\>aws ec2 describe-import-image-tasks --import-task-ids (タスクID)
「Status」が「completed」なれば完了です。
{
"ImportImageTasks": [
{
"Architecture": "x86_64",
"Description": "Example",
"ImportTaskId": "import-ami-xxxxxxxxxxxxxxx",
"LicenseType": "BYOL",
"Platform": "Linux",
"Progress": "69",
"SnapshotDetails": [
{
"DeviceName": "/dev/sda1",
"DiskImageSize": (ファイルサイズ),
"Format": "VMDK",
"Status": "completed",
"UserBucket": {
"S3Bucket":(S3バケット名)",
"S3Key":"(ファイル名)"
}
}
],
"Status": "active",
"StatusMessage": "booted"
}
]
}
4. EC2インスタンスの作成
インポートしたAMI(Amzon Machine Image)を元にして、EC2のインスタンスを作成します。
- (1) AWS マネジメントコンソールにログインします。
- (2) サービスの「EC2」をクリックします。
- (3) 左側ローカルメニューのイメージの「AMI」をクリックすると、インポートしたAMIが表示されますので、「起動」ボタンをクリックして、EC2のインスタンスを作成します。
- (4) 「ステップ 2: インスタンスタイプの選択」でインスタンスタイプを指定して、「次の手順: インスタンスの詳細の設定」ボタンをクリックします。
- (5) 「ステップ 3: インスタンスの詳細の設定」で設定を行ったら「次の手順: ストレージの追加」ボタンをクリックします。
- (6) 「ステップ 4: ストレージの追加」でディスク容量等の設定を行ったら「次の手順: タグの追加」ボタンをクリックします。
- (7) 「ステップ 5: タグの追加」で必要に応じてタグを指定して下さい。完了したら「次の手順: セキュリティグループの設定」ボタンをクリックします。
- (8) 「ステップ 6: セキュリティグループの設定」でファイアウォールの設定を行います。設定が完了したら「確認と作成」ボタンをクリックします。
- (9) 「ステップ 7: インスタンス作成の確認」で設定内容を確認して、「作成」ボタンをクリックします。
- (10) 「既存のキーペアを選択するか、新しいキーペアを作成します。」というダイアログが表示されます。ここで「新しいキーペアの作成」を選択した場合には、キーペア名を入力して、必ず「キーペアのダウンロード」を行います。※キーペアのダウンロードができるのはこの時のみなので必ずダウンロードを行って下さい。
- (11) 「インスタンスの作成」ボタンをクリックして、インスタンスを作成します。
5. S3バケットの削除
VMファイルをインポートしてAMIに変換したら、S3バケットを削除します。
ここで、ファイルを空にして強制的にバケットを削除するには、以下のコマンドを実行します。
C:\>aws s3 rb s3://(S3バケット名) --force
【例】
C:\>aws s3 rb s3://s3example-bucket --force
最終更新:2019年11月06日 13:35