【SAP試験対策】AWSのサービス名を形態素解析し、ややこしい名前のサービスを比較する

こんにちは。DA事業本部の春田です。

年々増加するAWSのサービス数。もはや自分の担当領域外のサービスに関しては、把握しきれていないものも多いのではないでしょうか?

しかし、AWS認定のSolution Architect Professionalを受験するとなると、担当外の範囲でも概要くらいは理解しておく必要があります。ただ如何せん、ややこしい名前が多いんですよね……。けれどその辺を手作業で整理するのはかなり面倒。

ということで今回は、サービス名を簡単に形態素解析して、似たサービス名を機械的にあぶり出してみました。(正規表現ベースです)

目次

準備

対象となるAWSサービスは、マネジメントコンソールのサービス一覧と、AWSのCloud Productsから、主観をまじえてチョイスした 196個 のサービスです。なお、何を持って「サービス」とするのかは、あまり気にしないでください。

カテゴリ サービス名
Compute Amazon Elastic Compute Cloud (EC2)
Amazon EC2 Auto Scaling
Amazon Elastic Container Registry (ECR)
Amazon Elastic Container Service (ECS)
Amazon Elastic Container Service for Kubernetes (EKS)
Amazon Lightsail
AWS Batch
AWS Elastic Beanstalk
AWS Fargate
AWS Lambda
AWS Outposts
AWS Serverless Application Repository
AWS Wavelength
VMware Cloud on AWS
EC2 Image Builder
Storage Amazon Simple Storage Service (S3)
Amazon Elastic Block Store (EBS)
Amazon Elastic File System (EFS)
Amazon FSx for Lustre
Amazon FSx for Windows File Server
Amazon S3 Glacier
AWS Backup
AWS Storage Gateway
Database Amazon Aurora
Amazon DynamoDB
Amazon DocumentDB (with MongoDB compatibility)
Amazon ElastiCache
Amazon Managed Apache Cassandra Service
Amazon Neptune
Amazon Quantum Ledger Database (QLDB)
Amazon Relational Database Service (RDS)
Amazon RDS on VMware
Amazon SimpleDB
Amazon Timestream
Migration & Transfer AWS Migration Hub
AWS Application Discovery Service
AWS Database Migration Service
AWS DataSync
AWS Import/Export
AWS Schema Conversion Tool
AWS Server Migration Service
AWS Snowball
AWS Snowball Edge
AWS Snowmobile
AWS Transfer for SFTP
CloudEndure Migration
Networking & Content Delivery Amazon Virtual Private Cloud (VPC)
Amazon API Gateway
Amazon CloudFront
Amazon Route 53
AWS PrivateLink
AWS App Mesh
AWS Cloud Map
AWS Direct Connect
AWS Global Accelerator
AWS Transit Gateway
Elastic Load Balancing
Analytics Amazon Athena
Amazon CloudSearch
Amazon Elasticsearch Service
Amazon Elastic MapReduce (EMR)
Amazon Kinesis
Amazon Managed Streaming for Kafka (MSK)
Amazon Redshift
Amazon QuickSight
AWS Data Exchange
AWS Data Pipeline
AWS Glue
AWS Lake Formation
Security, Identity, & Compliance AWS Identity and Access Management (IAM)
Amazon Cognito
Amazon Detective
Amazon GuardDuty
Amazon Inspector
Amazon Macie
AWS Artifact
AWS Certificate Manager
AWS CloudHSM
AWS Directory Service
AWS Firewall Manager
AWS Key Management Service
AWS Resource Access Manager
AWS Secrets Manager
AWS Security Hub
AWS Shield
AWS Single Sign-On
AWS Web Application Firewall (WAF)
Management & Governance Amazon CloudWatch
AWS Auto Scaling
AWS Chatbot
AWS CloudFormation
AWS CloudTrail
AWS Compute Optimizer
AWS Config
AWS Control Tower
AWS Health
AWS License Manager
AWS Managed Services
AWS OpsWorks
AWS Organizations
AWS Personal Health Dashboard
AWS Service Catalog
AWS Service Quotas
AWS Systems Manager
AWS AppConfig
AWS Trusted Advisor
AWS Well-Architected Tool
AWS Launch Wizard
Application Integration AWS Step Functions
Amazon EventBridge
Amazon MQ
Amazon Simple Notification Service (SNS)
Amazon Simple Queue Service (SQS)
AWS AppSync
Amazon Simple Workflow Service (SWF)
Developer Tools Amazon Correto
AWS Cloud Development Kit
AWS Cloud9
AWS CodeBuild
AWS CodeCommit
AWS CodeDeploy
AWS CodePipeline
AWS CodeStar
AWS X-Ray
Machine Learning Amazon SageMaker
Amazon Augmented AI (Amazon A2I)
Amazon CodeGuru
Amazon Comprehend
Amazon Elastic Inference
Amazon Forecast
Amazon Fraud Detector
Amazon Kendra
Amazon Lex
Amazon Machine Learning
Amazon Personalize
Amazon Polly
Amazon Rekognition
Amazon Textract
Amazon Transcribe
Amazon Translate
AWS Deep Composer
AWS DeepLens
AWS DeepRacer
Apache MXNet on AWS
TensorFlow on AWS
AWS Cost Management AWS Cost Explorer
AWS Budgets
AWS Cost & Usage Report
Reserved Instance (RI) Reporting
AWS Marketplace Subscriptions
Savings Plans
Customer Enablement AWS IQ
AWS Support
Mobile AWS Amplify
AWS Mobile Hub
AWS Device Farm
Customer Engagement Amazon Connect
Amazon Pinpoint
Amazon Simple Email Service (SES)
Contact Lens for Amazon Connect
Business Applications & End User Computing Alexa for Business
Amazon Chime
Amazon WorkDocs
Amazon WorkMail
Amazon WorkSpaces
Amazon WorkSpaces Application Manager (WAM)
Amazon WorkLink
Amazon AppStream 2.0
Internet of Things AWS IoT Core
Amazon FreeRTOS
AWS IoT Greengrass
AWS IoT 1-Click
AWS IoT Analytics
AWS IoT Button
AWS IoT Device Defender
AWS IoT Device Management
AWS IoT Events
AWS IoT SiteWise
AWS IoT Things Graph
Media Services Amazon Elastic Transcoder
Amazon Kinesis Video Streams
AWS Elemental MediaConnect
AWS Elemental MediaConvert
AWS Elemental MediaLive
AWS Elemental MediaPackage
AWS Elemental MediaStore
AWS Elemental MediaTailor
AWS Elemental Elemental Appliances & Software
Game Development Amazon GameLift
Amazon Lumberyard
AR & VR Amazon Sumerian
Robotics AWS RoboMaker
Blockchain Amazon Managed Blockchain
Satellite AWS Ground Station
Quantum Technologies Amazon Braket
Crowdsourcing Amazon Mechanical Turk

