AWS SAA大全（雑多）

# AWS SAP & SAA

「結局見栄えだけ良くても（資格）入社後に使えなかったら意味がない」

必要な素養

=

各サービスの役割がわかる

サービス内の機能やオプションがわかる

文章を読み取って顧客のニーズがわかる

awsのベストプラクティスがわかる

# ***基本用語***

- プリンシパル
    - AWSリソースに対してアクションを実行する主体＝エンティティのこと（ユーザー、グループ、ロールなど）
- フェデレーションされたユーザー
    - SAMLなど介して認証された外部ユーザー

# *AWSの概要*

## アベイラビリティゾーン

２つ以上のdcで構成されている

展開されているAZと

## リージョン

独立したアベイラビリティゾーンで構成されている

事業継続性計画のためにデータや予備システムとして別リージョン利用パターンもある

**エッジロケーション**

グローバルにコンテンツ配信を実行する高速・広帯域な物理的なネットワークロケーションのこと（ユーザーの一番近いところから配信することで遅延を防ぐ）

４７カ国九十以上の都市にある三百十以上のPOP(point of presence)（三百以上のエッジロケーションと１３のリージョン別エッジキャッシュ）で構成される

POP＝一つ以上のエッジロケーションで構成される

**エッジキャッシュ**

オリジンサーバーとエッジロケーションの中間のキャッシュ。

データデリバリーを最適化する

エッジキャッシュは個別のPOPより大きいのでオブジェクトは最も近いリージョン別エッジキャッシュロケーションでより長くキャッシュを残せる。

**AWSローカルゾーン（リージョンから離れたユーザーに近い場所にサービスを提供するロケーション）**

レイテンシーの影響を受けやすいアプリケーションをエンドユーザーにより近い場所で実行するためのロケーション。一桁ミリ秒単位のレイテンシーを要求する革新的なアプリケーションを、エンドユーザーとオンプレミスインストールにより近い場所で提供。

リージョンから距離がある大都市（人口の多い場所や産業の中心地）の近くで高速アプリケーションを展開するための特別なロケーション。

**wave length zone**

5gネットワークを利用した高速アプリを開発できるロケーションのこと

このエッジにある通信プロバイダーのデータセンターにAWSのコンピューティングおよびストレージサービスを組み込んだAWSインフラストラクチャデプロイ可能なロケーション

ゲームやライブ動画ストリーミングやエッジでの機械学習推論など１０ミリビョウ未満のレイテンシーが必要なアプリケーションを実現

# ***IAM***

## **IAMポリシー**

ユーザーなどのアクセス権限ユーザーなどのアクセス権限を付与するための設定ドキュメントのこと（JSON形式の文書）

`余談`

`ポリシーのタイプ`

`ユーザーベースのポリシー（IAMアイデンティティにアタッチされるポリシー）とリソースベースのポリシーがある（リソースに対するアクセス権限設定を実行する）`

`また許可ポリシー（許可するアクション範囲を設定）と信頼ポリシー（信頼ポリシーが付与されてるロールに基づいて権限を以上することができる）も存在する。信頼ポリシーは権限委譲に特化したポリシー。`

### **管理ポリシー**

- 再利用可能性
    - 一つのポリシーを複数のエンティティにアタッチできる
- 一元化された変更管理
    - 変更はアタッチ先全てに適用
- バージョニングとロールバック
    - カスタマー管理ポリシーを変更しても、既存のポリシーは上書きされずに新しいバージョンを作成する
- アクセス許可管理の委任
    - ポリシーで定義されたアクセス許可を制御しながらAWSアカウントのユーザーにポリシーのアタッチとデタッチを許可できる

AWS管理ポリシー

AWSが作成及び管理してるデフォルトの管理ポリシー

カスタマー管理ポリシー

AWSアカウントで作成や管理するポリシー

同じポリシーを複数のIAMエンティティにアタッチできる

### **インラインポリシー**

一つのプリンシパルエンティティ（ユーザーやグループまたはロール）に埋め込まれた固有のポリシー（適用されているIDとの厳密な一対一の関係を維持）

＝管理ポリシー見たく使い回せない

## **IAMユーザー**

AWSアカウント内に追加される利用ユーザー

AWS上の利用者はIAMユーザーという権限を付与されたエンティティとして設定される

**ルートユーザー**

最初に登録したアカウントのことで特別な操作権限を有する

**IAMユーザーグループ**

グループとして複数のポリシーを束ねて設定された単位

パワーユーザーアクセス＝IAMユーザーやグループでの管理以外の全てのAWSサービスへのフルアクセス権限を有している

## **IAMロール**

AWSリソースに対してアクセス権限をロールとして付与できる

監査人等に一時的にロールを委譲する際にも使われることがある

パーミッションバウンダリー

あらかじめ付与可能な権限範囲の設定のこと（誤って必要以上のポリシーをロールとして付与指定まった場合など）

## IAMリソース

IAMで保存及び管理されるユーザー、グループ、ロール、ポリシーおよびIDプロバイダー

## IAMアイデンティティ

ユーザー、グループ及びロール

AWSで認証されてグループ下に使用されるIAmリソースオブジェクトのこと

## IAMエンティティ

ユーザー及びロール

AWSに認証されるIAMリソースオブジェクト

## プリンシパル

ルートユーザー、IAMユーザーまたはIAMロールを使用する人またはアプリケーション

**フェデレーテッドユーザーと引き受けたロールも含まれる**

IDプロバイダ

フェデレーションアクセスの際に利用

オンプレでの認証の際にIAMを連携させる

ユーザーアクティビティの記録

- IAMアクセスアナライザー
    - S3バケットやIAmロールなどリソースベースのポリシーを確認して、信頼ゾーンの外からのアクセスの有無を特定
    - アーカイブルールで特定の定義に基づいてリソースをアーカイブできる
    - 設定した特定のアカウントなどのアクティビティをアーカイブしてくれる
- IAMアクセスアドバイザー
    - IAMユーザーのアクセス可能なリソースと最終アクセス日時を確認できる
- credential report
    - 全てのユーザーの認証情報が記載されたレポート
