AWS SAAの学習②

mondy
·
公開:2024/6/23

VPC

VPCピアリング:二つのVPCをつなげる

VPCエンドポイント:インターネットを経由しないVPCのアクセス

ゲートウェイエンドポイント:S3, DynamoDBなどのプライベート接続。無料

インターフェイス型エンドポイント:AWS PrivateLinkとも呼ばれる。CloudWatch, SQS, などのAPIコールに対して接続。有料。

VPC外のサービス(セキュリティグループが付与できないサービス):S3、DynamoDB, SQS, SNS, CloudFront, Route53。これらは、IAMポリシーやバケットポリシーなどで守らないといけない

Route53

ルーティングポリシー

レイテンシーベース・フェイルオーバールーティングなどなど

レイテンシベースは最低レイテンシーのルーティングが選ばれる。たとえ地理的に遠くてもそちらの方がレイテンシーが低い場合はそちらにルーティングされる。

加重ルーティングポリシーはABテストで用いられる。40%をA、60%をBとか。

Aレコード(IPv4)、AAAA(IPv6)CNAMEレコード、ALIASレコード、NSレコード(お名前.com)、MXレコード(メールサーバー)

お名前ドットコムはNSレコード。MXレコードはメール

ALIASレコードはRoute53独自。ELB, CloudFrontのエンドポイントをCNAMEレコードではなくAレコードとして扱うことができる。Zone-Apexレコード(通常NSレコード)をAレコードとしても扱える。

アクティブ/アクティブ:すべてのリソースをプライマリとしてルーティング

アクティブ/パッシブ:プライマリリソースをルーティング。障害が発生したらセカンダリへ。

DDoS対策としては、シャッフルシャーディング(シャードと呼ばれるトラフィックの区分分けをシャッフルすることで他のシャードに影響を与えなくする)とエニーキャストルーティング(1つのIPアドレスを複数のサーバーに適用)

パブリックホストゾーン:インターネットに公開する時レコード例: example.com, www.example.com 

プライベートホストゾーン:VPC内のリソース間のみで名前解決をするとき。レコード例: internal.example.com, db.internal.example.com

トラフィックフロー:ルーティングの順序を設定し複雑なルーティングが可能

ECS

タスク実行ロール:コンテナイメージを取得するロール

タスクロール:コンテナから他のAWSサービスのAPIリクエストをする際のロール

プロデューサー:データ前処理タスク、コンシューマー:データ変換タスク

ECS Anywhereを使えばユーザーのインストラクチャ上でコンテナが使えるが、制限あり

コンテナ上ではEC2かFargateが動く。Fargateはサーバーレスなので、EC2のような細かい環境設定が不要。

ECRはdocker imageを保存するレジストリサービス。DockerHubでも代用可

ECS サービススケジューラー。長時間実行するタスクのスケジュール設定

EKS

ECSはAWS独自のオーケストレーションを採用し、EKSはkubernetesを採用している(OpenSource)

DistroはKubernetesの管理を自分で行いたい場合。

DistroはAWS以外でもつかえるので、これでEKS Anywhereが可能

EKSのスケーリングは、Karpenter(クラスターオートスケーラー)・Kubernetesメトリクスサーバー・AWS App Mesh(AWSコンピューティングサービスのモニタリングとコントロール)

AWS Controllers for Kubernetesは運用を効率化する

EKSのストレージデバイスとしてVPC内の1つのEFSを使用できる。EKSはファイルを保存しておくためのストレージが必要になるためStorageClassを利用してEFSをEKSのPodにマウントする。

EKSの負荷分散はElastic Load Blancer Controller。ECSはALB, NLB

CloudFormtion

Clud Formationの権限さえあれば、中で使用するアプリケーションの権限は必要ない

インフラの知識が必要。

ElasticBeanstalk

webアプリケーション・サーバーをデプロイ

アップロードのみで開発機能がないのがamplifyと異なる点

あとはDBもamplifyでは管理できない

Cloudformationテンプレートを使用すると、アプリの構築・デプロイと管理が行える

インフラを完全に任せることができるのが特徴

ElastiCache

キーバリュー型NoSQLDB

