Amazon Web Services ブログ

新機能 – AWS Systems Manager パラメータストアを使用した AWS リージョン、エンドポイントなどのクエリ

私たちは、AWS のお客様のご要望にお応えして、AWS のリージョンとサービスに関する情報をプログラム的に利用できるようにする方法を見つけるよう、以前からサービスチームに依頼していました。本日、この情報が AWS Systems Manager パラメータストアで利用可能になり、スクリプトとコードから簡単にアクセスできるようになったことをお知らせしたいと思います。アクティブリージョンの完全なリストを入手し、それらでどのサービスが使用できるかなどを知ることができます。

クエリの実行
この記事では、例の大半に AWS コマンドラインインターフェース (CLI) を使います。これには、AWS Tools for Windows PowerShell、または AWS SDK のいずれかを使用することもできます。すべての CLI コマンドと同様に、JSON、タブ区切りのテキスト、または表形式での出力をリクエストできます。今回は JSON を使用し、jq ユーティリティをふんだんに使って、各クエリからの出力の関連性が高い部分を表示します。

アクティブリージョンのリストに対するクエリの実行方法は次のとおりです。

$ aws ssm get-parameters-by-path \
  --path /aws/service/global-infrastructure/regions --output json | \
  jq .Parameters[].Name
"/aws/service/global-infrastructure/regions/ap-northeast-1"
"/aws/service/global-infrastructure/regions/eu-central-1"
"/aws/service/global-infrastructure/regions/eu-north-1"
"/aws/service/global-infrastructure/regions/eu-west-1"
"/aws/service/global-infrastructure/regions/eu-west-3"
"/aws/service/global-infrastructure/regions/sa-east-1"
"/aws/service/global-infrastructure/regions/us-east-2"
"/aws/service/global-infrastructure/regions/us-gov-east-1"
"/aws/service/global-infrastructure/regions/us-gov-west-1"
"/aws/service/global-infrastructure/regions/us-west-1"
"/aws/service/global-infrastructure/regions/ap-northeast-2"
"/aws/service/global-infrastructure/regions/ap-northeast-3"
"/aws/service/global-infrastructure/regions/ap-south-1"
"/aws/service/global-infrastructure/regions/ap-southeast-1"
"/aws/service/global-infrastructure/regions/ap-southeast-2"
"/aws/service/global-infrastructure/regions/ca-central-1"
"/aws/service/global-infrastructure/regions/cn-north-1"
"/aws/service/global-infrastructure/regions/cn-northwest-1"
"/aws/service/global-infrastructure/regions/eu-west-2"
"/aws/service/global-infrastructure/regions/us-west-2"
"/aws/service/global-infrastructure/regions/us-east-1"

以下は、AWS の利用可能なサービスすべての完全なリストを表示し、それらをアルファベット順に並べ替えて、これを書いている時点で 155 件あるサービスの最初の 10 件を表示する方法です。

$ aws ssm get-parameters-by-path \
  --path /aws/service/global-infrastructure/services --output json | \
  jq .Parameters[].Name | sort | head -10
"/aws/service/global-infrastructure/services/acm"
"/aws/service/global-infrastructure/services/acm-pca"
"/aws/service/global-infrastructure/services/alexaforbusiness"
"/aws/service/global-infrastructure/services/apigateway"
"/aws/service/global-infrastructure/services/application-autoscaling"
"/aws/service/global-infrastructure/services/appmesh"
"/aws/service/global-infrastructure/services/appstream"
"/aws/service/global-infrastructure/services/appsync"
"/aws/service/global-infrastructure/services/athena"
"/aws/service/global-infrastructure/services/autoscaling"

以下は、所定のリージョンで利用できるサービスのリストを取得する方法です (今回も、並べ替えてから最初の 10 件を表示します)。

$ aws ssm get-parameters-by-path \
  --path /aws/service/global-infrastructure/regions/us-east-1/services --output json | \
  jq .Parameters[].Name | sort | head -10
"/aws/service/global-infrastructure/regions/us-east-1/services/acm"
"/aws/service/global-infrastructure/regions/us-east-1/services/acm-pca"
"/aws/service/global-infrastructure/regions/us-east-1/services/alexaforbusiness"
"/aws/service/global-infrastructure/regions/us-east-1/services/apigateway"
"/aws/service/global-infrastructure/regions/us-east-1/services/application-autoscaling"
"/aws/service/global-infrastructure/regions/us-east-1/services/appmesh"
"/aws/service/global-infrastructure/regions/us-east-1/services/appstream"
"/aws/service/global-infrastructure/regions/us-east-1/services/appsync"
"/aws/service/global-infrastructure/regions/us-east-1/services/athena"
"/aws/service/global-infrastructure/regions/us-east-1/services/autoscaling"

以下は、サービス (今回は Amazon Athena) が利用できるリージョンのリストを取得する方法です。

$ aws ssm get-parameters-by-path \
  --path /aws/service/global-infrastructure/services/athena/regions --output json | \
  jq .Parameters[].Value
"ap-northeast-2"
"ap-south-1"
"ap-southeast-2"
"ca-central-1"
"eu-central-1"
"eu-west-1"
"eu-west-2"
"us-east-1"
"us-east-2"
"us-gov-west-1"
"ap-northeast-1"
"ap-southeast-1"
"us-west-2"

以下は、パスを使ってサービスの名前を取得する方法です。

$ aws ssm get-parameters-by-path \
  --path /aws/service/global-infrastructure/services/athena --output json | \
  jq .Parameters[].Value
"Amazon Athena"

And here’s how you can find the regional endpoint for a given service, again using the path:

$ aws ssm get-parameter \
  --name /aws/service/global-infrastructure/regions/us-west-1/services/s3/endpoint \
  --output json | \
  jq .Parameter.Value
"s3.us-west-1.amazonaws.com"

今すぐご利用いただけます
このデータは今すぐ利用可能で、今日から無料で使用を開始していただけます。

Jeff;

PS – この記事を書くために助けてくれた同僚の Blake CopenhaverPhil Cali に感謝します!