- aws config
    - IAMユーザー、グループ、ロールやポリシーの変更履歴、構成変更を管理するサービス
- AWs cloudtrail
    - 各種アカウントアクティビティやAPIコールをログに記録し、モニタリングするサービス
- aws organizations
    - IAMのアクセス管理を大きな組織でも楽に実施できるようにするマネージド型サービス（IAMでは一つのアカウント内のユーザー管理）
    - マスターアカウントとメンバーアカウント（組織単位でまとめられる）の二階層
        - SCP(service control policy）
            - メンバーに対する権限範囲設定（拒否設定は許可設定より優先される）
            - SCPで許可設定がされていないアカウントは暗黙的な拒否として何もできない（デフォルトでは全てのSCPが自動的に許可される設定になっている）
    - 複数アカウントの一元管理
    - 新規アカウントの作成管理
    - 一括請求が可能にあんる
        - consolidated billing only
            - 支払い一括代行のみを実施する場合（ボリュームディスカウントを統合できるのでコストメリット発生）
        - all feature
            - 支払い一括代行も含めて企業内の複数アカウントを統制したい場合に選択
    - **リザーブドインスタンスの共有機能**
        - アカウントでリザーブドインスタンス（インスタンスの一定期間契約による割引価格利用のこと）の共有がオンになっている
    
    RAMとの連携
    
    resource access manager
    
    異なるAWSアカウントとリソースを共有する仕組み（oraganizationsの組織内外と共有可能）
    
    一つのVPCを共有して複数アカウントリソースを展開できる
    

# *コンピューティング*

## ec2

仮想サーバーを提供する（マネージドではないのでインスタンスサーバーの監視や動作状況に応じたスケーリングやセキュリティパッチの適用などの運用をawsユーザーが実施）

EC2インスタンスクラス＝メモリ、ネットワーキング力（帯域幅やパフォーマンス）、ストレージ、CPU（計算能力）

## LAMBDA

実行時間が１５分以上になる処理や常時稼働が必要なアプリケーションには適していないので

EC2インスタンスやコンテナなどで運用する検討が必要

以下がトリガーとして設定できる

・Amazon S3バケットにオブジェクトが作成されたとき

・Amazon DynamoDBのテーブルに変更があった時

・Amazon SQSのキューにメッセージが追加された時

・Amazon SNSからトピックが通知された時

・Amazon API Gateway経由で直接Lambda関数が呼び出された時

LAMBDA関数には実行ログを出力するためにCLOUDWATCHLOGSへのアクセス権限が割り当てられている。デフォルトではそれ以外には権限ないのでIAMで手動で割り当てないといけない

LAMBDAの設置場所

ラムダ専用のセキュアなVPCに設置される

そこからインターネット経由でパブリックなAWSリソースにアクセス可能

プライベートサブネットにアクセスさせたい場合

VPCアクセスの設定をする（アクセス先のVPCやサブネットの選択とLAMBDA関数のセキュリティグループの設定をする

## Fargate

コンテナ管理サービス

Fargateは、サーバーやクラスターの管理を不要にし、コンテナを直接デプロイできます。これにより、インフラの設定や管理の手間を省けます。

## auto scaling

awsリソースの付加状況や設定したスケジュールに従って自動的にスケーリングする機能。

（使用例

![スクリーンショット 2024-09-13 16.01.11.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/9096c930-c711-4a9e-9c36-8201f78821d7/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_16.01.11.png)

SQSキュー内にある処理待ちのメッセージ数がバックログ内で閾値を超えたときにcloudwatchがアラートを上げてautoscalingがインスタンスを増やす仕組み

インスタンスたちに負荷分散をうまくやる

ヘルスチェック：EC2インスタンスが正常に動作してるかどうかのチェック

初回のヘルスチェックまでの待機時間＝ヘルスチェックの猶予期間

スケーリングするための閾値（スケーリングポリシー）

ここの閾値を超えるとスケーリングが行われる

# *ストレージ*

- ブロックストレージ
    - EC2にアタッチして活用するディスクサービス
    - 高速かつ広帯域
    - EBSやインスタンスストア
- オブジェクトストレージ
    - 安価かつ耐久性を持つオンラインストレージ
    - デフォルトで複数AZに冗長化
- ファイルストレージ
    - 複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス

EBS

ssdのようなものでOSを置くところ

EC2を立ち上げるときになんギガで立ち上げますか？がEBS

ログとかは置かない

s3より高額

## s3

- 耐久性と可溶性が非常に高くデータの中長期保存に最適なストレージ
- ストレージ容量無制限
- クロスアカウント用のIAMロールを用いることで運用上のオーバーヘッドを抑えることができる
- S3の中のバケットの中でオブジェクトを保存する
    - オブジェクトは5TBまで保存できる

ストレージクラス

- standard
- standard-IA(infrequency access)
- one zone IA
    - マルチAZ分散されていないので値段やすい
- s3 intelligent tiering
    - 高頻度と低頻度とアーカイブインスタンスを組み合わせたストレージ
    - 自動的に頻度別に分けてくれる
    - 可用性はstandard IA

Glacier

- s3 glacier
    - データをアーカイブするもの
- flexible retrieval（一年に１、2回アクセスするもので迅速取り出し可能）
- instant retrieval（S 3スタンダードと同じパフォーマンスでミリビョウ単位でのデータ取り出し）
- deep archive（７から１０年以上保持される）

S 3のアクセス設定

- IAM
    - IAMユーザーに対してAWSリソースとしてのS 3へのアクセス権限を設定する
    - 内部のIAMユーザーやAWSリソースへの権限管理
- バケットポリシー
    - アクセス間をJSONで設定可能
    - 外部ユーザーやアプリケーションなども管理可能
    - 一つのバケットに一つ
- ACL
    - バケット及びオブジェクト単位でのアクセス権限をXMLで設定可能
- アクセスポイント
    - S 3バケットにアクセスポリシー設定（JSON）
        - バケットポリシーを分割するイメージ
    - 一つのバケットに複数設定可能
    - 外部ユーザーやアプリケーションなどの管理可能
- ブロックパブリックアクセス
    - ネットからのアクセスをブロックする（デフォルト）
- 事前署名付きURL
    - 特定のユーザーのみがアクセスできる特別なURL
    - AWS SDK(software development kit)またはCLIコマンドによって事前署名URL生成可能
    - 3600秒間有効（一時的）

S 3のバージョン管理

- ユーザーによる誤操作でデータ削除などが発生してバージョンから復元可能
- バケット単位でオブジェクトのバージョン管理可能
- バージョンごとにオブジェクトが保管される
- ライフサイクルルールによってバージョンが保存される期間を設定できる

S 3の通信暗号化

- s3の公開エンドポイントはデフォルトでHTTPSが利用されており、自動的にSSL/TLS通信が実施される（HTTPも選択可能だが非推奨）

- 暗号化形式
- オプジェクトのアップロードリクエスト処理（https＋暗号化用のヘッダー）の際に暗号化用のヘッダーが付与されて暗号化が実施される
    - SSEーS３（server side encryption)
        - 標準暗号化方式
        - 暗号化用のマネージドキーの作成や管理をS 3側で自動で実施
        - ブロック暗号の一つである２５６ビットのadvanced encryption standardを使用してデータを暗号化
    - SSE-KMS
        - aws kmsに設定したキーを利用した暗号化方式
        - ユーザー側でAWS KMSを利用して暗号化用のマネージドキーを作成管理可能
        - AES256利用
        - （余談）暗号化ごとにKMSのAPIがよばれるため、SSEよりコストとレイテンシーが増加するがその分高度なセキュリティ管理可能
    - SSEーC
        - ユーザーが指定した暗号化用のマネージドキーをデータと共に送付してサーbー暗号化を実施（ヘッダーにデータキーを直接付与）
        - 利用設定や管理が煩雑になるのがデメリット
    - CSE（client side encryption）
        - クライアント側の暗号化ではS３に送信する前にデータを暗号化する方式
        - アプリに保存したマスターキーを使用
