-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_AWSQuickSetup
- 戻る(開発環境、Azureの場合、Amazon EC2)
- AWSの評価環境を入手する
- AWS上に素早く環境を構築する
「Azure上に素早く環境を構築する」のAWS版
取り敢えず、AWSの新しいVM Import、
ImportImageを使用してみようかと。
-
取り敢えず、Azure VMのVHDを使ってAWS VMを起動してみようかと。
-
「VM起動後の開発環境のセットアップ」の手順で作成したものを利用したかったが、
- Windows10は、BYOL が必要。
- また、第 2 世代 VMの設定なども、現時点では、良く解らない。
との事で、Windows Server + Docker Desktop 程度をテストしてみる。
AWS CLIも参照。
-
AWS CLIをインストールする。
-
専用のIAMユーザ(vmimportuser)を作成する。
- IAMユーザを新規作成し、下記のグループ&ポリシを適用。
- IAMユーザのkeyとsecretを取得する。
-
keyとsecret, etc. を AWS CLI に設定
-
グループ&ポリシの作成ポイント
-
管理ポリシでも良いのかも知れないが、権限をミニマムに出来ない。
-
手順の例に以下の様なミニマムなポリシ設定例が載っているが、
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:DeleteObject", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": ["arn:aws:s3:::import-to-ec2-vhdbucket","arn:aws:s3:::import-to-ec2-vhdbucket/*"] }, { "Effect": "Allow", "Action": [ "ec2:CancelConversionTask", "ec2:CancelExportTask", "ec2:CreateImage", "ec2:CreateInstanceExportTask", "ec2:CreateTags", "ec2:DeleteTags", "ec2:DescribeConversionTasks", "ec2:DescribeExportTasks", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstanceStatus", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:ImportInstance", "ec2:ImportVolume", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:ImportImage", "ec2:ImportSnapshot", "ec2:DescribeImportImageTasks", "ec2:DescribeImportSnapshotTasks", "ec2:CancelImportTask" ], "Resource": "*" } ] } -
ただ、上記では、CLIで、以下の操作ができない。
- ロールの作成 → AdministratorAccess管理ポリシを追加
-
-
EC2にインポートしたいVMイメージ(ココではVHD)を用意
- AzureでWindows ServerのVMを作成
- RDP接続を既定のポートで有効にしておく。
- アカウント情報はメモしておく。
- 起動して接続を確認した後、停止する。
- VHDをダウンロードする。
...と思ったが、AzureのOS Discは127GiBから縮小できないようなので、
別途、評価版のVHDを入手し、Hyper-V上で初期化し、アップロード用VHDを取得した。
(127GiBをダウンロードしてアップロードするには、数日間掛かってしまう)
-
VMイメージ(ココではVHD)をアップロードするための
s3のbucket(import-to-ec2-*)を作成-
import-to-ec2-vhdbucketというs3bucketを作成
-
CLI
>aws s3api create-bucket --bucket import-to-ec2-vhdbucket --region us-east-2 --create-bucket-configuration LocationConstraint=us-east-2 ------------------------------------------------------------------- | CreateBucket | +----------+------------------------------------------------------+ | Location| http://import-to-ec2-vhdbucket.s3.amazonaws.com/ | +----------+------------------------------------------------------+ -
ポータルからも作成可能。
-
-
-
VHDのアップロードとAMI(Amazon Machine Image)化
-
VHDをimport-to-ec2-vhdbucketにアップロード
-
CLI
>aws s3 cp C:\...\xxxx.vhd s3://import-to-ec2-vhdbucket upload: ..\..\xxxx.vhd to s3://import-to-ec2-vhdbucket/xxxx.vhd >aws s3 ls s3://import-to-ec2-vhdbucket 2020-xx-xx xx:xx:xx 9692336128 xxxx.vhd -
ポータルからもアップロード可能。
-
-
VM Import ロール(AWS IAMの該当節を参照)を設定
-
ロール作成リクエスト用のjson(trust-policy.json)を作成する。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }※ 「"sts:Externalid": "vmimport"」を指定しているが、
自分で直接「sts assume-role」をしてないので、
--external-idパラメタのベースが何なのか不明と言う。 -
ロール作成リクエストを投げる。
aws iam create-role --role-name vmimport --assume-role-policy-document file://"C:\...\trust-policy.json" -
(ロールへの)ポリシ設定リクエスト用のjson(role-policy.json)を作成する。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::import-to-ec2-vhdbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::import-to-ec2-vhdbucket/*" ] }, { "Effect": "Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource": "*" } ] } -
(サービスが使用する)(ロールへの)ポリシ設定リクエストを投げる。
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://"C:\...\role-policy.json"
-
-
VHDをAMIに変換する。
-
AMI変換リクエスト用のjson(containers.json)を作成する。
[ { "Description": "Windows 20XX VHD", "Format": "vhd", "UserBucket": { "S3Bucket": "import-to-ec2-vhdbucket", "S3Key": "xxxx.vhd" } } ] -
AMI変換リクエストを投げる。
aws ec2 import-image --cli-input-json file://"C:\...\containers.json" -
進捗を確認しつつ待つ
初回(ImportTaskIdを確認)
>aws ec2 describe-import-image-tasks ----------------------------------------------------- | DescribeImportImageTasks | +---------------------------------------------------+ || ImportImageTasks || |+----------------+--------------------------------+| || Description | Windows 20xx VHD || || ImportTaskId | import-ami-xxxxxxxxxxxxxxxxx || || Progress | 19 || || Status | active || || StatusMessage | converting || |+----------------+--------------------------------+| ||| SnapshotDetails ||| ||+----------------------+------------------------+|| ||| Description | First CLI task ||| ||| DiskImageSize | 9692336128.0 ||| ||| Format | VHD ||| ||| Status | active ||| ||+----------------------+------------------------+|| |||| UserBucket |||| |||+------------+--------------------------------+||| |||| S3Bucket | import-to-ec2-vhdbucket |||| |||| S3Key | xxxx.vhd |||| |||+------------+--------------------------------+|||初回以降(ImportTaskIdを指定)
>aws ec2 describe-import-image-tasks --import-task-ids import-ami-xxxxxxxxxxxxxxxxxx ----------------------------------------------------- | DescribeImportImageTasks | +---------------------------------------------------+ || ImportImageTasks || |+----------------+--------------------------------+| || Architecture | x86_64 || || Description | Windows 20xx VHD || || ImageId | ami-xxxxxxxxxxxxxxxxx || || ImportTaskId | import-ami-xxxxxxxxxxxxxxxxxx || || LicenseType | AWS || || Platform | Windows || || Progress | 58 || || Status | active || || StatusMessage | preparing ami || |+----------------+--------------------------------+| ||| SnapshotDetails ||| ||+-----------------+-----------------------------+|| ||| Description | First CLI task ||| ||| DeviceName | /dev/sda1 ||| ||| DiskImageSize | 9692336128.0 ||| ||| Format | VHD ||| ||| SnapshotId | snap-xxxxxxxxxxxxxxxxx ||| ||| Status | completed ||| ||+-----------------+-----------------------------+|| |||| UserBucket |||| |||+------------+--------------------------------+||| |||| S3Bucket | import-to-ec2-vhdbucket |||| |||| S3Key | xxxx.vhd |||| |||+------------+--------------------------------+|||なんだか、VHDの中身を勝手にWindows or Linuxって検知してくれるっぽい。
-
-
-
VHD → AMI変換完了後、AMIを使用してインスタンスを作成。
- EC2のポータルから、マイAMIを使用して、インスタンスを作成できる。
- なお、ログインの際のユーザ・アカウントは、元のVHDのアカウントを使用可能。
AWSの、高度に自動化されたクラウド移行ソリューションらしい。
移行メモ: 元ページでは見出しのみで本文が無い(書きかけ)。
-
[AWS CLI]手元の仮想マシンをEC2に移行するときにドハマりした。 | KentaKomai Blog
http://komaken.me/blog/2015/07/23/ -
VM Importでイメージインポートしてみた | Developers.IO
https://dev.classmethod.jp/articles/vm-import-image-import/ -
EC2 instance assume Role to use AWS VM Import – ExploitNetworking
https://exploitnetworking.com/en/aws-en/ec2-instance-assume-role-to-use-aws-vm-import
-
ImportImageによるVMインポート
https://qiita.com/ryo0301/items/e36f7602fbd762e739b2 -
AWS CLIでVMwareイメージをインポート
https://qiita.com/toguma/items/7ae15a7bc469608d3d72 -
ウサギでもできるAWSへの
サーバーマイグレーション
〜CloudEndureでやってみた〜
https://qiita.com/issie_/items/814e727677148cd0fcd5
-
よくある質問 - AWS と Microsoft
https://aws.amazon.com/jp/windows/faq/ -
VM Import/Export
Tags: 移行, 開発環境, クラウド, AWS, 開発基盤
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。