Memcached:シンプルなデータ構造・一時的なデータキャッシュ・スケールアウト/イン

Redis:複雑なデータ構造・永続性がある・フェイルオーバー・DynamoDB同様、セッション管理に最適

一般的にRDBのパフォーマンス向上で用いられる。

Cloudwatch

標準メトリクス:CPU使用率・インスタンスボリュームからの読み取り回数・読み取られたバイト数・ネットワークインターフェースから受信されたバイト数

カスタムメトリクス:メモリ使用率・ディスク使用率・スワップ使用率など。EC2インスタンス上で監視スクリプトを作成しCloudwatchエージェントを通してCloudwatchに送信できる。

EC2の基本モニタリングは5分間隔で無料。詳細モニタリングは1分間隔で追加料金。EBS・ELB・RDSは1分感覚でも無料

Cloudwatchアラームでアクションを起こす。OK・ALARM・INSUFFICIENT_DATAの3種類のステータスがある。

メトリクス以外の監視として、CloudWatch Eventsがある。これはスケジュールか、AWSリソースのイベントを監視する。(イベントソース)EC2のインスタンスの状態変化など(pending, running, terminated)

EventBridgeはCloudwatch eventsの機能強化バージョン。APIは同じで、機能もeventbridgeに統合されるはず

監視後のアクションとしての対象は「ターゲット」Lamda,SNS, Kinesis stream, SQS cue

CloudWatch LogsでEC2/Cloud Trail/Route53などのログが取れる

UnhealthyHostCountメトリクスで異常なEC2インスタンスを差し替え

拡張モニタリングでDBのモニタリングが可能

コンテナのwatch:Cloudwatch Container Insightで以下メトリクスを使用できる。CPUやメモリ使用率/タスク数/サービス数/ストレージへの読み込み/書き込み/ネットワーク受信送信バイト数/クラスターサービスタスクが利用するコンテナインスタンスの数

IAM

デフォルトは全て拒否「暗示的な拒否」

IAMポリシーにJSONで記載ができる「明示的な許可」「明示的な拒否」

優先度は「明示的な拒否」>「明示的な許可」>「暗示的な拒否」

AWS管理ポリシー・カスタマー管理ポリシー(IAMユーザーやグループ間で共有できる)・インラインポリシー(個別に埋め込まれるため共有不可)

アクセスキーIDとシークレットアクセスキーでCLIいじれるが、流出リスクがあるため、IAMロールが推奨されている。IAMロールに対してIAMポリシーを直接付与して権限の管理。IAMロールはユーザーには直接紐付けされない。

IDフェデレーション:企業にすでに導入されている認証の仕組み(LDAPなど)とAWS認証をひもづけし、シングルサインオンを実現する。

AWSの一時的なアクセスキーをAWS STS(Security token service)で発行し、トークンが有効な間はアクセス可能にする。(SMAL2.0やOpenID Connectの認証プロトコル)

SNSアカウントでシングルサインオンもできる(web ID フェデレーション)Cognitoを利用する。

AWS IAM Indentity Center:オンプレのディレクトリサービスを利用してシングルサインオン

CloudFront

エッジロケーション→リージョン別エッジキャッシュ→CloudFront→オリジンサーバー

静的コンテンツ:Cloudfront + S3

動的コンテンツ:Cloudfron + ELB + EC2

アクセス制限機能もある。署名付きURL(URLを変更)・署名付きCookie

フィールドレベル暗号化:機密データのセキュリティ確保。通信中のデータの暗号化

カスタムドメインでHTTPS接続を必須にする場合はAWS Certifivate ManagerでSSL/TLS証明書を管理する必要がある。ACMが提供する証明書 or サードパーティー製の証明書。API ゲートウェイにつなげたりできる

静的ページ公開のためにはオリジンサーバーであるS3をパブリックにする必要がある。S3への直接的なアクセスを許可したくない場合は、オリジンアクセスアイデンティティ機能(OAI・OAC)で、CloudFrontにのみS3バケットへのアクセスを許可する。

Cloudfront Functions: Lamdaエッジより高速で処理の少ない記述が適用できる。パスルーティングやJWTの取得・簡易なIP制限などの軽い処理が可能。

