AWS SAP & SAA
「結局見栄えだけ良くても(資格)入社後に使えなかったら意味がない」
必要な素養
=
各サービスの役割がわかる
サービス内の機能やオプションがわかる
文章を読み取って顧客のニーズがわかる
awsのベストプラクティスがわかる
基本用語
- プリンシパル
- AWSリソースに対してアクションを実行する主体=エンティティのこと(ユーザー、グループ、ロールなど)
- フェデレーションされたユーザー
- SAMLなど介して認証された外部ユーザー
AWSの概要
アベイラビリティゾーン
2つ以上のdcで構成されている
展開されているAZと
リージョン
独立したアベイラビリティゾーンで構成されている
事業継続性計画のためにデータや予備システムとして別リージョン利用パターンもある
エッジロケーション
グローバルにコンテンツ配信を実行する高速・広帯域な物理的なネットワークロケーションのこと(ユーザーの一番近いところから配信することで遅延を防ぐ)
47カ国九十以上の都市にある三百十以上のPOP(point of presence)(三百以上のエッジロケーションと13のリージョン別エッジキャッシュ)で構成される
POP=一つ以上のエッジロケーションで構成される
エッジキャッシュ
オリジンサーバーとエッジロケーションの中間のキャッシュ。
データデリバリーを最適化する
エッジキャッシュは個別のPOPより大きいのでオブジェクトは最も近いリージョン別エッジキャッシュロケーションでより長くキャッシュを残せる。
AWSローカルゾーン(リージョンから離れたユーザーに近い場所にサービスを提供するロケーション)
レイテンシーの影響を受けやすいアプリケーションをエンドユーザーにより近い場所で実行するためのロケーション。一桁ミリ秒単位のレイテンシーを要求する革新的なアプリケーションを、エンドユーザーとオンプレミスインストールにより近い場所で提供。
リージョンから距離がある大都市(人口の多い場所や産業の中心地)の近くで高速アプリケーションを展開するための特別なロケーション。
wave length zone
5gネットワークを利用した高速アプリを開発できるロケーションのこと
このエッジにある通信プロバイダーのデータセンターにAWSのコンピューティングおよびストレージサービスを組み込んだAWSインフラストラクチャデプロイ可能なロケーション
ゲームやライブ動画ストリーミングやエッジでの機械学習推論など10ミリビョウ未満のレイテンシーが必要なアプリケーションを実現
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が自動的に許可される設定になっている)
- SCP(service control policy)
- 複数アカウントの一元管理
- 新規アカウントの作成管理
- 一括請求が可能にあんる
- consolidated billing only
- 支払い一括代行のみを実施する場合(ボリュームディスカウントを統合できるのでコストメリット発生)
- all feature
- 支払い一括代行も含めて企業内の複数アカウントを統制したい場合に選択
- consolidated billing only
-
リザーブドインスタンスの共有機能
- アカウントでリザーブドインスタンス(インスタンスの一定期間契約による割引価格利用のこと)の共有がオンになっている
RAMとの連携
resource access manager
異なるAWSアカウントとリソースを共有する仕組み(oraganizationsの組織内外と共有可能)
一つのVPCを共有して複数アカウントリソースを展開できる
コンピューティング
ec2
仮想サーバーを提供する(マネージドではないのでインスタンスサーバーの監視や動作状況に応じたスケーリングやセキュリティパッチの適用などの運用をawsユーザーが実施)
EC2インスタンスクラス=メモリ、ネットワーキング力(帯域幅やパフォーマンス)、ストレージ、CPU(計算能力)
LAMBDA
実行時間が15分以上になる処理や常時稼働が必要なアプリケーションには適していないので
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リソースの付加状況や設定したスケジュールに従って自動的にスケーリングする機能。
(使用例
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(一年に1、2回アクセスするもので迅速取り出し可能)
- instant retrieval(S 3スタンダードと同じパフォーマンスでミリビョウ単位でのデータ取り出し)
- deep archive(7から10年以上保持される)
S 3のアクセス設定
- IAM
- IAMユーザーに対してAWSリソースとしてのS 3へのアクセス権限を設定する
- 内部のIAMユーザーやAWSリソースへの権限管理
- バケットポリシー
- アクセス間をJSONで設定可能
- 外部ユーザーやアプリケーションなども管理可能
- 一つのバケットに一つ
- ACL
- バケット及びオブジェクト単位でのアクセス権限をXMLで設定可能
- アクセスポイント
- S 3バケットにアクセスポリシー設定(JSON)
- バケットポリシーを分割するイメージ
- 一つのバケットに複数設定可能
- 外部ユーザーやアプリケーションなどの管理可能
- S 3バケットにアクセスポリシー設定(JSON)
- ブロックパブリックアクセス
- ネットからのアクセスをブロックする(デフォルト)
- 事前署名付きURL
- 特定のユーザーのみがアクセスできる特別なURL
- AWS SDK(software development kit)またはCLIコマンドによって事前署名URL生成可能
- 3600秒間有効(一時的)
S 3のバージョン管理
- ユーザーによる誤操作でデータ削除などが発生してバージョンから復元可能
- バケット単位でオブジェクトのバージョン管理可能
- バージョンごとにオブジェクトが保管される
- ライフサイクルルールによってバージョンが保存される期間を設定できる
S 3の通信暗号化
-
s3の公開エンドポイントはデフォルトでHTTPSが利用されており、自動的にSSL/TLS通信が実施される(HTTPも選択可能だが非推奨)
-
暗号化形式
-
オプジェクトのアップロードリクエスト処理(https+暗号化用のヘッダー)の際に暗号化用のヘッダーが付与されて暗号化が実施される
- SSEーS3(server side encryption)
- 標準暗号化方式
- 暗号化用のマネージドキーの作成や管理をS 3側で自動で実施
- ブロック暗号の一つである256ビットのadvanced encryption standardを使用してデータを暗号化
- SSE-KMS
- aws kmsに設定したキーを利用した暗号化方式
- ユーザー側でAWS KMSを利用して暗号化用のマネージドキーを作成管理可能
- AES256利用
- (余談)暗号化ごとにKMSのAPIがよばれるため、SSEよりコストとレイテンシーが増加するがその分高度なセキュリティ管理可能
- SSEーC
- ユーザーが指定した暗号化用のマネージドキーをデータと共に送付してサーbー暗号化を実施(ヘッダーにデータキーを直接付与)
- 利用設定や管理が煩雑になるのがデメリット
- CSE(client side encryption)
- クライアント側の暗号化ではS3に送信する前にデータを暗号化する方式
- アプリに保存したマスターキーを使用
- SSEーS3(server side encryption)
-
S 3MFA delete
- バージョニング機能のオプション
- オブジェクト削除時にMFA認証を必須にする
-
オブジェクトロック
- データ更新や削除をできないようにする機能
- リテンションモード
- ガバナンスモード
- 特別な許可なしにオブジェクトバージョンの更新や削除、ロック設定の変更できない
- コンプライアンスモード
- ルートユーザー含め保護されたオブジェクトのバージョンを上書きまたは削除することはできない。
- リテンションモードは変更することができず、保持期間は短縮できない。
- ガバナンスモード
- リーガルホールド(永続的にオブジェクトが削除されないようにする)
- リテンションモード
- データ更新や削除をできないようにする機能
-
バケット
- バケットはリージョンに設定する(AZやVPCの範囲外
- バケットはグローバルに一意の名前(key)を設定する必要あり
- オブジェクトURLでネットからアクセス可能
- 命名規則を守る
- 構成要素
- key(プレフィックス+オブジェクト名)
- プレフィックス(キーの先頭にある値で整理される時に使用される)
- オブジェクト名(ファイル名)
- value(データそのものでバイト値で構成)
- メタデータ(オブジェクトに付随する属性の情報)
- サブリソース【バケット構成情報を保存及び管理するためのサポート)
- key(プレフィックス+オブジェクト名)
-
料金
- リージョン
- データ容量
- リクエストのデータ取得(s3からローカルへの保存など)
- 取得量に応じて料金かかる
- リクエスタ支払いモード
- データダウンロードをリクエストしたアカウントがデータダウンロードコストを支払う
- リクエスタ支払いモード
- 取得量に応じて料金かかる
- データ転送
- s3へのデータ転送は無料だがエクスポート(ネット、AWS内)はgbあたり値段かかる
ユースケース
コンテンツ配信用の画像データなどをS3に保存してcloudfrontで配信する
s3 transfer acceleration
ユーザーからs3バケットへ最適化したネットワークルートを経由してデータを転送する機能(dbではなくローカルファイルからアップロードするときのもの
aws storage gateway
オンプレからAWSのストレージサービスへのアクセスを高速かつセキュアにおこなう
オンプレからNFSやSMB、
tape gateway
オンプレ側の物理テープの代替としてs3やs3glacierに保存できる。
管理を単純化してコスト削減
Storage gatewayにはISCSIプロトコルで通信
ボリュームゲートウェイ
キャッシュ型=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やネットと通信できない
VPCエンドポイント
VPCエンドポイントを利用することによって通常はインターネットゲートウェイを介してアクセスするVPC外のAWSサービス(s3やdynamo db)に、
ネットを介さずアクセスすることができる
ゲートウェイ型
privatelink型
privatelinkは異なるVPCやAWSアカウント間での通信を、ネット介さずにセキュアかつプライベートに行う用途にも使用できる。
使用例)
接続元のVPC内にENIが生成されて、このENIを介して通信が行われる。
接続先のVPC側では、NLBを介してトラフィックが適切なリソースにルーティングされる。
このケースは、VPC間でcidrブロックが重複している場合や高いセキュリティが求められている環境において有効
VPCエンドポイントポリシー
エンドポイントから接続先を制限する機能
許可/拒否する接続先のAWSリソース名を指定して行う。
ネットワークACL
VPC内でネットワークアクセスをサブネットごとに制御するファイアウォール。
IPアドレスを元に許可ルールと拒否ルールの両方を設定可能(ルール番号が小さければ小さいほどルールの優先度が高い)
ステートレスなサービスで通信状態を管理するわけではないので自分でインバウンドとアウトバウンドルール設定を行わなければならない。
AWSネットワークファイアウォール
VPC向けのファイアウォール機能を提供するマネージドサービス
侵入防止システム(IPS)やドメイン名によるトラフィックのフィルタリングなど、
SGやネットワークACLよりもさらに高度な機能を揃えている。
いかが構成要素
ENI(elastic network interface)
EC2にアタッチすることでそのインスタンスにIPアドレスを付与することができる(ネットワーク情報の付与が行われる)
ルートテーブル
VPC内の通信においてどのネットワークへデータを転送するかを定義する機能
VPC内のサブネットは、一つのルートテーブルを関連づけることができる
ルートテーブルに関連づけられていないサブネットはVPC全体に適用される「メインルートテーブル」に従ってルーティング行われる
インターネットゲートウェイ
VPC内のAWSリソースとネットを接続する機能
IGWへのルーティングが設定されたサブネットは、パブリックサブネットになる
一つのVPCにつき、一つしか作成できない故一つのIGWを複数のパブリックサブネットで共有して利用する
NAT(network access translation)ゲートウェイ
プライベートサブネットからインターネットへの通信を可能にするIPv4専用の機能
プライベートサブネット内にあるAWSリソースのプライベートIPアドレスを、パブリックIPアドレス(elastic IP adress)に変換し、ネットへと接続
利用方法
elatstic IPアドレスを割り当てたNATゲートウェイをパブリックサブネット内に作成し、プライベートサブネットのルートテーブルにターゲットがNATゲートウェイへルーティングする設定をする。
NATゲートウェイ自体はAWSによってAZ内で冗長化されていて、聞き障害児やトラフィック増加時でも継続して利用できる。ただAZ自体に障害が発生すると利用できなくなるため、可用性をさらに高めるためには別々のAZにそれぞれNATゲートウェイを配置する必要あり。
NATインスタンス
NATゲートウェイと似ているが、
こっちはEC2インスタンスから作成するのでフルマネージドではない(運用管理や障害対応は自責)
NATインスタンスの利用方法
パブリックサブネットにパブリックIPアドレスまたはElastic IPアドレスを割り当てたNATインスタンスを作成する。
プライベートサブネットのルートテーブルにターゲットがNATインスタンスのルーティングを設定します。
NATゲートウェイにはできないポート転送機能の設定やVPC外からプライベートサブネット内へ接続する際の踏み台サーバーとして利用できる。
踏み台サーバー
例えばインターネットからプライベートサブネット内にあるサーバーの保守をしたい場合に、一旦NATインスタンスへSSH接続をした後、NATインスタンスから目的のサーバーへ再度SSH接続をすることで、VPC外からは直接接続できないプライベートサブネット内のサーバーへの接続を可能にするものです。
VPC lattice
複数のVPCやアカウントにまたがるアプリ間の通信を簡素化して、一元的に管理するフルマネージドシステム。
HTTP、HTTPS、gRPCなどのアプリケーション層の通信プロトコルをサポートしており、VPC Latticeを介して各アプリケーションを接続できます。
また、サービスディスカバリー機能が組み込まれており、他のサービスの位置情報(例えば、IPアドレスやポート番号)を動的に検出できる。故にマイクロサービスアーキテクチャの複雑なネットワーク構成を効率的に管理できる。
AWS transit gatewayとlatticeは似てるものの、
前者はネットワークレベルでの接続を提供して、複数のVPCや音プレミスネットワークを一元的に管理するハブとして機能する。
後者は主にアプリケーション層での通信管理を提供し、アプリケーション間の通信を最適化する。
NLB
network load balancer
レイヤー4(トランスポート層)で負荷分散を行い、tcp uds tlsをサポートしている
NLBはターゲットグループ内の各ターゲットが正常に動作しているかどうかを定期的に確認する
ターゲットから応答が帰って来ればNLBからリクエストをターゲットへ転送
amazon api gateway
apigatewayが作成したAPIはユーザーが管理するVPCの外に配置される。
故に作成したAPIからネットを経由してパブリックサブネット内のAWSリソースにはアクセスできるが、プライベートサブネットないのAWSリソースへは直接アクセスできない
そこで、
プライベートサブネットにアクセスさせたい場合は「VPCリンク」を作成し、ネットを経由しないセキュアな通信が可能になる(VPCリンク作成時にアクセスしたいAWSリソースを直接指定はできない=NLBを対象として指定できる)
rest api
クライアントからのリクエストに対してレスポンスを返す形式のAPI
クライアントはHTTPでリクエストを送信することでレスポンスを得ます
A
HTTP API
rest apiよりも低遅延かつコスト効率を高くする目的で設計されたAPI(RESTAPIと同じ形式のAPIだがAPIキャッシュを利用できないなどの誤差がある)
websocket api
クライアントとサーバー間で常時接続しているリアルタイムでの情報のやり取りを目的としたAPI。
使用例)チャットや株価情報など常に情報をモニタリングするようなアプリケーションで使われる
通信の状態を管理されるステートフルな接続方式
APIキャッシュとは
クライアントへ送信したデータを保存する場所
リクエストが来たときのレスポンスをキャッシュし、その後同一のリクエストが来た際にはキャッシュからワンツーで返し、レスポンス速度が向上する(ラムダ等にわたさなくてもいい)
APIゲートウェイのオーソライザー(2種類)
amazon cognito
コグニートのユーザプールを使用する方法は、コグニートのマネージド方認証機能を使用するので、開発者は認証プロセスについて自身で管理する必要がない
lambda
開発者自身が認証プロセスを作成する=自由にロジックを組んでAPIへのアクセス制御を実装できる一方でセキュリティ対策など管理の複雑さが増加
canaryリリース
新しいバージョンのAPIを段階的にリリースする方法
コンテンツ配信ネットワーク(Content Delivery Network:CDN)
コンテンツ配信ネットワークとは、インターネット上のコンテンツを高速化して配信するためのネットワークのことです。コンテンツ配信ネットワークでは、世界各地の配信サーバー(エッジサーバー)がオリジナルデータがあるサーバー(オリジンサーバー)のコンテンツをコピーして保管(キャッシュ)します。クライアントはオリジンサーバーへアクセスする代わりに、エッジサーバーのキャッシュからコンテンツを受け取ります。
コンテンツ配信ネットワークを利用することにより、クライアントがコンテンツに低遅延でアクセス可能になる他、オリジンサーバーへの負荷軽減にもなります。
aws cloud front
=静的動的どちらも配信できる
一般的にリージョン(三十一箇所)よりもエッジロケーション(四百箇所)から配信した方が早い
aws direct connect
オンプレのデータセンターとAWSクラウドとの間に専用のネットワーク
route53
SNS
simple notification service
フルマネージドのメッセージングサービスで、システム間の通知やデータをやり取りするための手段として使う(email lambda httpsなど様々なプロトコルを通じて複数のアプリケーションやユーザーに同時にメッセージ(通知やデータ)を配信できる
プッシュ型サービス(登録しているサブスクライバーの状態に関わらずリアルタイムでメッセージを送信できる)
ほぼ無制限にスケーリングできる
SNSの情報の単位は「トピック」で管理されている
トピックオーナーが作成したトピックに対して「発行者=パブリッシャー」がメッセージを発行する。
トピックの2種類
- FIFO
- 標準機能(暗号やフィルタリング)に加えて、メッセージが順序づけられてsqsのFIFO キューへ配信される。(FIFOトピックの場合選択できるプロトコルはSQSのみ)
- スタンダード
配信失敗時にはデフォルトで破棄される仕様になっているが
デッドレターキューを利用してそれをサブスクリプションしているものにポーリングすると、SNSトピックから配信されたすべてのメッセージがサブスク先で処理されるようになる。
AWS SQS
フルマネージドなメッセージキューイングシステム
ここのサービスやシステムをメッセージを使用して連携する仕組み
- プル型
- 受信側の都合の良いタイミングでSQSへポーリングを行って、メッセージを受け取ります。
機能
-
2種類のキュー(標準キューとFIFOキュー
- 標準キュー
- メッセージの処理順序は保証されず、タイミングによっては同じメッセージが二度配信される
- FIFOキュー
- キューに送信された順番にメッセージを処理していく
- 標準キュー
-
ポーリング(2種類)
- ショートポーリング
- メッセージを取得する際、ショートポーリングではメッセージがあった場合はメッセージを返し、メッセージがない場合でも即座に「空である」というメッセージを返す
- ロングポーリング
- メッセージがあった場合メッセージを返す点では同じだが、メッセージが空である場合は設定された時間(最大20秒)待ってから、こない場合は「空である」というメッセージを返す
- ショートポーリング
-
遅延キューとメッセージタイマー
- メッセージの送信者が送信したメッセージを一定時間後に受信させた場合に「遅延キュー」もしくは「メッセージタイマー」を使
-
可視性タイムアウト
-
デッドレターキュー
- 一定の回数エラーになったメッセージを通常のキューから分離して「デッドレターキュー」に配置する
コンテナと仮想化技術は違う
ec2とコンテナは違う
仮想マシン
ハイパーバイザー
一つのpcリソースを分割している
上に乗ってるのが仮想マシン
ハイパーバイザーの方がちゃんとしたバーチャルマシン
ゲストOS
OS
コンテナ
周辺のパーツをかき集めてカーネルだけはホストOS使う
OS
セキュリティの課題が出てくる
aws fargateなどでは状態を持たせない
だからストレージに制限はない
記録を取らない(仮想マシンはとる)。EC2などはログを取るけどサーバレスはログを取りづらい。
起動していない時は壊しちゃうかも。
コンテナ系はデータぶっ飛びやすい
docker
メモリ(揮発性、キャッシュ)上で動く→作業机(ものは溜め込まない)
ストレージ(不揮発性媒体)干渉しない→倉庫
dockerはメモリくう
AWS ECS
elastic container service
コンテナを実行及び管理するサービス。デプロイや管理やスケーリング等を一元的に行う仕組み(オーケストレーション)が可能
(docker環境で動作するdockerコンテナをサポートしている)
ECSは負荷に応じて自動的にリソースを調整し、実行中のコンテナインスタンスの状態を監視し続けるので継続的な可用性とパフォーマンスを保証する効率的な運用が可能
主要要素
- クラスタ
- 一つ以上のタスクまたはサービスで構成される論理グループ。クラスターではコンテナが動作するVPCやサブネットなどを設定する
- タスク
- ECSで管理するコンテナの実行単位。タスク内のコンテナは実行するコンテナイメージ、CPUやメモリのスペック、タスクロールなどを定義したタスク定義に基づいて起動される
- サービス
- クラスター内で必要なタスク数を維持する機能。あるタスクが以上終了して必要なタスク数を上回った場合、サービスが新しいタスクを起動して自動復旧する。
ECSで実行管理するコンテナは、コンテナを実行する環境によって主にaws fargateと ec2起動タイプがある。
fargate
コンテナ向けのサーバレスコンピューティングエンジン
コンテナの実行環境やCPUやメモリのスペック、アクセス権限などを設定するだけで、サーバの環境構築や管理をすることなくコンテナを実行できる。
従量課金制と一年以上継続して利用する場合お得になる場合がある「compute savings plans」がある。
ec2タイプ
ユーザーが管理するEC2インスタンス上でコンテナを実行する
実行するEC2インスタンス、ネットワーク、IAMなどを設定するとECSがAWS cloud formationのスタックを作成及び実行して、構築したコンテナ実行環境をECSに登録する。
一方で通常のインスタンス同様にOSやミドルウェアのアップデートやスケーリングなどのサーバー管理をユーザーで実施する必要がある。
従量課金制
ECS における自動スケーリング
ターゲット追跡とステップスケーリング
Aws ECR
elastic container registry
コンテナイメージを登録及び管理するサービス
ECRに登録されたコンテナイメージをECSが参照してコンテナ(タスク)を起動できる
AWS EKS
elastic kubernetes service
ECRのコンテナイメージ利用の他、
実行環境の起動タイプ(EC2やfargate)などもサポートされている
主要要素
- クラスター
- 一つ以上のノードで構成される論理グループ
- 内部はコントロールプレーンとデータプレーンの二つに分けられる
- コントロール:クラスターの全体的な管理と制御、ノードの管理を行う
- コントロールプレーン内のkubernetes APIサーバーがデータプレーン内のノードや管理ツールからの通信を受け付け、クラスター全体の管理や制御が行われる。このAPIサーバーへの通信は、EKSクラスタの構成時に作成されるクラスターエンドポイントを介して行われるが、このエンドポイントはデフォルトでインターネットからアクセス可能な状態
- データ:ノードが配置される領域
- コントロール:クラスターの全体的な管理と制御、ノードの管理を行う
- ノード
- コンテナの実行環境
- EC2インスタンスまたはAWSfargateから選択する(別名ワーカーノード)
- ポッド
- EKSで管理されるコンテナの実行単位で前述のノード上でポッドが実行される
- 単一または複数の関連するコンテナを効率的に実行及び管理するための仕組みを提供
kinesis data streams
大量のデータをリアルタイムで収集及び処理するサービス
イベンtの駆動型ではなく、常にデータが流れ続けるストリーミングに適したサービス
分析
セキュリティ、アイデンティティ、コンプライアンス
AWS cloud watch
AWSサービスやEC2インスタンスのOSやアプリケーションor具を収集して一元管理するサービス
収集したログはメッセージの内容をフィルタリングして管理者に通知できる
またフィルタリングしたログを別のサービスに転送してログをリアルタイムに解析したり、ログの内容に応じてプログラムを実行させるなどの連携も可能
機能
- cloudwatch
- メトリクス(リソースの情報)収集やアラームの定義
- 標準以外にもカスタムメトリクスも使用できる
- メトリクス(リソースの情報)収集やアラームの定義
AWS config
awsリソースの設定を管理し、記録及び評価するサービス
AWSリソースの設定がいつ変更されたかを記録して、変更がルールに準拠したものではない場合には「非準拠」として記録される。
AWS trusted advisor
ベストプラクティスのチェックと提案を行うサービス
amazon api gateway
apigatewayが作成したAPIはユーザーが管理するVPCの外に配置される。
故に作成したAPIからネットを経由してパブリックサブネット内のAWSリソースにはアクセスできるが、プライベートサブネットないのAWSリソースへは直接アクセスできない
そこで、
プライベートサブネットにアクセスさせたい場合は「VPCリンク」を作成し、ネットを経由しないセキュアな通信が可能になる(VPCリンク作成時にアクセスしたいAWSリソースを直接指定はできない=NLBを対象として指定できる)
rest api
クライアントからのリクエストに対してレスポンスを返す形式のAPI
クライアントはHTTPでリクエストを送信することでレスポンスを得ます
HTTP API
rest apiよりも低遅延かつコスト効率を高くする目的で設計されたAPI(RESTAPIと同じ形式のAPIだがAPIキャッシュを利用できないなどの誤差がある)
websocket api
クライアントとサーバー間で常時接続しているリアルタイムでの情報のやり取りを目的としたAPI。
使用例)チャットや株価情報など常に情報をモニタリングするようなアプリケーションで使われる
通信の状態を管理されるステートフルな接続方式
APIキャッシュとは
クライアントへ送信したデータを保存する場所
リクエストが来たときのレスポンスをキャッシュし、その後同一のリクエストが来た際にはキャッシュからワンツーで返し、レスポンス速度が向上する(ラムダ等にわたさなくてもいい)
APIゲートウェイのオーソライザー(2種類)
amazon cognito
コグニートのユーザプールを使用する方法は、コグニートのマネージド方認証機能を使用するので、開発者は認証プロセスについて自身で管理する必要がない
lambda
開発者自身が認証プロセスを作成する=自由にロジックを組んでAPIへのアクセス制御を実装できる一方でセキュリティ対策など管理の複雑さが増加
canaryリリース
新しいバージョンのAPIを段階的にリリースする方法
aws certificate manager
ssl/tls証明書を作成及び管理できるマネージドサービス
これらの証明書をcloudfrontやelb、API gatewayなどに適用して
ユーザとの通信の暗号化とアクセス先のサーバーを証明する。
機能
-
amazonによるパブリック証明書の発行
- ACMから発行された証明書は自動更新ができる(院歩0ーとは別)
-
サードパーティ認証局(CA)が発行した証明書のインポート利用
-
モニタリングやロギング
- 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などと連携し、包括的なセキュリティガバナンスを実現します。
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割