AWS Directory ServiceがAPI対応しました!

2015.05.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

森永です。

AWSにはDirectory Serviceというサービスがあります。
オンプレにあるActiveDirectoryと連携して、AWSのリソースにアクセス(AD Connector)したり、新たなDirectory(Simple AD)を作成したりできるすごいやつです。

ただし、こいつには弱点がありました。それは、API/CLIに対応していないという点です。
それが今日!解消しました!遂にAPIに対応しました!

使ってみる

みんな大好きCLIを使って試してみましょう。(MAC環境で行います。Linuxでも多分いけます。)
まずはActiveDirectory対応している最新版(1.7.27 2015/5/15現在)にアップデートします。
(CLIをそもそも入れてない方はこちらこちらをご覧になりインストール、設定を行って下さい。)

$ sudo pip install --upgrade awscli

これだけで完了です。一応バージョンの確認をしておきましょう。
CLIのバージョンが1.7.27以降であれば大丈夫です。

$ aws --version aws-cli/1.7.27 Python/2.7.6 Darwin/14.3.0

早速使ってみましょう!今回はSimple ADを作成してみます。
コマンドで全部作成することも可能なのですが、管理の事を考えてJSONファイルを作成し、設定値をそこに書き込みます。
まずは、JSONのひな形を作成するのですが、コマンドで一発で作成できます。

$ aws ds create-directory --generate-cli-skeleton > directory_setting.json
$ cat directory_setting.json
{
    "Name": "",
    "ShortName": "",
    "Password": "",
    "Description": "",
    "Size": "",
    "VpcSettings": {
        "VpcId": "",
        "SubnetIds": [
            ""
        ]
    }
}

設定を書き込んでいきます。
ここで記載するパスワードはAdministratorのものです。
条件があり、

  • 文字数:8文字以上64文字以下
  • 文字種:大文字、小文字、数字、記号の4種のうち少なくとも3種を含む

というものです。

$ vi directory_setting
{
    "Name": "test-directory.com",
    "ShortName": "testAD",
    "Password": "********",
    "Description": "for test",
    "Size": "Small",
    "VpcSettings": {
        "VpcId": "vpc-********",
        "SubnetIds": [
            "subnet-********",
            "subnet-********"
        ]
    }
}

こいつをCLIに食わせてDirectoryを作成します。
ローカルのファイルの場合は、ファイル名の前にfile://が必要です。(S3で管理するとかっこよさげ)

$ aws ds create-directory --cli-input-json file://directory_setting.json
{
    "DirectoryId": "d-**********"
}

うまくいくとDirectoryのIDが出力されます。せっかくなのでCLIでdescribeしてみましょう。

$ aws ds describe-directories --directory-ids d-********
{
    "DirectoryDescriptions": [
        {
            "AccessUrl": "d-**********.awsapps.com",
            "DirectoryId": "d-**********",
            "SsoEnabled": false,
            "Name": "test-directory.com",
            "DnsIpAddrs": [
                "10.0.5.71",
                "10.0.6.214"
            ],
            "VpcSettings": {
                "SubnetIds": [
                    "subnet-********",
                    "subnet-********"
                ],
                "VpcId": "vpc-********",
                "AvailabilityZones": [
                    "ap-northeast-1a",
                    "ap-northeast-1c"
                ]
            },
            "StageLastUpdatedDateTime": 1431661932.779,
            "Alias": "d-**********",
            "LaunchTime": 1431661589.528,
            "Description": "for test",
            "ShortName": "testAD",
            "Stage": "Active",
            "Type": "SimpleAD",
            "Size": "Small"
        }
    ]
}

うまくいきました!!あとは作成したDirectoryにWindowsを参加させるだけです!
それについてはこちらの記事をご覧くださいませ。

おわりに

これでDirectory Serviceもシェルなどでスケールしやすくなりました!
Directoryはエンタープライズでは必須な要素ですので、ありがたい限りです。
ちなみに、APIになったということはCloudTrailで証跡も取れるようにもなっています。
Directory Serviceちゃんも赤裸々です。

最後に、コマンドの一覧を載せておきます。参考までに。

コマンド一覧

コマンド 意味
connect-directory オンプレとの接続のためにAD Connectorを作成
create-alias Directoryのエイリアスを作成(消せないので必要なときだけ使用する)
create-computer コンピュータをDirectoryに追加
create-directory 新しいDirectory(Simple AD)を作成
create-snapshot スナップショットを取得
delete-directory Directoryを削除
delete-snapshot スナップショットを削除
describe-directories Directory一覧を表示
describe-snapshots スナップショット一覧を表示
disable-radius MFA(Multi-Factor Authentication)を無効化
disable-sso DirectoryでSSO(Single Sign-On)を無効化
enable-radius RADIUSサーバを使ってMFAを有効化
enable-sso SSOを有効化
get-directory-limits そのリージョンでのDirectory数の制限を取得
get-snapshot-limits そのリージョンでのスナップショット数の制限を取得
restore-from-snapshot スナップショットからのリストア
update-radius MFAに使用するRADIUSサーバの情報を更新

参考文献

Now Available – AWS Directory Service API & CLI (Bonus: CloudTrail Integration)
ds - AWS CLI 1.7.27 documentation