S3にはセキュリティグループがあてられないため、アクセス制限はcloudfrontを利用して工夫する必要がある。S3のOAIを作成し、Cloudfrontとのみアクセスできるようにする、かつcloudfrontの署名付きURLを利用し、(S3のものより高度な設定が可能)特定のユーザーのみにアクセス許可を与える

CloudFrontの通信暗号化設定は、ACMの証明書を利用するか、サードパーティー認証局(CA)から発行された証明書をACMにインポートする。originがELBではないときはCAを使わないといけない。originとcloudfront間の通信と、cloudfrontとビューアー間の通信は別物。特例でACM for Nitro EnclavesでSSL/TLS証明書を設定することはできる。

Cloufrontビュワーのリクエストヘッダー:Accept-Encoding:gzip→エッジロケーションでのファイル圧縮が可能

クエリ文字列パラメーター

SQS

疎結合アーキテクチャの実現

キューイングサービスなのでpub/subではない。受信者はポーリングをする必要がある。非同期処理。

SQSキューの保持は4日間、そのあと削除される。

複数EC2インスタンスへ非同期に分散処理

標準は順番が保証されない。FIFOキューで保証されるが処理性能が劣る

ショートポーリング:受信者がリクエストを送るとキューが空でもemptyメッセージを返す。SQSはリクエストごとに課金するため、非効率的

ロングポーリング:キューが空の場合、メッセージを取得できるまで1−20秒ほどまつ

可視性タイムアウト・メッセージ取得した後一定時間(defは30秒)他の受信者にメッセージを見せないようにする。

SQSとスポットインスタンスの相性は良い

SQSは処理遅延によるデータロスト対策に使える。一旦貯めておいて、ラムダでポーリングすることでロストせずに済む

Lamdaにデッドレターキューを設定すれば、Lamdaで失敗したメッセージが再度SQSの方に渡される。

優先度付きキュー・遅延キュー・デッドレターキューなど、オプションをつけれる。

CloudWatchでSQSキューサイズの監視可能。キューが多くなったAuto scalingをまわすこともできる

SQSにはEC2がポーリングする

SQSアクセスポリシー:SQSのキューへのアクセスを制限

SNS

pub/subであり、受信者はサブスクライブすることで即座に通知を受け取ることができる。リアルタイム処理。

Amazon SNS FIFO トピックでは、毎秒最大で 3000件のメッセージ処理までしかできない

SQSキューにSNSがサブスライブさせ、通知を非同期に処理するワークフローを構築できる。

例えば、SNSでユーザー登録イベントを発行し、そのイベントをSQSキューにサブスクライブさせて、バックエンドでユーザー登録後の処理を行う。

SESはアプリにメール機能(クライアント側)を入れるときに使う。開発者に通知メールを送るのはSNS

SMS通知・メール・チャットボットに連携可能(開発者側への通知)

AWSサービスに通知も飛ばせる。イベント宛先はData firehorse, SQS, Lamda

Kinesis

ストリーミングデータの収集・処理・リアルタイム分析

SQSとの違いは、複数のコンシューマー(メッセージを取得する側)が同時に同じメッセージを取得して処理できる点

Kinesis Data Streams:データを収集し、EMRやLamdaなどに連携処理。シャードという単位でデータを分割して並列処理。1秒以下のデータロードが可能。

Kinesis Data Firehose:データを配信・保存できる。S3やRedshiftに蓄積する。データロードは60秒。リアルタイム処理は向いていないが、データを変換してストレージへ保存とかの用途には向いている。Lamdaに連携も可能

Amazon Managed Service for Apache Flink:(旧Kinesis Data Analytics)データにSQLクエリを実行しリアルタイム分析を行う。1分ごとのストリーミングデータの合計値や平均値などを計算できる。そのままS3などに保存可能。シンク:書き込みに使用されるコネクター。例:S3をシンクに設定して結果をS3に取り込む。

S3, Redshift, OpenSearch, splunk, HTTPエンドポイント先にデータを送信できる。DynamoDBは不可

コールドシャード:予想よりも少ないデータを受け取るシャード

ホットシャード:予想よりも大きいデータを受け取る。

リシャーディング:シャードの分割かマージをすること

