[新機能]Amazon WorkSpacesがAPIとCLIをサポートしました
はじめに
Amazon WorkSpacesは、これまでAWS管理コンソールからのみ操作が可能でした。今回Amazon WorkSpacesのAPIが公開され、 CLIやSDKで操作可能になりました!
ということで、早速AWS CLIからの操作を試してみました!
やってみる
aws cliのアップデート
最初に僕のノートPC(Mac OS X Yosemite)に入っていたaws cliのバージョンはこれ。
$ aws --version aws-cli/1.7.18 Python/2.7.6 Darwin/14.1.0
最新のaws cliにアップデートします。
$ sudo pip install -U awscli $ aws --version aws-cli/1.7.22 Python/2.7.9 Darwin/14.1.0
aws workspacesコマンドのhelpはこんな感じ。WorkSpacesの操作と、その他情報の取得ができます。
$ aws workspaces help WORKSPACES() WORKSPACES() NAME workspaces - DESCRIPTION This is the Amazon WorkSpaces API Reference . This guide provides detailed information about Amazon WorkSpaces operations, data types, parameters, and errors. AVAILABLE COMMANDS o create-workspaces o describe-workspace-bundles o describe-workspace-directories o describe-workspaces o help o reboot-workspaces o rebuild-workspaces o terminate-workspaces WORKSPACES()
describe-workspace-directories
WorkSpacesを所属させるDirectoryはaws cliでは作成できないので、AWS管理コンソールで作っておきます。
Directory作成後にdescribe-workspace-directoriesを実行すると、以下のように情報が取得できます。
$ aws workspaces describe-workspace-directories { "Directories": [ { "CustomerUserName": "Administrator", "DirectoryId": "d-9567331a7f", "DirectoryName": "corp.amazonworkspaces.com", "SubnetIds": [ "subnet-71b21406", "subnet-dc7d8585" ], "WorkspaceCreationProperties": { "EnableInternetAccess": true, "EnableWorkDocs": true, "UserEnabledAsLocalAdministrator": true }, "Alias": "d-9567331a7f", "State": "REGISTERED", "DirectoryType": "SIMPLE_AD", "RegistrationCode": "YOUR_REGST_CODE", "IamRoleId": "arn:aws:iam::1234567890:role/workspaces_DefaultRole", "DnsIpAddresses": [ "172.16.0.49", "172.16.1.233" ], "WorkspaceSecurityGroupId": "sg-7154d814" } ] }
describe-workspace-bundles
WorkSpacesを作る際に指定するバンドル(ソフトウェアのオプションセット)はdescribe-workspace-bundlesコマンドで参照できます。この時--owner AMAZONを付与しないと、AWS が用意しているバンドルは参照できません。
$ aws workspaces describe-workspace-bundles --owner AMAZON { "Bundles": [ { "ComputeType": { "Name": "PERFORMANCE" }, "Description": "Performance Bundle", "BundleId": "wsb-b0s22j3d7", "Owner": "Amazon", "UserStorage": { "Capacity": "100" }, "Name": "Performance" }, { "ComputeType": { "Name": "PERFORMANCE" }, "Description": "Performance Plus Bundle (Japanese)", "BundleId": "wsb-0m60gspvt", "Owner": "Amazon", "UserStorage": { "Capacity": "100" }, "Name": "Performance Plus(Japanese)" }, ...snip...
create-workspaces
それでは実際にWorkSpacesを作ってみます。 WorkSpacesの作成では所属させるDirectoryのID、ユーザー名、使用するバンドルのIDが必要です。なお、このユーザーは既にDirectoryに作成されている必要があります。
$ aws workspaces create-workspaces --workspaces DirectoryId=d-9567331a7f,UserName=smokeymonkey,BundleId=wsb-2k4vg5l73 { "PendingRequests": [ { "UserName": "smokeymonkey", "DirectoryId": "d-9567331a7f", "State": "PENDING", "WorkspaceId": "ws-5t1q2x8jw", "BundleId": "wsb-2k4vg5l73" } ], "FailedRequests": [] }
describe-workspaces
WorkSpacesの一覧はdescribe-workspacesで取得できます。
$ aws workspaces describe-workspaces { "Workspaces": [ { "UserName": "smokeymonkey", "DirectoryId": "d-9567331a7f", "State": "AVAILABLE", "WorkspaceId": "ws-5t1q2x8jw", "SubnetId": "subnet-71b21406", "IpAddress": "172.16.0.88", "BundleId": "wsb-2k4vg5l73" } ] }
なお、--directory-idでディレクトリ単位でのフィルタ、--user-nameでユーザーでのフィルタ、--bundle-idでバンドルでのフィルタが使えます。
reboot-workspaces
WorkSpacesの再起動はreboot-workspacesで行います。
$ aws workspaces reboot-workspaces --reboot-workspace-requests ws-5t1q2x8jw { "FailedRequests": [] } $ aws workspaces describe-workspaces --workspace-ids ws-5t1q2x8jw { "Workspaces": [ { "UserName": "smokeymonkey", "DirectoryId": "d-9567331a7f", "State": "REBOOTING", "WorkspaceId": "ws-5t1q2x8jw", "SubnetId": "subnet-71b21406", "IpAddress": "172.16.0.88", "BundleId": "wsb-2k4vg5l73" } ] }
rebuild-workspaces
WorkSpacesを再構築するのはrebuild-workspacesです。
$ aws workspaces rebuild-workspaces --rebuild-workspace-requests ws-5t1q2x8jw { "FailedRequests": [] } $ aws workspaces describe-workspaces --workspace-ids ws-5t1q2x8jw { "Workspaces": [ { "UserName": "smokeymonkey", "DirectoryId": "d-9567331a7f", "State": "PENDING", "WorkspaceId": "ws-5t1q2x8jw", "BundleId": "wsb-2k4vg5l73" } ] }
再構築中はStateがPENDINGになります。
terminate-workspaces
WorkSpacesの削除はterminate-workspacesで行います。
$ aws workspaces terminate-workspaces --terminate-workspace-requests ws-5t1q2x8jw
実際にやっちゃうとお金がもったいないのでやってません!
さいごに
大量のWorkSpacesを作ったり、あるいは情報を取得したい場合など、CLIが使えるのはとても便利だと思います。Excelの管理表からcreate-workspacesコマンドを作ってターミナルにガーっと流し込むとか。これでまたWorkSpacesの大規模運用の敷居が下がりましたね!