- S 3MFA delete
    - バージョニング機能のオプション
    - オブジェクト削除時にMFA認証を必須にする
- オブジェクトロック
    - データ更新や削除をできないようにする機能
        - リテンションモード
            - ガバナンスモード
                - 特別な許可なしにオブジェクトバージョンの更新や削除、ロック設定の変更できない
            - コンプライアンスモード
                - ルートユーザー含め保護されたオブジェクトのバージョンを上書きまたは削除することはできない。
                - リテンションモードは変更することができず、保持期間は短縮できない。
        - リーガルホールド（永続的にオブジェクトが削除されないようにする）

- バケット
    - バケットはリージョンに設定する（AZやVPCの範囲外
    - バケットはグローバルに一意の名前（key)を設定する必要あり
    - オブジェクトURLでネットからアクセス可能
    - 命名規則を守る
    - 構成要素
        - key（プレフィックス＋オブジェクト名）
            - プレフィックス（キーの先頭にある値で整理される時に使用される）
            - オブジェクト名（ファイル名）
        - value（データそのものでバイト値で構成）
        - メタデータ（オブジェクトに付随する属性の情報）
        - サブリソース【バケット構成情報を保存及び管理するためのサポート）

- 料金
    - リージョン
    - データ容量
    - リクエストのデータ取得（s３からローカルへの保存など）
        - 取得量に応じて料金かかる
            - リクエスタ支払いモード
                - データダウンロードをリクエストしたアカウントがデータダウンロードコストを支払う
    - データ転送
        - s３へのデータ転送は無料だがエクスポート（ネット、AWS内）はgbあたり値段かかる

ユースケース

コンテンツ配信用の画像データなどをS3に保存してcloudfrontで配信する

**s3 transfer acceleration**

ユーザーからs３バケットへ最適化したネットワークルートを経由してデータを転送する機能（dbではなくローカルファイルからアップロードするときのもの

## aws storage gateway

オンプレからAWSのストレージサービスへのアクセスを高速かつセキュアにおこなう

オンプレからNFSやSMB、

**tape gateway**

オンプレ側の物理テープの代替としてs3やs3glacierに保存できる。

管理を単純化してコスト削減

Storage gatewayにはISCSIプロトコルで通信

**ボリュームゲートウェイ**

![F781BF66-A1AD-43E6-AF78-6CAF8445794C.jpeg](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/dbcb407c-3dc0-4134-9669-3a719a631e93/F781BF66-A1AD-43E6-AF78-6CAF8445794C.jpeg)

キャッシュ型=s3に保存

保管型=プライマリーデータはローカルに保存される

## Aurora

フルマネージド型リレーショナルデータサービス

MySQL Postgresと互換性あり

# *データベース*

## elasticache

dbというよりキャッシュ（高速）を管理

キャッシュ＝一回アクセスした記録を残しておく

アクセスをよくするのが目的（アクセスの高速化を見込むためにキャッシュを使う）

インメモリデータベース

**Amazon ElastiCache**は、AWS（Amazon Web Services）が提供する**フルマネージドのインメモリデータストアおよびキャッシュサービス**です。ElastiCacheは、**Redis**または**Memcached**という2つのオープンソース技術に基づいており、データの読み書きを高速化し、アプリケーションのパフォーマンスを向上させるために使用されます。

## quantum ledger database

フルマネージドの台帳db

データの変更履歴をイミュータブル（不変的）に記録し、履歴が改ざんされていないことを暗号技術によって検証できます。QLDBはデータベースの全ての変更履歴が追跡できるので、金融取引の監査や法的文書の管理など変更履歴の正確性が求められるケースでの利用に適しています。

## dynamo db

- オンデマンドモード
    - 書き込みや読み込みのリクエスト単位で利用料金かかる
- プロビジョニングモード
    - 一秒間に行う書き込み＝write capacity unitや読み込み=read capacity unitの量に応じて利用料金が異なる（リクエスト料やキャバシティ用件が予測可能な場合はプロビジョニングモード）

s3へのエクスポート機能ある（ポイントインタイムリカバリを有効にする）

## mongo db

opensource softwareの一種

ドキュメント形式で保存できる

JSON ライクな形式のドキュメント（BSON：Binary JSON）でデータを保存します。

dynamodbと互換性がない

