この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
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の大規模運用の敷居が下がりましたね!