【AWS】AWSサービスの各種上限値をaws-cliで取得する
はじめに
こんにちは植木和樹です。先日「AWSサービスの各種上限値一覧」というエントリがありましたが、上限緩和をした後の新しい上限値を知る方法はないか、できればコマンドで取りたいな・・・と考えていたところaws-cliのsupportコマンドでTrusted Advisorの情報を取得できることを知りました。(aws-cli support)
どのような情報が取れるのでしょうか?試してみました。
取得方法
必要なもの
- aws-cli/1.2.0
- jq/1.2
Trusted Advisorでチェックできる項目一覧
Trusted Advisorから取得できる情報はdescribe-trusted-advisor-checksコマンドで確認することができます。
$ aws support describe-trusted-advisor-checks --language en | jq -r '.checks[].name' Amazon EC2 Reserved Instances Optimization Low Utilization Amazon EC2 Instances Idle Load Balancers Underutilized Amazon EBS Volumes Unassociated Elastic IP Addresses Security Groups - Specific Ports Unrestricted Security Groups - Unrestricted Access IAM Use Amazon S3 Bucket Permissions MFA on Root Account IAM Password Policy Amazon RDS Security Group Access Risk Amazon EBS Snapshots Amazon EC2 Availability Zone Balance Load Balancer Optimization VPN Tunnel Redundancy High Utilization Amazon EC2 Instances Auto Scaling Group Resources Amazon RDS Backups Amazon RDS Multi-AZ Auto Scaling Group Health Check Service Limits Amazon S3 Bucket Logging Amazon EBS Provisioned IOPS Volume Attachment Configuration Large Number of Rules in an EC2 Security Group Large Number of EC2 Security Group Rules Applied to an Instance Amazon RDS Idle DB Instances Amazon Route 53 Alias Resource Record Sets Amazon Route 53 Name Server Delegations Amazon Route 53 High TTL Resource Record Sets
名前から推測するに、どうやら上限値の取得は「Service Limits」で取れそうです。
上限値を取得する
対象を「Service Limits」に絞って取得できる情報(description)をみてみましょう。
$ aws support describe-trusted-advisor-checks --language en | \ jq -r '.checks[] | select(.name == "Service Limits")' { "category": "performance", "metadata": [ "Region", "Service", "Limit Name", "Limit Amount", "Current Usage", "Status" ], "description": "Checks for usage 〜(長いので下記に抜粋)", "name": "Service Limits", "id": "eW7HH0l7J9" },
Checks for usage that is more than 80% of the service limit. Values are based on a snapshot, so your current usage might differ. Limit and usage data can take up to 24 hours to reflect any changes. In some cases, your usage might be greater than the indicated limit for a period of time.
Alert Criteria
Yellow: Usage is more than 80% of the service limit.Recommended Action
If you anticipate exceeding a service limit, request an increase by submitting the relevant form from the Additional Resources section of the AWS Contact Us page.Additional Resources
AWS Service Limits
実際の上限数と現在の使用数はdescribe-trusted-advisor-check-resultコマンドに、CHECK-ID(eW7HH0l7J9)を指定することで取得することができます。
$ aws support describe-trusted-advisor-check-result --check-id eW7HH0l7J9a | \ jq -r ".result.flaggedResources" [ (途中省略) { "metadata": [ "ap-northeast-1", "EC2", "On-Demand Instances", "20", "1", "Green" ], "region": "ap-northeast-1", "isSuppressed": false, "resourceId": "8fl6nRb1Dw6CswuB3NlGFBjL9OkFafCHapz2wzTRDHA", "status": "ok" }, { "metadata": [ "ap-northeast-1", "EC2", "VPC Elastic IP addresses (EIPs)", "5", "2", "Green" ], "region": "ap-northeast-1", "isSuppressed": false, "resourceId": "PBpzzAB4CKAS2Eyij2dt8fGCPuLRwN8Qu8IhjWrDI2E", "status": "ok" } ]
metadataに実際の値が入っています。項目の並びはdescribe-trusted-advisor-checksで表示された順になっています。JSON形式なのでちょっと頑張って読まなければいけませんが「オンデマンドEC2インスタンスの同時起動数の上限20に対して1起動中」、「VPC ElasticIPの上限5に対して2つ使用中」ということが分かります。
なお現時点で取得できる上限値は次のものになります。(Reserved Instancesがたくさん出ているのはリージョン毎に上限数が設定されているためです)
$ aws support describe-trusted-advisor-check-result --check-id eW7HH0l7J9 \ | jq -r ".result.flaggedResources[].metadata[2]" Active snapshots Active volumes Volume aggregate size (GB) Reserved Instances - purchase limit (monthly) Reserved Instances - purchase limit (monthly) Reserved Instances - purchase limit (monthly) Reserved Instances - purchase limit (monthly) Reserved Instances - purchase limit (monthly) Reserved Instances - purchase limit (monthly) Reserved Instances - purchase limit (monthly) Reserved Instances - purchase limit (monthly) On-Demand Instances VPC Elastic IP addresses (EIPs)
まとめ
AWSビジネスサポートを契約することでTrusted Advisorを利用することができるようになります。さらにaws-cliを使うことで各種上限値を簡単に取得することができました。コマンド(API)から取得することでプログラムに組み込みやすくなり、定期的な自動チェックと通知など色々と用途が考えられそうですね。
本日(2013年10月29日)時点では、残念ながら「AWSサービスの各種上限値一覧」で紹介されている、すべての上限値が取得できるわけではないようです。CloudFormationのスタック上限数やSNSのトピック数は取得できませんでした。ただ今後取得できる項目は増えていくと思いますので心待ちにしたいと思います。