Amazon Web Services 한국 블로그

AWS 리전별 제공 서비스 목록과 엔드포인트 쉽게 가져오는 방법

많은 AWS 고객들이 사용 중인 리전 및 서비스에 대한 정보를 프로그래밍 방식으로 사용할 수 있는 방법을 많이 요청해 왔는데, AWS Systems Manager Parameter Store에서 스크립트 및 코드를 통해 쉽게 액세스할 수 있게 되었습니다.

원래 리전별 서비스표로 제공하던 정보인데, 이제 여러분이 사용하는 활성 리전에 대한 전체 목록과 해당 리전에서 사용 가능한 서비스 등 다양한 정보를 확인할 수 있습니다.

여러분은 AWS CLI(명령줄 인터페이스), AWS Tools for Windows PowerShell 또는 AWS SDK  중 원하는 것을 사용해도 좋습니다. CLI를 사용하는 경우 모든 CLI 명령에 대해 JSON, 탭으로 구분된 형식 또는 테이블 형식으로 출력을 요청할 수 있습니다. 저는 JSON을 사용하며, jq 유틸리티를 자유롭게 활용하여 각 쿼리에서 가장 관련 있는 출력의 일부분을 제공합니다.

1. 모든 AWS 리전 목록 가져오기

다음은 활성 리전 목록을 쿼리하는 방법입니다.

$ 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"

2. 모든 AWS 서비스 목록 가져오기

다음은 사용 가능한 모든 AWS 서비스의 전체 목록을 표시하고, 사전순으로 정렬하고, 처음 10개(이 예제 작성 시 155개 중에서)를 표시하는 방법을 보여줍니다.

$ 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"

3. 개별 리전에서 사용가능한 서비스 가져오기

다음은 지정된 리전에서 사용 가능한 서비스 목록을 가져오는 방법(다시, 정렬된 처음 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"

4. 개별 서비스 사용가능한 리전 가져오기

다음은 서비스(이 경우 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"

5. 개별 서비스명 및 엔드포인트 가져오기

다음은 경로를 사용하여 서비스 이름을 가져오는 방법을 보여줍니다.

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

다음은 다시 경로를 사용하여 지정된 서비스에 대해 리전별 엔드포인트를 찾을 수 있는 방법을 보여줍니다.

$ 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"

혹시 여러분의 스크립트와 이와 유사한 정보가 필요하신 경우, 바로 원하는 데이터를 질의할 수 있습니다. 비슷하게 AWS 서비스의 IP 주소 대역을 찾는 방법도 있으니 참고하시기 바랍니다.

Jeff;

PS – 이번 포스트를 도와준 제 동료인 Blake CopenhaverPhil Cali 에게 특별히 감사의 뜻을 전합니다!