まずは簡単に頻出単語を可視化したいと思います。Python3.7でテキストマイニング・ライブラリのWordCloud をインストールします。

pip3 install wordcloud

WordCloudクラスはかなり細かくパラメータを設定できます。今回肝となるパラメータは、正規表現の regexp ですね。大文字から始まる単語で分割し、想定通り分割できない一部の単語は例外にするため、 r'IoT|FSx|A2I|MXNet|[A-Z0-9][a-z0-9]+|[A-Z0-9]+|[a-z0-9]+' という形になりました。画像の出力は generateto_image メソッドでできます。

from wordcloud import WordCloud
text = """
Amazon Elastic Compute Cloud (EC2)
Amazon EC2 Auto Scaling
Amazon Elastic Container Registry (ECR)
Amazon Elastic Container Service (ECS)
Amazon Elastic Container Service for Kubernetes (EKS)
Amazon Lightsail
AWS Batch
AWS Elastic Beanstalk
AWS Fargate
AWS Lambda
AWS Outposts
AWS Serverless Application Repository
AWS Wavelength
VMware Cloud on AWS
EC2 Image Builder
Amazon Simple Storage Service (S3)
Amazon Elastic Block Store (EBS)
Amazon Elastic File System (EFS)
Amazon FSx for Lustre
Amazon FSx for Windows File Server
Amazon S3 Glacier
AWS Backup
AWS Storage Gateway
Amazon Aurora
Amazon DynamoDB
Amazon DocumentDB (with MongoDB compatibility)
Amazon ElastiCache
Amazon Managed Apache Cassandra Service
Amazon Neptune
Amazon Quantum Ledger Database (QLDB)
Amazon Relational Database Service (RDS)
Amazon RDS on VMware
Amazon SimpleDB
Amazon Timestream
AWS Migration Hub
AWS Application Discovery Service
AWS Database Migration Service
AWS DataSync
AWS Import/Export
AWS Schema Conversion Tool
AWS Server Migration Service
AWS Snowball
AWS Snowball Edge
AWS Snowmobile
AWS Transfer for SFTP
CloudEndure Migration
Amazon Virtual Private Cloud (VPC)
Amazon API Gateway
Amazon CloudFront
Amazon Route 53
AWS PrivateLink
AWS App Mesh
AWS Cloud Map
AWS Direct Connect
AWS Global Accelerator
AWS Transit Gateway
Elastic Load Balancing
Amazon Athena
Amazon CloudSearch
Amazon Elasticsearch Service
Amazon Elastic MapReduce (EMR)
Amazon Kinesis
Amazon Managed Streaming for Kafka (MSK)
Amazon Redshift
Amazon QuickSight
AWS Data Exchange
AWS Data Pipeline
AWS Glue
AWS Lake Formation
AWS Identity and Access Management (IAM)
Amazon Cognito
Amazon Detective
Amazon GuardDuty
Amazon Inspector
Amazon Macie
AWS Artifact
AWS Certificate Manager
AWS CloudHSM
AWS Directory Service
AWS Firewall Manager
AWS Key Management Service
AWS Resource Access Manager
AWS Secrets Manager
AWS Security Hub
AWS Shield
AWS Single Sign-On
AWS Web Application Firewall (WAF)
Amazon CloudWatch
AWS Auto Scaling
AWS Chatbot
AWS CloudFormation
AWS CloudTrail
AWS Compute Optimizer
AWS Config
AWS Control Tower
AWS Health
AWS License Manager
AWS Managed Services
AWS OpsWorks
AWS Organizations
AWS Personal Health Dashboard
AWS Service Catalog
AWS Service Quotas
AWS Systems Manager
AWS AppConfig
AWS Trusted Advisor
AWS Well-Architected Tool
AWS Launch Wizard
AWS Step Functions
Amazon EventBridge
Amazon MQ
Amazon Simple Notification Service (SNS)
Amazon Simple Queue Service (SQS)
AWS AppSync
Amazon Simple Workflow Service (SWF)
Amazon Correto
AWS Cloud Development Kit
AWS Cloud9
AWS CodeBuild
AWS CodeCommit
AWS CodeDeploy
AWS CodePipeline
AWS CodeStar
AWS X-Ray
Amazon SageMaker
Amazon Augmented AI (Amazon A2I)
Amazon CodeGuru
Amazon Comprehend
Amazon Elastic Inference
Amazon Forecast
Amazon Fraud Detector
Amazon Kendra
Amazon Lex
Amazon Machine Learning
Amazon Personalize
Amazon Polly
Amazon Rekognition
Amazon Textract
Amazon Transcribe
Amazon Translate
AWS Deep Composer
AWS DeepLens
AWS DeepRacer
Apache MXNet on AWS
TensorFlow on AWS
AWS Cost Explorer
AWS Budgets
AWS Cost & Usage Report
Reserved Instance (RI) Reporting
AWS Marketplace Subscriptions
Savings Plans
AWS IQ
AWS Support
AWS Amplify
AWS Mobile Hub
AWS Device Farm
Amazon Connect
Amazon Pinpoint
Amazon Simple Email Service (SES)
Contact Lens for Amazon Connect
Alexa for Business
Amazon Chime
Amazon WorkDocs
Amazon WorkMail
Amazon WorkSpaces
Amazon WorkSpaces Application Manager (WAM)
Amazon WorkLink
Amazon AppStream 2.0
AWS IoT Core
Amazon FreeRTOS
AWS IoT Greengrass
AWS IoT 1-Click
AWS IoT Analytics
AWS IoT Button
AWS IoT Device Defender
AWS IoT Device Management
AWS IoT Events
AWS IoT SiteWise
AWS IoT Things Graph
Amazon Elastic Transcoder
Amazon Kinesis Video Streams
AWS Elemental MediaConnect
AWS Elemental MediaConvert
AWS Elemental MediaLive
AWS Elemental MediaPackage
AWS Elemental MediaStore
AWS Elemental MediaTailor
AWS Elemental Appliances & Software
Amazon GameLift
Amazon Lumberyard
Amazon Sumerian
AWS RoboMaker
Amazon Managed Blockchain
AWS Ground Station
Amazon Braket
Amazon Mechanical Turk
"""
regex = r'IoT|FSx|A2I|MXNet|[A-Z][a-z]+|[A-Z0-9]+|[a-z0-9]+'
wordcloud = WordCloud(background_color="white", width=1200, height=600, regexp=regex, collocations=False)
image = wordcloud.generate(text).to_image()
image.show()
wordcloud.to_file('./aws_name1.png')

