「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[開発環境]]
--[[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]
-[[[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]

-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 と 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]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS