shareof / private-docs

0 stars 1 forks source link

AWS クラウドプラクティショナー勉強日記 #33

Open shareof opened 4 years ago

shareof commented 4 years ago

定義 本学習ログは、「AWS認定 クラウドプラクティショナー」と呼ばれるテキストに沿って解釈したものである。

第2章クラウドの概念について 2020/07/27~2020/07/28

クラウドとは?

様々なITリソース(仮想サーバ、ネットワーク、ストレージ等)を利用したい時に利用した分だけ従量課金で利用できるサービスの総称

オンプレミスとは?

サーバ、ネットワーク、ソフトウェアなどの設備を自前で導入すること

※そのため、クラウドはよくオンプレミスの対義語として扱われる。

リージョンとは?

クラウドサービスで利用する、データセンターを設置している独立したエリアのこと

AZ(アベイラビリティーゾーン)

リージョンの内の独立した区間を示すもので、主に可用性の指標となる

SPOF(Single Point Of Failure)

システムを構成する要素のうち、そこが停止するとシステム全体が停止してしまう部分のこと

SOA(Service Oriented Architecture)

システムを『機能単位の部品(サービス)』の集まりと見なす考え方

図

スケールアップとスケールアウト

単体性能の向上を図るのが、スケールアップ でサーバの台数を増設して全体のスループットの向上を図るのがスケールアウト

キューイングチェイン(Queuing Chain)

AWSを疎結合なシステムとして実現するために用いているメッセージキューイングのデザインパターンである。

EC2インスタンスの処理を例にとった場合 ある処理を担当するEC2インスタンスから、次の処理を担当するEC2インスタンスへの処理の受け渡しはSQSを仲介(Chain)して行う。 もう少し技術的な観点から述べるのであれば ジョブ(メッセージ)の受信 → ジョブの処理 → ジョブ(メッセージ)の送信

EC2

AWSで利用できるシステムのひとつであり、AWS上に仮想サーバーを構築して自由に利用できるのが特徴 また、EC2では仮想サーバのことをインスタンスという単位で呼ぶ EC2というシステムをわかりやすく解説してくれているサイト

モノリシックとマイクロサービスについて

(左図)モノリスとは 一枚岩 という意味であるようにアプリケーション内部に複数の基幹システムを集合させた設計を示す。 このアーキテクチャの欠点としてはシステムの仕様が変更された場合に本当はある一部分の基幹システムだけを改修すればよいが、他の基幹システムと密接な関係で設計されているためインタフェースなどの見直しが必要となる点がひとつでもう一つはモジュール毎の単体テストを行い辛いという欠点がある。

対してマイクロサービスは基幹システムとういう思考ではなくそれらを 一つのサービス と捉えて違いに素の関係を作る設計 である。各サービスはREST APIとしてWebアプリからリクエスト(GET,POST,DELETE,PUT)を受ける形をとる。 そして言うまでもないが、互いに素の関係でサービスを設計しているので、単体テストも他のモジュールに依存しないため、行いやすいく、改修が発生した場合も局所的な改修で済む

データウェアハウス(DWH)

様々なシステムからデータを保存し、それを分析するために整理する、いわばデータの「倉庫」である。 DBとの欠点的な違いについてはDBだとデータの保存や編集などさまざまな機能を有するが、DWHの場合はデータの分析に特化しているため、各システムのデータを時系列的に収集し、サブジェクト別に整理することで、より詳細な分析が可能となる

AWSの長所と利点について 

1.固定費(設備投資費)が柔軟な変動費に変わる 従来の環境(オンプレミス)では事前にデータセンタやサーバに多額のコストを支払う必要があったが、クラウドでは利用したい時に利用した分の従量課金となるため、無駄なコストを削減できるようになる。そのため、TCOの面でも経済的になる。
2.スケールによる大きなコストメリットがある 数十万単位のユーザがクラウドを利用しているため、一人一人が利用する金額を低額に設定できる。
3 .キャパシティの予測が不要になる オンプレミス環境の場合だと、予め最大ピークのLatencyなどを見積もってサーバを構築したり、DCを配置する必要があるが、 クラウドでは、必要な分だけ利用できるというメリットがあるため必要になった際に、スケールアウトやスケールアップを行うだけでよくなる。そのため、初期投資の際に発生する無駄なコストを見直すこともできる。
4.速度と俊敏性の向上が期待できるようになる AWSを利用することで、今まで数週間かかっていたITリソースの調達をわずか数分で行えるようになる。 そのため、アジャイルなどのスピードを求めた開発モデルに恩恵を受けやすい。
5.データセンタの運用と保守への投資が不要になる AWSを利用する際に、料金プランの中に、サーバの運用や保守などの手間賃も含まれているためユーザはサーバの設置、連携、起動などの時間がかかる操作を行わずに済む。 そのため、ユーザに直結した業務(アプリ開発)などに専念することができる。
6.わずか数分で世界中にデプロイができる

