AWSのサービスは、2018年8月現在で100以上あり、今なお新サービスが追加されています。
AWSはサービス公開当時、AWS EC2とAWS S3のみでした。それが今や大変な数になっています。興味があって勉強しようにも、どこから手をつけてよいのか分かりませんよね。
そこで、AWSのさまざまなサービスを、カテゴリごとに解説しました!
技術解説というほど深くは触れていませんが、サービスの中身が分かる程度に解説をしています。みなさんのお困りごとを解決してくれたり、興味のあることを実現してくれるものがあるかもしれません!
AWSのサービス一覧
以下のカテゴリに分けて解説します。ご興味のある分野からどうぞ!
- コンピューティング
- ストレージとコンテンツ配信
- データベース
- ネットワーク
- 分析
- IoT
- 開発者用ツール
- 管理ツール
- セキュリティと ID
- ゲーム開発
1.コンピューティング
まずはこれ!コンピューティングです。
AWS EC2(Elastic Compute Cloud)です。このサービスは、AWSのデータセンター内に独自でアレンジした仮想サーバーを立てられるサービスです。一度立ち上げれば、自分でハードウェアを組んで立ち上げたサーバーとほぼ同等のことができます。
AWS内で立ち上げた仮想サーバーをサーバーインスタンスと呼びます。マシンイメージやスナップショットと区別するときなどは特にこの用語を使います。
また、自力でサーバーをアレンジしなくても、AWSマーケットプレースにてセッティング済みのマシンイメージを購入することもできます。例えば、Wordpress環境、最近流行りの機械学習フレームワークのセットアップ済み環境、などです。
サーバーインスタンスにWebサーバーを入れて独自のアプリケーションを動かすもよし、ミドルウェアやアプリをインストールして特殊な用途のサーバーに仕立てるもよし・・・本当に自分でハードから組んだサーバーと変わりありません。
しかも、サーバーのマシンイメージを取得して量産できたり、スナップショットを取ってその退避先を海外のデータセンターにといった、一昔前では考えられなかったことが当たり前のようにできます。
オートスケーリングもAWSのコンピューティングを語る上では外せません(AWSに限らず、クラウドの特徴ともいえますが)。これはロードバランサの配下に複数のEC2インスタンスが待機しており、負荷が高くなると自動的にサーバーインスタンスを起動し、負荷が低くなると元の台数に戻るというものです。
特定の期間だけサーバーインスタンスを追加し、不要になったら元に戻るので、効率的なリソース投入ができます。
コンテナーやVMWareも要注目です。
AWS ECSは、DockerイメージをAWSへアップして動かすことができるサービスです。また最近注目を浴びているKubernatesにも対応しています。コンテナ技術ではありませんが、VMware Cloud on AWSでは、何とVMWareのVDSをアップロードして、それをAWS上で起動することができるのです!
今までAWSのコンピューティングのメリットについて解説しましたが、サーバーを立ち上げずにWebシステムなどを動かす、最近注目のサービスがあります。
それは、AWS Lambdaです!
「サーバーレス」というキーワードを聞いたことはあるでしょうか?サーバーインスタンスを立ち上げる必要なく、Webアプリを稼働させるという発想です。この考えを実現できるのがAWS Lambdaです。
徐々にではありますが、浸透しつつあります。サーバーレスの概念とAWS Lambdaを早めに押さえておくと、何か良いことがあるかもしれませんよ!
ポテパンスタイルにおける参考記事:
AWSといえばEC2!さあ無料で始めましょう
AWSのEC2を利用するメリットは?概要から始め方まで徹底解説!
【徹底解説】Elastic Load Balancingを使って効率的に負荷分散
AWS Marketplaceを使って、環境セットアップをお手軽に!
AWS Lambdaとはなに?使用するメリット・始め方を徹底解説します!
2.ストレージ
このカテゴリでも王道があります。それは、AWS S3です。
AWS S3は、ブラウザ経由でもアクセスできる、AWS上のストレージです。バケットといわれる、いわゆる「フォルダ」に対し、物理ファイルをアップしたりダウンロードしたりできます。またs3://で始まるURLに対してアクセスもできます。
このS3は比較的わかりやすいサービスなので、AWS CLI(コマンドラインインターフェース)による操作の練習台にもよいかもしれませんね。
AWS S3が単独のストレージなのに対し、仮想サーバーへ接続(アタッチ)して使うAWS EBSというストレージもあります。
AWS EBSは、いわゆる仮想サーバーの外付けディスクといえます。後になって容量を増やしたり、仮想サーバーから切断して別のインスタンスにアタッチしたり、スナップショットを取得して別のリージョンに移したり、と自由自在です。
一度保存したらほとんど使用しなかったり、一定期間を保存できればそれでよい、という場合もありますし、このようなデータに限って大容量になるものです。そんな用途に最適なのが、AWS Glacier(グレーシャ)です。AWS S3ほどすぐに取り出せる、というわけではありません。取り出すのに時間がかかります。
しかし、IoTや機械学習、ビッグデータやコンプライアンス対応など、即時データを取り出す必要はないけど保存容量が大きい、という場合にAWS Glacierは有効です。
ポテパンスタイルにおける参考記事:
AWSをエンジニアっぽく黒画面でコマンド操作「AWS CLI」
クラウド上のハードディスク「Amazon EBS」はメリットがいっぱい!
3.データベース
データベース(OracleやSQLServer、MySQLなど)は、サーバーにインストールして使うもの、と思い込んでいる方はいませんか?
AWS(クラウドは大概そうですが)では、必ずしもサーバーインスタンスにインストールして使わなくてもよいのです。つまり、データベースですらサービスとして提供されています。それが、AWS RDSです。
AWS RDSとは何かと聞かれれば、サーバーが不要なデータベース、またはむき出しのデータベース、という表現ができます。サーバーインスタンスを立てなくても、データベースが作れて、そこへデータベースのクラアントツール(SQLDeveloperやOSQLEdit、SQLServer Management Studioなど)でアクセスできるのです。
もちろん、サーバーインスタンスに直接データベースをインストールしたときほど細かなチューニングはできませんが、それでもサーバーなしでデータベースを立てられるのは魅力的です。
対応しているデータベースは、以下のとおりです。
- Amazon Aurora
- PostgreSQL
- MySQL
- MariaDB
- Oracle
- Microsoft SQL Server
これらがライセンス料不要で、しかもバックアップが簡単に取れたり、Multi-AZ(1つのデータセンター内の複数の区画にまたがってデータを保存できるため、停電や自然災害による被害を最小限に止めることができる)に対応できたり、と多数のメリットがあります。
ところで、上記の中で、一番上の見慣れない名称にお気づきでしょうか?
これは、Amazon Auroraといって、従来のデータベースにはない新しいタイプのデータベースエンジンです。
Amazon Auroraはデータベースにインストールはできません。クラウドサービス専用です。クラウドに最適化されたRDSのデータベースなのです。それでいてMySQLやPostgreSQLとの互換性があり、アプリやクライアントツールからの接続は特別なものが必要ありません。
MySQLやPostgreSQLをお使いの方、ぜひAmazon Auroraへの移行をご検討ください。
ところで、ビッグデータへのご興味はおありですか?
RDBデータベースでは器として小さすぎるし、データが大きすぎてRDBではスピードが出ない、そんな悩みをお持ちの方は、ぜひビッグデータへの移行を検討してみてください。そしてAWSでは、すでにビッグデータ用DBを用意されています。
それが、AWS DynamoDBなどのビッグデータ用データベースです。確かにこれらは扱いがむずかしいKVS型(キーバリューストア型)データベースと呼ばれているものです。SQLでアクセスできるわけではありません。しかし、その扱いをマスターできれば、苦労しただけに十分な恩恵を受けることができます。
ポテパンスタイルにおける参考記事:
Amazon RDSでデータベースを簡単に構築できます!
AWS DynamoDBはビッグデータ時代に最適なDB!
MySQLやPostgreSQLをお使いの方へおススメ!Amazon Aurora
AWS Marketplaceを使って、環境セットアップをお手軽に!
4.ネットワークとコンテンツ配信
ネットワークと聞いて「LANケーブルとハブを持って、現場を走り回って敷設するもの」というイメージをお持ちではないでしょうか?
クラウドでは、すでにネットワーク丸ごとサービスとして提供しています。つまり、仮想ネットワークとしてAWSマネジメントコンソールからだけでネットワークが構築できるのです。それが、AWS VPC(Virtual Private Cloud」です。
AWS VPCは、AWS環境内に構築する仮想ネットワークです。ネットワーク設計に基づき、機械等のハードウェアを一切意識せず、即座にネットワークを立ち上げることができます。
例えば、インターネットから直接アクセスのある公開エリア、社内の関係者や社内システムといった限られたリソースのみアクセスするプライベートエリアと分けて構築することもできます。
AWS VPCはIPSec対応なので、VPN回線経由で自ら構築したVPCと自社のネットワークを接続できます。よって自社のネットワークの拡張先をAWS VPCに、といったことも簡単にできてしまいます!
もうお気づきかもしれませんが、その仮想ネットワーク内に前述のAWS EC2のサーバーインスタンスやAWS RDSのデータベースインスタンスを立ち上げることができるのです。
扱いが普通の(仮想ではない現実の、という意味で「普通の」)ネットワークと同じであり、その中にクラウドのリソースを投入できる、というのは、柔軟性に富んだ使い方ができますね。
VPCやその中のリソースを自由にできるので、自分で構築したネットワークを作っては変更してを繰り返し、時には削除し、問題なく要件を満たすかテストをできます。よって、高いハードを購入して、LAN線をつないでみて初めて設計ミスに気づく、といったこともありません。
まさしくこれからの時代に即した仮想ネットワークですね。それがAWS VPCです。
AWSのネットワーキング、となれば、AWS Route53も外せません。
53という数字を聞いてピンときた方、さすがです。TCP/IPのポート番号でいうと、DNSは53番なのです。
AWSはDNSもサービスとして提供します。それがAWS Route53です。
お名前.comなどのAWS外サイトでドメイン(○○.comや○○.co.jpだけでなく、最近では○○.tokyoなど変わったものもある)を購入し、そのドメインを自分のEC2インスタンスに割り当て、インターネットに公開することができます。もちろんAWS Route53内でもドメインを購入できます。
一般的なDNSならここで終わりですが、さらに、そこからAWSのサービスである強みが出てきます。AWS Route53独自のヘルスチェックや、前述のAWS ELB(Elastic Load Balancing)と連結し、負荷に応じたロードバランシング環境の構築といったことも可能です。
ポテパンスタイルにおける参考記事:
AWS VPCは変更、拡張、自由自在な仮想ネットワーク
【徹底解説】AWS Route53はAWS各種サービスに最適なDNSです!
5.分析
巨大かつ多彩なサービスやインフラがAWSの強みですが「すでにあるデータを分析する」というビジネスに貢献するサービスも強みです。
S3に保存してある多数のデータ、例えばCSVやJSONデータなどを分析するシーンを考えてみましょう。
従来の考え方だと、まずはデータベースを作って、テーブルを定義してCREATE TABLEし、そこにデータをインポートするバッチ処理のスクリプトを用意し、そのスクリプトを実行してデータベースへデータを投入します。
そして分析用のSQLを実行して、やっと望むもの(分析結果)が得られます。
ところが、AWS Athenaを使えば、その作業負荷は激減します。データのスキーマ(要はデータレイアウト定義)を行い、標準的なSQLで分析できます。余計なサーバーインフラやミドルウェアは不要です。
近いサービスとして、AWS Glueも合わせて紹介しておきます。
AWS Glueは、Athenaとは似ているのですが、分析結果をS3やデータベースへ格納できます。つまり、AWS GlueはETLツールに該当し、抽出・検索・結果転送まで担います。
AWS AthenaとAWS Glueを連携して使うとどうでしょうか?SQLベースで分析できるAWS Athenaと、その結果をAWS Glueにて結果転送、となると一連の流れをすべてカバーできます。現に、AWS Athenaの出力先の標準はAWS Glueです。
AWS AthenaとAWS Glueは、EUC(エンドユーザーコンピューティング:エンジニアではなく利用者または利用部門によるIT活動)的に使えます。もっと大量データ、もっと複雑な分析をお求めですか?
そんな方にうってつけなのがAWS EMR(Elastic Map Reduce)です。
AWS EMRは、Hadoopをはじめとして以下のようなメジャーなオープンソースに対応した大量データ分析システムです。
- Apache Spark
- Apache HBase
- Presto
分析に必要なサーバーインスタンスは、オートスケーリング(必要に応じてサーバーインスタンスが追加で立ち上がり、処理が終わればインスタンスが停止する)で1台から数百〜数千まで自動的に変化し、さらに支払う料金は使ったインスタンス分だけです。
Hadoopを使いたい!そんなとき、AWS EMRを使えば自前でインフラを構築することなく大量データを分析できます。分析に集中できるのです。AWS S3やAWS DynamoDBといったAWS内の各種データストア内でも処理可能です。AWS EMRはIoTや機械学習、財務分析、ログ分析、科学計算といった活用事例があります。
ポテパンスタイルにおける参考記事:
AWS Glueでデータ種を問わない転送を手軽に!
6.IoT
これまで紹介してきたサービスは、すべてインターネット内で使うサービスばかりです。では、インターネットと直接つながっていないモノとの連携はどうでしょうか?
例えば、各種デバイスやハードウェア、センサーなどが拾ったデータを自動で分析し、結果をフィードバックし、そして次のアクションへつなげる、そういった使い方もしたいですね。そう、これがまさしくIoTの説明です。IoTを「モノのインターネット」と呼ぶこともうなずけますよね。
そして、IoTを実現するAWSのサービスが、IoT Coreなのです。
AWS上でデバイスの認証を行い、それ以降はMQTTやHTTP、WebSocketのいずれかで接続し、ルールエンジンが決められた分析の実施と決められたアウトプット方法で結果を出力。そしてその出力先はAWSのサービス・・・可能性が無限に広がりそうですね。
機械学習
AWSでは、機械学習も可能です。本記事執筆時点で直近に発表された新しいサービスを紹介します。
AWS SageMakerです。
本来、機械学習とは困難なシロモノでした。モデルを構築し、トレーニングデータを用意して、次は使用するアルゴリズムとフレームワークの選択、などなどと、分析のコアな部分以外の作業が多くありました。
ところがAWS SageMakerは、ある程度のモデルが準備されていて、データソースもAWSの各種リソース(S3やDynamoDB,RDSなど)を利用でき、そしてフレームワークの選択も、TensorFlow、Apache MXNet、Chainerといった新旧いろいろなものから選択できます。またサーバーベースのJupyter Notebookが提供されているのも、うれしい仕様ですね。
これで、開発者は本来の分析に注力できます。
7.開発者用ツール
AWSには開発者向けの大掛かりなサービスがあるのですが、ここではより開発者向けのAWSサービスをご紹介します。
まずはAWS Elastic Beanstalkです。
このサービスは、本来であればWebシステムの稼働における各種の管理(ストレージの確保、オートスケーリング、ロードバランシング、ヘルスチェック)はすべて集中管理できます。
対応言語は、Java/PHP/Ruby/Python/Nodeなどで、対応開発ツールは、EclipseやVisualStudioです。この対応ツールにプラグイン形式でAWS Beanstalkのツールを導入し、開発ツールから各種管理ができるようなイメージです。わざわざAWSのマネジメントコンソールにアクセスする必要がなくなります。
あと、一風変わった開発ツールのサービスもあります。それはAWS Cloud9です。
「あれ?Cloud9って、もともとAWSにあったっけ?」と思われた方、スルドイです。もともとはまったく別の会社だったのですが、2016年7月にAWSがCloud9を買収しました。
Cloud9とは、ブラウザベースでシステム開発ができるサービスです。UI的によくできていて、一般的な開発ツールとは差がないくらいです。イメージ的にVisual Studio Code風という感じでしょうか?それでいてターミナル操作やGitHub連携もでき、Emmetの導入も簡単です。
複雑なシステム開発は無理ですが、少数人数または個人で開発するくらいなら十分の機能や性能を備えています。
AWSがCloud9を買収すると聞いて、最初は誰もが不安に思いました。しかし、2年経過した今見ても、従来のCloud9とは大きく変わっていないようです。
まだ大きな動きはありませんが、今後の発展に期待したいところです。
8.管理ツール
AWSがいかにサービスを追加しようとも、AWSの管理ツールであるマネジメントコンソールからすべてをコントロールできることには変わりありません。
AWSマネジメントコンソールには、各種リソースにタグ付けして、それをまとめて抽出できる機能や、特によく使う機能を上のメニューバーに出したままにする機能など、単に操作する以上の便利な機能が付いています。
AWSマネジメントコンソールは、基本はブラウザから操作するのが前提になっていますが、iOSやKndle、Androidでアプリが出ており、スマートフォンなどのモバイル端末からの操作ができます。
またエンジニアっぽく、AWS CLIを使えば、コマンドライン操作も可能です。
ポテパンスタイルにおける参考記事:
AWSを集中管理したい!AWS マネジメントコンソールを使いこなそう!
AWSをエンジニアっぽく黒画面でコマンド操作「AWS CLI」
9.セキュリティと ID
AWSで一番最初のユーザー登録をする際は、メールアドレスとパスワードで行います。しかしこれでは、複数人数でAWSマネジメントコンソールを使うことができません。また、AWSは初期登録のメールアドレスとパスワードでそのまま使い続けることを推奨していません。
そこで、AWS IAMというサービスを使います。
これはユーザーを複数登録できて、そのユーザーはいずれかのグループに所属します。そしてグループ単位で権限を付与していきます。この機能を活用して、誰でもサーバーインスタンスを操作できたり、といった危険な状態を回避できます。
また管理者は、他のユーザーのパスワードリセットを行うといった管理機能を有します。
ポテパンスタイルにおける参考記事:
AWS各種サービスのユーザー管理を簡単に!「AWS IAM」
10.ゲーム開発
AWSのサービスは、とかくビジネスアプリやインフラに話がいきそうですが、それだけではなく、Gameサイトのホスティングも実施しています。それが、Amazon GameLiftです。
サーバーの容量をプレーヤーの数に応じて適切に増減させたり、Unity、Unreal、Lumberyardなどのエンジンに対応していたり、とゲーム開発に最適なサービスといえます。
まとめと、今後の勉強方法
本記事では、AWSの全サービスを概要レベルで開設しました。どれか1つでも気に入った、または気になるサービスはあったでしょうか?今後もAWSのサービス増加は続いていきます。今のうちに、AWSを勉強してみてはいかがでしょうか?
最後に、興味を持たれた方のために、AWSの勉強法や最新の転職状況をお伝えします。
ポテパンスタイルにおける参考記事:
何から手をつければ良い?AWSを勉強する際のポイントをまとめてみました!!
AWS案件のイマがわかる!知って見つかる最適案件
AWS求人を探している方へ!最適な求人案件を見つけるための基礎知識