## amazon document db

dynamodbと互換性がない

## amazon dms(database migration service)

データベースの移行をサポートするサービスだがdynamo db, aurora, redshift, oracleの一部機能をソースとして設定できない

## AWS datasync（同期）

オンぷれみすとAWSのストレージサービス、またはサービス間で高速かつ信頼性の高いデータ移行と同期をサポートするマネジードサービス

## aws redshift

**フルマネージドのデータウェアハウスサービス**です。Redshiftは大量のデータを迅速に処理し、分析可能にするために設計されており、データを効率的に保存し、クエリや分析のパフォーマンスを向上させる機能を持っています。

複数のシステムに蓄積されたデータを再構成したデータベース（複数のDBを貯めるやつ）

ペタバイト規模のデータを扱う

# *ネットワークとコンテンツ配信*

## VPC（virtual private cloud)

- AWS上で動作する仮想ネットワークを提供するサービス（この中にインスタンスたちを配置していく）
- VPCは一つのリージョン内で複数作成できる。
- 一つのVPCはそのリージョン内にあるすべてのAZをまたがる。
- VPCで作られるネットワーク空間はかくVPCga独立しているため、デフォルトでは他のVPCやネットと通信できない

![スクリーンショット 2024-09-12 16.05.33.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/781c9c6b-29ea-45aa-85f8-95a07aa98494/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_16.05.33.png)

**VPCエンドポイント**

VPCエンドポイントを利用することによって通常はインターネットゲートウェイを介してアクセスするVPC外のAWSサービス（s3やdynamo db）に、

ネットを介さずアクセスすることができる

**ゲートウェイ型**

![スクリーンショット 2024-09-12 15.55.54.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/7b6ae97f-70d3-4c95-87b8-7efcbc1732af/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.55.54.png)

**privatelink型**

![スクリーンショット 2024-09-12 15.56.15.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/e8e2e26f-f718-4ed8-95bb-1c9bcd0f9807/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.56.15.png)

privatelinkは異なるVPCやAWSアカウント間での通信を、ネット介さずにセキュアかつプライベートに行う用途にも使用できる。

使用例）

接続元のVPC内にENIが生成されて、このENIを介して通信が行われる。

接続先のVPC側では、NLBを介してトラフィックが適切なリソースにルーティングされる。

このケースは、VPC間でcidrブロックが重複している場合や高いセキュリティが求められている環境において有効

**VPCエンドポイントポリシー**

エンドポイントから接続先を制限する機能

許可/拒否する接続先のAWSリソース名を指定して行う。

**ネットワークACL**

VPC内でネットワークアクセスをサブネットごとに制御するファイアウォール。

IPアドレスを元に許可ルールと拒否ルールの両方を設定可能（ルール番号が小さければ小さいほどルールの優先度が高い）

ステートレスなサービスで通信状態を管理するわけではないので自分でインバウンドとアウトバウンドルール設定を行わなければならない。

**AWSネットワークファイアウォール**

VPC向けのファイアウォール機能を提供するマネージドサービス

侵入防止システム（IPS）やドメイン名によるトラフィックのフィルタリングなど、

SGやネットワークACLよりもさらに高度な機能を揃えている。

いかが構成要素

- ファイアウォール
- ファイアウォールポリシー
    - ルールグループをまとめたもので、ファイアウォールに紐づけることで実際の動作を定義する
- ルールグループ
    
    ![スクリーンショット 2024-09-12 16.51.32.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/49f615c5-38cd-4229-ab6e-28284939b958/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_16.51.32.png)
    

**ENI（elastic network interface)**

EC2にアタッチすることでそのインスタンスにIPアドレスを付与することができる（ネットワーク情報の付与が行われる）

**ルートテーブル**

VPC内の通信においてどのネットワークへデータを転送するかを定義する機能

VPC内のサブネットは、一つのルートテーブルを関連づけることができる

ルートテーブルに関連づけられていないサブネットはVPC全体に適用される「メインルートテーブル」に従ってルーティング行われる

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

VPC内のAWSリソースとネットを接続する機能

IGWへのルーティングが設定されたサブネットは、パブリックサブネットになる

一つのVPCにつき、一つしか作成できない故一つのIGWを複数のパブリックサブネットで共有して利用する

**NAT（network access translation)ゲートウェイ**

プライベートサブネットからインターネットへの通信を可能にするIPv４専用の機能

プライベートサブネット内にあるAWSリソースのプライベートIPアドレスを、パブリックIPアドレス（elastic IP adress)に変換し、ネットへと接続

利用方法

elatstic IPアドレスを割り当てたNATゲートウェイをパブリックサブネット内に作成し、プライベートサブネットのルートテーブルにターゲットがNATゲートウェイへルーティングする設定をする。

![スクリーンショット 2024-09-12 16.29.36.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/2575a51b-fa35-4e05-befa-f8cbf4875cd5/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_16.29.36.png)

NATゲートウェイ自体はAWSによってAZ内で冗長化されていて、聞き障害児やトラフィック増加時でも継続して利用できる。ただAZ自体に障害が発生すると利用できなくなるため、可用性をさらに高めるためには別々のAZにそれぞれNATゲートウェイを配置する必要あり。

**NATインスタンス**

NATゲートウェイと似ているが、

こっちはEC2インスタンスから作成するのでフルマネージドではない（運用管理や障害対応は自責）

NATインスタンスの利用方法

パブリックサブネットにパブリックIPアドレスまたはElastic IPアドレスを割り当てたNATインスタンスを作成する。

プライベートサブネットのルートテーブルにターゲットがNATインスタンスのルーティングを設定します。

![スクリーンショット 2024-09-12 16.36.49.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/f8841a4a-e8cd-4843-bdd5-3eb2bff5f505/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_16.36.49.png)

NATゲートウェイにはできないポート転送機能の設定やVPC外からプライベートサブネット内へ接続する際の踏み台サーバーとして利用できる。

**踏み台サーバー**

例えばインターネットからプライベートサブネット内にあるサーバーの保守をしたい場合に、一旦NATインスタンスへSSH接続をした後、NATインスタンスから目的のサーバーへ再度SSH接続をすることで、VPC外からは直接接続できないプライベートサブネット内のサーバーへの接続を可能にするものです。