分割:コストは増えるがデータ容量は増える

マージ:容量とコストが減る

EventBridge

指定した時間にLamda関数を実行するなどのスケジュールを組むことが可能

Event Bridgeルール:適合していたらイベントを走らせる

Amazon EventBridge API :イベントを呼び出せるHTTP エンドポイント。

AWS Organization

AWSアカウント複数管理

SCP(サービスコントロールポリシー)をつかって、IAMポリシー的な権限制御を管理・適用できる。

OrganizationのSCPのOUはデフォでフルアクセス。ホワイトリスト方式にしたいならこの設定を取り外さないといけない

SCPをルート組織単位(OU)にアタッチするとルートユーザーにも適用される。IAMポリシーではルートユーザーには適用できない

AWS WAF

SQL インジェクションやクロスサイトスクリプティングのブロック

CloudFront, ALB(ELB)、API Gatewayに設定可能。

送信元IPアドレスに基づいてアクセス制限可能。

HTTPプロトコル情報に対してフィルタリング可能。Referer制限

AWS WAFでウェブACLを作成して特定のIPからのアクセスをブロックできる。それならネットワークACLでもできるけど、WAFなら以下の設定も可能

・リクエストの送信元の国/リクエストの一部に含まれる文字列一致または正規表現 (regex) 一致/リクエストの特定の部分のサイズ/悪意のある SQL コードまたはスクリプトの検出

Amazon Shield Advanced

DDoS対策

Shield Response team(SRT)が存在する。協力を仰げる。

EMR

ビッグデータをHadoopやApache sparkを使って処理

EC2のクラスターで構成

Apache spark streamingでデータ処理

auto scalingも連携可能

Active Directory

Amazon Directory Service: simpleAD or AWS Managed Microsoft ADはAWS側にADを作成

AD ConnectorはオンプレにあるADをAWSサービスと連携させる。

AWS SAM

SAM構文→cloud formationに変換。より簡単になる

AWS Step Function

step functionおよびswfは人的ワークフローを作成する承認者とかつくる

swfは古いサービス、基本的にはstep function使うべき

AWS Glue

ETLサービス

メタデータはAWS Glueデータカタログに保存するのが最適

Glue JDBC(java database connectivity):GlueをRDSにつなげるようになる。Lake Formationを使えばS3とRDSのデータどちらも管理できる。アクセスコントローラーでアクセス管理もできる。

Glueをsparkジョブで使えばビッグデータ(Apache spark)のETL処理可能。Scaleジョブというのもある。スケーリング対応Glueジョブをevent bridgeスケジュールイベントに組み込んで定期実行とかできる。

Glue Sensetive Data Detection:プライベートな情報を検知して置き換える

AWS VPN

仮想プライベートゲートウェイかtransit gatewayか選べる。

Acceleratedサイト間VPN:バックグラウンドで Global Accelerator を使用。より高可用性・高パフォーマンスに。

AWS Secret Manager

データ暗号化に必要な証明書やキーを保存するために用いる。

自動ローテション機能・ライフサイクル機能

AWS System Manager

運用における便利サービス積み合わせセット。オンプレとの連携にも使える。

Patch Manager:オペレーティングシステムとアプリケーションにパッチを適用するシステム

Session Manager:EC2にキーペアの代わりにIAMポリシーでアクセスする。コンソールやCLIからワンクリックでEC2にアクセスできる。

AWS Systems Managerパラメーターストア

EC2やDBインスタンスに対してIAMデータベース認証をする際の資格情報を保存する。

他にもAMI ID、ライセンスコードなどのデータをパラメーター値として保存することができる。

EC2にIAMロールを付与してパラメーターストアにアクセスさせて使ったりする。

オンプレとの連携

カスタマーゲートウェイ:オンプレ側。オンプレミスのネットワーク機器(例えば、ルーターやファイアウォール)をAWSに登録するための設定情報

仮想プライベートゲートウェイ:AWS側(VPC)簡易な時

AWS Transit ゲートウェイ:AWS側(VPC)複雑な時

AWSストレージゲートウェイ:キャッシュ型ボリュームはS3をプライマリストレージにする。保管型ボリュームはオンプレをプライマリに。