クラウドアーキテクチャの設計原理について

形あるものは全て壊れるということを大前提におき、設計を行う 具体的な内容としてはハードウェアはいつか故障する,停電によりシステムはダウンしてしまう,などと故障ありきで設計を行うことを Design for Failure(故障に備えた設計) といい、クラウドでこの設計を実現するためにはSPOFを作らないようにすることが大切である。

コンポーネントの分離

クラウドの設計においてスケーリングを大規模に行う際に重要となるのは、そのシステムが疎結合で構築されているかどうかである。AWSでは各コンポーネントを疎結合にするためにAmazonSQSと呼ばれるキューイングチェーンを利用することで 非同期 かつ 疎結合なシステムを実現している。

弾力性の実装

ここで 弾力性 という言葉がでできたが、よくわからないので調べることにした。

クラウドはインフラストラクチャーに 弾力性(Elastic) という新しい概念を持たせることができる。 弾力性を以下の方法で実現が可能となる

動的なコンテンツデータをクラウドコンピューティングリソースの近くに保管し、静的なコンテンツデータをエンドユーザの近くに保管する

AWS Well-Architectedフレームワーク

shareof commented 4 years ago

第3章AWSのセキュリティ 2020/07/29 ~ 2020/07/31

エッジロケーション

サービスを提供するためのデータセンタを示す。 ちなみにその中で提供されているサービスはAmazon CloudFront(CDN)である。 こちらのエンドポイントを叩くことで全てのエッジロケーションを見ることができる https://ip-ranges.amazonaws.com/ip-ranges.json

コンプライアンスプログラム

経営用語の一つであり、企業が従業員に対してコンプライアンスを遵守させるために、自社で作成する計画のこと

ハイパーバイザー

コンテナ化と相対的な関係に位置する仮想技術であり、ハードウェアに搭載されているプロセッサやメモリの使用時間を細かく分割してそれぞれをひとまとめにし複数の個別独立した仮想サーバを実現するために用いられるソフトウェアのこと 両者の大きな違いについては、下図からもわかるようにホストOS上でゲストOSが動作するかしないかということである

マネージドサービス

一連の業務をアウトソーシングしたサービスこと(クラウド等が第一声としてあがる)

AWS Artifact

AWS がいかに安心なサービスかを第三者がまとめた監査レポート

認証と認可

相手が誰(何)なのか確認するのは 認証 リソースへのアクセス権限を与えること 認可

IAM(アイアム)

Identity and Access Managementの頭文字をとったもので、IT環境にアクセスを行う上で必要不可欠な以下2つの要素 Identity≒ユーザIDアクセス管理(Access Management)からなるセキュリティ用語である。

インバウンドトラフィックとアウトバウンドトラフィック

ネットワークを流れるデータのうち、外から中に入ってくるデータ(量): インバウンドトラフィック ネットワークを流れるデータのうち、中から外に出ていくデータ(量) : アウトバウンドトラフィック

DDOS(Distributed Denial of Service attack)

ネットワークトラフィック(通信量)を増大させ、通信を処理しているコンピューティングリソース(通信回線やサーバの処理能力)に負荷をかけることによってサービスを利用困難にしたり、ダウンさせる攻撃のこと

DDOS得意性 DDOSはDOS攻撃を発展させたものであり、攻撃元が複数のコンピュータを乗っ取りターゲットに対して一斉攻撃を行う性質をもつ

AWSの責任共有モデル

AWS側がいくらコストをかけてセキュリティを担保したところで、ユーザの側の利用次第ではセキュリティの維持が難しくなる そのため AWSとユーザが負う責任が明確に分かれ それぞれのセキュリティを共有して守っていくこと

実際の役割について

AWS クラウドセキュリティの利点

AWSが責任を持つ範囲の考え方

さきに述べたAWSの責任共有モデルでAWSが負うべきクラウド本体の責任をレイヤ毎に分解すると以下のようになる

物理的なセキュリティー

環境レイヤー物理的な境界防御レイヤーインフラストラクチャーレイヤデータレイヤの集合から構成される 各レイヤーの役割について

