AWSの全まとめ

実務・興味・AWS認定試験を取る上で覚えた事など、AWSの全まとめアウトプットインデックス記事としてこのページがあります。 このページをブックマークして使えるように、各詳細ページへのリンクを張ってあります。

スポンサーリンク

何故今AWSの需要・必要性が出てきているのか?

「何でAWSを使わないといけないの?」となってませんか?

それは老害と言われてしまいます(笑)

自分も最初そうなったのですが、世界の最先端技術を求める人たちが導き出した答えを、新しい考えを先ずは受け入れる。興味を持つ。技術をリスペクトする。そういったスタンス・マインドを持つ事は近年のエンジニアにとって大切な要素と感じます。

何か問題があるから、新しい技術が出てきます。先ずはその問題を認識するところから考えてみましょう。

何故今AWSの需要・必要性が出てきているのか?
AWS は Amazon Web Services の事で、Amazonが提供するクラウドコンピューティングサービス群の事ですが、今web...

各種サービス

以下からAWSの各種サービスについて概要や詳細記事へのリンクを記載していきます。

S3

AWSを代表する主要サービスの1つで、ストレージサービスです。バケットと呼ばれるいれものを作り、ここにログやファイルをため込んで行く事が出来ます。耐久性に優れていて、バージョン管理も可能なので戻したり出来ます。

webのcssやjsなど静的コンテンツを格納する先としても使用される事が多いです。

AWS S3 CLIまとめ
AWS S3のCLIコマンドをまとめました。 一覧取得 バケット名リスト aws s3 ls バケット内のファイル...

EC2

こちらも代表的なサービスです。クラウドの専用サーバをたてるイメージです。OSやスペック等も選べますし、自動拡張機能もあります。

しかし、今はマイクロサービスやコンテナを使う時代なので、新規でEC2を選択するという事は減ってきています。

もし今EC2を使用しているとしたら、それは急激な負荷に耐えられるのか、壊れた場合でも復旧出来るのか、などを検討された方が良いかもしれません。

RDS

これも代表的なサービスです。MySQLを始めとするRDBのサービスです。特にAuroraは優秀で、自分で可用性を上げるためにDBの台数を増やしたり、レプリケーションをはったりといった面倒な管理から解放されます。

MySQL等RDBを使用するならばAuroraが良いですが、コストと乖離しているようであれば、NoSQLなど他のDBを検討した方が良いかもしれません。

DynamoDB

Key ValuでNoSQLのDBで速度パフォーマンスが高く、負荷にも耐えられる可用性を持っている為、人気が高いDBです。

本当にRDBでなければいけない。というわけでなければDynamoDBが選ばれる事が多いと思います。

AWS AppSync

GraphQLというAPI向けの言語のAWSマネージド型サービスです。

https://aws.amazon.com/jp/appsync/

GraphQL がポピュラーになってきた事で、導入しようとするとサーバに GraphQL 環境を構築する必要がありましたが、AWSにマネージド型サービスとして登場したので、サービスとして利用するだけで良くなりました。 GraphQL サーバをたてる必要がなくなり、サーバレスで運用出来るようになります。

普通にAWS GraphQLというサービス名の方がわかりやすいのになーと思いました。

GraphQLを単に実行というだけでなく、実行前処理、後処理がここに乗せられますので、これだけで色々やろうと思えば出来そうです。

API の DBとして、Elasticsearchと連携してみましたが、対応具合から見るに、AuroraMySQLやDynamoDBがAmazonとして連携させるのを推奨しているのではと感じました。普通に考えてそのユースケース (RDS・Dynamo)に使う事 が多いと思いからだと思います。

Amazon Elasticsearch Service

検索DBのOSSである Elasticsearch のマネージド型サービスです。

https://aws.amazon.com/jp/elasticsearch-service/

Elasticsearch がポピュラーになってきた事で、導入しようとするとサーバに Elasticsearch をインストールして管理しなければいけなかったのですが、AWSにマネージド型サービスとして登場したので、サービスとして利用するだけで良くなりました。 Elasticsearch 用のサーバをたてる必要がなくなるので、 サーバレスで運用出来るようになります。

更新や参照はリクエストに json パラメータを渡してあげます。結果も json で受取ます。

検索DBはSQLで取得する結果と同じになるわけではないという点が難しく感じました。仕様に合った使い方を実装するにはアルゴリズム設定・選定が必要になってきます。大量のデータから高速で文字列検索する用途に使われる事が多いと思われます。

Elastic Load Balancing

ロードバランサーサービスです。

Application Load Balancer

概要

L7レベルのLBになります。最近 ALB から Lambda をターゲットとして接続できるようになりました。パブリックDNSにアクセスすればブラウザから確認出来ます。L7レベルなので、プロトコルやURLでの振り分けが可能です。簡単なレスポンスも返せますので、メンテナンス時などにわざわざサーバの設定をしなくても、一律503にしてメンテナンス案内が書かれたHTMLを返す事も可能です。そう、このALBならね。

