Amazon WorkSpacesは、AWSが提供するフルマネージド型の仮想デスクトップサービスです。 本記事では、AWS CLIを使用してAmazon WorkSpacesの移行を実施した検証内容をまとめました。 なお、OS環境の再構築に伴うCドライブの初期化やIPアドレスの再配置など、移行に関する注意点は本検証の目的から除外しておりますのでご注意ください。検証内容を試される際には、実際の要件や条件に合っているかをあらかじめご確認いただくことをおすすめします。 移行に関する制限や詳細な挙動については、以下のリンクをご確認ください。 Personal WorkSpace で を移行する WorkSpaces - Amazon WorkSpaces を移行する方法について説明します WorkSpaces。 docs.aws.amazon.com 検証内容 以下の環境を準備して検証を行いました。 移行前環境 バンドル:wsb-3vw4c37lm Standard with Windows 10 and Office 2016 Pro Plus (Server 2016 based) (PCoIP) ※アプリケーション込み 移行後環境 バンドル:wsb-6vttw8tg3 Standard with Windows 10 (Server 2022 based) アプリケーション:wsa-hpgj744f0 Microsoft Office LTSC Professional Plus 2021 補足~アプリケーションについて~ これまで、バンドルは固定されたアプリケーションを含む形で提供されていましたが、新しい仕様により、アプリケーションはバンドルとは別に管理されることとなりました。したがって、新しいアプリケーションを導入する場合は、手動でインストールする必要があります。 そのため、本検証でもバンドル移行後にアプリケーションのインストールを実施いたします。 Amazon WorkSpaces サービスが Microsoft の生産性向上アプリの提供を拡大 aws.amazon.com また、各OS に対応するアプリケーションは以下の通りです。 Microsoft Office Professional Plus 2016 (32 ビット) Microsoft Office Professional Plus 2019 (64 ビット) Microsoft LTSC Office Professional Plus / Standard 2021 (64 ビット) Microsoft Project Professional / Standard 2021 (64 ビット) Microsoft LTSC Visio Professional / Standard 2021 (64 ビット) Microsoft Visual Studio Professional / Enterprise 2022 Windows Server 2016 アンインストール サポートされません サポートされません サポートされません サポートされません サポートされません Windows Server 2019 サポートされていません アンインストール インストール/アンインストール インストール/アンインストール インストール/アンインストール サポートされていません Windows Server 2022 サポートされていません アンインストール インストール/アンインストール インストール/アンインストール インストール/アンインストール インストール/アンインストール Windows 10 アンインストール アンインストール インストール/アンインストール インストール/アンインストール インストール/アンインストール インストール/アンインストール Windows 11 アンインストール アンインストール インストール/アンインストール インストール/アンインストール インストール/アンインストール インストール/アンインストール Manage applications in WorkSpaces Personal - Amazon WorkSpaces Learn how to Manage applications. docs.aws.amazon.com 環境準備 AWS CLI のインストールが本検証を進めるうえでの前提条件となります。 AWS CLIではVer.1.29.61およびVer.2.13.25以降でアプリケーションの管理のコマンドが追加されているため、これ以前のバージョンを利用している場合はアップデートが必要となります。 以下のコマンドを使用して、バージョン確認を行います。 aws --version $ aws --version aws-cli/2.21.3 Python/3.12.6 Windows/11 exe/AMD64 ※AWS は現在、バージョン 2 の使用を推奨しており、また、過去に確認されたバグの修正や、新機能の追加の観点からも最新バージョンの利用を推奨しています。 ※AWS CLIのリージョンの設定や証明書の登録などは環境に応じて実施する必要があります。 WorkSpacesの移行 以下のコマンドを使用して移行を実施しました。 移行の大まかな流れとしては、まずバンドル移行を行い、その後にアプリケーションの関連付けを行います。 バンドルの移行 以下のコマンドを使用して、移行前環境のWorkSpace(以下、移行前WorkSpace)の 状態を確認します。 aws workspaces describe-workspaces --workspace-ids [移行前WorkSpace ID] $ aws workspaces describe-workspaces --workspace-ids ws-xxxxxxxdq { "Workspaces": [ { "WorkspaceId": "ws-xxxxxxxdq", "DirectoryId": "d-xxxxxxxxxx", "UserName": "test", "IpAddress": "10.0.xxx.xxx", "State": "AVAILABLE", "BundleId": "wsb-3vw4c37lm", "SubnetId": "subnet-xxxxxxxxxx939dca7", "ComputerName": "TEST", "WorkspaceProperties": { "RunningMode": "AUTO_STOP", "RunningModeAutoStopTimeoutInMinutes": 60, "RootVolumeSizeGib": 80, "UserVolumeSizeGib": 50, "ComputeTypeName": "STANDARD", "Protocols": [ "PCOIP" ], "OperatingSystemName": "WINDOWS_SERVER_2016" }, "ModificationStates": [] } ] } 以下のコマンドを使用して、移行後環境のWorkSpace(以下、移行後WorkSpace)の バンドルを指定し、バンドルを移行します。移行後 WorkSpaceのID(”TargetWorkspaceId”)が 新しく発行されるため、 ID を控えておく必要があります。(手順3とアプリケーションの関連付けで必要となります) aws workspaces migrate-workspace --source-workspace-id [移行前WorkSpace ID] --bundle-id [移行後WorkSpaceのバンドルID] $ aws workspaces migrate-workspace --source-workspace-id ws-xxxxxxxdq --bundle-id wsb-6vttw8tg3 { "SourceWorkspaceId": "ws-xxxxxxxdq", "TargetWorkspaceId": "ws-xxxxxxxmg" } また、移行後WorkSpaceのID( “WorkspaceId”)は、以下のコマンドでも 確認することができます。 aws workspaces describe-workspaces --directory-id [ディレクトリID] --user-name [ユーザー名] $ aws workspaces describe-workspaces --directory-id d-xxxxxxxxxx --user-name test { "Workspaces": [ { "WorkspaceId": "ws-xxxxxxxmg", "DirectoryId": "d-xxxxxxxxxx", "UserName": "test", "State": "PENDING", "BundleId": "wsb-6vttw8tg3", "WorkspaceProperties": { "RunningMode": "AUTO_STOP", "RunningModeAutoStopTimeoutInMinutes": 60, "RootVolumeSizeGib": 80, "ComputeTypeName": "STANDARD", "Protocols": [ "PCOIP" ], "OperatingSystemName": "WINDOWS_SERVER_2022" }, "ModificationStates": [] } ] } 以下のコマンドを使用して、移行後WorkSpace の状態を確認し、 State が “AVAILABLE” (使用可能)と表示されることを確認します。(処理に 20分ほどかかることがあります) aws workspaces describe-workspaces --workspace-ids [ 移行後 WorkSpace ID] ※ State が “PENDING” (保留中) $ aws workspaces describe-workspaces --workspace-ids ws-xxxxxxxmg { "Workspaces": [ { "WorkspaceId": "ws-xxxxxxxmg", "DirectoryId": "d-xxxxxxxxxx", "UserName": "test", "State": "PENDING", "BundleId": "wsb-6vttw8tg3", "WorkspaceProperties": { "RunningMode": "AUTO_STOP", "RunningModeAutoStopTimeoutInMinutes": 60, "RootVolumeSizeGib": 80, "ComputeTypeName": "STANDARD", "Protocols": [ "PCOIP" ], "OperatingSystemName": "WINDOWS_SERVER_2022" }, "ModificationStates": [] } ] } ※Stateが”AVAILABLE”(使用可能) $ aws workspaces describe-workspaces --workspace-ids ws-xxxxxxxmg { "Workspaces": [ { "WorkspaceId": "ws-xxxxxxxmg", "DirectoryId": "d-xxxxxxxxxx", "UserName": "test", "IpAddress": "10.0.xxx.xxx", "State": "AVAILABLE", "BundleId": "wsb-6vttw8tg3", "SubnetId": "subnet-xxxxxxxxxx939dca7", "ComputerName": "TEST", "WorkspaceProperties": { "RunningMode": "AUTO_STOP", "RunningModeAutoStopTimeoutInMinutes": 60, "RootVolumeSizeGib": 80, "UserVolumeSizeGib": 50, "ComputeTypeName": "STANDARD", "Protocols": [ "PCOIP" ], "OperatingSystemName": "WINDOWS_SERVER_2022" }, "ModificationStates": [] } ] } 以下のコマンドを使用して、移行前WorkSpaceの状態を確認します。 aws workspaces describe-workspaces --workspace-ids [ 移行前 WorkSpace ID] ※内容が表示されないため移行が完了したことが確認できます。 $ aws workspaces describe-workspaces --workspace-ids ws-xxxxxxxdq { "Workspaces": [] } アプリケーションの関連付け 以下のコマンドを使用して、アプリケーションの関連付けの状態を確認します。 aws workspaces describe-workspace-associations --workspace-id [移行後WorkSpace ID] --associated-resource-types APPLICATION ※内容が表示されないため アプリケーションの関連付けがない ことが確認できます。 $ aws workspaces describe-workspace-associations --workspace-id ws-xxxxxxxmg --associated-resource-types APPLICATION { "Associations": [] } 以下のコマンドを使用して、移行後 WorkSpace とアプリケーションの紐づけを行います。 aws workspaces associate-workspace-application --workspace-id [ 移行後 WorkSpace ID] --application-id [ アプリケーション ID] ※Stateが”PENDING_INSTALL_DEPLOYMENT”(インストールのデプロイ待ち)状態になることを確認します。 $ aws workspaces associate-workspace-application --workspace-id ws-xxxxxxxmg --application-id wsa-hpgj744f0 { "Association": { "AssociatedResourceId": "wsa-hpgj744f0", "AssociatedResourceType": "APPLICATION", "Created": "2024-12-24T11:19:xx.xxxxxx+09:00", "LastUpdatedTime": "2024-12-24T11:19:xx.xxxxxx+09:00", "State": "PENDING_INSTALL_DEPLOYMENT", "WorkspaceId": "ws-xxxxxxxmg" } } 以下のコマンドを使用して、 アプリケーションをインストールします。 aws workspaces deploy-workspace-applications --workspace-id [移行後WorkSpace ID] ※Stateが”PENDING_INSTALL”(インストール待ち)状態になることを確認します。 $ aws workspaces deploy-workspace-applications --workspace-id ws-xxxxxxxmg { "Deployment": { "Associations": [ { "AssociatedResourceId": "wsa-hpgj744f0", "AssociatedResourceType": "APPLICATION", "Created": "2024-12-24T11:19:xx.xxxxxx+09:00", "LastUpdatedTime": "2024-12-24T11:19:xx.xxxxxx+09:00", "State": "PENDING_INSTALL", "WorkspaceId": "ws-xxxxxxxmg" } ] } } 以下のコマンドを使用して、アプリケーションの関連付けの状態 を確認し、 State が “COMPLETED” (インストール済み) と表示されることを確認します。(処理に3 0分ほどかかることがあります) aws workspaces describe-workspace-associations --workspace-id [移行後WorkSpace ID] --associated-resource-types APPLICATION ※ State が “PENDING_INSTALL”(インストール待ち) $ aws workspaces describe-workspace-associations --workspace-id ws-xxxxxxxmg --associated-resource-types APPLICATION { "Associations": [ { "AssociatedResourceId": "wsa-hpgj744f0", "AssociatedResourceType": "APPLICATION", "Created": "2024-12-24T11:19:xx.xxxxxx+09:00", "LastUpdatedTime": "2024-12-24T11:19:xx.xxxxxx+09:00", "State": "PENDING_INSTALL", "WorkspaceId": "ws-xxxxxxxmg" } ] } ※ State が “INSTALLING”(インストール中) $ aws workspaces describe-workspace-associations --workspace-id ws-xxxxxxxmg --associated-resource-types APPLICATION { "Associations": [ { "AssociatedResourceId": "wsa-hpgj744f0", "AssociatedResourceType": "APPLICATION", "Created": "2024-12-24T11:19:xx.xxxxxx+09:00", "LastUpdatedTime": "2024-12-24T11:32:xx.xxxxxx+09:00", "State": "INSTALLING", "WorkspaceId": "ws-xxxxxxxmg" } ] } ※ State が “COMPLETED”(インストール済み) $ aws workspaces describe-workspace-associations --workspace-id ws-xxxxxxxmg --associated-resource-types APPLICATION { "Associations": [ { "AssociatedResourceId": "wsa-hpgj744f0", "AssociatedResourceType": "APPLICATION", "Created": "2024-12-24T11:19:xx.xxxxxx+09:00", "LastUpdatedTime": "2024-12-24T11:51:xx.xxxxxx+09:00", "State": "COMPLETED", "WorkspaceId": "ws-xxxxxxxmg" } ] } 注意点 ベストプラクティスとして、複数の WorkSpaces を同時実行で移行する場合、一度に処理できる上限は 25 個とされています。 スクリプトにて移行コマンドを実行する場合には注意が必要です。 WorkSpaces をスクリプトで移行する場合、一度に移行する WorkSpaces の数を25個以下にしてください。 Personal WorkSpace で を移行する WorkSpaces - Amazon WorkSpaces を移行する方法について説明します WorkSpaces。 docs.aws.amazon.com まとめ Amazon WorkSpaces の移行はマネジメントコンソール上でも試みましたが、移行設定画面にバンドルIDの表示がなく、ID検索の代わりに、マウス操作でフィルタリングをかけて対象のバンドル名を指定する操作となるため、少し手間に感じました。一方で、CLIは使い慣れていないため最初は少し抵抗がありましたが、一括で操作を行えるため、便利さを実感しました。 また、同一の操作を複数のWorkSpacesに対して行う際には、CLIが役立つと考えます。本検証では1台のみを移行したため、マネジメントコンソールとの作業時間に大きな差はありませんでしたが、移行対象が多い場合には、CLIを使用することで時間短縮が見込めると思います。 そして効率化をさらに図るために、本記事で紹介したコマンドを活用し、AWS Lambdaやループ処理を組み合わせて移行する方法も検討できると思いました。