.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Azure上に素早く環境を構築する」のAWS版

詳細

取り敢えず、AWSの新しいVM Import、
ImportImageを使用してみようかと。

VHDのImportImage?

  • 取り敢えず、Azure VMのVHDを使ってAWS VMを起動してみようかと。

との事で、Windows Server + Docker Desktop 程度をテストしてみる。

AWS CLIの設定

  • AWS CLIをインストールする。
  • 下記のポリシ(vmimport)を適用した
    グループ(vmimport)に、
    新規作成したIAMユーザを追加する。
  • keyとsecretを取得する。
  • グループ・ポリシの作成ポイント
    • 管理ポリシでも良いのかも知れないが、権限をミニマムに出来ない。
    • 手順の例にミニマムなポリシ設定例が載っているが、
      {
        "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:::mys3bucket","arn:aws:s3:::mys3bucket/*"]
          },
          {
            "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で、以下の操作ができない。
      • S3の作成やアップロード → AmazonS3FullAccess?管理ポリシを追加
      • ロールの作成 → AdministratorAccess?管理ポリシを追加

VHDの準備と利用

  • 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 サービスロールを設定
  • ロール作成リクエスト用のjson(trust-policy.json)を作成する。
    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Effect": "Allow",
             "Principal": { "Service": "vmie.amazonaws.com" },
             "Action": "sts:AssumeRole",
             "Condition": {
                "StringEquals":{
                   "sts:Externalid": "vmimport"
                }
             }
          }
       ]
    }
  • ロール作成リクエストを投げる。
    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に変換する。
  • リクエスト用のjson(containers.json)を作成する。
    [
      {
        "Description": "Windows 20XX VHD",
        "Format": "vhd",
        "UserBucket": {
          "S3Bucket": "import-to-ec2-vhdbucket",
          "S3Key": "xxxx.vhd"
        }
      }
    ]
  • 変換リクエストを投げる。
    >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

AWSの、高度に自動化されたクラウド移行ソリューションらしい。

参考

手順の例

Qiita

AWS

docs.aws

Azure上に素早く環境を構築する


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-10-29 (木) 20:26:50 (15h)