AWS クラウドプラティクショナー　流し見用 part4

●耐久性の定義
あるものが外部からの物理的・化学的な影響に対して、どれだけ長く抵抗できるかを示す性能のこと
AWSにおける耐久性はシステムの誤動作によってデータが破損・消失しないことを意味する

●EBSの耐久性
EBSボリュームは同じアベイラビリティーゾーン内で自動的にコピーされることで１つのコンポーネントに障害が発生したときにもデータが保護され、自動的にレプリケートされる
EBSのどのボリュームも、耐久性の優れたスナップショット機能を提供し、99.999%の可用性を維持する設計となっている
Amazon EBSは、より高い耐久性ボリューム（io2)を提供する
これは、99.999%の耐久性と0.001%の年間故障率（AFR)を提供するよう設計されている
故障とは、ボリュームの完全損失又は部分的な損失を指す
例えば1年間に100000EBS io2ボリュームを使用する場合、１つのio2ボリュームでのみ胡椒が発生すると想定される
これにより、io2は、SAPHANA,Oracle,MicrosoftSQL Server,IBMDB2など、稼働時間の増加から利益を得るビジネスクリティカルなアプリケーションに最適
io2ボリュームは、一般的な商品ディスクドライブに比べて信頼性が2000倍高く、AFRが約2％の時に失敗する
他の全てのAmazonEBSボリュームは99.8%~99.9%の耐久性と0.1%~0.2%のAFRを提供するよう設計されている

●CloudWatch
CloudWatchはログ、メトリクス、およびイベントという形式でモニタリングデータと運用データを収集し、AWSとオンプレミスのサーバーで実行されるAWSリソース、アプリケーションおよびサービスの統合されたビューをユーザに提供する
CloudWatchを使用して環境内における異常動作の検知、アラームの設定、ログとメトリクスを並行させた視覚化、自動化されたアクションの実行、問題のトラブルシューティング、およびインサイトの検出を行い、アプリケーションのスムーズな実行を維持する
CloudWatchはDevOpsエンジニア、開発者、サイト信頼性エンジニア（SRE)、およびITマネージャーのために構築されたモニタリング/オブザービリティサービス
CloudWatchではアプリケーションを監視し、システム全体におけるパフォーマンスの変化に対応してリソース使用率の最適化を行い、運用上の健全性を統括的に把握するためのデータと実用的なインサイトを取得できる

●Amazon SNS
Amazon SimpleNotificationServiceはマイクロサービス、分散型システム、およびサーバーレスアプリケーションの分離を可能にする高可用性で、耐久性に優れたセキュアな完全マネージド型pub/subメッセージングサービス
Amazon SNSは高スループット、プッシュベース、多対多のメッセージングのためのトピックを提供する
Amazon SNSは送信側がトピックを作成して受信側をポリシー指定することで制御された非同期通信を実現することができる

●Amazon SES
Amazon SES（SimpleEmailService)はユーザー自身のEメールアドレスとドメインを使用してEメールを送受信するための、簡単で費用効率の高い方法を提供するEメールプラットフォーム
例えば、特化販売などのマーケティングEメールや、注文確認などの取引Eメール、ニュースレターなどのその他のタイプの通信分の送信に使用できる
Amazon SESを使用してメールを受信するときは、Eメール自動応答システム、Eメール登録解除システム、受信Eメールからカスタマーサポートチケットを生成するアプリケーションなどのソフトウェアソリューションを開発できる

●API Gateway 特徴
・APIを生成、管理する事ができる
・WEBSocket を利用した双方通信が可能
・EC2/Lambda/任意のウェブアプリケーションのワークロード処理を実行する
・最大数十万個のAPI同時呼び出し、受付が可能
・Amazon CloudFrontとの連携
・AWS Identity and Access Management (IAM)とAmazon CloudWatchを使用してサービスへの呼び出しを視覚的にモニタリング

●AWS Lambdaの課金体系
Lambdaは使用分のみ料金を支払う
AWS Lambdaでは使用分のみ料金を支払う、内訳は関数に対するリクエストの数とコードの実行にかかる時間に基づいて課金される

Lambdaではイベント通知とコンソールからのテスト呼び出しを含む起動の呼び出しに対応して実行を開始した回数がカウントされる
関数全体に対する合計リクエスト数についてリクエストごとに0.000002USDの料金が発生する

実行時間はコードの実行が開始された習慣からコードが返されるか中止されるまでで計算され、100ミリ単位で切り上げられる
料金は関数に割り当てたメモリ量により異なる
AWS Lambdaのリソースモデルではクライアントが関数に必要なメモリ量を指定すると、それに比例したCPUパワーとその他のリソースが割り当てられる
メモリサイズが増えると、関数で利用可能なCPUにも同等の増加が発生する

●API
Application Programing Interface
ソフトウェアやプログラム、Webサービスの間をつなぐインターフェース

●スケールアップ
サーバー処理能力向上方法の一つでメモリやハードティスクの増設、CPUをより上位スペックに交換することでサーバー自体のパフォーマンスを向上させる