AWS DataSync:エージェントをインストールすることでオンプレファイルをAWSサービスに以降できる。NFSやS3, EFS, FSxなどいろいろ対応。Azureとかからも使える。パブリック or Direct connectとかで転送可能

VM Import/Export:オンプレに作成したマシンイメージをEC2にインポートする。またはEC2をオンプレにエクスポートする。

Migration Hub:移行計画・ステータスの一元管理。検出機能・グループ化機能・移行機能のサービスがある。MGN(application migration), DMS(database migration)

AWS Application Migration Service:オンプレの移行対象サーバーの使用状況と構成データを収集するサービス。収集したデータはMigration hubへ

AWS Storage Gateway

SMB共有を行い、S3に連携される。

オンプレミスにStorageゲートウェイを仮想マシンとしてデプロイし、S3と繋げれば、ファイルのアクセス管理を実施しながらオンプレにファイルを公開できる。

AWS Transit Gateway

オンプレネットワークとVPCを相互接続するネットワークの中継ハブ。オンプレの専用線を接続する。

VPCを繋ぐ方法としてはVPC仮想ゲートウェイがあるが、複数のVPCで高度なルーティングやスケーリングを行い時はこっちを使う。逆に単一のVPCは仮想ゲートウェイでよい。

AWS Data Sync

データ転送

1時間以上間隔が空いていれば定期実行可能

Data syncはNDS, SMB, HDFS(Hadoop分散ファイルシステム), オブジェクトストレージの転送に対応している。SFTPの転送ならTransfer Fmaily(AWS Transfer for SFTP)

その他のサービス

AWS service Catalog:IT管理者が承認された製品のカタログセットを作成、管理。エンドユーザーはデプロイできるようになる

AWS ParallelCluster:HPC:ハイパフォーマンスコンピューティング。EFA:Elastic Fabric Adapter ネットワークデバイス

AWS Outposts:AWSとオンプレをつなぐ。例えばEMRクラスターをoutposts上に持ってきてデータ処理すれば、オンプレ環境でAWSと連携することができる。

AWS Transfer Family:データ転送。レガシーアプリケーションをSFTPでS3へ転送などが行える。

Amazon AppFlow:saasのデータ転送

Amazon X-ray:全体のパフォーマンス測定。ボトルネックやエッジケースのエラーなどが特定できる。

Amazon Comprehend Medical:デジタルテキストから特定の医療データを抽出する。

Amazon OpenSearch(旧elastisearch):RDSやS3の検索・分析

AWS AppSync:GraphQLを扱うフルマネージドサービス

AWS Neptune:GraphQLのグラフDB

AWS OpsWorks:Chef (オープンソース)と Puppet (オープンソース)を使用した運用の自動化

Amazon MQ:ActiveMQ(オープンソース)を使ったメッセージブローカーサービス

Amazon Inspector:脆弱性管理

Amazon GuardDuty :悪意のあるアクティビティや異常な動作を継続的にモニタリングする脅威検出サービス。

Amazon Lightsail:簡易版amplify。シンプルなホスティング

Amazon Transcribe:文字起こしサービス。PII(personal idwntifiable information)リダクション機能 個人情報を除去

AWS Resource Access Manager:AWSアカウントごとに同じリソースを作成しないといけない場合、これで集約させる。

AWS Network Firewall:VPC間やオンプレ間・インターネットのネットワーク保護

AWS Serverless Application Repository:開発したサーバーレスアプリケーションをデプロイ・管理する。公開もできる。

VMWare Cloud on AWS:AWS上でVMWareを動かす。VMwareは1台のコンピューター上で複数のOSやソフトウエアを動作させる仮想マシン・ソフトウエア

AWS Device Farm:電話やタブレットのデバイスの提供。オレゴン地域のみ使える。

AWS Pinpoint:ユーザーが指定した特定の対象者にメッセージを送り、対象者の行動・反応の分析ができる。(こわい)

Amazon Elastic Transcoder:S3ファイルの変換を行う

AWS Compute Optimizer:EC2, Auto Scaling, EBS, Lamdaを最適化するための推奨事項を作成する。データをある程度貯める必要がある。

他疑問点

AWS EventBridgeとStep Functionsの違い