管理プレーンの保護

管理プレーンの保護に関するセキュリティの範囲はユーザの担当である

※ルートアカウントの定義 AWSサインアップ時に作成したメールアドレスのアカウント が該当する このアカウントは全ての操作を行うことができるため、通常時の運用では適切な権限のみを付与したユーザを作りそのアカウントで運用するべきである。また1つのアカウントに対しユーザは複数作成できる

ユーザは、アクセスキーとシックレットアクセスキーを作成・保持することでAWS CLIやAWS SDKの認証情報として利用できる 基本的な利用方法としては、認証情報を環境変数に設定もしくは、認証ファイル内に格納して利用する また、これらの認証情報はユーザのアカウントと同等であるため、権限の強いアカウントでは利用しない(特にルートアカウント) ことが望ましい。

マネージドでないサービスのセキュリティ

ユーザが操作できる全ての部分はユーザに責任がある

マネージドなサービスのセキュリティ

ユーザとAWSでそれぞれ分担する

セキュリティのベストプラクティック(ユーザが責任を負う部分)

第三者認証

ユーザはAWSのデータセンタ等をみてデータの安全性を確かめることはできないが、第三者が監督している調査レポート(AWS Artifact)を通じて確認することがきる。

AWSにおけるIAM(Identity and Access Management )

ユーザのAWSクラウドリソースへのアクセス管理サービスである。 この管理サービスを利用することにより、AWSのユーザとグループを作成及び管理し、アクセス権を使用してAWSリソースへのアクセスを許可及び拒否できる。

IAMロール

EC2やLambdaなどのAWSリソースに権限の付与を行うことができる。 メリットとしてはAWS内部でIAMロールとEC2を直接紐付けることができるのでキー管理が不要となる。

セキュリティグループ

1つ以上のインスタンスのトラフィックを制御するための仮想的ファイアウォール 従来のファイアウォールとの差異は個別のインスタンスに対してファイアウォールを設定できる点である。

行える設定

留意点 セキュリティグループを新規作成する際は インバウンドルールがない そのため、インバウンドルールをセキュリティグループに追加するまで別のホストから送信されるインバウンドトラフィックは許可されない。

AWS Shield とAWS WAF

マネージドな型の分散サービス妨害(DDOS)に対する保護サービスあり、アプリケーションのダウンタイムとレイテンシを最小限に抑える常時稼働の検出と自動インライン緩和策を提供している。

AWS Shieldにはふたつのレベルでのサービスが存在する

AWS WAF

アプリケーションの可用性低下、セキュリティの侵害、リソースの過剰消費などの一般的なWebの脆弱性からWebアプリケーションを保護するマネージド型のWebアプリケーションファイアウォール

留意点 従来のWAFとは異なり、予めWAFの定義は内臓されていないためどのトラフィックをWebアプリケーションに許可またはブロックするかをユーザ自身で行う必要がある。

Amazon Inspector

AWSのEC2上にデプロイされたアプリケーションのセキュリティとコンプライアンスを向上させるための脆弱性診断サービス 診断が行える事項

shareof commented 4 years ago

第4章 AWSのテクノロジー

ローカルリージョンとリージョンの違い

参考文献 現在AWSには24箇所のリージョンと1つの ローカルリージョンをが存在する。 このローカルリージョンとは 2018年2月に開設された大阪リージョン を示す。 ローカルリージョンのリージョンの決定的な違いは以下である

マルチサイトアクティブ-アクティブ

複数リージョンに 完全に稼働にする同じシステム を構築し、災害時におけるダウンタイムを最小限にするデザイン

AWSグルーバルインフラストラクチャーの詳細

AWSが提供しているグローバルインフラストラクチャーは AZ 及び リージョン を中心に展開している。

リージョンの選択条件について

エッジロケーションの詳細

リージョンとは違う場所に200箇所以上し、主にふたつの用途がある。

shareof commented 4 years ago

第5章 コンピューティングサイエンス

スポット料金

EC2ではクライアントが好きな時に必要な量だけ使用できるように未使用のEC2キャパシティが存在する この未使用のキャパシティ量によって変動する料金のこと

EC2の概要

EC2(Amazon Elastic Compute Cloud)の略であり、AWS上にインスタンスという単位で仮想サーバの構築を行うことができるシステム

EC2の特徴

インスタンスタイプの選定

インスタンスの性能が低い方が一見コスパがよく見えるが、最適なコスト効率を図る上では 必要としているコンピューティンング処理を最も早く完了できるインスタンス を選択することにある。