●スケールダウン
メモリやCPUを削減すること
アプリケーションのアクセス増加に伴うスケールアップ後に、アクセスが減少してきたタイミングでスケールダウンを行い増加分のサーバースペックを下げることで、サーバーリソースの最適化やコスト削減を行うことが可能

●スケールアウト
処理する機器/サーバー台数を増加すること
例えばスケールアウトを行うことで、１台につき5分に20件のリクエストを処理できるWebサーバーがあると仮定した際に、Webサーバーを1台増設することで1分間に20件のリクエストの処理が可能になる

●スケールイン
処理する機器/サーバー台数を低減すること
アクセス増加に対するスケールアウト後に、アクセスが減少してきたタイミングでスケールインを行いあげた分のサーバー台数を減少させることで、サーバーリソースの最適化や無駄なコストの削減を行う事ができる

●AWS Personal Health Dashboard　利点
AWS Personal Health Dashboardを利用することで、アカウントに影響する可能性があるAWSヘルスイベントの情報表示を確認できる
ダッシュボードには最近のイベントおよび予定されているイベントがカテゴリ別に分類されて表示される
詳細なイベントログには、過去90日間の全イベントが表示される

Personal Health Dashboardでは、アプリケーションを稼働しているAWSサービスの状態に関するパーソナライズされた表示を確認できるため、ユーザに影響する問題がAWSで発生している場合、即座に確認できる
例えば、 EC2インスタンスのいずれかに関連づけられているEBSボリュームが失われた場合、使用中の特定サービスの状態を素早く確認でき、根本的な原因を特定するためのトラブルシューティングに貴重な時間を費やさずに済む

アラートを受け取ると、改善に関する情報と特定のガイダンスが含まれていえるため、リソースに影響を与えるAWSのイベントに対応するためのアクションを即座に実行できる
例えば、AWS EBSボリュームのいずれかに影響を与えるハードウェアの障害が発生した場合、アラートには影響を受けるリソースのリスト、ボリュームをスナップショットから復元するための推奨事項、およびボリュームをスナップショットから復元するのに役立つ手順へのリンクが含まれる。
この的を絞った実用的な情報により、問題の解決に必要な時間が短縮される

●AWS Trusted Advisor
AWS Trusted Advisor はユーザのAWS環境の利用状況を分析し、推奨ベストプラクティスを次のような５つのカテゴリで提供する
・コストの最適化
・パフォーマンス
・セキュリティ
・耐障害性
・サービスの制限

●EBSボリュームのスナップショットに関しての特徴
EBSボリュームの特定時点のスナップショットはS3に保存され、AWS CLIから操作して作成する事が可能
EBSのスナップショット機能を用いることでEBSのデータが全てS3に複製され、S3へ保存されたスナップショットから新規EBSとして復元できます
スナップショット作成時はデータ整合性を保つため静止点を設けることが推奨されている
保存期間や世代数は無制限となっている

●AWSのセキュリティについて AWS管理者
・AWS管理者であってもユーザデータにはアクセスできない
AWS側の管理者もユーザーデータにはアクセスはできず、情報を得ることはできず、ユーザーデータを読み取ることはできない
暗号化した全データはユーザーのアクセスキーとシークレットアクセスキー、またユーザーの指定した暗号化方式によって保護されている
・AWS管理者はあらゆるOSにアクセスできる訳ではない
ユーザがEC2サーバーを利用して、独自にセットアップしたなどがあれば当然AWS管理者であってもアクセスできない
・AWS管理者はユーザアプリケーションの管理を行えない
基本的にユーザ側に権限に委ねられている
・AWS管理者は全てのデータ保護に責任はない
ユーザーデータに関してはユーザー側にデータ保護の責任がある

●AWS Config
AWS Config はコンプライアンスと脆弱性に関するリアルタイム監査を提供するサービスの1つ
AWS Configコンソール、AWS CLI（コマンドラインインターフェース）、AWS Config APIを使用してルールとリソースのコンプライアンス状態を確認可能

●AWS CloudWatch
AWS CloudWatchはコンプライアンスと脆弱性のリアルタイム監査を提供するサービスではなく死活監視、アプリケーションのパフォーマンス監視などに利用する一般的なシステムのモニタリングサービス

●AWS Trusted Advisor
AWS Trusted Advisorはコンプライアンスと脆弱性のリアルタイム監査を提供するサービスの1つ
AWS Trusted Advisorが提供するベストプラクティスはコスト最適化、セキュリティ向上、耐障害性、パフォーマンス、およびサービスの制限の5つのカテゴリに分類される
ヘルスチェックの状態はダッシュボードページに色分けして表示される

●AWS Inspector
AWS Inspectorはコンプライアンスと脆弱性のリアルタイム監査を提供するサービスの1つ
Amazon Inspectorは自動化されたセキュリティ評価サービスで、AWSにデプロイしたアプリケーションのセキュリティとコンプライアンスを向上させることができる

●CloudTrail
CloudTrailはユーザーのアクセスログ取得に使用するサービス

