AWS 認定ソリューションアーキテクト勉強用徹底まとめ|S3,EC2,Route53,ELB,RDSなど

投稿日: カテゴリー: AWS
Pocket

AWS 認定ソリューションアーキテクト

去年末、AWSサービスを利用したアプリケーションを開発する機会があり、必要な場所だけ勉強しながらと軽い気持ちで挑んだ結果、なんとか形にし納品したもののしっかりAWSのサービスを把握してから開発していればもっとシンプルな解決策があったのではと反省したこともあり、新年一年の計としてAWS 認定ソリューションアーキテクトを目指そうと考えました。

さて早速書いていきますが、公式のサンプル問題を見ると各サービスの特性・性質を活かす方法が問われているのでまずはサービス毎にアーキテクトに関係ある特徴をまとめ、次にそれらを組み合わせた具体的なソリューションについてを記載していきます。
※AWSのそれっぽい図やアイコンはAWS シンプルアイコン(https://aws.amazon.com/jp/architecture/icons/)がとても参考になります。

 7つのベストプラクティスは重要

回答に詰まったらAWSのベストプラクティスに近そうな選択肢を選ぶのが良いでしょう。

⒈故障に備えた設計で障害を回避

2.コンポーネント間で疎結合で柔軟に

3.伸縮自在を実装

4.すべての層でセキュリティを強化

5.制約を恐れない

6.処理の並列化を考慮

7.さまざまなストレージの選択肢を活用

上記のままだと問題回答につなげづらいので「1.AZ単位で消えた程度ではサービスの継続に影響がさせない設計」が正解なんだななど読み替える必要があります。。

AWSにおけるネットワーク構築

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

地理的・電力的に独立している領域の事です。ベストプラクティスの1番目を踏まえるとサーバやデータはAZ間で冗長的に配置することでDR(災害復帰)の対策を行う事ができます。

AZ毎に管理されるサービスをAZサービスといい以下のサービスが該当します。(インスタンスのロケーションは、AZに基づきます)

EC2, RDS, ElastiCache, ELB

リージョン

AWS のデフォルトリージョンはus-east-1です。

リージョンサービス毎に管理されるサービスをリージョンサービスといい以下のサービスが該当します。

S3,DynamoDB, SQS, CloudSerch

そしてどのリージョンからも利用可能なサービスをグローバルサービスといい以下のサービスが該当します。

IAM, Route53, CloudFront

 

Amazon VPC(Virtual Private Cloud)


VPCはパブリッククラウド内にプライベートネットワークを構築できるサービスです。従来のデーターセンサーに類似しているバーチャルネットワークを定義するために利用する事ができます。EC2やRDSはVPCサービスのため、VPCネットワークを指定せずともデフォルトのVPC内(設定済み)に自動的に組み込まれます。

サブネットの特徴として各サブネットには、単一の AZ にマップし、デフォルトでは、プライベートかパブリックかに関わらず、すべてのサブネット間でルート可能です。
Amazon VPC のインスタンスが起動された後でもインスタンスが属する VPC セキュリティグループを変更可能です。
VPC では、インスタンスが停止するとき、インスタンスはプライベート IP アドレスを保持します。
ENI ネットワークインターフェイスは、インスタンスの実行中、インスタンスの停止中、インスタンスの起動中にインスタンスにアタッチできます
(それぞれ、ホットアタッチ、ウォームアタッチ、コールドアタッチと呼ばれています)。
”ソリューション例”

・インスタンスへ の SSH アクセスを許可したい
アウトバウンドのネットワーク ACL で送信トラフィックを許可するように変更する必要があります。
・パブリックサブネットで NAT デバイスとしてインスタンスを起動した後、NAT デバイスがプライベートサブネットからインターネット宛てトラフィックのターゲットになるようルートテーブルを変更しました。結果、プライベートサブネットのインスタンスからインターネット宛てにアウトバウンド接続かできないので解決したい。
NAT インスタンスの「Source/Destination Check」属性を無効することでアクセスできるようになります。

Elastic IP

デフォルトではElastic IPは保持していません。Elastic IPはEC2などに「紐付いていれば」無料、単体では存在するだけで有料です。

AWS Direct Connect


オンプレミス環境とAWS間を専用回線でつなぐサービスです。Amazon ウェブサービスへ直接接続する事ができます。
顧客のオンプレミスのデータセンターを AWS へ拡張するソリューションなどに適しています。
リージョン内のすべての AZ へアクセス可能となるので、設定はAPNテクノロジー/コンサルティングパートナーに依頼して行います。

Amazon Route 53

拡張可能なドメインネームシステム(Domain Name System)を提供します。
エイリアスレコードは、1 つの DNS名を別のAmazon Route 53 DNS 名にマッピングすることができます。
Amazon Route 53 CNAME レコードは、任意場所にホストされている任意の DNS レコードを指すことができます。
ネームサーバー(Name Server)レコードをサポートしています。
MX レコードをサポートします。
”ソリューション例”

・ドメインの Zone ApexをElastic Load Balancer に向かせるには
Amazon Route 53 エイリアス(Alias)レコードを使用します。

Amazon ELB(Elastic Load Balancing)

インスタンス へのヘルスチェックが失敗した場合、ELB のヘルスチェックに失敗したインスタンスに、トラフィック送信を停止します。ロードバランサに登録されている複数の AZ の Amazon EC2 インスタンス間で、受信トラフィックを均等に分散さ れることを保証するのはELB のクロスゾーン負荷分散(Elastic Load Balancing cross-zone load balancing)機能です。
Amazon ELBとEC2は高可用性ソリューションのためにマルチ AZ で実行すべきとされています。
トラフィックパターンを分析及び、アプリケーションのトラブルシューティングを行うために接続情報をキャプチャを一定分間隔で取るような場合、ロードバランサのアクセスログを有効にすることで要件を満たす事ができます。

AWSストレージとコンテンツ配信

Amason S3(Simple Storage Service)

S3 はコスト効率が良いかつスケーラブルなのはどのストレージであり、無制限数のデータを格納することが可能です。※無制限サイズではありません。
標準ストレージクラスを使用してオブジェクトを格納している場合、同一リージョンの複数施設にオブジェクトが複製されます。
AWSネットワーク内(⇔VPCネットワーク)にある為オブジェクトは、URL 経由で直接アクセスすることができます。HTTP Query ベースのリクエストは HTTP verb GET 又は POST を使用している HTTP リクエストであり、Query パラメータは、Actionという名前です。
バケットにアップロードされているすべてのオブジェクトが、パブリック読み取りに設定するにはすべてのオブジェクトにパブリック読み取りを設定するように、バケットポリシーを構成し、そしてアップロードする時、オブジェクトにパブリック読み取りアクセス権限を設定します。
Amazon S3 アップロードは失敗した場合、再開可能です。オブジェクトが完全に保存されたときだけ、PUT リクエストへ成功レスポンスを返します。S3 は、上書き PUT および DELETE については結果整合性(eventual consistency )を提供します。その際、キー名にランダムなプレフィックスを追加することで毎秒 100 以上の PUT リクエストを受け取るようなバケットにおいても最適なパフォーマンスを提供する事ができます。
AmazonS3 にオブジェクトを配置すると、オブジェクトが正常に格納されたことを表示すのは HTTP200 結果コードと MD5 チェックサムです。
REST/ Query リクエストに署名する時、追加の安全策のために、HTTPSで使われている SSL(Secure Sockets Layer) を使用してリクエストを送信すべきです。REST 又は Query requests とは、HTTP verb(GET や POST など)と、呼び出している API を指定する Action また は Operation と言う名前のパラメータを使用している HTTP または HTTPS リクエストです。

S3のセキュリティ

共有すべきでない情報についてはパブリック・リード・アクセスを削除し、有効期限と署名付き URL を使用することで勝手にアクセスされることを防ぎます。
他にもS3 のデータへのアクセスを制限するにはバケットまたはオブジェクトへの S3 ACL を設定やS3 バケットポリシーを設定が使用できます。OIDC 互換 ID プロバイダー(OpenID Connect-compatible identity provider)を利用した認証を行っている場合はAWS セキュリティ・トークン・サービスとしてウェブ ID フェデレーション(Web Identity Federation)を利用すると良いでしょう。
Amazon S3 はバケット又はオブジェクトを作成したユーザーに、そのバケット又はオブジェクトに対して他のアクションを実行する権限を自動的に与えることはありません。10%単位でストレージサイズを増やす事ができます。
サーバーサイドの暗号化(Server Side Encryption)オプションによりAmazon S3 に送信したファイルをサーバ側で暗号化します。
オブジェクトのバージョニングと MFA(Multi-factor authentication)がデータ損失事故の防止及びリカバリするために役立ちます。
”ソリューション例”

・ローカルストレージキャパシティが徐々に制約されているので、アクセ ス頻度の高いデータへの低レイテンシ・アクセスを維持しつつデータのオフサイトバックアップを実施したい
Amazon S3 へのスナップショットを備えたゲートウェイキャッシュ型の AWS Storage Gateway 構成が要件に合致します。

S3 RRS(Reduced Redundancy Storage)

S3 RRS の耐久性は99.99%です。低コストの低冗長化が可能です。

Amazon Glacier

データのアーカイブとバックアップ用に、安全かつ耐久性のあるストレージを提供する低コストのストレージサービスです。
大量データを Amazon Glacier に入れるのには AWS Import/Exportを利用するのが最も早い方法です。

AWS Storage Gateway

オンプレミス IT 環境と Cloud Storage を統合するサービスを提供します。

Amazon EBS(Elastic Block Store)

Amazon インスタンスでデータベースを実行したい場合、最も推奨する Amazon ストレージオプションです。Amazon EBS ボリュームは、Amazon EC2 インスタンスから独立して存続可能です。稼働中の Amazon EC2 インスタンスにアタッチすることが可能であるかつ、フォーマットされていない外部ブロックデバイスのような動きをします。データーセットに対して、ランダムに読み取りと書き込みが頻繁発生するデータベース・スタイル・アプリーシ ョンに最適なAmazonストレージです。インスタンスのブロック・デバイス・マッピングを表示すると、インスタンス・ストア・ボリュームは表示されず、EBS ボリュームのみ表示されます。
デフォルトでは、EBS ボリュームを Windows インスタンスにアタッチした場合、インスタンス上で任意のドライブ文字として表示されます。EBS ボリュームのドライブ文字を変更するために、EC2Config Serviceサービスの設定を変更すべきです。
・停止とデータの削除
Amazon EBS ボリュームが、インスタンスのルートデバイスの場合、インスタンスを停止せずにデタッチすることはできません。EC2 EBS-backed(EBS ルート)インスタンスが停止しているとき、任意の ephemeral ストア・ボリュームのデータは削除され、アクセスできなくなります。
再作成したい場合、EBS ボリュームを削除する前にボリュームのスナップショットを保存します。
デフォルトでは、インスタンスの起動時に作成及びアタッチされる EBS ボリュームは、そのインスタンスが終了するときに削除されますがフラグDeleteOnTerminationの値を false に変更することで、この動作を変更することが可能です。
・データの保護とスナップショット
EBS ボリューム上でデータを保護を目的として、暗号化されたファイルシステムを使用します。
EBS ボリュームに使用できる stripping オプションのうち、 Raid 1はペアボリューム にすべての書き込みをミラーリングしているので、RAID 0 に比べてインスタンスから EBS への必要 I/O 量が 2 倍となってしまいます。
EBS スナップショットにAmazon EC2 API 経由でアクセス可能です。
EBS スナップショットは非同期で行われます。EBS スナップショットは増分方式(Incrementally)でAmazonS3 に保存されます。
スナップショットが完了するまで、スナップショットのステータスは保留(pending)となりますがEBS スナップショット作成が開始後〜完了するまでも、EBS ボリュームはEBS ボリュームは使用することができます。
スナップショットを公開すると、すべてのスナップショットデータが全員と共有されますが、AWS Marketplace の製品コードを持つスナップショットは公開することができません。

”ソリューション例”
・現在 EC2 インスタンスにアタッチされている EBS ボリュームは、現在の AZ から別の AZ にどのように移行することができますか?
ボリュームの Snapshot を作成し、別の AZ で、スナップショットから新しいボリュームを作成します。
・Amazon EBS ボリュームについての情報を表示するためにはどのような操作が必要か
https://console.aws.amazon.com/ec2/にてAmazon EC2 コンソールからナビゲーションでボリューム(Volumes)をクリックすると表示されます。Amazon EBS ボリュームの「詳細」モニタリングデータで、プロビジョンされた IOPS ボリュームは1分間の メトリックを自動的に Amazon CloudWatch に送信します。5 分間のデータを無料で自動的に取得可能である Amazon EBS ボリュームのモニタリングデータの種類は基本(Basic)です。
・General purpose T2はどのような目的で利用するのか
インスタンスタイプGeneral purpose T2は Amazon EBS-backed のみで利用可能です。

Amazon EBS-backed

Amazon EBS-backed インスタンスは、instance-store backed と違い停止及び再起動ができます。

Amazon instance-store

インスタンスストア・ボリューム上のデータは、関連付けられている Amazon EC2 インスタンスが開始されて いる状態のみ保持されます。

AWSコンピューティング

Amazon EC2(Elastic Compute Cloud )


Amazon EC2 はクラウドでの仮想サーバーを提供します。
Amazon EC2 は、AWS のクラウドベースアプリケーションにシームレスに統合可能なパブリックデータのリポジトリを提供します。そしてパブリックデータセットを使用するに料金はかかりません。
Amazon EC2、イメージ、他の Amazon EC2 リソースを管理しやすくするため、tagsのフォームで各リソース に独自のメタデータを割り当てることができます。tagsによって、異なる方法(例えば目的、所有者、環境などで)でEC2 リソースを分類することができます。Amazon EBS snapshotsにはタグ付けできますが、Elastic IP addressesにはタグ付けできません。タグだけでリソースを、終了、停止、または削除することはできません。

インスタンスメタデータに関するすべてのリクエストの base URI はhttp://XXX.XXX.XXX.XXX/latest/です
S3-backed AMI の EC インスタンスが停止した時、ルートボリュームのデータは自動的に削除されます。
インスタンスが再起動する場合はデータは保持されます。
インスタンスが起動中又は停止しているとき、プライマリ(eth0)ネットワークインターフェイスをデタッチすることはできません。
Amazon EC2 がサポートしているブロックデバイスは2種類です。ブロック・デバイスとはイトあるいはビット(ブロック)のシーケンスでデータを移動する記憶装置です。
Amazon EC2 内では内部 DNS 名(Internal DNS name)が解決可能です。
すべての Amazon EC2 インスタンスは起動時2つの IP アドレスを割り当てられていますが、Amazon EC2 ネットワ ーク内からしか繋ぐことができないのはプライベート IP アドレスです。インスタンスにパブリック IP アドレスがほしい場合、Elastic IP Addressを使用します。
ただしEC2-Classicはインスタンスを停止し際、Elastic IP アドレスの関連付けが解除されます。インスタンスを再開する際に Elastic IP アドレスを再度関連付けする必要があります。
EC2 インスタンスのフル管理者権限を保持することができるのはAmazon Elastic Map ReduceとAWS Elastic Beanstalkです。
ECU (UCU)とはAmazon独自のCPUの計算性能単位1つのEC2 Compute Unitは、1つの 1.0-1.2 GHz 2007 Opteron または 2007 Xeon プロセッサの CPU能力に等しい能力を提供するのだそうです。
t2.medium EC2 インスタンスタイプはHVM EBS-Backedで起動すべきです。
顧客のEC2 内でデバイス名/dev/sda1 が存在する場合、ルートデバイス用にリザーブされていると判断できます。

EC2を用いたソリューション

”ソリューション例”
・インスタンスの負荷を軽減したい
CloudFront distribution を作成し、 Amazon EC2 instance を origin として設定することが有効な策です。
・ノード間低遅延を要する compute クラスタのパフォーマンスを最適化したい
プレイスメントグループ(Placement Groups)を使用します。プレイスメントグループとはEC2 インスタンス間で高帯域幅、低レイテンシの接続を介して相互に通信することができる機能です。
・データベースへの書き込みスループットを増やしたい
EBS ボリュームのアレイを使用するか、EC2 インスタンスのサイズを大きくすることが有効です。
・インスタンスをシングルテナントのハードウェアで実行させたい
インスタンスの tenancy 属性をdedicatedに設定します。
・バックログを減らしたい
Spot instancesを利用するのが最もコスト効率がよいとされています。
・/dev/sdc がインスタンスにアッタチされることを防ぎたい
インスタンスを起動する時、マッピングを/dev/sdc=none に指定します。
・SSH 経由で EC2 インスタンスに接続できない
あなたの IP からのポート 22 経由の入力トラフィックを許可するように、インスタンスのセキュリティグループを調整します。
・DynamoDB テーブルへ書き込みを追加したい
EC2 インスタンスにデプロイされたアプリケーションが DynamoDB テーブルにデータを書き込むためには、まずDynamoDB テーブルへ書き込みを可能にする IAM ロールを作成し、IAM ロールを含む起動設定で EC2 インスタンスを起動します。
・インスタンス内からインスタンスのプロパティにアクセスするためには
http://XXX.XXX.XXX.XXX/latest/meta-data/
にアクセスすると確認できます。curl http://169.254.169.254/latest/meta-data/などで外部からアクセスする事で
プライベートIPアドレス、インスタンスID、ホスト名などにアクセスできます。
MITMを許した場合、以下のようなリクエストでセキュリティ侵害を受ける可能性についての報告があります。

http://target.com/?url=http://169.254.169.254/latest/meta-data/
http://target.com/?url=http://169.254.169.254/latest/meta-data/instance-type
http://target.com/?url=http://169.254.169.254/latest/meta-data/instance-id
・・・

https://www.blackhat.com/docs/us-14/materials/us-14-Riancho-Pivoting-In-Amazon-Clouds-WP.pdf
・高可 用性のデータベース・アーキテクチャに適切な構成は
二つの異なる AZ を利用しているレプリケーション構成の Amazon EC2 インスタンスです。
・コマンドラインツールを使用してスナップショットを作成したい
ec2-create-snapshotコマンドを利用します。
・ストレージとして RAlD EBS ボリュームを使用している EC2 上のリレーション・データベースを最も短時間でバックアップする方法は
1. インスタンスを停止します。
2. EBS ボリュームをスナップショット(S3に)します。

Amazon EC2 API ツール

Amazon EC2 ウェブサービスへのコマンド・ライン・ツールのことです。
API コールを実施する前にユーザー用のアクセス・キー・セットを作成する必要があります。
API を使用してスナップショットを作成するときCreateSnapshotを使用すべきとされています。
Windows のリモートデスクトップ・クライアントを実行するコマンドはmstscです。
appserver グループのメンバーとして、20 個のインスタンスを起動する場合
ec2-run ami-e3a5408a -n 20 -g appserverが実行コマンドとなります。

Amazon Elastic Beanstalk

Amazon ウェブサービスの上レベルでのアプリケーションコンテナを提供します。
EC2 インスタンスのフル管理者権限を保持することができるサービスの一つです。

Auto Scaling

Auto Scaling を使用しているインスタンスのインスタンスタイプを変更する場合、Auto Scaling の起動設定を変更します。
Auto Scaling が EC2 のインスタンスを終了する場合、Auto Scaling はSNS 通知を送るように、設定可能です。
また、EC2 インスタンスが実行している AZ のインスタンスの一つを終了します。
・サブネットの数え方に注意
サブネットはAZを超えて作成できません。AZサービスを冗長化する場合作成するサブネットの数に注意しましょう。複数の AZ で Auto Scaling グループを使用し、Multi-AZ RDS MySQL を使用、外部アクセスを考慮しない場合でサブネットは最低4つ必要となります。

AWSデータベースサービス

Amazon RDS(Relational Database Service)


RDS が現在サポートしているリレーション・データベース・エンジンはAmazon Aurora、MySQL、MariaDB、Oracle、SQL Server、および PostgreSQLの6つです。実行している独立したデータベース環境のことをDB インスタンスと言います。

RDSの利用方法の選択

・IOPSの選択
すべての RDS インスタンスでプロビジョンド IOPS をVPC で使用することはできます。プロビジョンド IOPS ストレージでは使用するリソースが予約されているため、その月に実際に使用したかどうかに関係なく、予約されたリソースに応じて課金されます。プロビジョンド IOPS ストレージを使用すると、毎月の Amazon RDS I/O 料金はかかりません。消費した I/O 分のみを支払いたい場合は、マグネティックストレージを使用する DB インスタンスの方が適している可能性があります。例えば、本番のオンライン・トランザクション・処理(OLTP:online transaction processing)のワークロードを使用している場合プロビジョンド IOPS が推奨されることになります。プロビジョンされた IOPS ボリュームのサイズは、少なくとも10 GB でなければなりません。
・高可用性
プライマリ DB インスタンスの停止に備えてマルチ AZ を選択した場合、Amazon RDS は自動的にスタンバイレプリカに切り替わります。自動フェールオーバーメカニズムは、単にメイン DB インスタンスのCNAMEレコードをスタンバイ DB インスタンスに指すように変更します。自動フェイルオーバーが発生した時、自動フェールオーバーが発生したことを通知するために DB インスタンスイベントを発行します。DB インスタンスに関連するイベント情報を返すためにDescribeEventsを使用する ことができます。アラートは通知されるのはSNS が設定時のみです。

プライマリーとスタンドバイの間でデータを複製する際に発生するデータ転送料金は「無料」です。マスターDBインスタンスに複数のリードレプリカがあり、そのうちの一つを昇格させた場合、残りのリードレプリカは、引き続き古いマスターDBインスタンスから複製されるようになります。リードレプリカを昇格させたときに作成された新しいDB インスタンスでは、バックアップウィンドウ期間が保持されます。

RDSの作成と運用設定

Amazon RDS DB を作成する際、最初にやることは、DB のSecurity Groupを設定することです。
RDS DB インスタンスの起動中に、AZ を選択するページはADDITIONAL CONFIGURATIONです。
Amazon RDS の自動バックアップと DB スナップショットは、現在InnoDBストレージエンジンのみサポートします。スナップショット及び自動バックアップはAmazon S3に格納されます。リードレプリカも、トランザクション・ストレージ・エンジンを必要とし、InnoDBストレージ・エンジンのみ サポートします。
バックアップが進行中、データベースへの I/O 操作は数分停止します。Point in Time あるいは DB スナップショットからリストアを実行する場合、新しい DB インスタンスは新しいエンドポイントを使用して作成されます。自動バックアップは、新しい DB インスタンスでは、デフォルトで無効になっています。自動バックアップを無効にすると、ポイントインタイム(point-in-time)リカバリは無効になります。
バックアップの保持期間(backup retention period)を変更は0 から最大35日までです。
バックアップウィンドウ又はバックアップ処理時間の変更は即時有効になります。
Amazon RDS DB インスタンスのサイズを変更する場合、Amazon RDS は、通常次のメンテナンス期間にアップグレードを実行します。
メンテナンス期間を待たずに今すぐアップグレードを実行したい場合、ApplyImmediatelyオプションを指定します。
タグキーの文字列値は、「aws:」または「rds:」をプレフィックスとして使用できません。タグのキーの最大長は128 Unicode 文字です。
SQL サーバー用 Amazon RDS は、msdb データベースにデータをインポートすることをサポートしています。
SQL Server エンジンを使用している Amazon RDS で、SQL Server Express エディションの Microsoft SQL Server DB インスタンスの最大サイズはDBごとに 10 GBです。各 DB インスタンス・クラスにおいて、関連するストレージ容量の最大サイズは6TBです。
DB インスタンスに十分な空き容量があることを確認するために、Amazon Cloudwatch のFreeStorageSpaceのメトリックスをチェックします。
DB インスタンスあるいはインスタンスに関連付けられた DB パラメータグループを変更した場合、変更を有効に するには、インスタンスを再起動する必要があります。DB インスタンスが削除されても、手動で作成された場合 DB スナップショットは削除されません。
DBインスタンスに既存のタグと同じキーを持つタグを追加した場合、新しい値が古い値を上書きします。

データの暗号化とセキュリティ

アプリケーションと DB インスタンス間で SSL を使用して、接続を暗号化することはできます。
DB セキュリティグループにルールを追加するときは、ポート番号やプロトコルを指定する必要はありません。
EC2 キーペアで Amazon S3 サーバー側の暗号化を使用します。Amazon S3 にデータを渡す前に、クライアント側でデータをクライアントのマスターキーにより暗号化します。そしてAmazon S3 の AWS KMS で管理されるキーによるサーバー側の暗号化(SSE-KMS)を使用します。
Amazon RDS がインスタンスをプロビジョンする時、Amazon RDS は SSL 証明書を作成し、DB インスタンスに証明書をインストールします。
このときpublic keyは、 https://rds.amazonaws.com/doc/rds-ssl-ca-cert.pem に格納されています。
Amazon RDS は Telnet、Secure Shell(SSH)、または Windows リモートデスクトップ接続を経由して直接ホストアクセスを許可しません。
RDS はHTTPSを経由した SOAP のみをサポートします。
SQL サーバーは、マスターデータベースにログインとパスワードを保管します。
MySQL サーバーエンジンを利用する時、アプリケーションと DBインスタンス間の接続を SSL により暗号化可能です。

RDSのサポート

SQL サーバーのbulk copy機能は、DB インスタンスに、ソースデータベースからデータをコピーするための効率的な手段です。また、ASCII ファイルのようなデータ・ファイルに指定したデータを書き込みます。
Amazon RDS Oracle の DB エンジンで、Database Diagnostic Pack および Database Tuning Pack はOracle Enterprise Editionでのみ 使用可能です。

Amazon RDS 上で Oracle のデプロイを実行する時、既存 Oracle Database のライセンスを使用できる二つのライセンシングモデルはBYOL(ライセンスを自分で用意)と License Included(ライセンス込み)です。
DB インスタンスがアイドル状態の場合でも、課金されます。
DB インスタンスの起動ウィザード(Launch Db Instance Wizard)で、バックアップ及びメンテナンスのオプションはマネージメント・オプションの配下で選択することができます。
DB インスタンスをアップグレードする前に、新しいバージョンでテストすることができます

Oracle のマルチ AZ DB インスタンス環境で、「強制フェイルオーバー」を開始することはできます。
フェイルオーバー機能が確実に動作するように、Elastic Network Interface の受信ト ラフィックに対してセカンダリ・プライベート IPを使用することをお勧めします。

Micro インスタンスのシステムリソースは、Oracle の推奨構成を満たしていません。
Oracle SQL Developer とはOracle から無料で配信されるグラフィカル Java ツールです。

MySQL インストレーションのデフォルト Port は 3306 です。MySQL と Oracle データベースエンジンを持っている Amazon RDS Provisioned IOPS ストレージを使用している場 合、IOPS レートを1,000 から10,000に指定することで、データベース・インスタンスのスループットを拡張することができ ます。MySQL のマルチ AZ DB インスタンス環境で、「forced failover(強制フェイルオーバー)」を実行することはできます。MySQL ベースの RDS インスタンスが新しくサポートされているバージョンにアップグレードされる時期及び可否 をコントロールすることはできます。
・サポートされないこと
Federated ストレージエンジンは、Amazon RDS for MySQL によって現在サポートされていません。
RDS はSQL Server DB インスタンスのストレージの増量を現在サポートしていません。
Amazon RDS SQL Server エンジンでサポートされている SQL Server 監査機能はありません。
DB インスタンスのストレージサイズを減らすことはできません。
DB インスタンスは、ストレージ・スペースまたはファイルシステムリソースが不足した場合、ステータスはstorage-full となり、DBインスタンスは使用できなくなります。
DB インスタンスを Multi-AZ 配置として実行しているとき、読み取りまたは書き込み操作のためにスタンバイ側を使用できません。

RDSを用いたソリューション

”ソリューション例”
・リードレプリカは、Multi-AZ フェイルオーバーした後「stuck」と表示され、ソース DB インスタンスから更新 分が取得することができません。どうすればいいですか?
リードレプリカを削除し、新しいものを作成し、置き換えます。
・クエストの結果を処理する前に、エラーが発生したかどうかを確認したい
Amazon RDS API からのレスポンスでエラー(ERROR)ノードを確認します。
・高可用性を必要とするかつ、複雑なクエリ及び表結合を必要なアプリケーションを運用したい
Amazon RDS for MySQL with Multi-AZの構成を推奨します。
・スタンバイ RDS インスタンスをプライマリと同じリージョンにするのは可能か
可能です。ただし、同じAZにはできません。
・マルチ AZ 環境でのMicrosoft SQL ServerDB インスタンスのサポートは?
2014 年からサポートされています。マルチ-AZ 配備として DB インスタンスを実行する場合、”primary”がデータベースの書き込み及び読み取りを実行します。

Amazon DynamoDB

耐久性、低遅延の共有データストアを提供します。リージョンサービスである点に注意しましょう。
DynamoDB では、インプレース・アトミック更新がサポートされています。
”ソリューション例”

・シングル・DynamoDB テーブルにプロビジョンできる最大の書き込みスループットは
DynamoDB は制限なしで拡張するように設計されていますが、10,000 を超える場合、すぐに AWS に連絡しなければなりません。

Amazon ElastiCache

管理されたメモリ内キャッシュサービスを提供します。
EC2 インスタンスのフル管理者権限を保持することができるサービスの一つです。

AWSのアプリケーションサービス

 

Amazon SWF(Simple Work Flow)

Amazon SWF で“ドメイン”は関連するワークフローの集合を示します。分配された同期、非同期タスクやフォールトトレランスの調整を可能にします。
従って、電子商取引ウェブサイトのマルチステップとマルチ意思決定チェックアウトの管理や分散されて監査可能なビジネスプロセスの実行をオーケストレーションするには向いていません。

Amazon SQS

”ソリューション例”
・会社は、トランスコーディングのためにオンプレミスシステムから AWS へビデオファイルを送信するワークフロ ーを持っています。SQS からトランスコディング・ジョブを取得する EC2 インスタンスを使用しています。どう して SQS はこのシナリオに適切なサービスなのでしょうか?
SQS により、エンコード処理作業の水平方向拡張(horizontal scaling)を容易にすることが可能です。

Amazon SES(Simple Email Service)

Amazon SNS(Amazon Simple Notification Service)

サポートされている通知エンドポイントあるいはクライアントはEmail,Short Message Serviceがあります。

トピックを作成したとき、ARN (Amazon Resource Name)が作成されます。

AWSの管理ツール

Amazon CloudWatch


ボリュームのステータスチェックを行なっている間、ステータスが insufficient-data である場合、ボリュームのチェックがまだ進行中である可能性があります。
EC2 インスタンスのメモリー使用状況をモニターするためにカスタム CloudWatch のメトリックを必要とします。
無料枠を使用した場合、メトリック・アップデイトは5分毎となります。Replica Lagメトリック(AWS マネジメントコンソールあるいは Amazon Cloud Watch API から入手可能 )を注意深く監視し、レプリケーションエラーにより、すごく古くなった時は、リードレプリカを再作成することをおすすめします。

AWS Service Health Dashboard

URL: http://status.aws.amazon.com/でアクセスできます。

 

Amazon CloudFormation

Amazon Web サービスのネットワークリソースをマップするためのテンプレートです。

AWSの分析

Amazon Kinesis

リアルタイムで処理可能にするアーキテクチャを設計する際に利用したいサービスです。

AWS OpsWorks

Chef や Puppet のマネージド型インスタンスを利用できるようになる構成管理サービスです。
AWS に既存の Chef レシピを活用できるようになります。

AWSのセキュリティとID

Amazon IAM


AWS の中のユーザーおよび権限を管理するサービスを提供します。Amazon IAMがなければ、AWS 製品の契約及び請求書に対して複数の AWSアカウントを作成するか、全従業員は一つの AWS アカウントのセキュリティ認証情報を共有しなければなりません。
AWS ID およびアクセス管理(AWS IAM)はAmazon EC2、Amazon SimpleDB と AWS マネジメントコンソールなどの AWS 製品を使用してい る複数のユーザーあるいはシステムを対象としています。AWS マネジメントコンソール、 コマンドラインインターフェース(CLI)、既存ライブラリ、IAM Query APIなどのインターフェースでアクセス管理が可能です。IAM ポリシー評価ロジックは、すべての要求に対してデフォルトでは拒否で始まります。※AWS アカウントのルート・セキュリティ・認証情報を使用するものを除きます。
AWS で使用されるアクセス権限の種類はUser-based and Resource-basedの2つです。
キー名は大文字と小文字が区別されます。

IAMユーザー

IAM システムで作成したすべてのユーザーは、no permissionsで始まります。IAM に関して、コンソールを使用して、ユーザーのプロパティを編集することができますが、ユーザー名を変更することはできません。ユーザーは複数の AWS アカウントと関連付けることができませんが、ユーザーは複数のグループに属することができます。ただし、ユーザーの所属可能なグループの数に制限はあります。IAM ユーザーを削除するために AWS マネジメントコンソールを使用する場合、IAM はユーザーが所有している署名証明書およびアクセスキーも削除します。
・AWSアカウント(ルートアカウント)について
AWS アカウント(ルートアカウントレベルで)毎に使用する MFA デバイスのデフォルト最大数は1つとなっています。日常ではルートアカウントは使用せず①初期のIAMやユーザ設定、②料金に関する操作、③セキュリティテストの申請を行う以外はIAMユーザで操作を行うようにして下さい。

IAMグループ

IAM サービス内でグループは、ユーザーの集合体とします。組織グループ単位で権限を与えることが無条件で可能です。ただし、グループはネストすることはできません。IAM は、作成したグループに自動的に権限を割り当てられるように、いくつかのポリシーテンプレートを提供し ています。ポリシーテンプレートPower User Accessは、すべてのアカウント・リソース(AWS アカウント情報は除く)にアクセス可能な管理者グループ権限を与えます。

IAMポリシー(policy)

一つ以上のアクセス権限の正式な声明を記述する文書です。

IAMロール

制限に関する概念としてポリシー(policy)、permission、セキュリティグループが区別できるよう理解しましょう。

permission

一つ以上のリソースにアクセスするユーザー、グループ、あるいはロールのようなエンティティを許可する(あるいは拒否)概念です。

セキュリティグループ

一つまたは複数の Amazon EC2 インスタンスにビルドインで設定するインバウンド・トラフィックを制御するファイヤーウォールのような機能を果たします。ネットワーク ACLはinbound/outboundの設定が必要ですが、セキュリティグループではステートフルなアクセス制御となります。
初期設定はすべての受信トラフィックを拒否。すべての送信トラフィックを許可。同じセキュリティグループに関連付けられているインスタンス間のトラフィックは許可するとなっています。即ち、インバウンド・トラフィックは許可せず、すべてのアウトバウンド・トラフィックは許可します。セキュリティグループルールを変更は直ちに適用されます。各サーバーに少なくとも1個のセキュリティグループにを割り当てなければなりません。
コマンドによる設定も可能で例えば「ec2-create-group CreateSecurityGroup」とした場合、EC2 のセキュリティグループに対してあなたのアカウントで使用するために、新しいセキュリティグループを作成できます。また「ec2-revoke RevokeSecurityGroupIngress」とするとEC2 インスタンスから 1 つまたは複数のセキュリティグループを削除します。

”ソリューション例”
・IAM ロールを割り当てた状 態でEC2インスタンスを実行したい
インスタンスのイメージを作成し、このイメージを使用して、IAMロールが割り当てられた新しいインスタンスを起動します。IAM ポリシーで特定の Amazon EC2 のリソースを指定することは、Amazon EC2 の Amazon リソース名(ARN:Amazon Resource Names)を利用します。
・会社は、これまでに使用したことがない AWS リージョンにサービスを展開する必要があります。会社は現在、イ ンスタンスから Amazon DynamoDB へのアクセスを許可する Amazon EC2 インスタンスの IAM ロールを持っていま す。新しいリージョンの EC2 インスタンスも同じ権限を持つようにする必要があります。会社はそれを達成する ためにどうすべきですか?
既存 IAM ロールを新しいリージョンの Amazon EC2 インスタンスにを割り当てます。

・Elastic Load Balancing のような他のAWS が所有するインタフェースのセキュリティグループ・メンバーシップ を変更したい
サービス特定のコンソールまたは API/CLI コマンドを使用します

・特定のIPアドレス接続するクライアントだけがホストへ SSH アクセスを可能にしたい。
以下を設定します。
Security Group Inbound Rule: Protocol – TCP. Port Range – 22, Source xxx.xxx.xxx.xxx/32

・サードパーティー製のソフトウェアのアクセスを「mycompany」という名の Amazon S3 バケットだけに制限するには
「company-backup」の Amazon S3 API に制限したカスタム IAM ユーザーポリシーを適用します。

AWS Security Token Service


オンプレミス LDAP ディレクトリサービスと AWS IAM を統合するような場合、ID ブローカーからの AWS Security Token Service を使用して、一時 AWS 認証情報を発行しする事で統合可能です。

認証

既存のユーザーのために IAM セキュリティ認証情報を作成することができます
AWS プラットフォーム上でユーザー認証に AWS Multi-Factor トークンデバイスを使用し、AWS プラットフォームと Multi-Factor トークンサービスを統合することができます。
REST/ Query リクエストに署名する時、追加の安全策のために、HTTPSで使われている SSL(Secure Sockets Layer) を使用してリクエストを送信すべきです。
REST 又は Query requests とは、HTTP verb(GET や POST など)と、呼び出している API を指定する Action また は Operation と言う名前のパラメータを使用している HTTP または HTTPS リクエストです。
HTTP Query ベースのリクエストは HTTP verb GET 又は POST を使用している HTTP リクエストであり、Query パ ラメータは、Actionという名前です。

責任分担モデル

以下はのAWSのユーザの責任範囲となります。
・EC2 インスタンスのオペレーティングシステムのパッチマネジメント
・EBS(Elastic Block ストレージ)の暗号化
・IAM 認証情報のライフサイクル・マネジメント
・セキュリティグループと ACL(アクセスコントロールリスト)設定

侵入(penetration)テスト

申請はルートアカウントからしかできません。
AWS からの事前許可を受けた後、顧客が自分のインスタンスで実行することは可能です。
昨年10月頃からフォームが変わり、対象もEC2などだけでなくAPI GateWayなども可能になったためモバイルアプリの診断などの幅が広がりそうです。

 

その他サービスに関する知識

AWS で作成されるリソースはAmazon Resource Nameと呼ばれる固有識別子で識別されています。

AWS プレミアムサポート

Basic
Developer
Business:ビジネスレベルのプレミアムサポートケースの最長応答時間は1時間となっています。
Enterprise

リザーブドインスタンス

1年契約または3年契約でインスタンスを予約しておくもので、見返りとして通常のインスタンスより割引が受けられるというものです。
システムの総所有コスト(TCO)を軽減ために使用することができます。
EC2、RDS、ElastiCache、Redshiftで選択可能です。
AutoScaling による起動されるインスタンスに適用可能です。
AZ 間で移行することかもできますが、Multi-AZ 配置では利用できません。
別リージョンへは移動できません。

請求

一括請求を使用する場合、Paying account と Linked accountの2種類があります。
”ソリューション例”

・顧客の IT 部門は、各部門で使用するすべての AWS リソースに対して管理(メンテナンスなど含む)及びコスト 監視をする必要があります。一方各部門では、彼らが使用する AWS リソースを管理者権限で管理し、他の部門の リソースから分離たいと考えています。要件を満たすオプションはどれですか?
各部門のアカウントが企業親アカウントにリンクするように一括請求を使用します。各子アカウント(child account)で、IT 部門管理者用に IAM クロスアカウントアクセスを有効にします。
・仮想プライベートクラウドで顧客に仮想デスクトップを展開したい。
①仮想プライベートネットワーク接続②AWS ディレクトリサービス③ Amazon Workspacesがソリューションになるます。

以上です。参考になれば幸いです。