**VPC lattice**

複数のVPCやアカウントにまたがるアプリ間の通信を簡素化して、一元的に管理するフルマネージドシステム。

HTTP、HTTPS、gRPCなどのアプリケーション層の通信プロトコルをサポートしており、VPC Latticeを介して各アプリケーションを接続できます。

また、サービスディスカバリー機能が組み込まれており、他のサービスの位置情報（例えば、IPアドレスやポート番号）を動的に検出できる。故にマイクロサービスアーキテクチャの複雑なネットワーク構成を効率的に管理できる。

![スクリーンショット 2024-09-12 16.57.39.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/fbab4df8-1838-4b30-8f0d-d3b5e5567fad/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_16.57.39.png)

AWS transit gatewayとlatticeは似てるものの、

前者はネットワークレベルでの接続を提供して、複数のVPCや音プレミスネットワークを一元的に管理するハブとして機能する。

後者は主にアプリケーション層での通信管理を提供し、アプリケーション間の通信を最適化する。

NLB

network load balancer

レイヤー４（トランスポート層）で負荷分散を行い、tcp uds tlsをサポートしている

NLBはターゲットグループ内の各ターゲットが正常に動作しているかどうかを定期的に確認する

ターゲットから応答が帰って来ればNLBからリクエストをターゲットへ転送

## amazon api gateway

apigatewayが作成したAPIはユーザーが管理するVPCの外に配置される。

故に作成したAPIからネットを経由してパブリックサブネット内のAWSリソースにはアクセスできるが、プライベートサブネットないのAWSリソースへは直接アクセスできない

![スクリーンショット 2024-09-12 15.37.54.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/54e8d4fc-d1e5-4d9c-af02-3ee57306d9cd/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.37.54.png)

そこで、

プライベートサブネットにアクセスさせたい場合は「VPCリンク」を作成し、ネットを経由しないセキュアな通信が可能になる（VPCリンク作成時にアクセスしたいAWSリソースを直接指定はできない＝NLBを対象として指定できる）

![スクリーンショット 2024-09-12 15.38.48.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/12c93042-9c53-4cea-8fe6-a6a0d986cfd8/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.38.48.png)

**rest api**

クライアントからのリクエストに対してレスポンスを返す形式のAPI

クライアントはHTTPでリクエストを送信することでレスポンスを得ます

![スクリーンショット 2024-09-12 15.27.44.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/9300c0bf-671f-4eaa-a6a3-64fa75894b01/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.27.44.png)

A 

**HTTP API**

rest apiよりも低遅延かつコスト効率を高くする目的で設計されたAPI（RESTAPIと同じ形式のAPIだがAPIキャッシュを利用できないなどの誤差がある）

**websocket api**

クライアントとサーバー間で常時接続しているリアルタイムでの情報のやり取りを目的としたAPI。

使用例）チャットや株価情報など常に情報をモニタリングするようなアプリケーションで使われる

通信の状態を管理されるステートフルな接続方式

![スクリーンショット 2024-09-12 15.31.38.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/fbf768ab-4195-455f-b055-ef3e3f450dff/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.31.38.png)

**APIキャッシュとは**

クライアントへ送信したデータを保存する場所

リクエストが来たときのレスポンスをキャッシュし、その後同一のリクエストが来た際にはキャッシュからワンツーで返し、レスポンス速度が向上する（ラムダ等にわたさなくてもいい）

**APIゲートウェイのオーソライザー（２種類）**

**amazon cognito**

コグニートのユーザプールを使用する方法は、コグニートのマネージド方認証機能を使用するので、開発者は認証プロセスについて自身で管理する必要がない

![スクリーンショット 2024-09-12 15.44.19.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/8bb87956-169f-4cbd-b63c-6b5d73b457a2/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.44.19.png)

**lambda**

開発者自身が認証プロセスを作成する＝自由にロジックを組んでAPIへのアクセス制御を実装できる一方でセキュリティ対策など管理の複雑さが増加

![スクリーンショット 2024-09-12 15.44.30.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/25f96f0b-0fbd-4fc0-a9de-d8fe7c28c6b7/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.44.30.png)

**canaryリリース**

新しいバージョンのAPIを段階的にリリースする方法

![スクリーンショット 2024-09-12 15.49.06.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/ca86edea-3525-493a-931d-94061841ca7d/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.49.06.png)

## コンテンツ配信ネットワーク（Content Delivery Network:CDN）

コンテンツ配信ネットワークとは、インターネット上のコンテンツを高速化して配信するためのネットワークのことです。コンテンツ配信ネットワークでは、世界各地の配信サーバー（エッジサーバー）がオリジナルデータがあるサーバー（オリジンサーバー）のコンテンツをコピーして保管（キャッシュ）します。クライアントはオリジンサーバーへアクセスする代わりに、エッジサーバーのキャッシュからコンテンツを受け取ります。

コンテンツ配信ネットワークを利用することにより、クライアントがコンテンツに低遅延でアクセス可能になる他、オリジンサーバーへの負荷軽減にもなります。

## aws cloud front

＝静的動的どちらも配信できる

一般的にリージョン（三十一箇所）よりもエッジロケーション（四百箇所）から配信した方が早い

## aws direct connect

オンプレのデータセンターとAWSクラウドとの間に専用のネットワーク

## route53

![スクリーンショット 2024-09-30 22.53.41.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/47493d42-0c35-47cf-951e-1ad1d30493f9/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-30_22.53.41.png)

## SNS

simple notification service

フルマネージドのメッセージングサービスで、システム間の通知やデータをやり取りするための手段として使う（email lambda httpsなど様々なプロトコルを通じて複数のアプリケーションやユーザーに同時にメッセージ（通知やデータ）を配信できる

プッシュ型サービス（登録しているサブスクライバーの状態に関わらずリアルタイムでメッセージを送信できる）

ほぼ無制限にスケーリングできる

![スクリーンショット 2024-09-13 15.30.40.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/38ec0e5d-423c-4d9d-ab08-475bd8e17e60/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_15.30.40.png)