●AWS Service Health Dashboard
AWS Service health DashboardはAWSの全サービスの可用性に関するAWSの最新情報をリージョン、アベイラビリティゾーンごとに公開している
ダッシュボードは全てのアマゾンウェブサービス（AWS）に関する現在のステータスと履歴データへのアクセスを提供する
現在のステータス情報を取得するかRSSフィードに登録することで、ここのサービス中断などに関するステータスも取得可能
http://status.aws.amazon.com/からアクセスできる

●AWSタグ
AWSタグを利用することで、リソースの管理とフィルタリングを簡単に実施できる
タグはユーザー定義のキーと値で構成されるラベルであり、リソースの管理、検索、およびフィルター処理を容易にする
タグには固有のタイプはないが顧客は目的、所有者、環境、またはその他の基準でリソースを分類できる

●AWS Codeシリーズ
・Code Build
コーディングされた内容を構築する
AWS CodeBuild は、ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成できる完全マネージド型のビルドサービス
・Code Deploy
コーディングされた内容を展開する
CodeDeployは、Amazon EC2,Amazon Fargate, AWS lambda,オンプレミスで実行されるサーバーんど、さまざまなコンピューティングサービスへのソフトウェアのデプロイを自動化するフルマネージド型のサービス
・Code Pipeline
Code PipelineはCodeサービスを連結して処理する仕組みを管理する事ができる完全マネージド型の継続的デリバリーサービス
・Code Commit
Code Commitはコーディングされた内容をリポジトリにホストする
Gitベースのリポジトリをセキュアにホストする完全マネージド型のソース管理サービスであり、チームはセキュアでスケーラビリティの高いエコシステムで、簡単にコードによるコラボレーションができる

●AWS ECR
Amazon Elastic Container Registory(ECR) は安全性と信頼性に優れたスケーラブルなAWSのマネージドコンテナイメージレジストリサービス
このレジストリを使うことで開発者はDockerコンテナイメージを簡単に保存、管理、デプロイできる
Amazon Elastic Container Service(ECS)に統合されているため、開発から本稼働までのワークフローを簡略化できる

●AWS EKS
Amazon Elastic Kubernetes Service(EKS)では、コンテナ化されたアプリケーションのデプロイ、管理、スケールをkubernetesを使ってAWSで簡単に実行する事ができる

●AWS Fargate
サーバーやクラスターの管理の必要なしにコンテナを実行するための、Amazon ECSおよびEKSに対応したコンピューティングエンジン

●AWS ElasticBeanStalk
ElasticBeanStalkは必要な全リソースが実行されていることを確認するように設計されており、環境内で停止したサービスを自動的に再起動する
これらのリソースを完全に削除する必要がある場合には、ElasticBeanstalkが作成したリソースを終了する前にElasticBeanstalk環境を終了する必要する

Amazon Elastic Beanstalkはjava,Net,PHP,Node.js,Python,Ruby,GoおよびDockerを使用して開発されたウェブアプリケーションやサービスを、Apache,Nginx,Passenger,IISなど使い慣れたサーバーでデプロイおよびスケーリングするための、使いやすいサービスです

Elastic BeanStalkは、AWSにアプリケーションをデプロイするための最も速くて簡単な方法
AWSマネジメントコンソール、Gitリポジトリ、またはEclipseやVisual Studioなどの統合開発環境（IDE)を使用してアプリケーションをアップロードするだけで、Elastic Beanstalkが自動的にデプロイメントの詳細（容量のプロビジョニング、負荷分散、Auto Scaling、アプリケーションのヘルスモニタリングなど）を処理します。ユーザー側でインフラストラクチャやリソースの設定をすることなく、数分以内にアプリケーションが使用できるようになる

●AWS OpsWorks
AWS OpsWorks環境を使用してAWSリソースを作成する場合はAWS OpsWorksを使用してそれらのリソースを終了する必要がある
リソースを終了していない時には、AWS OpsWorksによって再起動される
例えば、AWS OpsWorksを使用して EC2インスタンスを作成した後に、 EC2コンソールを使用して停止した場合、AWS OpsWorks自動修復機能はインスタンスを起動失敗として分離し、再起動する

●AWS Key Management Service
AWS Key Management Service では必要に応じて暗号化キーを簡単に作成して管理し、幅広いAWSサービスやアプリケーションでの使用を制御できるようになる
どのユーザがどのサービスにアクセスし利用できるのかを簡単に管理できる
また、独自のキー管理インフラストラクチャのキーをAWS KMSにインポートしたり、AWS ClooudHSMクラスターに格納されたキーを使用してAWS KMSから管理できる

KMSではカスタマーマスターキー（CMK)はデータを暗号化および複合化するデータ暗号化キーへのアクセスを制御するために使用される

AWSアカウントのCMKには3つのタイプがある
・カスタマー管理（CMK)
・AWS管理
・AWS所有
カスタマーキーはクライアント側での管理が可能

●AWSの無料セキュリティリソース
・AWSセキュリティブログ
・証明可能安全性
・ホワイトペーパー
・高度なイノベーション
・開発者向けドキュメント
・記事とチュートリアル
・トレーニング
・セキュリティ速報
・コンプライアンスのリソース
などが含まれている