【新機能】Amazon Route 53のサービス制限がAPIで確認出来るようになりました

はじめに

今回ご紹介する新機能はこちら!

Amazon Route 53で、サービス制限をAPIによって確認することが出来るようになりました。このAPIを他のAPIを組み合わせることで、現在利用しているリソースが制限に近づいたら通知、といった処理の自動化が可能になります。

やってみた

最新のAWS CLIのインストール

今回、「amzn-ami-hvm-2017.09.1.20171103-x86_64-gp2 (ami-2803ac4e)」のAMIを使ってEC2を起動しました。AWS CLIのバージョンを確認すると...

$ aws --version
aws-cli/1.11.132 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.5.95

このバージョンではサービス制限を叩くオプションがありません。

$ aws route53 get-account-limit
--snip--
aws: error: argument operation: Invalid choice, valid choices are:

そこで最新のAWS CLIをインストールします。

$ pip install awscli --upgrade --user

確認。サービス制限を叩くオプションが追加されています。

$ aws --version
aws-cli/1.11.188 Python/2.7.12 Linux/4.9.58-18.55.amzn1.x86_64 botocore/1.7.46

$ aws route53 help | grep get-account-limit
       o get-account-limit

それではやってみましょう!AWS CLIでは、サービス制限を叩くオプションが3つ用意されています。

get-account-limit

現在のアカウントに対して設定されている制限を表示します。

MAX_HEALTH_CHECKS_BY_OWNER

現在のアカウントで作成できるヘルスチェックの最大数を表示します。

$ aws route53 get-account-limit --type MAX_HEALTH_CHECKS_BY_OWNER
{
    "Count": 0,
    "Limit": {
        "Type": "MAX_HEALTH_CHECKS_BY_OWNER",
        "Value": 200
    }
}

MAX_HOSTED_ZONES_BY_OWNER

現在のアカウントで作成できるホストゾーンの最大数を表示します。

$ aws route53 get-account-limit --type MAX_HOSTED_ZONES_BY_OWNER
{
    "Count": 2,
    "Limit": {
        "Type": "MAX_HOSTED_ZONES_BY_OWNER",
        "Value": 500
    }
}

MAX_REUSABLE_DELEGATION_SETS_BY_OWNER

現在のアカウントで作成できる再利用可能な委任セットの最大数を表示します。

$ aws route53 get-account-limit --type MAX_REUSABLE_DELEGATION_SETS_BY_OWNER
{
    "Count": 0,
    "Limit": {
        "Type": "MAX_REUSABLE_DELEGATION_SETS_BY_OWNER",
        "Value": 100
    }
}

MAX_TRAFFIC_POLICIES_BY_OWNER

現在のアカウントで作成できるトラフィックポリシーの最大数を表示します。

$ aws route53 get-account-limit --type MAX_TRAFFIC_POLICIES_BY_OWNER
{
    "Count": 0,
    "Limit": {
        "Type": "MAX_TRAFFIC_POLICIES_BY_OWNER",
        "Value": 50
    }
}

MAX_TRAFFIC_POLICY_INSTANCES_BY_OWNER

現在のアカウントで作成できるトラフィックフローポリシーレコードの最大数を表示します。

$ aws route53 get-account-limit --type MAX_TRAFFIC_POLICY_INSTANCES_BY_OWNER
{
    "Count": 0,
    "Limit": {
        "Type": "MAX_TRAFFIC_POLICY_INSTANCES_BY_OWNER",
        "Value": 5
    }
}

get-hosted-zone-limit

ホストゾーンに対して設定されている制限を表示します。

MAX_RRSETS_BY_ZONE

指定したホストゾーンで作成できるレコードの最大数を表示します。

$ aws route53 get-hosted-zone-limit --type MAX_RRSETS_BY_ZONE --hosted-zone-id XXXXXXXXXX
{
    "Count": 5,
    "Limit": {
        "Type": "MAX_RRSETS_BY_ZONE",
        "Value": 10000
    }
}

MAX_VPCS_ASSOCIATED_BY_TYPE

指定したプライベートホストゾーンに関連付けられるAmazon VPCの最大数を表示します。--hosted-zone-idで指定出来るのはPrivate host zoneのみです。

$ aws route53 get-hosted-zone-limit --type MAX_VPCS_ASSOCIATED_BY_ZONE --hosted-zone-id XXXXXXXXXX
{
    "Count": 1,
    "Limit": {
        "Type": "MAX_VPCS_ASSOCIATED_BY_ZONE",
        "Value": 100
    }
}

get-reusable-delegation-set-limit

reusable delegation setに対して設定されている制限を表示します。reusable delegation setはDelegation set(4つの権威ネームサーバのセット)を複数のドメインで共有するための機能です。

MAX_ZONES_BY_REUSABLE_DELEGATION_SET

指定したreusable delegation setに関連付けることができるホストゾーンの最大数を表示します。例えばこんな感じでreusable delegation setを作成します。

$ aws route53 create-reusable-delegation-set --caller-reference smokeymonkey
{
    "Location": "https://route53.amazonaws.com/2013-04-01/delegationset/ZZZZZZZZZZ",
    "DelegationSet": {
        "NameServers": [
            "ns-360.awsdns-45.com",
            "ns-620.awsdns-13.net",
            "ns-1070.awsdns-05.org",
            "ns-1973.awsdns-54.co.uk"
        ],
        "CallerReference": "smokeymonkey",
        "Id": "/delegationset/ZZZZZZZZZZ"
    }
}

そしてこのreusable delegation setのidを指定してaws route53 get-reusable-delegation-set-limitを実行すると、サービス制限が取得できます。

$ aws route53 get-reusable-delegation-set-limit --type MAX_ZONES_BY_REUSABLE_DELEGATION_SET --delegation-set-id ZZZZZZZZZZ
{
    "Count": 0,
    "Limit": {
        "Type": "MAX_ZONES_BY_REUSABLE_DELEGATION_SET",
        "Value": 100
    }
}

まとめ

運用の自動化に繋がる新しいAPIが出てきました。今後の新機能も楽しみです。