SNSの情報の単位は「トピック」で管理されている

トピックオーナーが作成したトピックに対して「発行者＝パブリッシャー」がメッセージを発行する。

トピックの２種類

- FIFO
    - 標準機能（暗号やフィルタリング）に加えて、メッセージが順序づけられてsqsのFIFO キューへ配信される。（FIFOトピックの場合選択できるプロトコルはSQSのみ）
- スタンダード

![スクリーンショット 2024-09-13 15.33.36.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/e30d0cc9-130a-432f-9ce8-11b712e37422/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_15.33.36.png)

配信失敗時にはデフォルトで破棄される仕様になっているが

デッドレターキューを利用してそれをサブスクリプションしているものにポーリングすると、SNSトピックから配信されたすべてのメッセージがサブスク先で処理されるようになる。

![スクリーンショット 2024-09-13 15.40.11.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/c72ea820-6761-4342-a7fa-f60cc8036444/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_15.40.11.png)

## AWS SQS

フルマネージドなメッセージキューイングシステム

ここのサービスやシステムをメッセージを使用して連携する仕組み

- プル型
    - 受信側の都合の良いタイミングでSQSへポーリングを行って、メッセージを受け取ります。

![スクリーンショット 2024-09-13 15.58.21.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/d48205af-68b8-4b02-aae6-394df23ad616/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_15.58.21.png)

機能

- ２種類のキュー（標準キューとFIFOキュー
    - 標準キュー
        - メッセージの処理順序は保証されず、タイミングによっては同じメッセージが二度配信される
    - FIFOキュー
        - キューに送信された順番にメッセージを処理していく
- ポーリング（２種類）
    - ショートポーリング
        - メッセージを取得する際、ショートポーリングではメッセージがあった場合はメッセージを返し、メッセージがない場合でも即座に「空である」というメッセージを返す
    - ロングポーリング
        - メッセージがあった場合メッセージを返す点では同じだが、メッセージが空である場合は設定された時間（最大２０秒）待ってから、こない場合は「空である」というメッセージを返す
- 遅延キューとメッセージタイマー
    - メッセージの送信者が送信したメッセージを一定時間後に受信させた場合に「遅延キュー」もしくは「メッセージタイマー」を使
- 可視性タイムアウト
    - 一度クライアントがメッセージを受信した後、指定時間（デフォルト３０秒）が経過するまでそのメッセージが他のクライアントから見えなくする
    - デフォルトで有効になっている
        
        ![スクリーンショット 2024-09-13 16.37.38.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/cb75d0d3-b354-4f7e-aefd-e24fead525cf/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_16.37.38.png)
        
- デッドレターキュー
    - 一定の回数エラーになったメッセージを通常のキューから分離して「デッドレターキュー」に配置する

コンテナと仮想化技術は違う

ec2とコンテナは違う

仮想マシン

**ハイパーバイザー**

一つのpcリソースを分割している

上に乗ってるのが仮想マシン

ハイパーバイザーの方がちゃんとしたバーチャルマシン

ゲストOS

OS

**コンテナ**

周辺のパーツをかき集めてカーネルだけはホストOS使う

OS

セキュリティの課題が出てくる

aws fargateなどでは状態を持たせない

だからストレージに制限はない

記録を取らない（仮想マシンはとる）。EC2などはログを取るけどサーバレスはログを取りづらい。

起動していない時は壊しちゃうかも。

コンテナ系はデータぶっ飛びやすい

docker

メモリ（揮発性、キャッシュ）上で動く→作業机（ものは溜め込まない）

ストレージ（不揮発性媒体）干渉しない→倉庫

dockerはメモリくう

## AWS ECS

elastic container service

コンテナを実行及び管理するサービス。デプロイや管理やスケーリング等を一元的に行う仕組み（オーケストレーション）が可能

（docker環境で動作するdockerコンテナをサポートしている）

ECSは負荷に応じて自動的にリソースを調整し、実行中のコンテナインスタンスの状態を監視し続けるので継続的な可用性とパフォーマンスを保証する効率的な運用が可能

![スクリーンショット 2024-09-13 16.53.12.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/f4a6078f-5af7-42b1-8a0b-c14bb10364d6/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_16.53.12.png)

主要要素

- クラスタ
    - 一つ以上のタスクまたはサービスで構成される論理グループ。クラスターではコンテナが動作するVPCやサブネットなどを設定する
- タスク
    - ECSで管理するコンテナの実行単位。タスク内のコンテナは実行するコンテナイメージ、CPUやメモリのスペック、タスクロールなどを定義したタスク定義に基づいて起動される
- サービス
    - クラスター内で必要なタスク数を維持する機能。あるタスクが以上終了して必要なタスク数を上回った場合、サービスが新しいタスクを起動して自動復旧する。

![スクリーンショット 2024-09-13 16.57.24.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/71ba4709-bed0-4d1b-85f9-33782bcab075/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_16.57.24.png)

ECSで実行管理するコンテナは、コンテナを実行する環境によって主にaws fargateと ec2起動タイプがある。

**fargate**

コンテナ向けのサーバレスコンピューティングエンジン

コンテナの実行環境やCPUやメモリのスペック、アクセス権限などを設定するだけで、サーバの環境構築や管理をすることなくコンテナを実行できる。

従量課金制と一年以上継続して利用する場合お得になる場合がある「compute savings plans」がある。

**ec2タイプ**

ユーザーが管理するEC２インスタンス上でコンテナを実行する

実行するEC2インスタンス、ネットワーク、IAMなどを設定するとECSがAWS cloud formationのスタックを作成及び実行して、構築したコンテナ実行環境をECSに登録する。

一方で通常のインスタンス同様にOSやミドルウェアのアップデートやスケーリングなどのサーバー管理をユーザーで実施する必要がある。

従量課金制

ECS における自動スケーリング

ターゲット追跡とステップスケーリング

![スクリーンショット 2024-09-13 17.04.24.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/7e5fe26e-ecec-4dcc-99a7-c23a390a10e5/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_17.04.24.png)

## Aws ECR

elastic container registry

コンテナイメージを登録及び管理するサービス