わずか数行でおしゃれに可視化できます。非常に簡単ですね。

次に、頻出度を数値で見るためにグラフ化してみます。 process_text メソッドを使うと、内部でPythonの標準ライブラリの collectionsre がよしなに動き、単語別にカウントしてくれます。グラフ化ツールには bokeh を使ってみました。

pip3 install bokeh
from bokeh.plotting import figure, show, output_file

word_freq = wordcloud.process_text(text)
word_freq = { k: v for k, v in word_freq.items() if v > 1} # 2以上のみ描写
word_freq = sorted(word_freq.items(), key=lambda x: x[1]) # 値でソート
p = figure(y_range=[v[0] for v in word_freq], plot_width=500, plot_height=1500, x_range=(0, 120), title="Word Frequency", toolbar_location=None, tools="")
p.hbar(y=[v[0] for v in word_freq], right=[v[1] for v in word_freq], height=0.9)
p.text(x=[v[1] for v in word_freq], y=range(len(word_freq)), text=[v[1] for v in word_freq])
show(p)

結果は以下のとおりです。

AWSのサービス名は、冠詞に AWSAmazon のどちらかがつくことがほとんどですが、今のところ"AWS"とつくサービス名の方が多いみたいですね。また、案の定それ以外の単語も結構な数が重複していました。上から順に比較していきたいと思います。

