見出し画像

Day16. AWSを始めるにあたって、まず知っておきたいこと

ひとりでIoTまるっとチュートリアル Advent Calendar 2018 16日目

いよいよクラウドの話になってきました。今日はクラウドベンダであるAWSについてです。Google Compute Platform(GCP)やMicrosoft Azureにも触れてみたいですが、日数の都合(これが一番大きい)と、AWS上でサービス運用をしているという都合上、AWSに関連したお話をします。

AWSとは"Amazon Web Service"の略です。エンジニアじゃない方は意外に思うかもしれませんが、Amazonは、通販事業だけじゃなくて、クラウドベンダコンピュータ資源の貸出し事業も行っているのです。しかも世界トップシェア。

目次
・なぜクラウドベンダが必要なの?
・どんなサービスなの?
・AWSに登録しよう&初期設定をしよう
・AWSのキホン、IAMとネットワーク周りの設定
・有益資料集

なぜクラウドベンダが必要なの?

AWSやGCP、Azureのようなクラウドベンダがなぜ必要なのでしょう?

従来、なにかサービスを始めようと思うと、それには初期投資が必要でした。たくさんのアクセスをさばくサーバーを購入しなければなりません。しかも、年月や企業の成長に合わせてリプレースしなければならない。

それを解決するのがGoogle, Microsoft, AWSなどのクラウドベンダです。自社のコンピュータ資源を貸し出し、使われた分だけ請求する。「必要なものを必要なときに必要なだけ」コンピュータを使えるようになったのです。これにより、webビジネスを低リスクで始めることができるようになりました。

※話はそれますが、「必要なものを必要なときに必要なだけ」は、製造業ではトヨタ生産方式として古くからある言葉です。web中心の世界で製造業の言葉を聞くのは、興味深いです。

どんなサービスなの?

AWSのサービスは、ウェブサービスを作るにあたって、かゆいところに手が届くようになってます。環境構築にほとんど時間がかからないため、サービスを考えることに集中できるわけです。

広範なサービス(の一部) AWSより引用

通常のPCとして利用するようなサーバ(EC2)
・機械学習用途で利用するGPUサーバ(EC2)
・ファイルとしてデータを貯めておくデータストレージ(S3)
・用途に合わせた様々なデータベース(RDS/DynamoDB,...)
IoT機器をより扱いやすくするサービス(AWS IoT/AWS IoT 1-Click)

などなど...本当に色々とあります。自分の用途に合ったものを選ぶのが大変なくらいですが、使いこなせるようになると、かなり強いです。

下記サイトが、非常によくまとまっているので、ざっと眺めるだけでも参考になります。

AWSに登録しよう&初期設定をしよう

まずはアカウント作成です。クレジットカードの記入が必要です。

AWSは個人の趣味の範囲だと、無料~数千円程度で使えますが、使い方を間違えると、高額な請求が来たりします。実際に、GitHub上で随時AWSのキーペアを狙っている人(bot)がいて、一瞬で不正利用されてしまうらしいです。この記事では、13分で不正利用が始まるらしいです。恐ろしすぎる...

そうならないために、AWSの設定を万全にしておく必要があります。AWSの公式では、Well-Architected Frameworkという、AWS活用に関するベストプラクティス集を用意しています。(ホワイトペーパー(PDF))

その中でも、まずはじめにやっておくべき設定をまとめてくれています。運用を始める前に、一度目を通しておいたほうがいいでしょう。なんなら、運用している人も、定期的に目を通したほうがいいでしょう。

下記リンクでは、↑の考え方の特にセキュリティ関連を画像も含め実践的に説明してくれています。適切に利用できるようにきちんと設定しておきましょう。

AWSのキホン、IAMとネットワーク周りの設定

AWSを使う上で、各サービスももちろん大事なんですが、それよりも、必ず避けては通れないものがあります。それがセキュリティ設定です。どのサービスを使うにあたっても必ず出てくる

IAM(ユーザー/グループ/ポリシー/ロール)
ネットワーク(VPC/サブネット)

を抑えることで、その後のサービス利用がぐっと楽になるのかなと思います。