OSを管理者権限で操作できる

起動したEC2のインスタンスではキーペアを使用することで管理者権限(Admin)を利用できる

AMIで指定するOSがAmazon Linuxの場合はデフォルトユーザとして ec2-user Ubuntuの場合は ubuntu が割り当てられている

$ ssh -i  .ssh/MyKey.pem ec2-user@<host>

ユースケースに応じた料金オプション

ELB(Elastic Load Balncer)

EC2インスタンスに送られてくるユーザのリクエストトラフィック可用性を高めるために分散させる

ELBの特徴

Auto Scalingの概要

インスタンスを必要なタイミングで必要なインスタンス分だけ動的に用意することができる。 そのため、インスタンスをもっとも効率よく使用することができる。

垂直スケーリングと水平スケーリング

Auto Scalingの設定

Auto Scalingを実現するための3つの要素

※ Auto Scalingではポリシーだけではなく、スケジュール も設定できる

アプリケーションのデプロイの自動化

ユーザデータを利用してApplyするshスクリプトの例

#!/bin/bash
set -ex

yum -y update
cd /var/www/html
git pull
IP_ADDRESS= $(curl -s http://<host>/latest/meta-data/public-ipv4)
echo $IP_ADDRESS >> /etc/conf/app.conf

Lambda

ソースコードさえ用意することでそのプログラムを実行させることができるサービス

Lambdaの特徴

shareof commented 4 years ago

第6章 ストレージサービスについて

EBSの特徴

インスタンスストア

インスタンスのホストローカルのストレージであり、データは一時的なものとして扱われる。

S3

Amazon Simple Service が正式名称であり、インターネット対応の完全マネージド型のオブジェクトストレージ

S3の特徴

shareof commented 4 years ago

第7章 ネットワークサービス

下記は インタネットゲートウェイとNATゲートウェイの比較

VPCの作成

リージョンを選択して複数のAZを跨って作成することができる。 また、IPアドレスの範囲はCIDERで定義する

サブネットの定義

VPCで設定したアドレス範囲をサブネットにわけて定義する。 サブネットの定義を行う際には、AZとIPアドレス範囲を選択する必要がある。 またAWSでは以下のIPアドレスは予約されている

インターネットゲートウェイ

VPCとパブリックネットワークを接続するためのゲートウェイであり、インタネットゲートウェイ自体が高い可用性を持っているため SPOF にならない

ルートテーブル

サブネットの経路をルートテーブルで設定する。 ルートテーブルはVPCを選択して作成する。また、テーブル作成時にデフォルトとして「メインルートテーブル」が生成されるが、サブネットに関連付けられたデフォルトのテーブル であるため、そのまま使用せず、カスタムのルートテーブルを作成する。

パブリックサブネットとプライベートサブネット

セキュリティグループ

仮想FWであり、デフォルトではインバウンド(受信)へのアクセスが全て拒否されている状態である。 送信元にはCIDRでIPアドレスを範囲指定するほかに、他のセキュリティグループIDを指定することができる。 また、インバウンドへのアクセスが拒否されていることから「ホワイトリスト」を設定するなどと呼ばれる

ネットワークACL

サブネットに対して設定する仮想FWのため、サブネット内の全てのリソースに対してのトラフィックに影響する そのため、必要でない場合はデフォルトの状態で問題がない。

CloudFront

世界中に150箇所以上あるエッジロケーションを使い、最も低いレンテンシーでコンテンツを配信できるコンテンツ配信ネットワークサービス(CDN)

CloudFrontの特徴

安全性の高いセキュリティ

クライアントが所有しているドメインの証明書を設定できるため、HTTPSのアクセスを受けることができ通信を保護できる。証明書はAWS Certificate Manager を使用すると追加料金なしで作成できる。

Route 53

DNSサービス(ドメイン対してのIPアドレスをマッピングしてユーザからの問い合わせに回答する)であり、エッジロケーションで使用されている。

Route 53の特徴

shareof commented 4 years ago

第8章 データベースサービス

RDSとEC2の違い

インフラ管理から開放されるため、本来の開発に注力できる。

インフラ管理の開放を実現した3つの構成要素

Amazon Aurora

AWSが クラウドに最適化して再設計を行ったRDBエンジンであり、MySQLとPostgresSQLとの互換性を持つ

メリット

DMS(AWS Database Migration Service)

データベースの移行を容易に行うためのサービス

DynamoDB

フルマネージドなDBであり、リージョンを選択することができる。 またNoneSQLでデータを扱えるため、テーブルを作成する手間が省ける 水平スケーリングで大量の問い合わせにも対応できるが、複雑なクエリには向かない。

shareof commented 4 years ago

第9章 管理とサービス

CloudWatch

EC2のインスタンス、RDSのインスタンス、DynamoDBテーブルなどの各インスタンスの現在の状態、情報をモニタリングするサービス

CloudWatchの特徴

アラームに対して設定できるアクション

メトリクスの保存期間について

Trusted Advisor

クライアントのAWSアカウント環境の状態を自動的にチェックして回り、ベストプラクティスに対してどうであったかを示すアドバイスをレポートするサービス

Trusted Advisorがチェックする項目について

※ そのほかでは、IAMパスワードポリシーが有効化されているかなどもチェックを行う

その他の管理ツール

shareof commented 4 years ago

第10章 請求と料金

10-1 AWSの料金モデル

使った分だけの従量課金

クライアントがDC、サーバ等の設備を用意する必要がないため、初期コストは発生しない。また、必要な時に必要な分だけのリソースを使うことができるため、 資本の支出を変動費 にすることできる。 そのため、この消費モデルを組織全体で受け入れることでコストの最適化が進む

課金体系

サービスによって用途が違うため、必然的に課金方式も異なることになる またリージョンによっても料金は異なる。

多彩な課金モデル

EC2の購入オプション, S3ストレージクラス. EBSボリュームタイプ などから要件に応じて適切な料金モデルを選択できる

10-2 請求ダッシュボード

請求書

どのサービスにどれくらいのコストを費やしたかは請求書で確認することできる。 また、月の途中であっても課金の状況を確認できる。

コストエクスプローラとコスト配分タグ

コスト配分タグにより、ROIの請求分析ができる

請求アラーム

請求金額もCloudWatchメトリクスの一環であるため、アラームを仕込みAWSリソースの使いすぎ防止に努めることができる。 また、予め設定した予算よりもAWSリソースの料金が超過すると予測された時にアラームできる機能として[AWS Budgets]()がある。

10-3 マルチアカウントの運用

AWS Organaizations

AWSのアカウントは個人や組織で複数のアカウントを作成することができるが、管理面で煩雑的になりやすい。 そのため AWS Organizations を使用することで複数のアカウントを一括で管理することができる。

複数のアカウントを一括で管理する AWS Organaizations機能例

10-4 AWSのサポートプラン

AWSアカウントには4つのサポートプランが存在する。クライアントは適切なサポートプランを選択することによって 運用の安全性を保ち エスカレーションパス (問い合わせ先)を確保することができる

10-5 その他の請求サポートツール

AWS安易見積もりツール

AWSでどれくらいのコストがかかるのかを事前に見積もってくれるツール

TCO計算ツール

AWSへの移行、導入を検討している際にオンプレミス環境で構築した場合とのコストを比較してくれるツール

shareof commented 4 years ago

AWS 実践編

EC2のインスタンスを実際に生成してサーバにsshする

AWS CLI(awsコマンド)からS3のbucketを作成してみる

そんため最低でも以下のクレデンシャルを最低限設定する。

data.txtというダミーデータを用意し、先ほど作成したaws-tbucketにアップロードする

[ec2-user@####### test_resource]$ aws s3 cp ./data.txt s3://aws-tbucket/
upload: ./data.txt to s3://aws-tbucket/data.txt

アップロードしたファイルを実際にダウンロードしてみる。

$ rm data.txt
ec2-user@###### test_resource]$ aws s3 cp s3://aws-tbucket/data.txt ./
download: s3://aws-tbucket/data.txt to ./data.txt
[ec2-user@###### test_resource]$ ll
total 4
-rw-rw-r-- 1 ec2-user ec2-user 20 Aug 19 05:03 data.txt

バケットの削除を行う バケットの中にオブジェクトがあると普通には削除することができないため(--force)で強制して削除を行う

[ec2-user@###### test_resource]$ aws s3 rb s3://aws-tbucket
remove_bucket failed: s3://aws-tbucket An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty
[ec2-user@###### test_resource]$ aws s3 rb s3://aws-tbucket --force
delete: s3://aws-tbucket/data.txt
remove_bucket: aws-tbucket
[ec2-user@####### test_resource]$ aws s3 ls  | grep aws
[ec2-user@####### test_resource]$

Amazon Route 53を使用しEC2インスタンスのパブリックIPにドメインを紐づける