LBからのヘルスチェック機能( 死活監視 )も存在します。

LBのターゲットが落ちていれば、CloudWatchにログ出力をして、それをトリガーにしてRoute53を切り替えたり、ALBのターゲットグループを変更したりフェールオーバーの対応も出来ます。

これまでhttps対応をする際はnginxなりapacheのconfにSSL証明書の設定を記載して、毎年更新してやる必要がありましたが、ALBにAWS Certificate Managerで生成したSSL証明書をつける事が可能となりました。その場合、ALB⇔EC2はhttpでの通信となりますが、これまでの運用がAWSマネージド型となり、毎年の面倒だったSSL更新も不要となります。

Route53で設定した複数ドメインを、1つのALBに設定する事も出来ます。入り口に集約してという感じで出来ます。もちろんその際にSSLのACMも1つのALBに設定可能です。手順は簡単でhttpsリスナーに複数のACMを選択するだけです。

アベイラビリティゾーンを複数指定する事で冗長な構成にする事が可能です。

ログはS3に出力するという設定が出来て、それをAthenaで分析可能です。標準でCloudWatchで監視されているのでメトリクスを確認出来ます。

後述のAWS Global Acceleratorを使用すれば、ALBにも固定IPを割り当てる事が出来ます。使う事もあるかと思いますので、覚えておいて損はないです。

料金について

待機含む稼働時間料金と通信料金の合計です。ですので、少ないアクセスでもずっと立ち上げていると料金がかかってしまうタイプです。

注意点

ALBはhttpとhttpsだけになります。

AWS Lambda

以下の記事にまとめました。

【まとめ】AWS Lambdaポイント・どのようなサービスか?何と連携出来る?
概要 トリガー、処理、後処理を組み合わせて作れる機能です。AWSマネージド型の為、サーバレスでスケーラブルに使用出来ます。 ...

Amazon SQS (Simple Queue Service)

非同期通信でキューに溜め込んで処理していく事が出来ます。一度に大量の処理が発生して、即時に実行しなくても良いのでやるような処理に向いていると思われます。

※まだ使った事はないので見た感じです。

注意点

同期通信ではなく非同期通信での処理という点と、キューに溜まった処理は複数回実行される事があったり、キュー順に処理されないという仕様だそうです。

https://qiita.com/tomoya_ozawa/items/dc0286cdb30763eab174

料金について

件数から料金計算されます。

AWS Certificate Manager

ALBの箇所に記載した通り、ALBにも設定出来ます。

これまで毎年サーバで更新していたSSL証明書の設定の手間が省けます。

AWS Global Accerator

これもALBの箇所に記載した通り、これを使用すれば、ALBにも固定IPを割り当てる事が出来ます。2019/8時点ではまだ東京リージョンはありませんが。

AWS IAM

ユーザ、ロール、ポリシーの権限を管理出来ます。権限は必要最小限にする事で、意図しない事故やセキュリティのトラブルを限定的にする事が出来ます。

一見地味な機能ですが、AWS 全般にまたがる基本機能な為、細かい使い方にも慣れておいて損はないと思います。

2段階認証の設定が必須なユーザにしたり、ユーザをグループに所属させたり、どのサービスのどのリソースのどの機能だけを使うかなど細かく決められたりします。

AssumeRole

この機能では、別アカウントに権限を委譲する事が出来ます。しかも期限付きで委譲出来る為、リスクを限定的にする事が出来ます。

権限が必要最小限のユーザに、必要最小限の権限を委譲するという使い方が出来ます。

Amazon CloudFront

以下の記事にまとめました。

https://normalblog.net/system/cloudfront-matome/

Amazon Athena

以下の記事にまとめました。

【まとめ】Amazon Athenaとは
ELBやCloudFrontのログはどうされてますか?S3に入れている方が多いと思います。 S3に指定バケットを作ってそれを指定する...

AWS Glue

AWS Glueまとめ
GlueはETL処理のマネージド型サービスです。 ETL処理とは. Extract(抽出) Transform(変換) Load(格...

AWS Secrets Manager

DBのログイン情報や認証情報などの高い情報を管理してくれます。また、Lambdaを使用した自動ローテーションを組む事が出来るので、定期的な自動パスワード変更が可能となります。

これを活用すればコードに記載してリスクを負う必要がなくなる為、セキュリティ面で必須なサービスとなってきています。

Amazon ECR

Dockerイメージを登録しておける、マネージド型のコンテナレジストリです。マネージド型なのでイメージをpushしてあとは放置しておけます。また、イメージの脆弱性スキャン機能も実装されたので、完全放置しつつ、脆弱性が見つかったら通知をもらえるように出来ます。これは結構便利ではと思います。

記載予定

ECS

AWS Fargate

EKS