IAM(Identity and Access Management)というのは、望ましくない不正やミスを防止するために、IDや権限を管理するためのサービスです。以下が各要素の関係図です。AWS外ならユーザ/AWS内サービスならロールを作り、ポリシーをアタッチすることで、他サービスへの権限を管理します。

ポリシーで権限を設定するのですが、その中身はこのようなJSON形式で書かれます。

上図は、AWS Black Belt Online Seminarのスライドから拝借しました。上記が基本的な概念ですが、より詳しく知りたい方は、このスライドが参考になります!

また、設定の仕方はこちらのブログも参考になります。

AWSのネットワークに関しても、いろいろな言葉が出てきてややこしいですが、大事なのは、「どこからどこへのアクセスを許すか」です。

ネットワークの設定時に出てくる単語をまとめておきます。(製作途中)

【よく出てくる単語たち】
Region : 東京、オレゴン...データセンターを束ねたもの
AZ : Availability Zoneの略。Regionの中にある区分。それぞれ物理的に距離が離れている(震災等障害に備えて。)場所は公開されていない
VPC : Virtual Private Cloudの略。パブリック(インターネットにつながる)・プライベートの設定も自在にできる仮想ネットワーク!
    - ネットワーククラスとプライベートアドレスとAWS VPC
    - アカウントごとに独立したネットワークをつくることができる
    - AZをまたがって作られる
    - アカウントの中に複数作れる
subnet
    - VPCの中の一部を切り出す。そこだけパブリックにしたりできる(cf : Internet gateway)
    - AZに紐づく。AZを跨がらない。一つのAZに複数のsubnetは作れる
インターネットゲートウェイ : VPCから外部インターネットへ接続する場合に用いる
ルートテーブル : どこに向かってデータ(パケット)を転送するかを、サブネットごとに設定する。デフォルトではサブネット内部の通信(ローカル通信)のみ。インターネットに出したいサブネットは、igwを設定する。

インターネットにつながるパブリックサブネットと、踏み台を経由してしか外に出られないプライベートサブネットを持つ構成の実際の設定例が次のページに書かれているので、具体的な設定の仕方を学ぶには良い題材だとおもいます。また、後に紹介しますが、udemyの講座でいいのがあります。

有益資料集

最後に、AWSを始めるにあたって、読むと良い資料をまとめておきます。まず、この本はAWSの外観を把握するのにかなり役立つと思います。AWSは、ソリューションアーキテクトという、自社のサービスの理解度によって、資格を設けています。この本は、その問題集(のはず)です。

注意点としては、

・実践しないとわからないことが多い
・そもそも出題範囲が変わってしまった

ので、これだけではほぼ100%受かりません。それでも、入門には最適です。

また、入門するにあたって、次のudemyが非常におすすめです。最初にやっておくべき初期設定と、実際にAWSの主要サービスを使ってwebサービスを構築するところまで、14日間かけて説明してくれます。わかりやすくて素敵! 
【おすすめ!】 手を動かしながら2週間で学ぶ AWS 基本から応用まで

また、classmethod社のDevelopersIOは、AWSの調べ物をしたり、動向を追うのに最適です。その中でも、DevelopersIO AWS再入門シリーズは、非常にわかりやすく、初心者が無理なく入門できると思います!

すこしレベルが上がっていると、サービスの細部に踏み込めると思います。そこで有用なのが、クラウド活用事例集です。各サービスの活用方法がぎっちり詳しく書かれているので非常に参考になります。

まとめ

割と泥臭い話が多かったように思いますが、ここを抑えておくとその後のやりやすさが段違いです!有益資料集などを見ると、具体的にサービスも構築できるでしょう。

さてAWSのサービス一つ一つは、単一の機能に特化したものも多く、組み合わせ(アーキテクチャとも言います)によってその威力が倍増します。明日は、そのあたりの話(サーバーレスアーキテクチャ)と、要になるLambdaについて深堀します。ではではっ

前の日 : SORACOMボタンを工場に導入し、スマートファクトリー化する
次の日 : サーバーレスアーキテクチャの要「Lambda」とはなにか

サポートいただけると励みになります! よろしくおねがいします!!