ECRに登録されたコンテナイメージをECSが参照してコンテナ（タスク）を起動できる

![スクリーンショット 2024-09-13 17.05.50.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/8d893410-cf8d-4ca4-a049-08953d07d2eb/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_17.05.50.png)

## AWS EKS

elastic kubernetes service

ECRのコンテナイメージ利用の他、

実行環境の起動タイプ（EC２やfargate）などもサポートされている

主要要素

- クラスター
    - 一つ以上のノードで構成される論理グループ
    - 内部はコントロールプレーンとデータプレーンの二つに分けられる
        - コントロール：クラスターの全体的な管理と制御、ノードの管理を行う
            - コントロールプレーン内のkubernetes APIサーバーがデータプレーン内のノードや管理ツールからの通信を受け付け、クラスター全体の管理や制御が行われる。このAPIサーバーへの通信は、EKSクラスタの構成時に作成されるクラスターエンドポイントを介して行われるが、このエンドポイントはデフォルトでインターネットからアクセス可能な状態
        - データ：ノードが配置される領域
- ノード
    - コンテナの実行環境
    - EC2インスタンスまたはAWSfargateから選択する（別名ワーカーノード）
- ポッド
    - EKSで管理されるコンテナの実行単位で前述のノード上でポッドが実行される
    - 単一または複数の関連するコンテナを効率的に実行及び管理するための仕組みを提供

![スクリーンショット 2024-09-13 17.10.42.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/6c4d048c-d3cb-4f4e-8a85-6e5b138cee46/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_17.10.42.png)

## kinesis data streams

大量のデータをリアルタイムで収集及び処理するサービス

イベンtの駆動型ではなく、常にデータが流れ続けるストリーミングに適したサービス

# *分析*

# *セキュリティ、アイデンティティ、コンプライアンス*

## AWS cloud watch

AWSサービスやEC２インスタンスのOSやアプリケーションor具を収集して一元管理するサービス

収集したログはメッセージの内容をフィルタリングして管理者に通知できる

またフィルタリングしたログを別のサービスに転送してログをリアルタイムに解析したり、ログの内容に応じてプログラムを実行させるなどの連携も可能

![スクリーンショット 2024-09-13 18.00.21.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/ff74acc9-cef3-418d-a63f-6315c38d00ae/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_18.00.21.png)

機能

- cloudwatch
    - メトリクス（リソースの情報）収集やアラームの定義
        - 標準以外にもカスタムメトリクスも使用できる

![スクリーンショット 2024-09-13 18.09.36.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/b2fb5b2e-952d-455d-8e88-3ac7b23d0332/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_18.09.36.png)

- cloud watch logs
    - awsサービスやEC2インスタンスのOS・アプリケーションのログ管理
- cloudwatch events
    - AWSリソースの変化に応じてアクションを実行
        
        ![スクリーンショット 2024-09-13 18.01.52.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/af03764e-1fbc-4c5f-87d1-9a51af09fc87/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_18.01.52.png)
        

## AWS config

awsリソースの設定を管理し、記録及び評価するサービス

AWSリソースの設定がいつ変更されたかを記録して、変更がルールに準拠したものではない場合には「非準拠」として記録される。

## AWS trusted advisor

ベストプラクティスのチェックと提案を行うサービス

## amazon api gateway

apigatewayが作成したAPIはユーザーが管理するVPCの外に配置される。

故に作成したAPIからネットを経由してパブリックサブネット内のAWSリソースにはアクセスできるが、プライベートサブネットないのAWSリソースへは直接アクセスできない

![スクリーンショット 2024-09-12 15.37.54.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/54e8d4fc-d1e5-4d9c-af02-3ee57306d9cd/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.37.54.png)

そこで、

プライベートサブネットにアクセスさせたい場合は「VPCリンク」を作成し、ネットを経由しないセキュアな通信が可能になる（VPCリンク作成時にアクセスしたいAWSリソースを直接指定はできない＝NLBを対象として指定できる）

![スクリーンショット 2024-09-12 15.38.48.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/12c93042-9c53-4cea-8fe6-a6a0d986cfd8/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.38.48.png)

**rest api**

クライアントからのリクエストに対してレスポンスを返す形式のAPI

クライアントはHTTPでリクエストを送信することでレスポンスを得ます

![スクリーンショット 2024-09-12 15.27.44.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/9300c0bf-671f-4eaa-a6a3-64fa75894b01/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.27.44.png)

**HTTP API**

rest apiよりも低遅延かつコスト効率を高くする目的で設計されたAPI（RESTAPIと同じ形式のAPIだがAPIキャッシュを利用できないなどの誤差がある）

**websocket api**

クライアントとサーバー間で常時接続しているリアルタイムでの情報のやり取りを目的としたAPI。

使用例）チャットや株価情報など常に情報をモニタリングするようなアプリケーションで使われる

通信の状態を管理されるステートフルな接続方式

![スクリーンショット 2024-09-12 15.31.38.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/fbf768ab-4195-455f-b055-ef3e3f450dff/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.31.38.png)

**APIキャッシュとは**

クライアントへ送信したデータを保存する場所

リクエストが来たときのレスポンスをキャッシュし、その後同一のリクエストが来た際にはキャッシュからワンツーで返し、レスポンス速度が向上する（ラムダ等にわたさなくてもいい）

**APIゲートウェイのオーソライザー（２種類）**

**amazon cognito**

コグニートのユーザプールを使用する方法は、コグニートのマネージド方認証機能を使用するので、開発者は認証プロセスについて自身で管理する必要がない

![スクリーンショット 2024-09-12 15.44.19.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/8bb87956-169f-4cbd-b63c-6b5d73b457a2/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.44.19.png)

**lambda**

開発者自身が認証プロセスを作成する＝自由にロジックを組んでAPIへのアクセス制御を実装できる一方でセキュリティ対策など管理の複雑さが増加

![スクリーンショット 2024-09-12 15.44.30.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/25f96f0b-0fbd-4fc0-a9de-d8fe7c28c6b7/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.44.30.png)

**canaryリリース**

新しいバージョンのAPIを段階的にリリースする方法