同じ単語を持つサービス比較

※一部、上の正規表現ではカバーしきれなかったサービスを含めたりしています。

Service

Service がつくAWSサービスは、全部で18個ありますが、あまり中身のない単語なので端折ります。

Cloud

クラウドサービスなので Cloud とつくサービス名は多かったです。全13個。違いはわかりますか?

Elastic

次に多かったのが Elastic 。日本語では、「伸縮性・弾力性」と訳されます。ElastiCacheとElasticsearchも入れると全部で13個ですね。なお、Elasticが付くサービスは略されがちです。

IoT & Elemental & Media

IoT はその名の通りIoT系のサービス、 ElementalMedia はメディア系のサービスに対してついている名前です。SAPには滅多に出てこないので端折ります。にしても、こんなニッチなサービスがこんな数あったんですね……。

Manager & Management

SAP試験でかなり重要度が高い ManagerManagement 。いつかこれらのManagerをManagementするManagerが出てきそうですね。その後、そのManagerをManagementするManagerが(ry

Work

同じ Work という単語でも、サービス毎にニュアンスが異なってます。OpsWorksとSWFは頻出、Business Apps系も特徴を問われたりするので、全て理解が必要です。

Code

おなじみCI/CDの Code ファミリー。各サービスがCI/CDのどこを担当しているのかしっかり理解しておきたいです。今気づいたのですが、最新サービスのCodeGuruだけ冠詞が "Amazon" なんですね。なぜこれだけ仲間はずれにされてしまったのでしょうか。

Simple

どんなサービスも Simple さは大事かと思います。汎用性の高いサービスにつけられているようですね。なお、Simpleが付くサービスも略されがちです。

Connect

オンプレとクラウドをつなぐDirect Connect 、顧客とカスタマーサポートをつなぐAmazon Connect 、何と何を繋ぐかによって役割もかなり変わってきますね。SAPではDirect Connectがかなり重要です。

App & Application

同意の AppApplication はまとめると8サービスもあります。サービス名だけでは内容がわからないものが多い、曲者揃いな単語ですね。ほとんどが頻出度高めです。

Migration

超重要単語 Migration 。サービス名で違いがわからなくなることはないと思いますが、それぞれを深く理解しておく必要があります。

Managed

AWSといったら Managed 。サードパーティをマネージド化したサービスに対して付けられるのでしょうか。

DB & Database & Data

DBDatabaseData がついたサービスは9つありました。現在はあまり使われていないサービスもありますが、概要は抑えておきたいところです。

Device

モバイルやIoTのサービスに付いている Device 。端折ります。

Deep

Deep Learningの Deep 。こうして見ると、AWSのガジェットに対して付く単語みたいですね。ビデオカメラ、ラジコン、鍵盤と来たので、今年はDeepCookerとか?(適当)

Hub

数は少ないけど重要単語 Hub 。上のリストには入れてなかったのですが AWS VPN CloudHub や、まさにHub的な役割をしているAWS Transit Gatewayも重要ですね。

Gateway

これまた重要単語 Gateway 。SAPでは全て頻出です。そういえば他にも、Internet GatewaysやNat Gateawaysもありましたね。

Container

その名の通り、コンテナ系のサービスに付く単語の Container 。こちらも深い理解が必要です。

EC2

EC2 の名をもったサービス。名前の意味もわかりやすいですし、こちらは大丈夫でしょう。

残りは重要そうなサービスだけピックアップしてご紹介します。

Cost

Cost 最適化は重要な観点でしょう。 AWS Budgets も合わせて理解したいところです。

Config

AWS Config なのか、AWS AppConfig なのか、違いはしっかり理解しておきたいですね。

Access

管理系重要単語の Access。どちらも深めに理解したいです。

Formation

Cloud Formation と Lake Formation。モダンな環境構築で活躍するサービス群。

Pipeline

どんな内容なのか理解しやすい名前ではありますが、念のため。

Link

AWS PrivateLink と Amazon WorkLink は結構混同してしまいそうな印象。

Sync

どこの何を Sync しているのか、違いをしっかり理解しておきたいところです。

Auto Scaling

AWSの Auto Scaling は2種類あり、どちらもSAP試験でもよく問われますね。

感想

結果、個人的には ManagerApp が付くサービスの理解が不十分だったなと感じました。本当は単語の綴りが似ているとか、最初の3文字が同じとかでもやりたかったのですが、かなりのボリュームになってしまうので今回は見送りました。

こう改めて整理してみると普段気づかない発見もあって面白かったです。次回はまた別の観点からまとめてみます。

参照