AWS X-Rayについて
AWS X-Rayを使用して、本番環境や分散アプリケーション(マイクロサービスアーキテクチャを使用して構築されたアプリケーションなど)を分析およびデバッグできる
特徴は以下の通り
■リクエスト動作の確認
AWS X-Rayでは、アプリケーション全体で転送されるユーザーリクエストがトレースされる。
アプリケーションを構成する個々のサービスやリソースによって生成されるデータが集計されるため、アプリケーションの実行状況をエンドツーエンドで確認できる。
■アプリケーションの問題の検出
AWS X-Rayを使うと、アプリケーションの実行状況についてのインサイトを収集して、問題の根本原因を調べることができる。X-Rayのトレース機能を使ってリクエストのパスを辿ると、パフォーマンスの問題の原因と、問題に関係するアプリケーション内の場所を特定できる。
また、X-Rayには注釈機能があり、トレースにメタデータを付加できる。
■アプリケーションのパフォーマンスの向上
AWS-Rayを使うと、パフォーマンスのボトルネックを特定できる
X-Rayのサービスマップにより、アプリケーション内のサービスやリソースの関係をリアルタイムで表示できる
高いレイテンシーが発生している場所を簡単に検出し、サービスのノードとエッジのレイテンシーのディストリビューションを視覚化し、アプリケーションのパフォーマンスに影響を与える特定のサービスやパスをドリルダウン(集計範囲を一段階絞ってより詳細な集計を行うこと)できる。
Dedicated hostについて
Dedicated Hostは物理的にサーバーを占有するインスタンスタイプ Dedicated Hostでは、ライセンス条項の範囲で、ソケット単位、コア単位、またはVMソフトウェア単位の既存のライセンスを利用できる。その上で、同じAWSアカウントに属していたとしても、別のIAMグループとは物理サーバーを共有しない。VPCにオフィスのネットワークを接続するのに利用するサービス
・カスタマーゲートウェイ Direct Connectを利用してVPCに接続する際に構成するゲートウェイタイプの1つ・AWS Site-to-Site VPN
簡易にAWS VPCにあなたのオフィスに素早く安全に接続することができる。
・Direct Connect
AWSとデータセンター、オフィス、またはコロケーション環境との間にプライベート接続を確立することができる。
※利用しないサービス
・AWS Client VPN
AWS Client VPNはユーザーのクライアントPCからVPCへとVPNで接続する際に利用するサービス
ユーザーのAWSやオンプレミスネットワークへの安全な接続を可能にする。(オフィスに接続するようではない)
1つのVPCの適用範囲
・リージョン内の全てのAZVPCはリージョン内の全てのAZに適用することができる。よって、同じリージョン内であれば、複数のAZにまたがって1つのVPCを適用させることが可能
Virtual Private Cloud(VPC)は、AWSアカウント専用の仮想ネットワーク
VPCは、AWSクラウドの他の仮想ネットワークから論理的に切り離されている。VPC内には、Amazon EC2インスタンスなどのAWSリソースを起動できる
VPCを作成するときに、そのVPCに対して、IPv4アドレスの範囲をClassless Inter -Domain Routing(CIDR)ブロックの形式で指定する
Amazon RDS DBインスタンスで使用されるプライマリストレージサービスタイプ
・汎用SSD
・プロビジョンドIOPS
・マグネティック
Amazon RDS DBインスタンスを作成または変更する際に、データ保存用のストレージタイプを選択する
Amazon RDSは次のような3種類のストレージタイプを選択できる。
汎用SSD
汎用SSDボリュームは、さまざまなワークロードに対応できるコスト効率の高いストレージとして使用できる。
これらのボリュームのレイテンシーは1桁台のミリ秒であり、長時間3000IOPSにバーストできる。
プロビジョンドIOPS
プロビジョンドIOPSストレージは、低I/Oレイテンシーおよび一貫したI/Oスループットが必要となるI/O負荷の高いワークロード(特にデータベースワークロード)のニーズを満たすように設計されている
マグネティック
また、Amazon RDSは下位互換のためにマグネティックストレージをサポートしている。
新しいストレージが必要な場合には、汎用SSDまたはプロビジョンドIOPSを使うことが推奨される。
マグネティックストレージでのDBインスタンスのストレージ量の上限は、他のストレージタイプより少なくなる
MFA(多要素認証)を有効化するために使用されるAWSサービス
・AWS CLI
・IAM
・AWS Directory Service
AWS CLIでコマンドを実行し、仮想MFAデバイスのエンティティを作成・設定することが可能
AWSマネジメントコンソールでIAMを使用して、アカウントのIAMユーザーの仮想MFAデバイスを有効化できる。
セキュリティを向上させるには、多要素認証(MFA)を設定してAWSリソースを保護することを推奨する。
IAMユーザーまたはAWSアカウントルートユーザーに対してMFAを有効にすることができる。
ルートユーザーのMFAを有効化すると、ルートユーザーの認証情報のみが影響を受ける。
アカウントのIAMユーザーは固有の認証情報をもつ独立したIDであり、各IDには固有のMFA設定がある。
AWS Directory ServiceでMFAを有効化して、アプリケーションなどにアクセスするためのAD認証情報を指定する時のセキュリティが強化される。
MFAを有効にすると、ユーザーはいつものようにユーザーネームとパスワード(第1要素)を入力した後、仮想MFAソリューションまたはハードウェアMFAソリューションから取得する認証コード(第2要素)も入力する必要がある。これらの要素によって、ユーザーが有効なユーザー認証情報とMFAコードを提供しない限りAmazonエンタープライズアプリケーションにアクセスできないというセキュリティが追加される。
CloudFormationとは
AWS CloudFormationは、AWSのリソースをコード化しプロビジョニング(構築)するサービス
CloudFormationを利用し始めるには、ユーザーはまず「テンプレート」というコードを作成する
テンプレートはJSONまたはYAML形式で書かれたコード
テンプレートは、たとえばEC2インスタンスのインスタンスタイプやRDBのパラメータの定義など、AWSリソースをどのように利用するか、という設計図にあたる。
テンプレートを作成した後は、 CloudFormationに読み込ませることによりAWSリソースがプロビジョニングされる
この時AWSリソースは「スタック」という単位で管理する。
AWS Sercrets Managerとは
・データベースなどにアクセスする際のシークレット(ログイン時の認証情報)を管理するサービス
アプリケーションなどからAWSリソースへアクセスする際に Sercrets Managerからシークレットを取得することにより、ログイン情報をアプリケーションにハードコーディングしたりヘイブンで入力しておく必要がない
AWS Trusted Advisorとは
AWS Trusted Advisorのチェック観点は、「コスト最適化」「パフォーマンス」「セキュリティ」「フォールトトレランス」「サービスの制限」に分類されており、各観点の代表的なチェック項目は以下のようなもの[コストの最適化]
・EC2リザーブドインスタンスの使用率
リザーブドインスタンス(予約購入したインスタンス)の利用状況をもとに最適な購入数を算出し、コストの節約が可能かチェックする
[パフォーマンス]
・EC2インスタンスの使用率
直近14日で1日のCPU使用率が90%以上の日が頻出していないか
[セキュリティ]
・開かれたポート
アクセス元の制限がない(0.0.0.0/0)セキュリティグループが定義されていないか(ポート番号に応じて警告を表示)
[フォールトトレランス]
・ロードバランサ(ELB)の最適化
ELB配下のインスタンスが複数AZで稼働しているか
※フォールトトレランス(fault tolerance):システムに障害が発生した場合にも、系統を切り替えるなどして正常に稼働させること
[サービスの制限]
・各サービスに設定された制限値と利用状況を照会し、使用率が逼迫したり上限に達していないか
CloudFrontのキャッシュの更新頻度について
キャッシュTTL(Time To Live:TTL)とはキャッシュを保持する時間のこと
URLパスごとに指定することができる。
CloudFrontはキャッシュTTLが超過した後にクライアントからのリクエストを受けると、オリジンサーバーにコンテンツの更新有無を確認し、更新されていればキャッシュに反映しつつ応答を返す。
キャッシュTTLは大きい値であるほどキャッシュの更新頻度が低くなり、小さい値ほどキャッシュの更新頻度が高くなる。
キャッシュTTLを含むキャッシュの設定のことを「キャッシュBehavior(ビヘイビア)」という
他の機能
・Invalidation
キャッシュを削除する機能
AWSが提供するデータベースサービス
・Amazon RDS
RDB(Relational DataBase:関係データベース)型のデータベーストランザクション処理を行う業務など、汎用的に利用
・Amazon Redshift
ペタバイト級のデータを扱えるデータウェアハウス(複数のシステムに蓄積されたデータを再構成したデータベース)
大量のデータを高速に扱えるため分析用途に利用
・Amazon DynamoDB
Key-Value型のNoSQLデータベース
容量が無制限のためデータ収集など大容量データの蓄積に利用
・Amazon ElasticCache
フルマネージド型のインメモリデータベース
非常に高速なアクセスが可能でキャッシュなど一時的なデータ保存に利用
Dynamo DBはNoSQLのデータベースサービスで、Key-Value型という「保存データ(Value)」とそれを特定するための「キー(key)」がペアになっている形式のデータを扱う
シンプルな構造であるためデータアクセスのパフォーマンスは非常に高く、ピーク時には秒間2000万件のリクエストに対応する。さらにストレージの容量制限もないので拡張性にも優れている
また、Dynamo DBでは、テーブルに対する書き込み・読み込みの量と利用料金が関係しており、書き込み・読み込みは「キャパシティユニット」という単位で管理されている。
これは1秒間にどれだけ読み込み・書き込みを行うかを予約する設定で、容量が大きいほど料金がかかるが、高いパフォーマンスを発揮することができる
キャパシティユニット種類
WCU(Write Capacity Unit)
最大1KBのデータを1秒間に1回の書き込み
RCU)(Read Capacity Unit)
最大4KBのデータを1秒間に1回読み込み(強い整合性を持たない読み込みの場合は2件)
リードレプリカについて
RR(リードレプリカ)とは参照専用のデータベースとして動作するレプリカ(複製)を作ることができる。 データベース参照時ににかかる負荷が高い場合、RRを最大5台(Amazon Auroraは15台)増設することによってスケールアウト(処理台数の追加)することができる。マルチAZ(異なるAZへ同期レプリケーションを行う機能)を利用してRRを複数のAZに分散したり、異なるリージョnに配置することもできる。
IAMの運用でセキュリティポリシーを逸脱した時に検知する方法
・IAMリソースを監視するAWS Configルールを作成する。不適切な運用があった場合、SNSトピックへの通知を行う
AWS Configは、AWSリソースの設定を管理し、記録・評価するサービスです
AWSリソースの設定がいつ変更されたかを記録し、変更がルールに準拠したものでない場合には「非準拠」として記録される
AWS Configを有効化することにより、たとえばセキュリティグループの設定が変更された場合や、S3バケットを新たに作成した場合にバージョン管理が有効化されているかなど、さまざまなリソースの設定状況を監査する。AWSリソースに対してコンプライアンスに反した設定がされたまま運用されてないかをチェックできる。
なお、変更があったタイミングでAmazon SNS(Simple Notification Service)による通知を受け取ることもできる。
AWS Glueとは
AWS Glueは、フルマネージドのサーバーレスETLサービス Glue(糊)の名の示す通り、データソース(S3やDynamoDBなど)からデータを抽出し、変換・統合したデータをターゲットのデータベース(S3やRDSなど)へ格納するといった、データ分析における橋渡しの役割を担う。 「クローラ」は、データソースからデータ抽出し、「データカタログ」を作成する データカタログとは、抽出したデータのメタデータ(データの属性情報)が保存されたもの データそのものではなく、データソースのどのデータをどのような方法で抽出するかなどの情報が保存されている 作成したデータカタログをもとに、ETLエンジンがデータソースからデータを抽出し、ターゲットへ書き出す処理を行う このデータ変換およびターゲットへ書き出す処理を「ジョブ」と呼ぶ 変換処理は、既存のETLツールであるApache SparkやScalaを用いて自動生成したり、生成されたスクリプトを自分で編集することができる。 なお、Glueで作成したデータカタログは、Amazon EMRやAmazon Athenaなどの分析・クエリ実行サービスなどからも参照できる。Glueのクローラーで抽出したデータに対してAthenaでSQLクエリを実行する、といった利用もできる。Amazon EMR
ビッグデータの処理や分析を行うサービス
Amazon Athena
S3内のデータに対して直接SQLクエリを実行できるサービス
Webコンテンツを保護するため、全トラフィックにAWS WAFで設定したWeb ACLを適用する方法
・Amazon CloudFrontでS3に対してOAIを設定し、AWS WAFを有効にする
AWS WAFは、Amazon CloudFront、Application Load Balancer、Amazon API Gateway、AWS AppSyncに対応している。Amazon S3では直接AWS WAFを有効にできないので、AWS WAFのWeb ACLを適用するには、静的WebサイトホスティングのWebコンテンツへのアクセスをCloudFront経由にする。
CloudFrontのOAI(Origin Access Identity)は、S3バケット内のコンテンツへのアクセスをCloudFront経由でのアクセスに限定し、クライアントからS3バケットへ直接アクセスされないようにする機能
クライアントからオリジナルコンテンツへの直接アクセスを制限することにより、オリジンサーバーのデータを保護できる。
CloudFrontでWebコンテンツのあるS3バケットにOAIを設定すると、Webコンテンツへのトラフィックが全てCloudFront経由となる。そしてAWS WAFを有効にすることで、全トラフィックにAWS WAFのWeb ACLを適用できる。
AWS WAF(Web Application Firewall)は脆弱性を突く攻撃(クロスサイトスクリプションやSQLインジェクションなど)から、Webアプリケーションを保護するサービス
「Web ACL」というアクセスコントロールリストで、IPアドレス、HTTPヘッダー、HTTP本文、URI文字列などに対してフィルタリングの条件を設定できる。また、Web ACLには接続元のIPアドレスから国別にアクセスを制限できる機能もある
DynamoDBのテーブルに行なわれた追加・削除および更新のログを保存するために有効化する機能
・DynamoDB Streams
テーブルに対して行なわれた直近の24時間の変更(追加や更新、削除)をログに保存する機能
ストリームを参照することによって、いつ誰がどのようにテーブルを更新したかがわかる
ログには、アプリケーションがリアルタイムにアクセスできるため、変更内容に応じて処理を組み込むことができる
たとえば、ログを監視し問題のある処理があった場合はアラートを上げさせたり、プロフィール画像を更新(追加)したらフレンドに通知させるというような運用が可能
AWS Snowファミリーとは
AWS Snowファミリーは多量のデータをAWSストレージへ転送するサービス 利用者には大容量のストレージを備えた機器がAWSから貸し出しされ、移行対象のデータを機器へ取り込んでからAWSへ返送すると、データがAmazon S3へ保存される仕組み。また、貸し出される機器にはCPU(vCPU)やメモリなどを潤沢に搭載したものを選択でき、データ転送だけでなく、IoT端末やエッジコンピューティング(IoT端末自身、または近いエリアのサーバーで処理を行うこと)を実現することもできるSnowファミリーの種類
・AWS Snowcone
最小のデバイスを提供する、データ転送・保存またはエッジコンピューティングに対応したサービス。
デバイスがコンパクトなためIoTや持ち運び用途にも利用できる。
TB規模のストレージを利用できるほか、AWS Datasyncを使用してオンラインでデータを転送することも可能
デバイスサイズ:2kg
・AWS Snowball
ペタバイト規模のデータ転送サービス。ユースケースに応じた2つのオプションがある
●Snowball Edge Storage Optimized
ストレージとしての利用が主目的。ローカルストレージや大規模なデータ転送を行うケースに適している
●Snowball Edge Compute Optimized
エッジコンピューティング向けサービス。vCPUやメモリが潤沢に搭載されている。ネットワークに接続されていない状態でも高度な情報処理を行うケースに適している
デバイスサイズ:22kg
・AWS Snowmobile
エクサバイト規模のデータ転送サービス
約14mのコンテナに100PBのストレージを搭載したトレーラー(2021年現在、日本国内での提供はない)
Amazon EBS(Elastic Block Store)ボリュームタイプ
・汎用SSD EC2インスタンスの起動ボリュームやデスクトップ、開発環境など ボリュームサイズ:1GiB-16TiB 最大IOPS:16000IOPS 最大スループット:250MiB/s(gp2) 1000MiB/s(gp3)・プロビジョンドIOPS SSD(io1)
汎用SSDより高い性能が要求されるシステム用。大規模データベースなど
ボリュームサイズ:4GiB-16TiB
最大IOPS:64000IOPS
最大スループット:1000MiB/s
・プロビジョンドIOPS SSD(io2)
io1よりも、高信頼性・高性能が要求されるシステム向け。
io1の100倍の耐久性と、容量当たり10倍のIOPSを発揮できる。
ボリュームサイズ:4GiB-16TiB
最大IOPS:64000IOPS
最大スループット:1000MiB/s
・スループット最適化HDD(st1)
ビッグデータや、シーケンシャル(順次)アクセスを行うデータベース、ログの処理など
※EC2インスタンスの起動ボリュームには指定できない
ボリュームサイズ:500GiB-16TiB
最大IOPS:500IOPS
最大スループット:500MiB/s
・コールドHDD(sc1)
利用頻度の低いデータの保持用
ログやバックアップなど
※EC2インスタンスの起動ボリュームには指定できない
ボリュームサイズ:500GiB-16TiB
最大IOPS:250IOPS
最大スループット:250MiB/s
似たようなもの
・Amazon EC2インスタンスストア
インスタンスストアは、EC2インスタンスから利用できる揮発性の(一時的な)ブロックストレージ
インスタンスの停止・終了と共にデータが削除されるため、業務時間外はインスタンスを停止させているケースには向かない
VPCのIPアドレスのうちインターネットと通信可能で、利用者が固定で保有できるIPアドレス
・Elastic IPアドレス Elastic IPアドレスは、インターネットと通信可能な固定のパブリックIPアドレス Elastic IPアドレスを割り当てたAWSリソースが削除されても同一のIPアドレスが保有され、別のAWSリソースに再び割り当てることができる。Elastic IPアドレスを割り当てたAWSリソースはパブリックDNSホスト名も固定になり、Elastic IPアドレスへ名前解決される複数ボリュームのRAID 0構成
Amazon EBS(Elastic Block Store)では、アタッチしているEC2インスタンスのOSの機能を利用してEBSボリュームのRAID(Redundant Arrays of Inexpensive Disks:レイド)構成を組むことができる。 RAIDとは複数のボリュームを論理的に1つのボリュームとして構成する技術のこと。RAIDにはいくつかの種類があるが、そのうちの1つ「RAID 0」は、複数のボリュームへデータを分散して書き込むことによって、1台のボリュームにつづけて書き込むよりも高速にデータアクセスを行う(ストライピング) EBSボリュームの性能上限はio1またはio2のプロビジョンドIOPS次第ですが、上限値を超えた性能が必要な場合、RAID 0を構成することによって性能向上を見込めるIAMポリシー種類
IAMポリシーとはAWSリソースに対する権限を定義したもの
Resource(どのAWSリソースに対して)、Action(どのAWSサービスのどの操作を)、Effect(許可または拒否)の3つの要素で定義する。
IAMポリシーには「アイデンティティ(ユーザー)ベースのポリシー」と「リソースベースのポリシー」がある
アイデンティティベースのポリシーは、IAMユーザー、IAMグループ、IAMロールにアタッチするポリシーのことを言う
アイデンティティベースのポリシーには以下の種類がある
●管理(マネージド)ポリシー
1つのポリシーを複数の対象へアタッチできる
・AWS管理ポリシー
AWSによってあらかじめ定義されたポリシー
・カスタマー管理ポリシー
ユーザーが定義するポリシー。世代管理が可能
●インラインポリシー
ユーザーが対象ごとに作成・付与するポリシー複数の対象へアタッチできない
Amazon RDSにおいて、リードレプリカを作成する際に選択できるオプション
・インスタンスタイプ
・ストレージタイプ
・マルチAZ配置
・サブネットの設定
・自動スケーリングの有無
・認証方法
などの設定ができる
NATゲートウェイとは
NATゲートウェイは、プライベートサブネットからインターネットへ通信したいときに利用するIPv4専用の機能
NATゲートウェイはAWSによってAZ内で冗長化されており、NATゲートウェイの機器障害時やトラフィック増加時でも継続して利用できる。
ただし、AZに障害が発生した場合には利用できなくなるため、さらに可用性を高める場合は複数のAZにそれぞれNATゲートウェイを配置する必要がある
Auto Scaling:動的スケーリング種類
・シンプルスケーリング
1つのメトリクス(CPU使用率などシステムのパフォーマンスに関するデータ)に対する1つの閾値に基づいて、インスタンスを増減する。
例:300秒間の平均CPU使用率が50%を超えたら、インスタンスを1台追加する
・ステップスケーリング
1つのメトリクスに対する複数の閾値に基づいて、インスタンスの増減を段階的に行う
例:300秒間の平均CPU使用率が50%を超えたらインスタンスを1台追加し、90%を超えたら2台追加する
・ターゲット追跡スケーリング
1つのメトリクスが指定した目標値になるように、インスタンスを増減する。増減するインスタンス数はAWS側で調整される
例:平均CPU使用率を30%に維持する