実務・興味・AWS認定試験を取る上で覚えた事など、AWSの全まとめアウトプットインデックス記事としてこのページがあります。 このページをブックマークして使えるように、各詳細ページへのリンクを張ってあります。
見出し
- 1 何故今AWSの需要・必要性が出てきているのか?
- 2 各種サービス
- 3 S3
- 4 EC2
- 5 RDS
- 6 DynamoDB
- 7 AWS AppSync
- 8 Amazon Elasticsearch Service
- 9 Elastic Load Balancing
- 10 AWS Lambda
- 11 Amazon SQS (Simple Queue Service)
- 12 AWS Certificate Manager
- 13 AWS Global Accerator
- 14 AWS IAM
- 15 Amazon CloudFront
- 16 Amazon Athena
- 17 AWS Glue
- 18 AWS Secrets Manager
- 19 Amazon ECR
- 20 記載予定
- 21 ECS
- 22 AWS Fargate
- 23 EKS
何故今AWSの需要・必要性が出てきているのか?
「何でAWSを使わないといけないの?」となってませんか?
それは老害と言われてしまいます(笑)
自分も最初そうなったのですが、世界の最先端技術を求める人たちが導き出した答えを、新しい考えを先ずは受け入れる。興味を持つ。技術をリスペクトする。そういったスタンス・マインドを持つ事は近年のエンジニアにとって大切な要素と感じます。
何か問題があるから、新しい技術が出てきます。先ずはその問題を認識するところから考えてみましょう。
各種サービス
以下からAWSの各種サービスについて概要や詳細記事へのリンクを記載していきます。
S3
AWSを代表する主要サービスの1つで、ストレージサービスです。バケットと呼ばれるいれものを作り、ここにログやファイルをため込んで行く事が出来ます。耐久性に優れていて、バージョン管理も可能なので戻したり出来ます。
webのcssやjsなど静的コンテンツを格納する先としても使用される事が多いです。
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
以下の記事にまとめました。
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
以下の記事にまとめました。
AWS Glue
AWS Secrets Manager
DBのログイン情報や認証情報などの高い情報を管理してくれます。また、Lambdaを使用した自動ローテーションを組む事が出来るので、定期的な自動パスワード変更が可能となります。
これを活用すればコードに記載してリスクを負う必要がなくなる為、セキュリティ面で必須なサービスとなってきています。
Amazon ECR
Dockerイメージを登録しておける、マネージド型のコンテナレジストリです。マネージド型なのでイメージをpushしてあとは放置しておけます。また、イメージの脆弱性スキャン機能も実装されたので、完全放置しつつ、脆弱性が見つかったら通知をもらえるように出来ます。これは結構便利ではと思います。