「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-戻る
--[[開発環境]]
--[[Azureの場合>#w3b5f47b]]
--[[Amazon EC2]]
---[[AWSの評価環境を入手する]]
---AWS上に素早く環境を構築する
*目次 [#j73e88e1]
#contents
*概要 [#h37db14e]
「[[Azure上に素早く環境を構築する>https://techinfoofmicrosofttech.osscons.jp/index.php?Azure%E4%B8%8A%E3%81%AB%E7%B4%A0%E6%97%A9%E3%81%8F%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B]]」のAWS版
*詳細 [#iaf9a2dc]
取り敢えず、AWSの新しいVM Import、~
[[ImportImage>#ee7cc0b1]]を使用してみようかと。
**VHDのImportImage [#ee7cc0b1]
-取り敢えず、Azure VMのVHDを使ってAWS VMを起動してみようかと。
-「[[VM起動後の開発環境のセットアップ]]」の手順で作成したものを利用したかったが、
--Windows10は、BYOL が必要。
--また、第 2 世代 VMの設定なども、現時点では、良く解らない。
>との事で、Windows Server + Docker Desktop 程度をテストしてみる。
***[[AWS CLI]]の設定 [#d65f9cdc]
-AWS CLIをインストールする。
-[[専用のIAMユーザ(vmimportuser)を作成>AWS CLI#mee40dca]]する。
--IAMユーザを新規作成し、下記のグループ&ポリシを適用。
--IAMユーザのkeyとsecretを取得する。
-keyとsecret, etc. を[[AWS CLIに設定>AWS CLI#n6b78cfa]]
-グループ&ポリシの作成ポイント
--管理ポリシでも良いのかも知れないが、権限をミニマムに出来ない。
--[[手順の例>#ge5fcf60]]に以下の様なミニマムなポリシ設定例が載っているが、
{
"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管理ポリシを追加
***VHDの準備と利用 [#g2d07726]
-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#z02d8227]]を設定
---ロール作成リクエスト用の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のアカウントを使用可能。
**CloudEndure Migration [#pc302a78]
AWSの、高度に自動化されたクラウド移行ソリューションらしい。
***, etc. [#yf8fa5db]
*参考 [#t7d8723b]
**手順の例 [#ge5fcf60]
**[[Azure上に素早く環境を構築する>開発環境#t293de7c]] [#w3b5f47b]
**[[AWSの評価環境を入手する]] [#t3d613fa]
**[[VM起動後の開発環境のセットアップ]] [#r45f7425]
**その他 [#f54a83a3]
***手順の例 [#ge5fcf60]
-[[[AWS CLI]手元の仮想マシンをEC2に移行するときにドハマりした。 | KentaKomai Blog>http://komaken.me/blog/2015/07/23/aws-cli%E6%89%8B%E5%85%83%E3%81%AE%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92ec2%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E3%83%89%E3%83%8F%E3%83%9E/]]
-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
**Qiita [#m71f96df]
***Qiita [#m71f96df]
-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 [#p3b44c6e]
***AWS [#p3b44c6e]
-よくある質問 - AWS と Microsoft~
https://aws.amazon.com/jp/windows/faq/
***docs.aws [#nf9e2773]
- VM Import/Export
--VM Import/Export Requirements~
https://docs.aws.amazon.com/ja_jp/vm-import/latest/userguide/vmie_prereqs.html
--Importing a VM as an Image Using VM Import/Export~
https://docs.aws.amazon.com/ja_jp/vm-import/latest/userguide/vmimport-image-import.html
**[[Azure上に素早く環境を構築する>開発環境#t293de7c]] [#w3b5f47b]
**[[AWSの評価環境を入手する]] [#t3d613fa]
**[[VM起動後の開発環境のセットアップ]] [#r45f7425]