![スクリーンショット 2024-09-12 15.49.06.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/ca86edea-3525-493a-931d-94061841ca7d/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-12_15.49.06.png)

## aws certificate manager

ssl/tls証明書を作成及び管理できるマネージドサービス

これらの証明書をcloudfrontやelb、API gatewayなどに適用して

ユーザとの通信の暗号化とアクセス先のサーバーを証明する。

機能

- amazonによるパブリック証明書の発行
    - ACMから発行された証明書は自動更新ができる（院歩０ーとは別）
- サードパーティ認証局（CA）が発行した証明書のインポート利用
    - CAからサーバーやローカルマシーンを使用して証明書の発行を依頼して取得＝ACM自体では発行できず、ACMで発行した証明書をCAに署名してもらうこともできない。（この際ドメインの所有権などが認められて証明書が発行される）→証明書をACMにインポートして各種サービスで利用できるようになる。
        
        ![スクリーンショット 2024-09-13 15.50.50.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/367829a9-f490-4a11-8cfe-b31c37db9834/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_15.50.50.png)
        
- モニタリングやロギング
    - eventbridgeやcloudwatchなどと連携してイベント管理、モニタリングやロギングが可能になる

## STS(security token service)

時間制限のあるIAMロール

最短15分から最長36時間の有効期限が設定されており、期限が切れると自動的に無効化されます

トークン（認証情報で使われる）

STSは、企業の既存の認証システム（例：LDAP、Active Directoryなど）と連携して、AWS IDを新たに作成することなく、既存のユーザーに対してAWSリソースへのアクセスを許可できます。この機能は、ユーザーが複数のシステム間でシングルサインオン（SSO）を実現する際に特に有用で、ユーザーはさまざまなシステムに対して一貫したアクセスが可能です。

一般的に、既存の認証システムを利用してSSOを実現する場合、SAML（Security Assertion Markup Language）がよく使われます。SAMLは、セキュリティ認証情報を交換するためのXMLベースの標準フォーマットであり、異なるセキュリティドメイン間でユーザー認証と承認データを安全に交換するために使用されます。AWSでは、AWS IAM Identity CenterがSAMLを使用したフェデレーション（SSOを実現する技術）をサポートしています。

active directory

認証情報発行するだけの機関でやり取りするようなものではない

カスタムI Dブローカーを通してやり取りする（疎結合の考え方）

## aws firewall manager

複数のAWSアカウントやサービスを対象にfirewallのルールを一元的に設定及び管理するセキュリティ管理サービス

セキュリティルールを中央で一元的に管理することにより、セキュリティ対策の手間とコストを削減します。AWS WAF、AWS Shield Advancedなどと連携し、包括的なセキュリティガバナンスを実現します。

![スクリーンショット 2024-09-13 18.18.46.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/a9eadb9d-351b-4a97-b606-faccab4cad6e/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-09-13_18.18.46.png)

## WAF

脆弱性を突く攻撃（クロスサイトスクリプティングやSQLインジェクションなど）から、Webアプリケーションを保護するサービスです。

web aclというアクセスコントロールリストでIPアドレス、HTTPヘッダー、HTTP本文、URI文字列などに対してフィルタリングの条件を設定できる。

Web ACLには接続元のIPアドレスから国別にアクセスを制限できる機能（地理的一致ルール）や、特定の時間内にリクエスト数が設定値を超えたIPアドレスをブロックする機能（レートベースのルール）もあります。

AWS WAFは、Amazon CloudFront、Application Load Balancer、Amazon API Gatewayなどに割り当てて利用します。

aws inspector＝リクエストの不正な挙動を検出はできても、ブロックはできません。

## aws shield

＝DDos攻撃に特化したシールド

AP Iゲートウェイはサポートしておらず、ネットワーク層及びトランスポート層への一般的なDDoS攻撃からリソースを保護

**standard** 

デフォルトで有効

**advanced**

ec2インスタンス、ELB、amazon cloudfrontなどを標的としたDDoS攻撃に対して高度な保護サービスが可能になる。例えば、高度化された大規模な攻撃からの保護、DDoS攻撃発生時のモニタリングやレポート、AWSのDDoS対応チームによるサポート、攻撃によって増加したAWS利用料金の補填などがあります。

## cloud HSM

専用のハードウェアで暗号化キーを保管します。

CloudHSMの方がより安心してキーを管理することが可能です。

KMSに比べると高価です。

## kms(key management system)

異なるAWSアカウントで暗号化したものを共有する際に利用する

AWS管理のサーバを共有で利用し、そこで暗号化キーを管理します。

システム的に他の組織へのアクセス制限はされていますが、物理的には同じサーバ上に存在します。

CloudHSMに比べると安価に利用することができます。

# ***用語メモ***

SSL/TLS証明書

値があってコロンがあってなになに＝j son

**SMB（Server Message Block）** と **NFS（Network File System）** は、ネットワーク上でファイル共有を行うためのプロトコルです。

- **NFS**: UNIX や Linux 環境で広く使用されている標準的なファイル共有プロトコルです。これにより、異なるシステム間でのファイル共有が簡単になります。
- **SMB**: 主に Windows 環境で使用される標準的なファイル共有プロトコルです。Windows ネイティブの環境では最も一般的な選択肢です。

RCU

**RCU（Read-Copy-Update）** は、主に並行処理システムにおいて、読み取り操作と書き込み操作を効率的に管理するための同期メカニズム

スループット

処理速度（I/O per second＝スループット）

プロビジョンどIOPS＝予約したI/O性能が保証される

汎用SSDでは性能の下限値が低い

65問が出て合格率は7割

![スクリーンショット 2024-08-27 22.54.24.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/065e6b55-b9f1-432c-a8a6-249d3840ca79/fcbc7650-f6ad-4317-ab20-b59ff1c5d486/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2024-08-27_22.54.24.png)

[付随知識群](https://www.notion.so/3b6a01474fdc4690bb92eda8ed46abc5?pvs=21)

[覚えてるかよ道場](https://www.notion.so/ad0e9fa4ea644a7f8847b211a60b9ddf?pvs=21)

[理解したいポイント](https://www.notion.so/13ceb0cb735880b49d5fee70b603f83a?pvs=21)