#AWS サービスの重要さその1
貴重なサービス
この前AWSサービスが圧倒的に多くて初心者可哀想と言うツイートを見たが、実際全てのサービスは必ず必要と言うわけでもない。ただしその重要さを知らないまま勉強するのは非常に大変な事なのでそれに関してサービスの重要さを分けたいと思っている。第一は基本的、つまり貴重なサービスをターゲットしたいと思う。
まずは自分の経験についてだが、現在Rackspaceと言うトップのMSP(マネージド・サービス・プロバイダー)で働いている。つまりAWSサービスの重要さを調査するのが仕事の重要な一部と言うわけだ。とはいえまだ触った事ないサービスはあちこちあるのは事実。後プロフィールを見れば分かると思うが私の日本語は母語話者レベルではないので様々なミスをどうか許してください。では、始めよう。
こちらのサービスはAWSの基本と言っても良いぐらい重要なサービス。例えば他の部が管理しているとしてもどうやって動いているのは貴重と言う事だ。
VPC (Virtual Private Cloud)
昔のAWSは全てのインスタンスはPublicIP、つまり殆ど誰でもアクセス出来るような出来事だった(現在はEC2 Classicと呼ばれている)。セキュリティ的にはそれがあんまりよろしくないのでVPCの誕生。特に重要な一部は:
- Internet Gateway
- Route Table
- Subnet (PrivateとPublic)
- Security Group
- NAT Gateway
- EIP (Elastic IP)
- Elastic Network Interface
なお、Security Groupと似ているようなNACL(Network Address Control List)は存在しているが正直Security Groupより管理が面倒でかなり厳しいコンプライアンスに従う以外は結構邪魔になる可能性が高い。
EC2 (Elastic Compute)
一般的なサーバーと一番似ている。AWS BatchやAWS ECS等のサービスが良く裏で使用するのはEC2。なので直接使わなくても機能をするメリットがある。昔は色んなサブサービスは含まられたけど今となってLoad BalancerやSystems Manager等は別のサービスになりつつ。EC2を上手く利用するにはこちらの一部を勉強した方が良い。
- EBS
- AMI
- Instance StoreやEBSインスタンス
- Network Interface
- EIP vs Auto Assign IP
- WindowsとLinuxインスタンスに繋がる方法
- User Data
- Instance Metadata
- Auto Scaling Group
- Spot Instances
勿論、EC2のドキュメンテーションを全体的に身につけるのはかなり有利だと言える。ただし他のサービスをある程度触らずEC2だけを勉強するのはあんまりおすすめ出来ない。
IAM
AWSの認証システム。全サービスが使用する貴重なサービス。これを知らないとAWS出来ない。特にセキュリティの一部なのでちゃんとやらないと悪意のあるユーザー等にやられる可能性は十分高い。そしてここまで貴重なものなのでドキュメンテーション全部読むのはおすすめ。特に貴重な一部と言えば
- Rootユーザーの危険
- IAM User vs IAM Role
- MFA(Multi Factor Authentication)
- EC2 Instance Profileの重要さ
- Cross Account IAM (特にExternal ID)
- Assume Role
- API認証
Lambda
「サーバーレス」と呼ばれているサービス。サーバーを管理する必要なくただ対応されている言語でスクリプトを書いてそのままLambdaにアップロードする流れ。EC2より圧倒的にコストが低くて何かのアプリをAWSで開発したいと思うならまずはここから考えるべき。ただし5分の発動時間限界があるのがデメリットの一つ。後API Gateway等を使わないとサービス系ソフトは出来ない。
言語的にはNodeJSやPythonはかなり人気。あちこちのイベントに反応するのが一番の活動。例えS3にアップロードされたイメージファイルにわーターマックやテキストを入れたりして。何よりIAM Roleを使用できるので面倒なAPI認証をそこまで心配する事はない。勿論AWS SDKを簡単に使用する事ができるのでサーバー管理やDevOpsとしてはかなり貴重な存在。
ECS (Elastic Container Service)
最初のAWSはコンテイナーはそこまで人気ではなかったが、現在はかなり流行っているので最早無視出来ない事になった。EC2インスタンスをパイのように切って一つずつDockerイメージを実行する。デメリットとしてはある程度Dockerの知識がないとかなり厳しい。ただしコスト的にEC2とLambdaの真ん中と言ってもいい。もしLambdaの5分がダメだったら次はECSを試してもいいかもしれない。
S3 (Simple Storage System)
ファイルと言うよりオブジェクトを保存できるサービス。コストが低くてたまにデータベースのように使用する人はいる。しかも保存スペースは大容量だからお金さえあれば色んなものを保存する事ができる(テラバイトだって可能)。更にLoad Balancer等のログをS3に置くサービスは多い。
SNS (Simple Notification Service)
AWSの通知システム。HTTP(S)、SMS、メールなどに通知を送れる大変便利なサービス。例え、何かのCloud Watchアラームが発生したらメールを送るなど。メールの時は連絡先の確認をちゃんと取る。イベントが大勢に流れてくる時はSQS Queueで対応できる可能性も。
CloudFormation
基本的な操作ならAWSのWebコンソールを使う事ができるが、なにをやったのかは覚えづらいだろう。CloudFormationと言うのはIaC(Infrastracture As Code)と読んでYAMLかJSONを使ってインフラを宣言できる。勿論、そのIaCが出来たら他の人に送って同じインフラを立つ事ができる。ただ作るのはかなり大変なので最初はコンソールでどのようにしたいと決めてあとでIaCにするのはベストかも。
Cloud Watch
多くのサービスがログとして使用している基本的なモニターリングシステム。基本なログ機能以外Cron的な使用も出来る。そしてある条件でアラームを発生することで異常状態などを素早く対応出来る。