インデックス

コスト管理

 Cost Explorer各サービスの大まかな傾向、コスト分析
・ややタイムリーなグラフビュー。
・カスタムレポート。
 CUR定期的なレポートティング
・「(詳細な)使用状況レポート」
・「コスト配分タグ」
 Budgetsコスト、予算額または使用量のアラート

アクセス

IAM個々の(アカウント)IDの認証・権限管理
認証情報レポート:IAM認証情報のレポート
IAMデータベース認証:IAMロールでDBにアクセス
IAMロールEC2からのアクセスのみセキュリティ認証してアクセス
Assume Role:別アカウントのリソースにアクセスする時に使用
ID プロバイダー(IdP)Facebookなどの外部ユーザーIDにアカウント内のAWSリソースに対するアクセス許可を付与する。
SSO:1組のID , パスワード認証を一度行うだけで複数サービスにログイン
CognitoAWS上のWeb・モバイルアプリケーションに認証・認可機能を提供
・ユーザープール、認証トークン取得→IDプールで認可
STS:一時的なセキュリティキー
ACMAWS自身が認証局となり、パブリックまたはプライベートのSSL/TLS 証明書を作成・登録・集中管理できる。(プライベートはコスト悪)
Organization組織アカウントの作成・適用するポリシーを管理。
SCP:ポリシー , OU:組織単位
IAM Identity Center:SSO組織版みたいな感じ

基盤サービス

VPC論理的に各ユーザにプライベートネットワークを構築
・エンドポイント:ゲートウェイ型、インターフェース型
CloudFront(静的・動的)コンテンツを配信するサービス
OAI:オブジェクトのアクセス権の許可を付与。S3で機能。
Lambda@edge:CloudFrontのエッジサーバでLambdaが定義したコード実行
EKSKubernetesでコンテナ化されたアプリケーションのデプロイ、管理、スケールを管理(自動化)
ECS非Kubernetes。コンテナ化されたアプリケーションを実行するか、マイクロサービスを構築
ECRECSやEKSに統合されているDocker コンテナレジストリ(S3に保存)。Dockerコンテナイメージを保存・管理(暗号化)でき、デプロイが素早く簡単に起動。
Outpostsオンプレミス機器のレンタル
 
Transfer Family
ストレージサービス(S3,EFS)宛にファイルを安全に送受信できる
WorkSpaces Family場所を問わず、あらゆる種類の従業員に適切な仮想デスクトップを提供
WorkSpaces Thin Client
App Stream特定のアプリケーションをクラウド環境で利用(実行)できる

セキュリティ

ネットワークACLステートレス。低い値から高い値にかけて評価
セキュリティグループステートフル(インバウンド、アウトバウンド定義)
WAFWeb (Web Application Firewall)
SQLインジェクションやウェブエクスプロイトに有効
Web ACL:関連付けされたAWSサービスを保護
Firewall ManagerOrganizations専用。WAFルール一元管理
ShieldDDoS攻撃対策。Standard(無料) , Advanced(高度)
Guard Duty脅威検出、セキュリティ状況チェック
Security Hubセキュリティのベストプラクティスのチェックを自動化
セキュリティアラートを総括管理
InspectorEC2/ECRのコンテナイメージ/Lambda関数の脆弱性を確認
Macie脆弱性のある機密データの検出や保護
Detective調査プロセス簡素化
ArtifactAWSが提供するコンプライアンスレポートと契約書類
Policy Generatorポリシーの作成を簡素化
Service Organization Control監査人など、第三者にむけた報告書

インスタンス

 AMI仮想サーバー(インスタンス)を起動するためのテンプレート。
 EC2AWSが仮想サーバーを提供するサービス

NW

 
NAT Gateway
(アウトバウンドのみ)
静的IPアドレスを提供
 
Internet Gateway
VPCとインターネットの接続を確立する
 
ENI
(Elastic Network Interface)
ネットワークの設定(IPアドレス、セキュリティグループなど)や付替えが可能。 
Customer Gateway
オンプレミスNW内のカスタマーゲートウェイデバイス
 
VPC Peering
VPC間の接続を実施する 
Virtual Private Gateway
VPN接続
 
Client VPN
クライアントベースVPN 
Direct Connect Gateway
1つのDirect Connect で複数接続
 
Private Link
オンプレサービスとVPC安全接続Egress-OnlyインターネットGatewayIPv6経由でVPCからインターネット接続。インターネットからのトラフィックを防ぎつつ、IPv6の発信トラフィックをサポート
 
Direct Connect
オンプレとAWS間専用線 
Transit Gateway
VPC上のハブルーター
クラウドルーターとして機能する

Site to Site VPN
Direct Connect 下位互換 
API Gateway
簡単にAPIの作成と保護, 公開, モニタリングが可能
対APIトラフィックバースト

AppSync
(GraphQL)
複数のAWSサービスのデータリソースにアクセスできるAPIを構築
 
Storage Gateway
オンプレとストレージ間アクセス
ファイル/ボリューム/テープ

App Flow
APP-AWS間転送

Wavelength
5G回線のモバイルネットワーク

監視


Service Quotas
クォータ使用率管理
SES
Eメールサービス
※SMS配信はできない

Service Health Dashboard
災害規模
SNS
(Simple Notification Service)
メッセージ通知サービス。
Personal Health Dashboardメンテナンス・イベント
PinPoint
カスタマー向け通知
(Eメール,音声,プッシュ通知, SMS)
EC2 モニタリングEC2ステータスチェック
・基本(5分) , 詳細(1分)
S3イベント通知S3のイベント発行トリガー
インスタンスコンソール出力EC2のカーネルの問題やサービス設定のトラブルシューティングRDS イベント通知RDSのイベント発行トリガー

VPCフローログ
IPトラフィックログの監視
DynamoDB Streams
DynamoDBの直近24時間の追加・更新削除の変更履歴を保持

Cloud Trail
APIの履歴の監視
・ファイル整合性機能:ダイジェストファイルでチェック
IAMアクセスアドバイザーIAMアイデンティティ(ユーザー、グループ、ロール)にアクセス許可されているサービスと過去のアクセス履歴を表示

CloudWatch
リソース状況の監視
Cloud Watch Logs:ログ監視
Synthetics:外形監視
S3アクセスロギングS3のアクセス元のIPアドレスを含んだ各種ログ情報を取得

X-Ray
アプリケーションサービスの監視
Event Bridge
リソースを監視しイベントをトリガー(SNSへの連携 NG)
拡張VPCルーティングの有効RedShiftトラフィック監視

分析


Kinesis
受信するとすぐに処理,分析を行うデータストリーミングのプラットフォーム
Quick Sight
単一のデータダッシュボードに複数ソースのデータを結合し、簡単に分析環境を構築

Kinesis Data Streams
次々と送られるデータをリアルタイムに加工・収集、次のサービスに配送する(EC2など)
(シャードの集合体)

Data Zone
データ管理

Kinesis Data Firehose
収集した大量のデータをS3やRedshiftなどにPush配信
Glue
データの加工などを行う、ETL(抽出・変換・格納)サービス

Kinesis Video Streams
動画処理専用
Open Search Service
統合された視覚化ツールである OpenSearch ダッシュボードを使用したログ分析
(Elastic Searchから派生)

Kinesis Data Analytics
リアルタイムのストリーミングデータの分析や処理、保存を行う。CloudWatch log insightCloudWatch Logsのログデータに対し、独自の構文を使ってクエリのようにデータを検索・分析
S3 分析ストレージアクセスパターンを分析し、適切なデータをいつ適切なストレージクラスに移行すべきかCloudWatch Contributor InsightsCloudWatch Logsの時系列データからパフォーマンスのボトルネック使用リソースなどをダッシュボードで確認することができる。

S3 Select
単純なSQL式を使用してより迅速かつ安価に分析および処理CloudWatch Application Insights他アプリケーションリソースと共にインスタンスを使用するアプリケーションをモニタリング

Athena
標準のSQL式を使用して、S3 内のデータを標準 SQL を使用して簡単に分析できる
Clean Rooms
共有データの分析

EMR
Apache HadoopApache Sparkなどのオープンソースを利用し、大量のデータを迅速に処理するために分散アプリケーションを実行
FinSpace
金融業界専用の分析

IAM Access Analyzer
S3バケットIAMロールなどが、意図せぬ公開がされていないか
Managed Grafana
Grafana専用 可視化ツール

Compute Optimizer
機械学習を使ってリソースを分析し、コスト削減を推奨。

AD/DNS

 Simple ADAWS上に別のADサービスを構成
・ユーザーアカウントやグループの管理
・グループポリシーの作成および適用
・EC2 インスタンスへの安全な接続を提供
 AD ConnectorIAMとオンプレミス環境のADとを連携するのに利用するディレクトリゲートウェイ。
 Managed Microsoft AD※AD Connector と同様の機能
AWS側にMicrosoft Active Directoryとの互換性があるフルマネージド型のADを作成。
 Route53DNS。サービスを提供するサーバーのIPアドレスを任意のドメイン名と対応づけて名前解決。

リソース管理

クロスアカウントアクセス複数のAWSアカウント間のリソースを一つのIAMユーザーに共有
Config
リソースの履歴・評価・構成変更管理設定変更監視・追跡・報告

RAM
クロスアカウントアクセス複数版
(Resource Access Manager)

Trusted Advisor
アドバイス・ステータス変化通知
※23年にConfigに統合

Data Exchange
公開されている第三者機関のデータをAWSクラウドへ取り込み、分析したり機械学習に活用
Service Catalog
利用者向けの製品やAWSリソースなどをカタログ(ポートフォリオ)として集中管理
Resource Groups多数のリソース上のタスクを一度に管理および自動化できる
Market Place
サードパーティーのソフトウェア、データ、サービスを検索、購入などしてソリューションを構築
Tag Editorタグ検索フィルター

自動化


Lambda
処理の自動化(Max:15分)
Lambda Layer:実行コード共有

CDK
CloudFormationのコード開発支援ツール

CloudFormation
YAMLを使ったリソース自動構築
スタック:リソース定義
ドリフト:剥離

Batch
バッチ自動化

Elastic Beanstalk
APPデプロイの自動化
・ログ保存機能:S3に保存

Back Up
大規模バックアップ自動化
・プラン:どのリソースをいつ

Ops Works
サーバなどの設定を自動化
・スタック:管理対象を一括
・Ched:実行内容

Control Tower
安全なマルチアカウント AWS 環境のセットアップと管理
LandingZone:仕組みの総称

APP Runner
プッシュされたコードを自動的にデプロイ
SWF
SWF: Simple Workflow Service
重複が許されない厳密に一回限り順序性が求められる処理を定義

Amplify
Web、モバイルApp自動構築
Step Functions
SWFと違い、可視化できる

Lake Formation
データレイク自動構築

MWAA
Apache Airflowの自動構築

ストレージ

インスタンスストアEC2と不可分のブロックレベルの物理ストレージ。一時的なデータ保持
S3耐久性、可用性99%で、ストレージ容量は無制限。高頻度更新は✖
・パブリックアクセス、オブジェクトロック、バージョニング機能あり
CORS:1つのWEBサイトを複数のドメインでS3リソースを共有して利用
クロスアカウントレプリケーション:S3バケットを別のアカウントに共有
EBSEC2とEBS間に専用線をひいた、EC2にアタッチするブロックストレージ
・AZを跨ぐことはできない
・EBSのスナップショットをS3にコピーすることはできない
EFSPOSIX準拠、ファイル共有。高頻度アクセス不向き。
・大規模で並列の共有アクセスできる設計
・強い整合性やファイルのロックなどが用意されている
Fsxフルマネージド型ファイルサービス(Windows向け)の高速ストレージ
※NFSバージョン4 非対応
snowball輸送用物理ストレージ

暗号化

 KMSデータ暗号化に利用する暗号化(または復号化)できるKMSキーの作成・管理を行う
・CDK(Customer Data Key):暗号化キー
KMSキー(CMK3種類):外部(復号化)キー
 Cloud HSMハードウェアセキュリティモジュール(HSM)を使用した暗号鍵管理サービス。
・コスト削減よりセキュリティの最適優先
 Secrets Managerデータベースの認証情報やパスワードなどを管理

DB


RDS
低コストを実現可能なDB
・クロスリージョンリードレプリカ:リージョン跨ぎ

Timestream
高速かつスケーラブルなサーバーレス時系列データベース

Aurora
高性能なRDS ※RDSより割高
Aurora Serverless:AZ規模のDR向け

QLDB
台帳データベース

DynamoDB
【NoSQL】
セッションデータやメタデータなどのシンプルな高速処理
セカンダリインデックス:検索速度向上

Neptune
グラフデータサービス

Red Shift
ペタバイト規模のリレーショナルデータベース型DWH
※シングル AZ 配置のみ対応
・ノード:CPUリソース

Keyspaces
Apache Cassandra互換のデータベースサービス。

Elastic Cache
インメモリキャッシュDB
シャーディング:負荷分散
・クラスタ>シャード>ノード
CDC継続的なレプリケーション
(変更データキャプチャ)

Document DB
MongoDBのワークロードを対象

アップグレード

拡張ネットワーキングサポートするインスタンスタイプに高性能ネットワーキング機能を提供
※追加料金不要

Global Accelerator
静的IPを付与しトラフィックのパフォーマンスを最大 60% 向上
世界中の顧客にアプリケーションの可用性を提供
・フェイルオーバー機能あり
・S3へのアップロードには利用できない
S3 Transfer AccelerationS3バケットとの間で、長距離にわたるファイル転送を高速化
マルチパートアップロードパラレル形式で大容量のデータを分けて送信する。
 DAXレスポンスを向上させるインメモリキャッシュ。
Dynamo DB の読取りコストを大幅に削減する。

Well-Architected Tool
AWS推奨のベストプラクティスの観点から問題点・課題を洗い出し

可用性・冗長性

 Auto Scallingリソース使用状況に伴って、リソースを増減させる
 ELB1つのAZ内のデータ処理にかかる負荷を分散
・AZを跨ぐことはできない
・スティッキーセッション(※NLB非対応)
 MSK耐障害性と可用性の高いストリーミングストレージ
Apache Kafka サービスでデータを安全にストリーミング
 DRS対DRディスク(Elastic Disaster Recovery)
AWS上のストレージに継続して転送保管を行う
 SQSキュー内の(複数)ワーカープロセスでメッセージを処理
・確実な非同期(分散並行)処理
・ショートポーリングは料金が増加しやすい
 MQApache用マネージド型のメッセージキューイングサービス
・今までのアプリから接続先をMQに変えるだけで簡単に移行
 Managed Blockchainブロックチェーンの確立

環境移行支援


Application Discovery Service
移行のためにオンプレミスサーバーVM使用状況構成データを収集CARTクラウド移行準備評価

Application Migration Service
クラウドへの移行実施MRACART の上位

Server Migration Service
仮想マシンの移行
仮想サーバをAMIとしてAWSにダウンタイムを最小限に抑えて移行

Migration Evaluator
移行後のコスト予測
(ビジネスケースの作成)

DataSync
オンプレミスストレージとストレージサービス間でデータを移行MPA移行計画の評価

DMS
オンプレミスにあるデータベースを短期間で安全に AWS に移行
Migration Hub
移行計画ダッシュボード
SCTDB間スキーマー移行
スキーマー:データの種類や大きさ、他のデータとの関連など、定義した仕様や設計

Babelfish for Aurora PostgreSQL
コードを変更しないDB移行

運用

System ManagerAWSのリソースの運用管理スケーラブルかつコスト効率よく行う
Parameter Store設定データ管理機密情報一元的に管理するストレージ
Session Manager安全なセッション確立
アカウント内のインスタンスとのセッションを開始できる
Run Command一般的な管理タスクを自動化し、臨時の大規模な設定変更を実行
State ManagerAWS リソースを定義された状態に保つプロセスが自動化される
Patch Managerパッチの迅速適用
Distributor対象インスタンスにAWS公開のソフトウェアを作成・デプロイ
AutomationAWS リソースのオペレーションや管理タスクを自動化
Maintenance Windowsスケジュールされたタスクの実行・管理

開発


CLI
※Command Line Interface
Code Star
開発環境作成・ステータス管理

SDK
開発者向けのプラットフォーム固有の構築ツールのセット
Code Pipeline
リリースまでの処理の見える化
・書いたソースコードを自動でビルド、デプロイ、テスト

DataPipeline
(オンプレミスを含め)リソース上でのデータ処理・移動支援
Code Artifact
Python の pip や Node.js の npm 等のソフトウェアパッケージを安全に共有するリポジトリ

Code Commit
ソース管理の収納庫

Code Build
コードのテスト

Code Deploy
アプリケーションの自動デプロイ
Blue/Green
インプレースデプロイ

オプション

 CloudSearch検索機能付与
 Elastic Transcoderソース形式変更
・元のソース形式からスマートフォンなどのデバイスで再生可能できるバージョンに変換
 Amazon Connectセルフサービスのクラウド型コンタクトセンター
 IVSライブストリーミング
世界中の視聴者が低レイテンシーまたはリアルタイムの動画を利用できる

機械学習

 Sage Maker機械学習の構築 Canvas
ML構築(簡易)
完全ノーコードの GUI でビジネスユーザーがデータ準備と予測を実行できるML構築ツール。
 Bedrock簡易版Sage MakerAutopilot
ML構築(最適)
前処理、特徴量選択、モデル探索とチューニングを自動化して最適なモデルを構築。
 Polly音声発話サービスData Wrangler
データ前準備効率化
結果の可視化
データ準備効率化。異常検出、視覚化。データの取り込み・可視化・変換を GUI で行い、前処理ワークフローを簡素化。
 Textract文書からテキストを抽出するDebugger
トレーニング監視
トレーニング中のモデル挙動を監視し、性能問題や異常を検出するデバッガ機能。
 Transcribe音声をテキストに変換Model Monitor
入力データ監視
本番モデルの入力データや予測を継続監視し、データドリフトや精度低下を検出する。
 Translateテキストを機械翻訳Clarify
偏り検出
モデルの説明性とバイアス(偏り:精度低下)検出のための評価・可視化ツール群。
 Comprehend抽出されたテキストを理解・分析するModel Registry
レジストリ
モデルのバージョン管理、ステージング、承認ワークフローを提供するレジストリ。
 Rekognition動画や画像認識Ground Truth
ラベル品質管理機能
人手ラベリングを効率化するデータ作成サービス。ラベル品質管理機能を含む。
 KendraAI を活用した検索機能Studio Classic
実験環境
SageMaker の統合開発環境(従来版)。ノートブック・実験管理・可視化を提供する IDE。
 Glue DataBrewノーコードでデータのクレンジング(前処理)を実施Experiments
実験記録
評価における実験の記録・整理・比較を支援。実験管理フレームワーク。ハイパーパラメータや結果を追跡して比較。
 Redshift MLRedshift に機械学習機能を統合Serverless Inference
ML運用フルマネージド
インフラ管理不要でMLモデルのインフラ管理やスケーリングを自動で行う。
 Q Business企業向け生成AIアシスタントML Lineage Tracking
WFログ記録
MLワークフローの各ステップの(データセット・コード・ハイパーパラメータ・モデルなどの)情報を詳細に記録・追跡。
 Trainium高性能な機械学習トレーニング専用のインスタンスPipelines
WFの自動化
再現可能な ML ワークフローを定義して自動化するパイプラインサービス。
Mechanical Turk(MTurk)人間の知能が必要なタスクをオンラインの仕事市場で依頼Future Store
特微量の再利用
オンライン/バッチで再利用可能な特徴量を保存・配信する機能。
Batch Transform
訓練済みMLの利用
訓練済みモデルを用いた大規模バッチ推論を非リアルタイムで実行。
JumpStart
事前テンプレート
事前構築済みモデルやソリューションテンプレートを素早く導入するためのカタログ。
Market Place
マーケットプレイス
サードパーティのモデルやデータセット、アルゴリズムを購入・導入できるマーケットプレイス

Posted in AWS

Machine Learning

基礎知識

●RAG(Retrieval-Augmented Generation:検索拡張生成)

外部の知識データベースから情報を検索し、それを使って自然言語を生成する仕組み
(わからないことは調べてから回答するAI)
検索(Retrieval):ユーザーの質問に対して、外部のデータベースやドキュメントから関連情報を検索。
生成(Generation):検索結果をもとに、AIが文脈に沿った回答を生成。

[メリット]

  • 最新情報に対応:学習済みモデルでは扱えない新しい情報も検索で補える。
  • ハルシネーション対策:信頼できる情報源を参照することで、誤った回答を減らせる。
  • 企業独自の知識活用:社内文書やFAQなどを活用して、業務に特化した回答が可能。

●ハイパーパラメーター

機械学習モデルの学習プロセスや構造を制御するために、事前に設定するパラメータ人間が設計段階で決める設定値
(モデルが自動で学習する「パラメータ(重みやバイアス)」とは異なる)

[学習プロセス]

学習率:重みの更新幅。大きすぎると発散、小さすぎると収束が遅い。機械学習における「学習率」は学習の安定性にどう影響するかを意味する。学習率を適切に下げることで損失の振動を抑え、学習を安定させることができる

  • 学習率が高い場合の問題点
    モデルの学習が大きく進みすぎるため、損失(モデルの誤り度合い)が安定せず、下がったかと思うとまた上がるという「振動」が発生します。これは、損失が最も小さくなる最適解の地点を通り過ぎてしまうことが原因。
  • 学習率を下げることの効果
    学習率を下げると、モデルはパラメータをより慎重に少しずつ調整するようになります。これにより、損失の振動が抑えられ、安定して最小値に向かって学習が進みます。その結果、モデルの性能も向上する。

・バッチサイズ:一度に学習するデータの数。
・エポック数:データセットを何回繰り返して学習するか。

[チューニング方法(アルゴリズム)]
手法名探索方法計算コスト特徴向いている場面
グリッド
サーチ
全組み合わせを網羅的に試す高い確実だが非効率。パラメータ数が多いと爆発的に試行数が増えるパラメータが少なく、計算資源に余裕があるとき
ランダム
サーチ
パラメータ空間からランダムに抽出中程度意外と効率的。最適解に近い組み合わせに早く到達することもあるパラメータが多く、ざっくり良い結果を得たいとき
ベイズ
最適化
過去の試行結果から次の候補を予測低~中賢く探索。少ない試行回数で高精度に到達可能評価に時間がかかる/試行回数が限られるとき
ハイパーバンドランダム探索+早期停止の組み合わせ効率的にリソース配分。性能が悪い試行は早期に打ち切る大規模な探索でリソース節約したいとき
[ハイパーパラメータとパラメータの違い]
  • パラメーター:モデルが学習によって自動的に決定する値(例:重みやバイアス)
  • ハイパーパラメータ:学習前に人が設定する調整項目(例:学習率やエポック数)

学習モデル

データとラベルを使ってパターンを学習する。以下4種が存在する。

モデル名説明代表的なアルゴリズム / モデル
教師あり学習
例:売上予測、画像分類、スパム検出
正解となるラベル(教師データ)が付与されたデータセットを用いて学習する。入力データに対する正解を予測する。主に「分類」と「回帰」の2つのタスクに利用される。・決定木
・ロジスティック回帰
・サポートベクターマシン
・ナイーブベイズ
・ランダムフォレスト
教師なし学習
例:顧客セグメント分析、次元削減、異常検知
正解ラベルのないデータから、データに潜む構造やパターンを自律的に見つけ出す。データのクラスタリング(グループ分け)や次元削減(データの圧縮)などを行う。・クラスタリング
・次元削減
・自己符号化器
強化学習
例:ゲームAI、ロボット制御、広告最適化
エージェントが環境の中で試行錯誤し、報酬を最大化するように学習する手法。環境と相互作用しながら最適な行動戦略を見つけます。
深層学習
(ディープラーニング)
ニューラルネットワークを多層にしたもので、データから特徴量を自動的に学習。教師あり、教師なし、強化学習のいずれのフレームワークでも使用される。・畳み込みニューラルネットワーク
⇒ 画像認識に特化
・リカレントニューラルネットワーク
⇒ 時系列データ、自然言語処理に特化
・トランスフォーマー
⇒ 自然言語処理、生成AIで広く利用
教師アリ

●分類

ラベル付きデータを使ってカテゴリを予測(例:スパム判定、画像分類)

Accuracy(正解率)正解の予測数の割合を測定。
Precision(適合率)正と予測されたもののうち、実際に正である割合を測定。
Recall(再現率)実際に正であるもののうち、正と予測された割合を測定。
F1-Score(F1スコア)PrecisionとRecallの調和平均。バランス良く評価できる。
ROC-AUC(ROC曲線下面積)ROC曲線の下の面積を測定し、モデルの判別能力を評価。
Logarithmic Loss(ロジ損失)予測確率の精度とクラス間の誤差を測定。
Confusion Matrix(混同行列)各クラス間の予測結果を表形式で表示。

※混同行列(Confusion Matrix)
機械学習では、以下の4つの分類結果を混同行列で整理する。

実際のクラス予測が陽性予測が陰性
陽性(True)真陽性(TP)偽陰性(FN)
陰性(False)偽陽性(FP)真陰性(TN)

分類問題(二値分類)では「偽陽性」と「偽陰性」はモデルの性能を評価するうえで非常に重要。

  • 偽陽性(False Positive)
    実際には「陰性(例:スパムではない)」なのに、モデルが「陽性(例:スパム)」と予測してしまうこと。
    [例] 通常のメールをスパムと誤判定 → ユーザーが重要なメールを見逃す可能性あり。
    [影響] 誤検出。不要なアラートや誤った処理が発生する。
  • 偽陰性(False Negative)
    実際には「陽性(例:スパム)」なのに、モデルが「陰性(例:通常メール)」と予測してしまうこと。
    [例] スパムメールを通常メールと誤判定 → ユーザーが危険なリンクをクリックする可能性あり。
    [影響] 見逃し。本来検出すべき対象を見逃す。
    ※偽陰性の予測コストが高い時、「再現率」を優先して向上させると改善の傾向にある

●回帰

数値の連続値を予測(例:売上予測、気温予測)

  • 線形回帰分析(Linear Regression)
    回帰線は直線であり、連続値を予測するタスク。入力変数(特徴量)に基づいて数値で表される目標変数(出力値)を推定する。評価には平均絶対誤差(MAE)や平均二乗誤差(MSE)などの指標が使われ、予測値と実際地の誤差を測定する。
    ・目的連続値の予測(例:価格、点数、身長など)
    数式:出力 y は実数値(例:住宅価格が 42,000 USD)
  • 分類回帰分析(Logistic Regression)
    回帰曲線はS字型(シグモイド)であり、カテゴリを予測するタスク。入力変数(特徴量)に基づいて、離散的なラベルやクラスを割り当てる。評価には正解率、F1スコア、ROC-AUCなどが使われ、予測モデルの正確さや判断能力を測定する。出力を閾値(例:0.5)で分類。コスト関数はクロスエントロピー(Log Loss)。
    ・目的:カテゴリ分類(例:Yes/No、陽性/陰性、スパム/非スパム)
    ・数式(シグモイド関数):出力 y は確率値(0〜1)
Mean Absolute Error(平均絶対誤差)実測値と予測値の絶対差の平均。モデルがどれだけ正確に対象の価格を予測できているか、具体的な金額単位で直感的に把握できる。また、他の指標に比べて外れ値の影響を受けにくい。これは外れ値を含む可能性のあるデータセットにおいて、信頼性の高い評価ができる点で非常に適している。
Mean Squared Error(平均二乗誤差)実測値と予測値の二乗誤差の平均。
二乗平均平方根誤差(RMSE)MSEの平方根。
R²(決定係数)モデルがデータの分散をどれだけ説明するかを評価。

●時系列予測

過去のデータから未来を予測(例:株価、需要予測)

Mean Absolute Percentage Error(MAPE、平均絶対百分率誤差)実測値に対する予測誤差の割合を測定。
平均重み付き分位点損失 (wQL)P10、P50、P90 の分位点で精度を平均して予測を評価。値が小さいほど、モデルの精度が高くなる。
重み付き絶対誤差率 (WAPE)絶対目標値の合計で正規化された絶対誤差の合計で、予測値と観測値との全体的な偏差を測定。値が小さいほどモデルの精度が高いことを示し、WAPE = 0 はエラーのないモデル。
二乗平均平方根誤差 (RMSE)平均の二乗誤差の平方根。RMSE 値が小さいほどモデルの精度が高いことを示し、RMSE = 0 はエラーのないモデル。
平均絶対スケーリング誤差 (MASE)単純なベースライン予測法の非平均絶対誤差で正規化された予測の平均絶対誤差。値が小さいほどモデルの精度が高いことを示し、MASE < 1 はベースラインよりも精度が高いことを示し、MASE > 1 はベースラインよりも精度が引くことを示す。
Root Mean Squared Logarithmic Error(RMSLE、平方平均対数二乗誤差)対数スケールで誤差を測定。
教師アリ+深層学習

●翻訳

入力文と対応する訳文を使って学習(例:Transformer、Seq2Seq)

BLEU(BLEUスコア)生成された翻訳と参照翻訳のn-gram一致率評価。
ROUGE(ROUGEスコア)BLEUに単語と語形変化への対応を加えた指標。
ROUGE(ROUGEスコア)生成テキストのリコール指標。
BERTScore(BERTスコア)埋め込みモデルを用いて、生成文と参照文の意味的類似度を評価。
Perplexity(困惑度)生成された文の予測精度を評価。

●画像認識

CNNなどを使って画像からラベルを予測(例:顔認識)

Intersection over Union(IoU、交差面積比)検出領域と、予測領域と実際の領域の重複率を評価。
Mean Average Precision(mAP、平均適合率)複数クラスの検出タスクでの精度を評価。
教師アリ+生成モデル

●生成(自然言語生成など)

GAN、VAE、拡散モデルなどで新しいデータを生成

BLEU(BLEUスコア)翻訳同様、生成されたテキストの品質を評価。
ROUGE(ROUGEスコア)翻訳同様、生成テキストの品質を評価。
BERTScore(BERTスコア)翻訳同様、生成テキストの品質を評価。
教師ナシ

●クラスタリング

ラベルなしデータをグループ化(例:顧客セグメント分析)

Silhouette Score(シルエットスコア)クラスタリングの品質を評価、クラスタ間の距離とクラスタ内の密集性を考慮。
Davies-Bouldin Index(デイビス・ボルダン指数)クラスタリングの分離度と緊密さを評価。
Adjusted Rand Index(調整ランド指数)クラスタリング結果と実際のラベル間の一致度を評価。
強化学習

教師アリ+教師ナシ+強化学習

●推薦システム

協調フィルタリングや強化学習を組み合わせることが多い。

Mean Reciprocal Rank(MRR、平均逆順位)正解の候補が結果リストでどれだけ上位にあるかを評価。
Normalized Discounted Cumulative Gain(NDCG、正規化割引累積利得)関連度に基づいて推薦結果の品質を評価。
Hit Rate(ヒット率)推薦リストに正解が含まれるかを測定。

●ドリフト

※別称:「モデルドリフト」、「モデルの陳腐化」
機械学習において、何らかの「予期せぬ変化」が原因で、モデルの予測性能が時間経過とともに劣化していく現象を指す。

コンセプトドリフト入力データ(特徴量)と正解ラベル(目的変数)との関係性自体が、モデルを訓練した時から変化してしまうことを意味する。このドリフトが起こると、モデルは新しいデータのパターンを正確に予測できなくなり、「F1スコア」のような品質評価指標が低下する。「何(入力)から何を(出力)予測するかのルール自体が変わってしまう」こと。
データ
ドリフト
モデルを訓練した時の入力データの統計的な分布と、実際にモデルが使用される本番環境での入力データの統計的な分布がズレてしまうことを指します。「特徴量ドリフト」や「共変量シフト」とも呼ばれる。「入力されるデータの傾向が変わってしまう」こと。

●特微量エンジニアリング

※特微量とは…
モデルにとって意味のあるデータの属性(列),モデルの予測精度に大きく影響するため、非常に重要な要素。
[例] 年齢、性別、購入履歴、Webサイトの滞在時間など

機械学習モデルの性能を向上させるために、入力データ(特徴量)を加工・変換・選択するプロセスのこと。
・高性能なモデルでも、入力データが悪ければ精度は上がらない
・特徴量エンジニアリングによって、モデルの学習効率や予測精度が大幅に向上する
・特にKaggleなどのデータ分析コンペでは、最終順位を左右する要因になることも多い

[特徴量の学習プロセス]
プロセス内容
データ理解と探索
(EDA)
・データの構造・分布・欠損・外れ値を把握
・目的変数との関係性を可視化(ヒートマップ、散布図など)
特徴量の作成
(Feature Creation)
生データから新しい特徴量を生成
・例:年月
・売上 = 単価 × 数量
特徴量の変換
(Feature Transformation)
・スケーリング(標準化・正規化)
・対数変換、ビニング、ラベルエンコーディングなど
特徴量の選択
(Feature Selection)
・相関係数、情報利得、Lassoなどで重要な特徴量を選定
・不要な特徴量を除去して過学習を防止
モデル学習
(Model Training)
・選定した特徴量を使ってモデルを構築
・学習アルゴリズムに応じて特徴量の影響が変化
モデル評価と特徴量の再設計・精度・再現率・F1スコアなどで評価
・特徴量の改善点を洗い出し、再設計
本番環境への導入とモニタリング・特徴量の生成ロジックをパイプライン化
・データの変化に応じて特徴量を更新

[手法一覧]
欠損値処理・平均・中央値補完df.fillna(df.mean())
・KNN補完:近傍データから推定
・欠損フラグ追加:欠損の有無を新たな特徴量に
カテゴリ変数の変換ワンホットエンコーディング:カテゴリを0/1のベクトルに変換。機械学習を使う際の前処理の1つ。
たとえば、 “性別” という特徴量は、男 / 女の2種類の値をもつ。これをカテゴリ変数と呼ぶ。しかし値が文字になっているため、そのままだと機械学習の学習器に入れることができないため、”オリジナルの特徴量”_”値” で新しくヘッダを作り、値を 1 or 0 で表現することで、機械学習の学習器に入れることが可能となる。この新しく 1 or 0 で表現する方法を、one-hot エンコーディングという。
ラベルエンコーディング:カテゴリを整数に変換
ターゲットエンコーディング:目的変数の平均でカテゴリを数値化
数値変数の変換標準化(Zスコア):平均0・分散1に変換
・正規化(Min-Max):0〜1の範囲にスケーリング
・対数変換np.log1p(x)でスケール圧縮
外れ値処理IQR法:四分位範囲で検出
・Zスコア法:標準偏差から逸脱を検出
・外れ値フラグ化:外れ値かどうかを特徴量に
時系列データの特徴量化ラグ特徴量:過去の値を現在の特徴に
・移動平均・差分:トレンドや変化量を抽出
・曜日・月・時間帯:周期性の抽出
テキストデータの処理Bag-of-Words / TF-IDF:単語頻度ベース
・Word2Vec / BERT:意味ベースの埋め込み
・文字数・単語数・記号数:構造的特徴量
特徴量の組み合わせ・生成交互作用項:例:売上 × 広告費
・合成特徴量:例:年月
・条件付き特徴量:例:雨の日の売上
次元削減・選択PCA(主成分分析)
Lasso / Ridgeによる選択
・相関係数・情報量による選択

●Min-Max正規化

データ全体を最小値0~最大値1の範囲に変換する方法。機械学習では、学習時と予測時でデータのスケールを揃えることが非常に重要であり、そのためにMin-Max正規化などの手法が一貫して適用される必要がある

・正規化の目的: データのスケール(単位)を扱いやすいものに整えること。
・一貫性の重要性: モデルの予測精度を保つため、学習データと本番(予測)データで同じ方法・同じ統計値(最小値と最大値)を使って正規化する必要がある。

※Glue DataBrewの活用: このツールを使うと、学習データから計算した最小値・最大値の統計情報を保存し、本番データにも再利用できるため、一貫した前処理が保証され、データスキュー(データの偏り)を防ぐことができる。

過学習の防止方法

早期停止

学習が十分に進み、それ以上やると逆に性能が落ちそうになる一番良いタイミングで、賢くトレーニングをストップさせる手法。トレーニングを進めながら、モデルの性能を別途用意した「検証データセット」で常に監視します。そして、検証データセットに対する性能が向上しなくなった、あるいは悪化し始めた時点で、トレーニングを自動的に終了させる。

[メリット]

  • 過学習の防止: モデルの性能が最大化された最適なタイミングで学習を止められる。
  • 時間とコストの節約: 無駄なトレーニングを続けることを防ぎ、計算時間を短縮できる。
ドロップアウト

モデルのトレーニング中に、各層のニューロン(ノード)を一定の確率でランダムに無効化(一時的に無視)しながら学習を進める手法。この処理により、モデルが特定のニューロンや特徴の組み合わせに過度に依存することを防ぐ。
ネットワークは、より頑健で冗長性の高い表現を学習するようになり、未知のデータに対する予測性能である「汎化性能」が向上する。過学習を防ぐための効果的な「正則化」の手法として広く利用されている。

推論(予測)

学習済みの機械学習モデルに新しいデータを入力し、予測結果を得るプロセス。「学習」はデータから知識やパターンを学び、「推論」は学習済みの知識を使って新しいデータに予測や判断を行うプロセス。学習はモデルを「作る」段階、推論は作ったモデルを「使う」段階と考えることができる。

以下、推論処理の方式の種類。

[サポートされている出力形式]

application/json , application/x-recordio-protobuf , text/csv

モデルタイプ出力内容説明
回帰モデル (regressor)score数値的な予測値(例:価格、温度など)
分類モデル
(binary_classifier, multiclass_classifier)
score, predicted_lascoreは予測の確信度、predicted_labelは予測されたクラス(例:スパム or 非スパム)
推論方式特徴主な用途
同期推論入力→即座に出力を待つ
⇒小規模モデル、リアルタイム応答が必要な場面
リクエストに対して即座にレスポンスを返す。リアルタイム性が高いが、待機時間が発生しやすい。
チャットボット、音声認識、リアルタイム制御
非同期推論入力→処理中に他の作業→後で出力を受け取る
⇒大規模モデル(GPT、BERT、画像生成モデルなど)
画像生成、長時間推論、バッチ処理
サーバーレス推論インフラの管理(サーバーの選択、設定、スケーリングなど)不要で機械モデルをデプロイ。
・トラフィックの量に応じて、必要なコンピューティングリソースを自動で起動・停止
 ※CPUバースト用途に利用されることが多い
MaxConcurrency(同時実行リクエスト数)を1に設定することで、同時リクエスト数を制限できる。
使用用途:予測する頻度が低い、トラフィックが断続的・予測不能なユースケースに最適。
コスト:従量課金制。リクエストがない時はリソースをゼロまでスケールダウン。(イベント駆動)
API連携、イベントベース処理、軽量推論
バッチ推論複数の入力をまとめて一括処理。効率的だがリアルタイム性は低い。レコメンド、ログ解析、定期処理
ストリーム推論データストリームに対して継続的に推論。低レイテンシ処理に強い。IoT、センサーデータ、金融取引監視
オンデバイス推論モバイルやエッジデバイス上で推論。通信不要で高速。スマホアプリ、ロボット、AR/VR

●XG Boost(eXtreme Gradient Boosting)

勾配ブースティングを効率的に実装した オープンソースの機械学習アルゴリズム 。「弱いモデル(主に決定木)」を多数組み合わせて「強い予測モデル」を作る アンサンブル学習手法 の一種。

※簡単なイメージ
1本の決定木は「弱い予測器」だが、たくさんの木を「順番に」「誤差を修正しながら」作り足していくことで、精度の高い「強い予測器」を構築する。

ディシジョンツリー
(決定木)
データを段階的に分割し、分類や予測を行うシンプルなアルゴリズム。
max_depth は決定木の深さを制御するパラメータ。
・値が大きいとモデルが複雑になり過学習のリスクが高まる。
・値を小さくすると複雑さが抑えられ、過学習を防止できる。
・適切な max_depth を選ぶためにはクロスバリデーションが有効。
・適切に制御することでモデルの汎化性能(未知データへの予測精度)が向上する。
※補足・決定木の深さ(max depth):木の複雑さを制御。
・隠れ層の数とユニット数(neural network):モデルの表現力に影響。
正則化係数(L1/L2):過学習を防ぐためのペナルティ。

[特徴]

高い精度多くの機械学習コンペティション(Kaggleなど)で優勝に使われるほど精度が高い。
高速処理並列処理やメモリ効率を工夫しており、大規模データでも学習が速い。
柔軟性回帰、分類(二値・多クラス)、ランキング問題など幅広いタスクに対応。
過学習への対策max_depthsubsample など多数のハイパーパラメータでモデルの複雑さを制御できる。
アルゴリズム・弱いモデルを組み合わせて正確な予測を行うアンサンブル学習手法。
・多様なデータ型や分布、関係に対応可能で、ハイパーパラメータの微調整もしやすい。

[XGBoost ハイパーパラメータ分類表(完全版)]
分類パラメータ説明
ツリーベースモデル用
(gbtree / dart)
max_depth木の最大深さ
min_child_weight子ノードに必要な最小サンプル重み
gamma分割に必要な損失減少量(大きいほど単純な木になる)
subsample学習に使うデータの割合
colsample_bytree各木の構築に使う特徴量の割合
colsample_bylevel各階層で使う特徴量の割合
colsample_bynode各ノード分割で使う特徴量の割合
ブースティング全般learning_rate(eta)各木の寄与度(学習率)
n_estimators作成する木(モデル)の数
boosterモデル種類(gbtree, gblinear, dart
lambda(reg_lambda)L2 正則化項
alpha(reg_alpha)L1 正則化項
scale_pos_weightクラス不均衡データへの重み付け
学習タスクobjective学習タスク(例: 回帰、分類、多クラス分類)
eval_metric評価指標(例: rmse, logloss, auc)
seed乱数シード
DART 特有sample_typeサンプリング方式
normalize_type正規化方式
rate_drop木を間引く割合
skip_dropドロップをスキップする確率
線形モデル用
(gblinear)
updater学習アルゴリズム(例: shotgun, coord_descent
feature_selector特徴選択手法(例: cyclic, shuffle, random, greedy, thrifty
top_k特徴選択で利用する上位 k(greedy のとき有効)

Sage Maker

機械学習の構築。すべての開発者とデータサイエンティストに機械学習モデルを迅速に構築、トレーニング、デプロイできる手段を提供。PyTorchなどの主要なNL(自然言語)フレームワークに対応した事前作成済みコンテナイメージを提供しており、ユーザーは自作のPythonスクリプトをそのまま実行できる。

項目リアルタイム推論
[リアルタイム]
サーバーレス推論
[リアルタイム]
非同期推論
[マイクロバッチ]
バッチ変換
[バッチ]
リアルタイムリアルタイムマイクロバッチバッチ
特徴常時稼働するエンドポイント。低レイテンシ・高スループット対応。インフラ管理不要。使用時のみ課金。長時間処理や大きなペイロードに対応。大量データを一括処理。非同期で実行。
実行モード同期同期ハイブリッド(同期/非同期)非同期
予測レイテンシー秒以下秒以下数秒~数分不定
実行頻度可変可変可変可変/固定
呼び出しモード連続ストリーム/APIコール連続ストリーム/APIコールイベントベースイベント/スケジュールベース
推論データサイズ小(<6MB)小(<6MB)中(<1GB)大(>1GB)
ユースケースリアルタイムで推論結果が必要なケース、例えば、商品レコメンドなどたまにしか推論しないケース、例えばドキュメントからのデータの抽出や分析など中規模のデータに対して非同期で推論ケース。例えばコンピュータビジョン、物体検知など大規模のデータに対して非同期で推論するケース。例えば、NLPなどデータサイズや推論処理が長いケースなど

[Sage Maker 非同期推論について]

ペイロードサイズが大きく (最大 1 GB)、処理時間が長い (最大 1 時間)、ほぼリアルタイムのレイテンシー要件があるリクエストを処理できる。推論リクエストが処理されるまでの間、受信リクエストを「非同期キュー」に保存し、完了後に結果を S3 バケットに保存することで、処理が完了するのを待つ必要がなくなる。処理するリクエストがない場合、インスタンスカウントをゼロに Auto Scaling することによりコストを節約できるため、エンドポイントがリクエストを処理している場合にのみ料金が発生します。

・スケーリングポリシーを設定することで、リソースの使用状況に応じた「Auto Scaling」が可能となる。

機能性
スクリプト
モード
オンプレミス環境で作成した既存のスクリプトを最小限の変更で実行できる。これにより、独自のドメイン知識を反映したモデルを迅速にAWS上へ移行でき、運用コストや学習の手間を最小限に抑えられる
「スクリプトモード」とは、SageMakerで用意されたアルゴリズムやコンテナを使うのではなく、独自のコンテナやライブラリを利用して学習処理を記述する方法のことである。
バッチ変換大規模なデータセットに対する非同期推論を効率的に処理するためのサービスであり、ジョブのスケジュール管理とスケーラブルな推論をサポートしている。この仕組みにより、要求された非同期処理要件を満たすことができる。
ライフサイクル設定(LCC)SageMakerのノートブックインスタンスが作成または起動されるたびに、あらかじめ用意したシェルスクリプトを自動的に実行させる。すべてのノートブックインスタンスに対して一貫した設定(パッケージのインストール、セキュリティ設定など)を自動で適用でき、手動での作業や運用上の負担を大幅に削減できる。
バリアント
機能
1つのエンドポイントに複数のモデルや構成を同時にデプロイして、柔軟な推論運用を可能にする仕組み。特にA/Bテストやモデル比較に非常に有効。
・Production Variant(バリアント)
エンドポイントにデプロイされるモデルの構成単位。モデル名、インスタンスタイプ、インスタンス数、トラフィック重みなどを定義する。
・マルチバリアントエンドポイント
複数のバリアントを同時にホストするエンドポイント。トラフィックを分散して複数モデルを評価できる。
・TargetVariant
推論リクエスト時に、特定のバリアントを明示的に指定するためのパラメータ。
シャドウ
テスト
ユーザーからのリクエストを、本番環境で稼働中の機械学習モデル(本番稼働用バリアント)と新しいモデル(シャドウバリアント)の両方に送信することでパフォーマンスを実際のトラフィックで評価するための機能。
ユーザーへの影響なし: ユーザーには本番稼働中モデルからのレスポンスのみが返されるため、ユーザー体験を損なわずテストが可能。
データ収集: 新しいモデルのレスポンスは、S3などの内部的な場所に保存される。保存されたデータを分析することで、本番環境のデータを使って新しいモデルのパフォーマンス(推論のレイテンシーや正確性など)を評価し、本番環境にデプロイしても問題ないかを確認。
マネージドウォームプール起動時間の短縮: 一度使ったインフラをすぐに再利用できるように待機させておくことで、次からのジョブの開始を速くする機能。トレーニングジョブに必要なインフラストラクチャを事前に準備しておき、ジョブが完了した後もそのインフラを保持。
この機能はSageMakerによって完全に管理されるため、ユーザーがインフラのセットアップや管理について負担を感じる必要はない。
分散
トレーニング
分散トレーニングで、インスタンス間の通信遅延(レイテンシー)を減らすためには、以下の2点によりトレーニング時間の短縮通信コストの削減につながる。
インスタンスを同じ場所に配置する
トレーニングに使うすべてのインスタンスを、同じVPCサブネットに配置することで、ネットワーク経路が短縮され、通信のオーバーヘッドが減る。
データとインスタンスを同じ場所に配置する
トレーニング用のデータを、インスタンスが稼働している同じAWSリージョンおよびアベイラビリティーゾーンに保存。これにより、トレーニング中のデータ転送時間が最小限になり、ネットワーク効率が向上する。

[暗号化]

暗号化の対象トレーニングクラスター内のノード間の通信は暗号化が可能。
暗号化されない通信
(サービスプラットフォーム内部)
サービスコントロールプレーンとトレーニングジョブインスタンス(顧客データではない)間のコマンドとコントロールの通信。分散処理ジョブや分散トレーニングジョブのネットワーク間のノード間通信。バッチ処理のためのノード間通信。
エンドポイント

動作:エンドポイントにリクエストを送ると、モデルが推論を実行し、結果を返す。
目的:トレーニング済みモデルをホスティングし、リアルタイムまたは非同期で推論リクエストを受け付ける。

[エンドポイントの種類]

エンドポイント種別特徴ユースケース
リアルタイム推論エンドポイント常時稼働。低レイテンシで即時応答。Webアプリ、API連携、チャットボットなど
非同期推論エンドポイント長時間処理や大きなペイロードに対応。SNS通知も可能。画像生成、音声処理、大規模データ分析など
バッチ変換
(Batch Transform)
エンドポイント不要。一括処理に特化。オフライン予測、事前データ処理
サーバーレス推論エンドポイントインフラ管理不要。使用時のみ課金。トラフィックが断続的なアプリケーション
マルチモデルエンドポイント複数モデルを1つのエンドポイントで管理。モデル切り替えが頻繁なシステム
マルチコンテナエンドポイント異なるコンテナを同時ホスト可能。複数フレームワークの混在処理
推論パイプラインエンドポイント前処理・推論・後処理を連結。複雑な処理フローやデータ変換付き推論
推論コンポーネント
(Inference Components)
生成AI向けの新機能。リソース効率化。Llama 3 や Mixtral などの大規模モデル推論

非同期推論では、結果はS3に保存され、SNSで通知を受け取ることも可能。

●リアルタイム推論エンドポイント

・利用シーン:リアルタイム、インタラクティブ、低レイテンシーが求められる推論に最適。
Auto Scaling 対応:リクエスト数や需要の変動に応じてインスタンス数を自動調整。
・最適化された応答:リクエストサイズ(1KB~3MB)に対応し、低レイテンシーで推論。
マネージドサービス提供:高可用性を確保し、運用負担を軽減。

●マルチモデルエンドポイント

複数の機械学習モデルを単一のエンドポイントでホスティングできる機能。これにより、推論コストの削減と運用効率の向上が可能になる。

[特徴と利点]

単一エンドポイントで複数モデルを管理モデルごとに個別のエンドポイントを作成する必要がなくなる
コスト効率が高い使用頻度の低いモデルも同じインスタンスでホスティングできるため、リソースの無駄が減る
スケーラブルな設計モデル数が増えてもエンドポイントの数は変わらず、運用が簡素化される
CPU/GPU 両方に対応高速な推論が必要なモデルには GPU を割り当て可能

●SageMaker 推論コンポーネント

機能: 推論コンポーネントを利用することで、1つのSageMakerエンドポイントに対して複数のモデルを分離してデプロイできます。
メリット: リアルタイム応答を必要とするユースケースに適しており、柔軟かつ高可用な推論環境を実現できる。

[スケーリングの柔軟性]

  • モデルごとに異なるスケーリングポリシーを適用できます。
  • 推論コンポーネントの minReplicaCount を $1$ 以上に設定することでコールドスタートの発生を防ぎ、少なくとも1つのインスタンスを常に稼働させることが可能。
  • エンドポイントに紐づくコンポーネントごとに Auto Scaling ポリシーを設定できるため、モデルの負荷に応じた拡張性が確保されます。

アルゴリズム

SageMakerの組み込みアルゴリズムは、扱うデータの種類や解決したい課題に応じて、以下のようなカテゴリに分けられている。

表形式データ
(Tabular)
売上予測や顧客の解約予測など、表形式のデータを扱うためのアルゴリズム。
・XGBoost:非常に人気があり、高い予測性能を持つ勾配ブースティングアルゴリズム。
Linear Learner:線形回帰やロジスティック回帰に使用される。入力された高次元ベクトル x とラベル y のペアから、線形関数または線形しきい値関数を学習し、xy の近似値にマッピングする。クラス不均衡を取り扱う。
LightGBM:XGBoostと同様に勾配ブースティングの一種で、高速に動作するのが特徴。
Factorization Machines:クリック率予測や推薦システムに適している。
テキスト
(Text)
自然言語処理(NLP)に関連するタスクのためのアルゴリズム群。
BlazingText:Word2Vec(単語のベクトル化)やテキスト分類を高速に実行する。
Sequence-to-Sequence:機械翻訳や文章の要約などに使われる。
Latent Dirichlet Allocation (LDA):文章のトピックを抽出するのに用いられる。
Object2Vec:テキストだけでなく、様々なオブジェクトをベクトル化できる汎用的なアルゴリズム。
コンピュータビジョン (Vision)画像や動画を扱うためのアルゴリズム。
・Image Classification::画像をカテゴリに分類する。
Object Detection:画像内の物体の位置と種類を特定する。
・Semantic Segmentation:画像のピクセル単位で、それが何であるかを分類する。
時系列
(Time-series)
株価や気象データなど、時間とともに変化するデータを予測するためのアルゴリズム。
DeepAR Forecasting:複数の関連する時系列データを用いて、精度の高い予測を行う。
教師なし (Unsupervised)正解ラベルがないデータから、パターンや構造を見つけ出すためのアルゴリズム。
K-Means:データをいくつかのクラスター(グループ)に分割する。
Random Cut Forest (RCF):データの中から異常な値(異常検知)を見つけ出す。
Principal Component Analysis (PCA):データの特徴を要約し、次元を削減するために使われる。
オブジェクト検出アルゴリズム画像内に存在する複数の物体(オブジェクト)の「種類」と、その具体的な「位置(座標)」を特定するアルゴリズムです。検出された各オブジェクトは、その位置を示す四角い囲み(バウンディングボックス)で表示されます。
単一のディープニューラルネットワークを使用した教師あり学習アルゴリズムです。
SSD(Single Shot MultiBox Detector) というフレームワークを採用しています。
ベースネットワークとしてVGGResNetをサポートしています。
ImageNetデータセットで事前トレーニングされたモデルを利用することも可能です。

target_precision の詳細
主に binary_classifier に使用する。分類モデルが指定した精度(Precision)を達成するようにFalse Positive を減らす方向に予測しきい値を調整する。
注意点:指定値が必ず達成されるわけではなく、Recallとのトレードオフが発生する可能性あり

メトリクス / パラメータ

[メトリクス]

メトリクスCloudWatch Namespace主用途適用対象備考
ModelSetup
Time
AWS/
SageMaker
サーバーレス & バッチ推論でコンテナ起動〜ロード完了に要した合計時間を計測単一モデル/サーバーレスエンドポイント値が高いと cold-start が原因のレイテンシー増加と判断できる
ModelLoading
WaitTime
AWS/
SageMaker
Multi-Model Endpoint で、同一コンテナが別モデルをロードし終えるまでリクエストが待機した時間を計測MME(複数モデル同居) 専用サーバーレス単一モデルでは発生せず、起動遅延とは無関係
Model Monitor
品質メトリクス
AWS/
SageMaker
入力分布・予測結果の品質ドリフトやバイアスを検出エンドポイント全般レイテンシーではなくデータ品質の監視目的。起動時間は出力されない

[パラメータ]

・EnableInterContainerTrafficEncryption
分散トレーニングにおけるノード間通信をTLSで保護できる。

リソース
リソース目的主な特徴制限
AWS::SageMaker::ModelAmazon SageMaker でホストされる機械学習モデルを定義。推論用のモデルアーティファクトやコンテナイメージへのリンクを提供。エンドポイントやその編成を管理しない。
AWS::SageMaker::Endpoint機械学習モデルをホストして予測を提供するエンドポイントを作成。デプロイされたモデルを使用して予測を呼び出すためのエントリーポイントを提供。基盤となるモデルを作成または管理できない。
AWS::SageMaker::NotebookInstanceモデルの構築とテスト用のインタラクティブな開発環境を提供。モデル構築や実験用の Jupyter Notebook をサポート。本番環境のモデルホスティングや提供には適していない。
AWS::SageMaker::Pipelineデータ準備、トレーニング、デプロイなどの機械学習ワークフローを自動化。機械学習ワークフローの一連のステップを定義。推論用のモデルを直接ホスティングまたは提供しない。

サービス連携

[セルフサービスで安全なデータサイエンス]
Service Catalog、SageMaker、Key Management Service (KMS) を連携させることで、データサイエンティストが煩雑な設定に触れずに、安全なセルフサービス環境で機械学習を活用する方法が紹介されている。

  • 出力先の Amazon S3 バケット も KMS キーで暗号化し、モデルの成果物の安全性を確保。
  • AWS Service Catalog を使って、あらかじめ設定された KMS キー付きの製品を提供し、ノートブックインスタンスのストレージを暗号化。
  • セキュリティチームやインフラチームが事前に設定した製品で、統制のとれた環境を実現。
  • SageMaker のノートブックやトレーニングジョブ作成時に、KMS キー ID を指定して暗号化を適用。

つまり、AWS の複数サービスを活用することで、コストとセキュリティの両立を図りながら、柔軟かつ安全にデータサイエンスを展開できるようにしている

[参照サイト]

◆派生サービス機能

[情報を展開する]

Autopilot

機械学習の専門知識がなくても、データセットから機械学習モデルの構築、トレーニング、デプロイのプロセスを自動化する機能(AutoML)。データの分析・前処理から、モデルの選択、ハイパーパラメータの最適化、デプロイまでを自動で実行。

[実行する主なタスク]

  • データ分析と前処理
  • モデルの選択
  • ハイパーパラメータの最適化
  • モデルのトレーニングと評価
  • モデルのデプロイ

主な機能と利点
ワークフローの自動化データの前処理、特徴量エンジニアリング、モデルのトレーニング、チューニングといった一連のプロセスを自動で実行
工数の削減ユーザーは最小限のコード作成で、高品質な予測モデルを迅速に得る
パフォーマンス評価モデルの性能を評価し、レポートとして提供するため、開発の手間を大幅に削減

サービス連携
SageMaker JumpStart専門知識が不要: JumpStartで土台となるモデルを選び、Autopilotでトレーニングやチューニングを自動化するため、データサイエンスの深い知識がないユーザーでも高性能なモデルを構築できます。
効率化とコスト削減: コーディングを最小限に抑え、ワークフロー全体を自動化することで、効率的かつ効果的なソリューションを実現します。

Batch Transform

大量のデータに対して一括で推論(予測)を行うための機能。リアルタイムではなく、事前に用意したデータをまとめて処理するのに向いている。

[特徴]

バッチ処理向けリアルタイム推論ではなく、事前に用意したデータを一括で処理。
入力形式CSV、JSON Lines、または画像ファイルなど。
出力形式予測結果を S3 に保存。
スケーラブル複数のインスタンスで並列処理が可能。

Canvas

プログラミング(コーディング)なしで、クリック操作だけで機械学習の予測モデルを構築できるツール。顧客がサービスを解約する可能性(カスタマーチャーン)の予測在庫の計画や価格の最適化テキストや画像の分類文書からの情報抽出など。

Apache Parquet形式

データを列ごとに保存する列指向のストレージ形式であり、大量のデータを効率的に圧縮・処理するために設計された、高性能なファイル形式。

[なぜParquet形式のサポートが重要なのか]

ビジネスユーザーでも下記により大規模なデータを、より高速かつ効率的に扱って、精度の高い機械学習モデルを自分で作れるようになった。

  • 分析に必要な列のデータだけをピンポイントで読み込めるため、無駄なデータの読み込みがなくなり、処理が非常に高速。
  • データ処理時間を最小限に抑えられる。特に大量のデータを扱う場合、この高速化の恩恵は非常に大きく、モデルのトレーニングなどが素早く完了する。

機械学習モデルの利用

SageMaker Canvas のユーザーが機械学習モデルを利用するための前提条件と、そのモデルが必ず 「SageMaker Model Registry」に登録されている必要がある

  • Canvas を Model Registry と統合することで、モデルのバージョン管理やアクセス制御が可能になる。これにより、Canvas ユーザーに共有されるモデルが整理され、他の SageMaker サービスとの連携もスムーズになる。
  • SageMakerの外部でトレーニングしたモデルでも、Model Registryに登録すればCanvasユーザーがインポートして予測に利用できる。

※外部で開発されたモデルを利用するには、モデルアーティファクトが保存されている S3 バケットへのアクセスが必要。このアクセス権限が設定されていない場合、Canvas ユーザーはモデルアクセスにアクセスできず、モデルのロードやチューニング操作を実行できない。S3バケットのアクセス制限を設定する際は s3:Getobject 権限を含む適切なIAMポリシーを設定する必要がある。

Clarify

機械学習モデルの入力データおよび推論結果に潜むバイアスや精度低下の原因となるデータ内の傾向を評価・特定。これにより、ユーザー層毎の予測パフォーマンスのばらつきや不公平な結果の原因を分析し、改善するための具体的な洞察を得ることができる。

分析機能

機械学習モデルに対して以下の2つの観点から分析を行う。

バイアス検出
(Bias Detection)
・データセットやモデルに潜在するバイアス(性別・年齢・人種など)を検出
・公平性の観点からモデルの健全性を評価
説明可能性(Explainability)・モデルの予測に対して、どの特徴量がどのように影響したか可視化
・SHAP値(SHapley Additive exPlanations)を用いた詳細な分析

主な機能とオプション
機能カテゴリ機能名説明
バイアス分析Pre-training bias学習前のデータセットに潜むバイアスを検出
Post-training bias学習後のモデル出力に潜むバイアスを検出
説明可能分析SHAP値分析各特徴量が予測に与えた影響を定量化
グローバルSHAP全体的な特徴量の重要度を表示
ローカルSHAP個別予測に対する特徴量の影響を表示
レポート出力Bias Reportバイアスの統計と可視化
Explainability ReportSHAP値に基づく特徴量の影響レポート
統合機能SageMaker StudioGUIベースでClarifyジョブを作成・実行
SageMaker PipelinesMLOpsパイプラインに組み込み可能

Data Wrangler

機械学習(ML)で使うためのデータの準備から異常検出、特徴量エンジニアリングまでの一連のデータ準備プロセスを効率化し、迅速かつ正確に実行できるようになる。また結果の可視化を単一のツールで効率的に実行。特に、データの不均衡や特徴量間の相互依存性といった問題に、「組み込みの異常検出機能」や「可視化機能」を用いて迅速に対応。

主な機能
データの統合(Import)複数の異なる場所にあるデータをインポートし、1つのデータフレームにまとめることができます。S3, Athena, Redshift, Snowflake, Databricksなど、多様なデータソースに接続してデータをインポートできます。
データクレンジングデータの「お掃除」機能です。欠けている値の補充、重複データの削除、極端におかしい値(外れ値)の処理などができます。
エンリッチメント(データ加工)変換 (Transform)既存のデータをもとに、新しいデータ項目(変数)を追加したり、データを変換したりできます。テキストや日付の処理、欠損値の埋め込み、カテゴリ別エンコーディングなど、300以上の組み込み変換機能を使用してデータセットをクリーンアップし、特徴量を作成できます。
簡単な操作とカスタマイズ性たくさんの「組み込みの変換機能」が用意されており、コーディングなしで直感的に操作できます。
さらに高度な処理が必要な場合は、PySparkやPython、pandasなどを使って独自のカスタム変換を追加することも可能です。
効率的な処理 データフロー (Data Flow)一度の操作で複数の列をまとめて削除するなど、効率的に作業を進められます。
ただし、「数値の処理」や「欠損値の処理」のように、1つの列に対してのみ適用できる機能もあります。GUIを使用して、さまざまなデータソースの結合や、データセットに適用する変換の定義など、一連のデータ準備手順(MLパイプライン)を構築できます。
データインサイトの生成 (Generate Data Insights)「データ品質とインサイトレポート」により、データ品質を自動的に検証し、異常を検出します。
分析 (Analyze)散布図やヒストグラムなどの可視化ツールや、ターゲット漏洩分析などの機能を用いて、データ内の特徴や相関性を理解できます。
エクスポート (Export)準備が完了したデータワークフローを、Amazon S3バケット、Amazon SageMaker Pipelines、Amazon SageMaker Feature Store、またはPythonスクリプトとしてエクスポートできます。
バランスデータ

データの不均衡を解決するための操作。少数派クラスをオーバーサンプリング(過剰に抽出)して、クラスの分布を均一にすることができます。GUIベースで直感的に操作できるため、高品質なデータを迅速に準備できます。

また、様々なデータソース(Amazon S3やオンプレミスのMySQLなど)と簡単に統合でき、トレーニング全体のパイプラインを一元管理できるため、エンジニアはモデルのトレーニングに集中できます。

ランダムオーバーサンプリング少数カテゴリのサンプルをランダムに複製します。例えば、不正検出のケースで不正ケースが全体の10%しかない場合、このデータを8回複製して不均衡を是正します。
ランダムアンダーサンプリング多数派カテゴリからサンプルをランダムに削除し、目的のサンプル割合を取得します。
Synthetic Minority Oversampling Technique (SMOTE)過小評価されているカテゴリのサンプルを使用して、新しい合成マイノリティ(少数派)サンプルを補間します。
カテゴリ別エンコーディング
ワンホットエンコーディング各カテゴリ値を「0」または「1」のバイナリ形式で表現します。例えば、「A」「B」「C」はそれぞれ [1,0,0] [0,1,0] [0,0,1] のように変換されます。
ターゲットエンコーディングカテゴリ変数を、目的変数の統計値(平均値など)に基づいて数値に変換します。カテゴリが多い場合や、カテゴリ間に順序性がある場合に有効です。
ラベルエンコーディング各カテゴリに整数を割り当てます(例:A=1, B=2, C=3)。順序を持つカテゴリデータに適しています。
オプション

[基本的なデータ変換オプション]

オプション名説明
FirstK指定した行数のデータを抽出(サンプリング)
Splitデータを訓練・検証・テスト用に分割(ランダム・順序・層化)
Join複数のデータセットを結合(Inner, Left, Right, Full Outer)
Filter条件に基づいてデータを絞り込み(数値・文字列・日付・複合条件)
Drop Column不要なカラムを削除
Rename Columnカラム名の変更
Change Data Typeデータ型の変換(文字列→数値など)
Corrupt image(ノイズ付与)画像データ(JPEG、PNGなど)に対して、破損や読み込みエラーを検出・修復するための前処理
Impulse NoiseSageMaker Data Wrangler における「Impulse Noise」は、画像データの前処理ステップの一つで、突発的な画素異常(塩胡椒ノイズなど)を検出・除去する

[特徴量エンジニアリングオプション]

カテゴリオプション用途
カテゴリ変数One-hot encoding, Label encodingカテゴリ変数の数値化
数値変換Min-max scaling, Z-score normalization正規化処理
テキスト処理TF-IDF, Word embeddingsテキストの特徴量化
時系列処理ラグ特徴量、日付分解時系列データの抽出
欠損値処理平均値補完、前方補完欠損値の補完

[分析・可視化オプション]

オプション名説明
Data Quality & Insights Report欠損値・外れ値・ターゲットリークの検出
Quick Model簡易モデルによる予測力の確認
Feature Summary各特徴量の予測力スコア表示
ターゲット漏洩解析モデルに悪影響を与える特徴量の検出

[エクスポートオプション]

エクスポート先説明
Amazon S3変換済みデータの保存
SageMaker Pipelinesモデル学習パイプラインへの統合
Feature Store特徴量の一元管理
Python Scriptカスタムワークフロー用コード出力

Debugger

機械学習モデルのトレーニング中に発生する問題を自動で検知し、モデルの内部状態を可視化できるツール。必要に応じて、カスタムルールを定義してより細かい検証も可能。精度が上がらない原因調査やモデルの挙動をリアルタイムで監視したいときに有効

[対応フレームワーク]
TensorFlow , PyTorch , MXNet , XGBoost など

機能性
モデル内部の
状態を記録
重み、勾配、各レイヤーの出力、lossなどをS3に保存できる。
自動問題検知「勾配消失」や「lossが減らない」など、事前定義されたルール(またはカスタムルール)に基づいて問題を検出する。
TensorBoard
連携
TensorFlow以外のフレームワーク(PyTorchなど)でも、TensorBoard形式でログを出力して可視化できる。
スクリプトの
変更不要
SageMakerの対応コンテナを使えば、トレーニングスクリプトを変更せずにDebuggerを有効化できる。

●Tensor Board

TensorFlowに付属する可視化ツールで、以下のような情報をグラフィカルに表示できる。
・GPU/CPUの使用状況
・損失関数や精度などのスカラー値の推移
・特徴マップや畳み込みカーネルなどの画像データ
・各層の重み・バイアスのヒストグラム
・モデルの計算グラフ(順伝播・逆伝播の流れ)
・埋め込みベクトルの分布(例:Word2Vec)
・ハイパーパラメータの探索結果

Experiments

複数のハイパーパラメータやアルゴリズムを試す反復的なML開発プロセスに対して、MLモデルのトレーニングや評価における実験の記録・整理・比較を支援する。

[主な機能]

エクスペリメントの作成プロジェクト単位で実験をグループ化。
トライアルとトライアルコンポーネント各トレーニングジョブや評価ステップを個別に記録。
自動トラッキング入力データ、パラメータ、結果などを自動で記録。
可視化と比較SageMaker Studioで実験結果をグラフ表示し、パフォーマンスを比較。
再現性の確保過去の実験履歴を保存し、モデルの再現性を担保。

Future Store

機械学習モデルのための特徴量を一元管理するためのフルマネージドサービス。特徴量(Feature)とは、MLモデルに入力する意味のあるデータのこと。Feature Storeはそれらを保存・共有・管理するための専用リポジトリ。

主な機能
特徴量グループの作成特徴量を論理的にまとめた「Feature Group」を定義し、スキーマに基づいて管理。
オンラインストアリアルタイム予測向け。最新の特徴量を高速に取得可能。
オフラインストアバッチ学習や分析向け。履歴データを保持。
Point-in-time Join特定の時点における特徴量を正確に結合する機能。学習と推論の整合性を保つのに重要。
特徴量の再利用と共有チームやプロジェクト間で特徴量を再利用できるため、重複作業を削減。
トレーニング・推論のスキュー防止学習時と推論時で異なる特徴量が使われることによる精度低下を防ぐ。

Future Group

機械学習モデルに使う特徴量を論理的にまとめたデータの集合体。特徴量グループは、MLモデルのトレーニングや推論に使う特徴量(Feature)をまとめたもの。1つのグループは、共通のスキーマ(列名とデータ型)を持つレコードの集合。Feature Storeに保存する際の基本単位であり、特徴量の作成・取得・共有・管理を行うための枠組み。

[構成要素]

特徴量定義各特徴量の名前とデータ型(整数、文字列、浮動小数点など)を指定。
イベントタイム各レコードに関連づけられる時刻情報。Point-in-time Joinなどで重要。
ストレージタイプオンラインストア:リアルタイム推論向け。最新の特徴量を高速取得。
オフラインストア:バッチ学習や分析向け。履歴データを保存。

Ground Truth

ラベル付きデータセットを作成できる機械学習とともに、Amazon Mechanical Turk、任意のベンダー会社、または社内のプライベートワークフォースのいずれかのワーカーを使用できる。Ground Truth のラベル付きデータセット出力を使用して、独自のモデルをトレーニングできる。Amazon SageMaker AI モデルのトレーニングデータセットとして出力を使用することもできる。

ヒューマンインザループ(HITL)のラベリングタスクを支援するために設計されている。

JumpStart

様々な問題に対応できる、学習済みのオープンソースモデル。ユーザーはこれを基盤として、機械学習をすぐに始めることができる。デプロイ、微調整、評価までを一貫して行えるハブのような機能。これにより、ローコード・ノーコードの手法を容易に採用できる。

●事前トレーニング済のモデル

機械学習を容易に始めるための、幅広い問題に対応する「事前トレーニング済みのオープンソースモデル」を提供する。更新された「Studio エクスペリエンス」のJumpStartランディングページを通じて、一般的なモデルハブからこれらのモデルをデプロイ、微調整、評価することができる。

・提供されるモデルは、デプロイ前にトレーニングや調整(チューニング)が可能。
・一般的なユースケースのインフラをセットアップするための「ソリューションテンプレート」も提供される。
・SageMaker MLを使用した機械学習用の「実行可能なサンプルノートブック」も含まれる。

連携サービス

[Autopilotとの連携]
Autopilotと併用することで、モデルのトレーニングやチューニングが自動化され、データサイエンスや機械学習の専門知識がなくても高性能なモデルを構築することが可能

Market Place

機械学習モデルやアルゴリズムを簡単に導入・利用できるAWSのプラットフォーム。

事前構築済みのMLモデルや
アルゴリズムを提供
開発者や企業は、すぐに使えるモデルやアルゴリズムを選んで導入できる。
AWS Marketplaceと統合セキュリティ、ネットワーク、ストレージ、データベースなど、他のカテゴリのソフトウェアと同様に、ML関連の製品も一元管理できる。
柔軟なライセンスと価格設定サブスクリプション型や従量課金型など、用途に応じた価格体系が選べる。
簡単なデプロイと管理SageMaker Studioなどの環境から、数クリックでモデルをデプロイ可能。
サードパーティ製品も多数掲載Hugging Face、DataRobot、Algorithmiaなど、外部ベンダーの製品も利用できる。

Model Registry

作成した様々なバージョンの機械学習モデルを、一元的なリポジトリ(保管場所)で整理・追跡・管理するためのサービス。モデルの登録、バージョンの管理、承認やデプロイといったMLモデルのライフサイクル全体を管理する中心的なハブ。AWS内外を問わずモデルの運用が非常に効率的になる。

主な機能
組織全体の標準化とセキュリティ向上
(プライベートリポジトリ)
・モデル管理のカタログ(場所)一元化
「クロスアカウントリソースポリシー」機能を使うことで、組織内に新しいAWSアカウントが増えても保存場所を1つに統一できる。モデルの異なるバージョンを一貫して管理できる。
これまでは主にAWS内のサービス(ECR)に保存されたモデルが、AWS以外のプライベートなDockerリポジトリ(例: 企業内のサーバーなど)に保存されているMLモデルも登録・追跡できるようになった。
・トレーニングデータ連携
S3に保存されたトレーニングデータと連携し、モデルの再トレーニングなどを行う際にセキュアなデータアクセスを保証する。
他のユーザーとのモデル共有開発したMLモデルをこのサービスに登録することで、誰がいつどんなモデルを作ったのかを一覧で管理できる。複数のAWSアカウント間でモデル情報を効率的かつ安全に共有できる。
メタデータの関連付けSageMaker Studioと統合されており、UI上でモデルの状態やメタデータ(付随情報)を簡単に追跡できる。
基本的な構成
Model Group「Model Group」という単位で関連するモデル(モデルパッケージ)を論理的に整理し、運用効率を向上
モデル
パッケージ
個々のトレーニング済みモデルのこと。
モデル
バージョン
Model Groupに新しいモデルパッケージが追加されるたびに、「1, 2, 3…」と自動で割り振られるバージョン番号。

Model Monitor

機械学習モデルの予測精度やバイアス、入力データの品質が時間とともに劣化する「ドリフト」を検出するアラートを設定できる。モデルの再トレーニング、アップストリームシステムの監査、品質問題の修正などのアクションを実行できる。コーディングが不要な Model Monitor のビルド済みモニタリング機能を使用可能。

モニタリング機能

[主な機能]

データ品質モニタリング入力データの分布や欠損値などの変化を検出
モデル品質モニタリング精度や予測分布の変化を検出
バイアスドリフト検出モデルの予測に偏りが生じていないかを監視
Feature Attribution ドリフト特徴量の重要度が変化していないかを監視

[モニタリングの仕組み]

データキャプチャ推論リクエストの入力と出力を S3 に保存。
ベースライン作成トレーニングデータから統計情報と制約条件(constraints.json)を生成。
監視ジョブの設定スケジュールに従ってリアルタイムまたはバッチで監視。
異常検出と通知CloudWatch 経由で違反を検出し、アラートを発報。
ベースライン

モデルが常に最新のデータに適応し、適切な品質を維持するためには、定期的にデータから新しい「ベースライン」を作成し、評価の基準を最新に保つことが重要である

データ品質の基準となるもので、データの統計情報やスキーマ(構造)を定義する。SageMaker Model Monitorは、このベースラインとリアルタイムデータを比較することで、データの異常やドリフト(時間経過によるデータの傾向の変化)を検出する。

新しいベースラインが必要な時モデルを更新した際など、新しいデータ分布が発生して既存のベースラインが現状と合わなくなった場合に、新しいベースラインを作成する必要がある。最新の本番データ(トレーニングデータ)を使って、統計情報とスキーマを抽出し、新しいベースラインを生成する。生成したベースラインをModel Monitorに設定し、今後のデータ品質の評価基準として使用していく。
ベースライン作成の自動化Model Monitorには、CSVやJSON形式のデータから、データのドリフトなどを検出するためのベースラインを自動的に提案・作成する機能が組み込まれている。

ML Lineage Tracking

データ準備からモデルデプロイまで、MLワークフローの各ステップの情報を詳細に記録・追跡(トラッキング)する機能。モデルが「いつ、どのデータで、どのように作られたか」という系統(リネージ)を追跡できるため、監査やコンプライアンス確認に必要な「ガバナンス機能」を提供する。

Pipelines

データ準備、トレーニング、評価、モデルデプロイといった一連のMLワークフロー全体をエンドツーエンドで自動化するためのサービス。機械学習のワークフローを有向非巡回グラフ(DAG)として可視化・管理する機能。これにより、データサイエンティストはワークフロー全体を細かく制御できる。15TBを超えるような大規模データセットも効率的に処理できる。

コールバックステップ

ML の CI/CD パイプライン内で、外部のタスクやジョブをステップとして統合可能になった。コールバックステップが呼ばれるとタスクが開始され、外部からタスク完了を通知する仕組み(タスクトークン)が使える。コールバックステップは Glue ワークフローを起動し、進行状況を EventBridge 経由で監視。Glue ジョブが完了するまでパイプラインは停止し、完了後に次の処理へ進む。これにより、Glue ジョブの出力を効率的にモデル開発のデータ処理フェーズに利用できる。

例:Amazon EMR の Spark ジョブや AWS Glue の ETL ジョブをパイプラインの一部として実行できる。

サービス連携

〇EventBridgeとの連携

MLパイプラインの開始や監視を自動化し、プロセス全体を効率的かつエラーの少ない方法で運用できる。EventBridgeを利用して、SageMaker Pipelinesの実行をスケジュールしたり、特定のイベントをきっかけに自動で開始(トリガー)したりすることが可能。

Serverless Inference

サーバー管理不要でAWSがMLモデルのインフラ管理やスケーリングを自動で行う便利なサービス。「プロビジョニングされた同時実行」を設定すれば、アクセスが集中する時間を予測して事前準備を行い、遅延なく安定したパフォーマンスをコスト効率よく提供できる。あらかじめ指定した数の推論環境を「ウォームアップ」(事前準備・待機)させておくことで、コールドスタートを解消し、予測されるトラフィックに対して高いパフォーマンスとスケーラビリティを確保する。

※断続的な推論リクエストには向いている。常に高い負荷がかかるため起動の遅延が生じやすい。

機械学習モデルの推論に最適なインスタンスタイプや構成を自動で提案する機能。

主な特徴
最適なインスタンス選定を自動化従来は複数のエンドポイントを手動でテストする必要がありましたが、Inference Recommender により モデルに最適なインスタンスや構成(数、メモリ、同時実行数など)を自動で評価・提案 できる。
リアルタイム/サーバーレス推論に対応推論エンドポイントのタイプ(リアルタイム or サーバーレス)に応じて、最適な設定を選定可能
ベンチマークジョブによる性能評価SageMaker Studio や AWS SDK for Python(Boto3)を使って、推論負荷テストを実行し、パフォーマンスとリソース使用率のメトリクスを収集する。
コスト効率の向上過剰なリソースを避け、必要最小限の構成で高パフォーマンスを実現 できるため、運用コストの削減に貢献。
ジョブタイプ
Default
ジョブタイプ
目的:モデルに対して基本的なベンチマークを実行し、最適なインスタンスタイプを提案
入力:モデルパッケージの ARN を指定するだけで開始可能
テスト内容:SageMaker が用意した標準的なトラフィックパターンでロードテストを実施
所要時間:通常 45 分以内で完了
特徴:簡単に始められる、サーバーレス推論にも対応、高速な初期評価に最適
Advanced
ジョブタイプ
目的:本番環境に近い条件で詳細なパフォーマンス評価を実施
入力:インスタンスタイプやサーバーレス設定、カスタムトラフィックパターン、レイテンシー・スループット要件などを指定
テスト内容:指定した条件に基づくカスタムロードテスト
所要時間:平均 2 時間程度(ジョブ設定とテスト数により変動)
特徴:より精密な評価が可能、本番運用に向けた構成検討に最適、オートスケーリングポリシーの初期設定にも活用可能

Studio Classic

2023年11月以降、従来の SageMaker Studio は「Studio Classic」と呼ばれ、新しい SageMaker Studio はより高速で統合されたUIを提供している。

●SageMaker Studio(新しいStudio)

AWSが提供する最新の機械学習統合開発環境。VS CodeベースのIDEやJupyterLab、RStudioを選べる柔軟なUIを備え、数秒で起動可能。Amazon Q Developer によるAI支援やGit連携、S3・RedshiftなどのAWSサービスとの統合もスムーズで、MLOpsやチーム開発に最適。

●SageMaker Studio Classic(従来型Studio)

JupyterLabベースのIDEで、データ準備からモデル構築・トレーニング・デプロイまでを一貫して行える。起動に時間がかかることがあり、Git連携やAWSサービスとの統合は手動設定が中心。個人開発や研究用途に向いている。

※AWSが提供する機械学習向けの統合開発環境(IDE)

StudioClassic
概要
IDE選択複数(VS Code, JupyterLab, RStudio)JupyterLabのみ
起動速度高速(数秒)遅め(数分)
AI支援あり(Amazon Q)なし
Git連携UI統合手動設定
拡張性VS Code拡張対応限定的
推奨用途チーム開発・MLOps個人開発・研究

Bedrock

AWS が提供する フルマネージド型の生成AIサービス。大規模言語モデル(LLM)や生成AIモデルを インフラ管理不要 で利用できる。ユーザーはモデルを自分で構築したり学習したりする必要がなく、AWS 上で提供されている複数のモデルプロバイダー(Anthropic、Meta、Mistral、Amazon Titan など)のモデルを API 経由で呼び出して使える。主に自然言語処理やテキスト生成などの用途に使用される。

●Jurassic-2 models

サポートされている言語。英語での最高品質のパフォーマンスに加えて、全ての J2 モデルは、次のようないくつかの英語以外の言語をサポートしている。
対象:スペイン、フランス、ドイツ、ポルトガル、イタリア、オランダ

●ナレッジベース

・検索拡張生成(RAG)を簡単に実装可能。
構造化・非構造化データの両方に対応(例:S3、Salesforce、SharePointなど)。
・自然言語→SQL変換(NL2SQL)により、構造化データから直接情報取得。
引用付き応答で、元データの出典を明示。

主な機能
複数のモデルが選べるAnthropic Claude
AI21 Labs Jurassic-2
Stability AI (画像生成)
Meta Llama 2 / 3
Mistral
Amazon Titan など
→ 1つの API で様々なモデルを比較・利用可能。
学習やインフラ管理が不要サーバー構築、GPU管理、モデル学習を自分で行う必要がなく、即利用できる。
カスタマイズが可能プロンプト調整
ファインチューニング(微調整)
RAG (Retrieval-Augmented Generation) 構成で独自データと組み合わせて回答を生成できる。
AWS サービスとの連携Amazon S3(データ格納)
Amazon Kendra(検索ベースのRAG)
Amazon SageMaker(カスタムMLとの統合)
セキュリティとガバナンス・データはモデルプロバイダーに直接渡らず、AWS 内で安全に処理。
・コンプライアンスや監査対応が必要な企業向けにも利用しやすい。

ユースケースチャットボット / カスタマーサポート
ドキュメント要約 / 検索支援
コード生成 / アプリ開発支援
画像生成 / クリエイティブ制作
社内ナレッジ検索 (RAG構築)
メリット・モデル開発不要で即利用できる。データ取り込み、検索、プロンプト拡張までを一括管理。
・複数のモデルを使い分けられる
・AWS セキュリティ基盤を活用可能
ベクトル検索とエンベディングにより、意味的に関連する情報を抽出。
セキュアな接続:基盤モデルやエージェントが安全にデータソースへアクセス。
デメリット・モデルの「中身」を自由に改造はできない
・利用料金はAPI従量課金 → 大規模利用でコスト増
・最先端のオープンモデルを自分で細かくチューニングしたい場合は制限あり
[応答生成を制御する主要パラメータ比較表]

・温度 → 「確率の高低どちらを取りやすいか」を調整
・top_k → 「候補数の幅」を調整。生成する応答のランダム性を制御する。
top_p → 「確率分布の上位何%までを候補にするか」を調整

パラメータ説明値を小さくした場合値を大きくした場合簡単な例
温度(temperature)出力確率分布の「滑らかさ」を調整。応答のランダム性を制御。決定論的になり、一貫性が高まる。
確率の高い定番の応答を選びやすい。
ランダム性が増し、多様な応答が得られる。
確率の低い答えも選ばれやすい。
「好きな動物は?」
– 低い温度 → 「犬」
– 高い温度 → 「犬」「猫」「キリン」など
トップK
(top_k)
次のトークンを選ぶ際に考慮する候補数を制限。候補が少なくなり、安定・一貫した応答になりやすい。候補が広がり、多様で予想外の応答も出やすい。「朝ごはんは?」
– 低い top_k → 「パン」だけ
– 高い top_k → 「パン」「ごはん」「おにぎり」など
トップP
(top_p)
(核サンプリング)
確率分布の上位から「合計確率pまで」の候補だけを考慮。上位候補だけに限定され、予測可能性が増す。
安定した応答になりやすい。
確率の低い選択肢も残りやすくなり、ランダム性と多様性が増す。「好きな果物は?」
– 低い top_p → 「リンゴ」
– 高い top_p → 「リンゴ」「バナナ」「ドラゴンフルーツ」など

Polly

音声発話サービス。文章をリアルな音声に変換するサービス。発話できるアプリケーションを作成できる。

Textract

紙の書類やPDF、画像からテキスト・表・フォーム情報を抽出。

主な機能
OCR(光学文字認識)文字を認識して抽出
表認識表の構造を理解し、セルごとにデータを抽出
フォーム認識ラベルと値のペア(例:氏名:山田太郎)を抽出
署名検出手書き署名の有無を検出(一部リージョンで対応)

[使用例]

入力形式出力内容利用例
スキャンした請求書金額、日付、会社名などの抽出経理システムへの自動入力
手書きの申込書名前、住所、電話番号などの抽出顧客情報のデジタル化
PDFの契約書契約条件、署名欄の検出契約管理システムへの登録

Transcribe

音声を自動的にテキストに変換する。リアルタイムまたは録音済みの音声を高精度で文字起こしできる。100以上の言語と方言に対応しており、日本語もサポートされている。

使い方も比較的シンプルで、音声ファイルをS3にアップロードし、Transcribeでジョブを作成するだけでテキスト化できる。

・話者の識別(話者ダイアライゼーション)や自動句読点の挿入、カスタム語彙の登録など、実用的な機能が豊富。
・字幕ファイルの生成や医療分野向けのTranscribe Medicalも利用可能。
・コールセンターの通話分析や会議の議事録作成、動画の字幕生成など、幅広いユースケースに活用されている。

Translate

AWSが提供するニューラル機械翻訳サービスで、テキストを高精度かつ高速に翻訳するクラウドベースのツール

主な特徴
ニューラル機械翻訳(NMT)深層学習技術を活用し、文脈を理解した自然な翻訳を実現
リアルタイム & バッチ翻訳API を使って即時翻訳も、大量のテキストを一括翻訳することも可能
カスタマイズ可能特定のブランド名や業界用語などを定義して、翻訳結果を調整可能
多言語対応英語、日本語、中国語、スペイン語など、数十の言語間で翻訳可能

ユースケース
ユーザー生成
コンテンツの翻訳
SNS投稿、コメント、プロフィールなどをリアルタイムで翻訳
多言語チャット対応カスタマーサポートや社内チャットで言語の壁を解消
ドキュメント翻訳Word、Excel、PowerPoint などのファイルを一括翻訳
NLP連携Comprehend と組み合わせて感情分析やキーフレーズ抽出も可能

Comprehend

自然言語処理(NLP)サービスで、機械学習を活用してテキストデータを分析し、チャットデータから顧客の感情(ポジティブ、ネガティブなど)を抽出するなど、価値ある情報を効率的に引き出す。既存のデータをインプットするだけで、迅速に分析結果を得られるため、誰でも簡単に大量のテキストデータから洞察を得ることができる(2026 年 5 月 20 日サポート終了)

・利点として、ユーザー自身が機械学習(ML)モデルのトレーニングやチューニングを行うなど、複雑で手間のかかる作業を省略できる

・PII(保護対象医療情報)を検出し、マスクまたは除去する機能を備えている。英語またはスペイン語のテキストドキュメントでPII エンティティを検出できる。PIIエンティティは特定の種類の個人を特定できる情報(PII)。PII検出機能を使用して、PIIエンティティを検索したり、テキスト内のPIIエンティティを編集したりする。

主な機能
機能説明
エンティティ認識テキストから特定のエンティティ(例:人名、組織名、場所、日付、数詞、電話番号など)を自動抽出。
感情分析テキストの感情を識別し、ポジティブ、ネガティブ、ニュートラル、ミックスのいずれかに分類。
キーフレーズ抽出テキスト全体からその文脈や内容において最も重要な単語やフレーズを抽出する機能。たとえば、ニュース記事から「新技術」「市場動向」などの主要な話題やテーマを自動的に特定できる。
言語検出テキストが書かれている言語を自動で識別します(最大 100 種類以上の言語に対応)。
トピックモデリング大量の文書データを分析し、隠れたトピックやテーマを自動的に抽出。
カスタム分類ユーザーが定義したラベル(例:「重要」「非重要」など)を基にテキストを分類。
カスタムエンティティ認識独自のエンティティ(例:商品コード、特定の業界用語など)をトレーニングして識別する機能。たとえば、契約書内の「クライアント名」や「契約日」のような特定のエンティティを定義してトレーニングすることで、独自のビジネスルールに基づいた情報抽出が可能。
構文解析テキストを文法的に解析し、単語の品詞(名詞、動詞、形容詞など)や構文構造を特定。
イベント抽出特定の条件や構造に基づいて、テキスト内の出来事やアクションを抽出。
ジョブ
DetectPiiEntitiesテキスト内の個人を特定できる情報(PII)をリアルタイムで検出。
StartPiiEntitiesDetectionJob複数の文書を一括で処理する非同期ジョブを開始し、PIIを検出・編集
RedactionConfigPIIをどのように編集(秘匿)するかを設定
Import Model

インポートすると、コピー元のモデルと全く同じ、トレーニング済みの複製モデル(Comprehendのカスタムモデル)が新しいアカウントに作成(コピー)される。

必要な設定コピー元のAWSアカウントで、コピー先のアカウントからのインポートを許可するためのIAMポリシーを設定する必要がある。
重要な制約インポート元とインポート先のモデルは、必ず同じAWSリージョンに存在している必要がある。異なるリージョンをまたいでのインポートはできない。
利点この方法はComprehendの組み込み機能を使うため、追加のインフラ構築やデータ転送が不要で、最小限の開発作業で実現できる。
Medical

AWSが提供する自然言語処理(NLP)サービスで、医療分野向けに特化したツール。

[主な機能]

  • 非構造化医療テキストの解析
    医師のメモ、退院サマリー、検査結果などから、病名・薬剤・治療法・PHI(保護医療情報)などの医療関連エンティティを自動抽出します。
  • 信頼スコアの提供
    抽出された情報には、モデルがどれだけ自信を持っているかを示す「信頼スコア」が付与されます。
  • オントロジーとのリンク
    抽出したエンティティを標準化された医療用語体系(オントロジー)に結びつけることで、より高度な分析が可能です。
  • 同期・非同期処理に対応
    単一文書の即時解析(同期)と、S3に保存された複数文書のバッチ解析(非同期)の両方に対応しています。

Rekognition

動画や画像認識。イメージや保存済みのビデオから有名人を認識できる。

Lambda関数を使用するとスケーラブルでコスト効率の高いアプリケーション層が得られる。イメージ内の有名人を認識し、認識した有名人に関する追加情報(時間など)を取得するには非ストレージ型のAPIオペレーション「RekognizeCelebrities」を使用する。Rekognition APIにイメージや動画を指定すると、モノ、人物、テキスト、シーン、アクティビティを識別。

Kendra

AIを活用して、「自然言語検索」「セマンティック検索(文脈や意味を理解した検索)」を実現する。AWSのフルマネージドサービスなので、運用管理の手間が少なく、拡張性にも優れている。質問に対してインテリジェントな回答を生成できるため、検索拡張生成(RAG)アプリケーションの構築に最適。

データソースコネクタ

Kendraは「データソースコネクタ」という機能を使って、様々なデータソースに接続し、検索対象のインデックス(索引)を作成する。接続先として、Amazon S3の他に、Microsoft SharePointやGoogle Driveなどが挙げられている。

このコネクタは、データソースを定期的にスキャンし、ドキュメントの変更や追加を自動でインデックスに反映させるため、常に最新の状態で検索ができる。

[S3 との連携]
Amazon S3 コネクタ」を使うことで、S3バケットに保存されているテキストファイルなどを直接インデックス化し、高精度なセマンティック検索を簡単に実現できる。S3などの多様なデータソースに接続するだけで、AIによる高精度な意味検索を簡単に構築できるサービス。インデックスを自動で最新に保ってくれるため、RAGのような高度なアプリケーションにも適している。

Glue Data Brew

ノーコードでデータのクレンジング(前処理)(データのクリーニング・整形・変換)を行えるGUIベースのETLツール。分析、レポート、機械学習などの後続タスクのために、クリーンで安全なデータセットを簡単に準備することができる。

[Data Wrangler との違い]

・Data Wrangler:コードで柔軟にデータ処理したい人向け
・Glue DataBrew:ノーコードで視覚的にデータ整形したい人向け

項目Data WranglerGlue Data Brew
操作方法Pythonコード(pandas)GUI(ノーコード)
対象ユーザーエンジニア、分析者非エンジニア、アナリスト
柔軟性高(自由なロジック記述)中(組み込み変換に依存)
学習コストPython知識が必要直感的で学習コスト低め
処理対象S3, Redshift, AthenaなどS3, Redshift, RDSなど
主な用途ETL自動化、分析前処理データ整形、品質評価
特徴と構成

[主な特徴]

データ品質のプロファイリングデータ内の欠損値や異常値の検出、統計情報の可視化を簡単にできる。
プライバシー保護機密データを安全にマスク(隠す)処理ができるため、プライバシー要件を満たしながら、機械学習モデルの準備などにデータを利用できる。
多様な変換処理250以上の変換処理(欠損値処理、正規化、型変換、フィルタリングなど)を用意。
検出マスキング検出:2、3回クリックするだけで、データ内のPIIや機密情報を含む可能性のある列を自動で特定する。
コード不要のマスキング:コードを記述することなく、データセット内の情報を自動で識別し、「墨消し」「ハッシュ化」「暗号化」といったデータマスキングを適用できる。
自動化レシピを保存して定期的にジョブを実行可能
スケーラブルフルマネージドでリソース管理不要

[構成要素]

データセットS3、Redshift、RDS、JDBCなどから接続可能なデータソース
プロジェクトデータをプレビューしながら変換処理を設計する作業スペース
レシピ実行する変換処理のステップを記録したもの(料理のレシピのようなイメージ)
ジョブレシピをデータセットに適用して処理を実行する単位

Redshift ML

AWS のデータウェアハウスサービス「Amazon Redshift」に機械学習機能を統合したもの。SQL を使って直接機械学習モデルを作成・トレーニング・デプロイできるのが最大の特徴。

主な特徴
SQLだけでMLモデルを構築可能PythonやJupyterなどを使わず、RedshiftのSQL文でモデル作成・予測ができる。
SageMakerと連携実際のトレーニングは Amazon SageMaker が裏で処理。AutoML によるアルゴリズム選定や前処理も自動化される。
データ移動不要Redshift内のデータをそのまま使えるため、S3へのエクスポートなどの手間が省ける。
教師あり・教師なし学習に対応回帰、分類、クラスタリング(K-Means)など、基本的なMLタスクに対応している。

Q Business

AWSが提供する企業向け生成AIアシスタント社内の情報を活用して、業務効率化や意思決定支援を行うための強力なツール。

特徴と構成要素

[主な特徴]

社内データを活用した自然言語対話社内文書、営業資料、技術マニュアル、人事規定などを元に、チャット形式で質問に回答
RAG(検索拡張生成)による高精度な応答インデックス化された情報を検索し、生成AIが回答を生成
多様なデータソースと連携Amazon S3、Salesforce、Microsoft 365、Dropbox、Google Driveなど40以上のコネクタに対応
セキュアな認証・認可AWS IAM Identity Centerを利用し、ユーザーごとのアクセス制御が可能

[機能構成]

コンポーネント概要
データソースコネクタ社内外の情報を取り込むための接続機能
インデックス取り込んだデータをAIが使いやすい形に変換(StarterとEnterpriseの2種)
Retriever質問に応じて適切な情報をインデックスから取得
LLMAmazon Bedrockを裏で活用し、自然言語応答を生成
Web UIブラウザやSlack、Teamsなどから利用可能
その他機能

●ContentBlockerRule

Amazon Q Businessのガードレール機能の一部であり、ユーザーが制限されたトピックや禁止されたフレーズ触れた際の応答方法を制御するためのルール。制限されたトピックについて質問されたことをエンドユーザーに通知し、次にとるべき手順を提案するカスタムメッセージを設定することができる。

項目名説明
systemMessageOverrideブロックされたトピックに関する質問を受けた際に表示されるカスタムメッセージ。最大350文字まで設定可能。
パターン制約メッセージはUnicode制御文字を含まない必要があります(正規表現: ^\P{C}*$
必須かどうかsystemMessageOverride任意。設定しない場合はデフォルトメッセージが使用されます。

●グルーバルコントロール

アプリケーション全体の全ての対話に適用される。

応答の設定を制御大規模言語モデル(LLM)が直接答えを返すが、企業データソースを参照しながら答えを返すかなどの応答設定を制御
用語をブロック特定の用語の使用をブロックし、機密情報やセンシティブなフレーズの生成を回避
ファイルアップロードの制御エンドユーザーによるチャット内でのファイルアップロードの可否を制御
Amazon Q Apps の制御エンドユーザーによるAmazon Q Apps の作成・利用の可否を制御
API参照ルール

[そのほかルール参照]

サブスクリプションプラン
プラン名月額料金主な機能
Amazon Q Business Lite$3チャットによる質問応答
Amazon Q Business Pro$20アプリ作成、カスタムプラグイン、QuickSight連携などが可能

Trainium

AWSが提供する機械学習トレーニングに特化した、高性能かつエネルギー効率が高い機械学習トレーニング専用のインスタンス。

・一般的なGPUよりもコスト効率が高く、消費電力を抑えながら高速なトレーニングを実現。
・TensorFlowやPyTorchなどの主要なフレームワークに対応。

EC2 Trn1インスタンス

AWS Trainiumチップを搭載し、大規模言語モデル(LLM)などの高性能な深層学習(DL)トレーニングのために設計されている。他のEC2インスタンスと比較して、トレーニングにかかるコストを最大50%削減できるとされている。Trnシリーズは、機械学習トレーニングに特化しており、エネルギー効率が「非常に高い」と評価されている。

Mechanical Turk(MTurk)

人間の判断が必要な小さな仕事(タスク)を、世界中の人に依頼してこなしてもらう仕組み。18世紀の「メカニカル・ターク(自動チェスマシン)」にちなんで、「機械のように見えるが実は人間がやっている」ことを表現。

依頼者(リクエスター)企業や研究者など。タスクを投稿して報酬を設定。
作業者(ワーカー)世界中の個人が参加可能。好きなタスクを選んで報酬を得る。

・依頼者は、ウェブUIやAPIを通じてタスクを提出し、人間の作業者がそれを完了・提出する。
・作業者はタスクを選んで実施し、完了後に報酬を受け取る。
・APIを用いたやり取りは、リモートプロシージャコールのような形式で行われる。
・実質的には「人力による人工知能」のような仕組みで、柔軟で多様なタスク処理が可能。

[タスクの例]

・画像に写っているものを分類する
・音声を聞いて文字起こしする
・アンケートに答える
・AI学習用のデータにタグをつける

[公式サイト引用]

IoT サービス

基礎知識

●AWS IoT

IoTデバイスとAWSクラウドサービスをつなぐための仕組み。AWSは、デバイスとクラウドを連携させるためのデバイス向けソフトウェアも提供しており、これによりIoTソリューションの構築がスムーズになる。

IoT Core

【センサーデバイスに特化】
インターネットに接続されたデバイスから、クラウドアプリケーションやその他のデバイスに簡単かつ安全に通信できるクラウドサービス。大量のIoTデータを効率的に収集することができる。リアルタイムには不向き。
※MQTTプロトコルをサポートしている

・ 数十億のデバイス、メッセージをサポートし、それらメッセージをエンドポイントや他デバイスに確実かつセキュアに処理してルーティングする。
・アプリケーションがインターネットに接続されていない場合でも、すべてのデバイスを常に追跡して通信できる。

[使用例]
・産業、コンシューマー、商業、オートモーティブ用のワークロード向けに IoT サービス。
・センサーデバイスを利用した車両管理アプリケーションを容易に構築することができる。
AWS IoTの仕組み

IoT Core Basic Ingest

IoTデバイスからのメッセージをメッセージブローカーを経由せずに直接ルールエンジンに送信できる機能。

[主なポイント]

コスト削減通常のメッセージングではメッセージブローカーを通すためコストが発生しますが、Basic Ingestを使うとその部分のコストを削減できる。
用途デバイスからのデータを他のデバイスに配信せず、ルールアクション(例:Lambda実行、S3保存など)だけを実行したい場合に最適。
使い方特定のトピック形式(例:$aws/rules/ルール名/トピック名)でメッセージをパブリッシュすることで利用できる。
注意点他のデバイスが同じトピックをサブスクライブしている場合は使えません。あくまで単方向の処理に向いている。

MQ for RabbitMQ

メッセージキューイングシステムとしての利用が主である。

IoT Fleet Wise

特定のフリート管理ソリューション向け。

IoT Greengrass

【ローカルでAWS処理】
クラウドの処理能力をエッジデバイスに拡張するためのサービス。ネットワークが不安定な環境でも、ローカル、オンプレミスでデータ処理やアクションが可能になる。

[特徴]

リアルタイム性クラウドに頼らず即時処理が可能
コスト削減不要なデータ送信を減らし、通信コストを抑制
信頼性オフラインでも動作するため、遠隔地でも安心
主な機能
機能説明
ローカル処理Lambda関数をエッジで実行し、リアルタイムでデータ処理が可能
クラウド連携S3やIoT Coreと連携して、データの保存や通信がスムーズに行える
機械学習モデルの展開SageMakerで作成したモデルをエッジにデプロイして、ローカルで推論が可能
セキュリティTLS通信、認証、アクセス管理など、セキュアな運用が可能
コンポーネント管理モジュール式で必要な機能だけを選んでデプロイできる柔軟な構成

Encrypt

基礎知識

●共通鍵暗号

鍵は1つ使う。
暗号化と復号に同じ鍵を使う、高速に暗号化、復号できる。安全な受け渡し、保管を実現。ストレージの暗号化に使用されるケースが多い。

●公開鍵

鍵は2つ使う。公開鍵認証形式(非対称鍵暗号)
鍵を持っている人からのみ、一般ユーザーのログインを許可する。 公開鍵と秘密鍵のキーペア。

  • 秘密鍵ファイル:パソコン側に置く
  • 公開鍵ファイル:サーバー側に配置する

公開鍵で暗号化したデータは秘密鍵で復号できる。共通鍵暗号と比べて、複雑で処理は重い(CPU能力を使う)暗号化に加えて、デジタル署名やデジタル証明書に使われる技術。

※受信者は鍵のペアを予め作っておき、公開鍵を送信者に渡しておく
※公開鍵認証ではログイン時に「パスフレーズ」を使用する

[共通鍵と公開鍵の併用]

共通鍵を公開鍵で暗号化し、復号は秘密鍵。実際の通信は共通鍵暗号で暗号化/復号を行う。
安全性とパフォーマンスの両立を実現。

KMS

(Key Management Service)【鍵管理サービス
データ暗号化に利用する暗号化(または復号化)できるKMSキーの作成・管理を行うためのAWSのマネージドサービス。AWS所有のマルチテナント管理を共有で利用し、耐久性が高く、高可用性である。

  • 鍵の保管:KMSキーを安全に保管するストレージ(安全なロケーションの提供)
  • 鍵の管理:KMSキーのライフサイクル管理、及び鍵の管理や利用に対する認証・認可・記録するアクセス制御
    [参考]

・他のAWSと連携しやすい(S3サーバー、オブジェクト側の暗号化など)(連携するAWSサービス:50以上)
・CloudHSMに比べると安価に利用でき、手軽に暗号化キーを管理
・キーの使用・管理の監査証跡として、有効

[独自のキーマテリアルの場合]

独自のキーマテリアルをインポートするには、最初にキーマテリアルなしで KMS キーを作成。そして、独自のキーマテリアルをインポート。キーマテリアルなしで KMS キーを作成するには、AWS KMS コンソールまたは CreateKey オペレーションを使用する。キーマテリアルなしでキーを作成するには、オリジンとして EXTERNAL を指定。

  • キーマテリアル
    CMKのメタデータを除く暗号・復号に利用する部分。
鍵の種類
マスターキー・データキーを暗号化する
・AWS内部で永続化される
・ユーザーがローカルにエクスポートできない
データーキー・データを暗号化する
・AWS内部で永続化されない
・ユーザーがローカルにエクスポートできる

[マスターキーの種類]

●KMSキー(CMK3種類)

データの暗号化、復号、再暗号化を行い、外部が使用するデータキーを作成する。キーストアに厳重に格納される。KMS キーには、キー ID、キー仕様、キー使用法、作成日、説明、およびキーステータスなどのメタデータが含まれる。

カスタマーマネージドキー
(カスタマーマスターキー)
ユーザーが作成するKMSキー。データーキーを暗号化するための鍵。削除した直後であれば、削除のキャンセルができる。
AWSマネージドキーAWSがユーザーのAWSアカウントで作成するキー。AWSサービスが作成・管理・使用するCMK。
キーの名前は「aws/サービス名」。このため、名前の先頭に「aws」を付けられない。
3年ごとに自動ローテーション。
AWSが所有するキーAWSがユーザーのサービスアカウントで作成するキー。ユーザーからは見えない。

[データーキー]

●CDK(Customer Data Key)

対象のデーターを暗号化するための鍵(データキー)。
※公式の資料ではCDKという言葉はほとんど使われていない
[使われている関連記事]

暗号化(エンベロープ暗号化)

AWS KMS はセキュアで弾力性の高いサービス。データーキー、マスターキーを用いる。
暗号化や復号の際にはKMS(またはCloudHSM)に鍵の使用リクエストAPIを送信し、データキーを一時的に復号化して暗号化、復号する。

[暗号化機能] (参考

  • Encrypt:文字通りデータを暗号化するためのAPI(4KBまでの平文字に対応)
  • Decrypt:復号のためのAPI
  • GenerateDataKey:ユーザーがデーターの暗号化に利用するための、カスタマーキーを作成する

[暗号化流れ]

  1. アプリケーションから AWS SDK の GenerateDataKey オペレーション(キーID)を使って CDK を生成。
  2. 作成されたCDKCMKで暗号化する。CMKはデータキーを2つ作成する。
    ※認識が混ざるためCDKという単語は不使用
    ・データーキー:「A」とする
    ・暗号化されたデーターキー:暗号化された「A」とする
  3. ユーザーは工程「2.」で作成された、「A」で暗号化したいデータを暗号化する。
    後に、「A」は削除して、暗号化された「A」を手元に残す。

[復号化の流れ]

  1. 暗号化された「A」をKMSに送る。
  2. CMKが暗号化された「A」「A」を結果として返す。
  3. ユーザーは結果として返された「A」でデータを復号化。不要であれば「A」は削除。
キーの管理

●KMS Generate Data Key

アプリケーションでデータをローカルで暗号化することができる。一意の対象データキーを生成する。データキーのプレーンテキストコピーと、指定したCMKで暗号化されたコピーを返す。プレーンテキストキーを使用して、KMSの外部でデータを暗号化し、暗号化されたデータと主に暗号化されたデータキーを保存できる。

●マルチリージョンキー

複数のリージョンで同じように KMS Key を相互使用ができる。関連するマルチリージョンキーセットごとに、同じキーマテリアルおよびキーIDがあるため、1つのAWSリージョンでデータを暗号化し、再暗号化やAWS KMS へのクロスリージョン呼び出しを行うことなく異なるAWS リージョンで復号できる。
・キーは個別に管理、独立して使用、連携させて使用することもできる。

[自動キーローテーション]
KMSで生成した各キーマテリアル(ベース)を年次(1年)で更新する。エイリアス、Key ID、Key ARNは新キーに引き継がれる。

・古いキーマテリアルがすべて永続的に保存する。削除されない限り、KMS キーで暗号化されたすべてのデータを復号できる。
・サポートするのは、AWS KMS が作成するキーマテリアルを持つ対称暗号化 KMS キーのみ。(インポートしたCMKは対応不可)
・KMS キーのキーマテリアルに関するローテーションの追跡は、Amazon CloudWatch とAWS CloudTrail で実行できる。

連携サービス

[CloudTrailとの統合]
・KMSで内ユーザーやロール、またはAWSのサービスによってじっこうされたアクションを記録。
・KMSコンソールからのコールやKMS APIへのコード呼び出しを含むKMSのすべてのAPI呼び出しをイベントとしてキャプチャし、証跡を作成。
(リクエスト作成元のIPアドレス、リクエストの実行者・実行日など、)

・すべてのキーの使用ログを表示できるため、規制およびコンプライアンスの要求に応えるために役立つ

Cloud HSM

(Hardware Security Module)
ハードウェアセキュリティモジュール(HSM)を使用した暗号鍵管理サービス。KMSに比べると高価。
※HSMインフラの管理責任:ユーザー⇒AWS クラウドで暗号化キーを簡単に生成して使用できる

・HSMのFIPS認定 :FIPS140-2 Level 3(3認証済み)
・KMS経由でAWSサービスと連携可能。
・異なるリージョンからCloudHSMにアクセス出来ない
・バックアップイメージを異なるリージョンに転送してサービスをリストアすることは可能。
・VPC外からアクセスする場合には、CloudHSMがあるVPCにルーティングする必要がある

[サポートする暗号鍵]

共通鍵と公開鍵。占有タイプ(Amazonの管理者もアクセスできない)のハードウェアで暗号化キーを保管(不正防止機能を装備したハードウェアデバイス内でキーを操作)

・物理デバイス制御とキーへのアクセスを持たないアプリケーションで秘密鍵を強力に保護できる。そのため、キーがAWS環境の外に移動されない。

[オフロード機能]

CloudHSM クラスターの HSM に対するHTTPS同様の計算の一部をオフロードできる。ウェブサーバーの計算負荷が軽減され、サーバーのプライベートキーを HSM に保存するとセキュリティが強化される。このプロセスは、SSL アクセラレーションとも呼ぶ。

・ウェブサーバーとそのクライアント (ウェブブラウザ) では、SSL または TLS を使用できる。

※一般的に HTTPS として知られており、パブリック/プライベートのキーペアと SSL/TLS パブリックキー証明書を使用して、各クライアントとのHTTPS セッションを確立するため、このプロセスは、ウェブサーバーにとって多くの計算を伴う。

Secrets Manager

【認証情報管理】
データベース認証情報、アプリケーション認証情報、OAuth トークン、API キー、およびその他のシークレットを安全に暗号化し、アクセス管理情報を一元的に監査する。それらシークレット情報を、Secrets ManagerへのAPIコールに置き換えて取得できる。各サーバからAPIを叩くことでシークレット情報を取得でき、認証やサーバセットアップに利用できる。(アプリケーションにシークレット情報を保存する必要がなくなる)

AWS のサービスの多くは、Secrets Manager にシークレットを保存して使用される。
※アプリケーションにシークレット情報を保存する必要がなくなる。

・ライフサイクルを通じて「管理」、「取得」、「ローテーション(Rotation Schedule)」することができる。

シークレット

パスワード、ユーザーネーム、APIトークン、データベース認証、パスワードなどの一連の認証情報、OAuth トークン、または、暗号化された形式。
[参考サイト]

[アクセス]
・きめ細かい IAM とリソースベースのポリシーを使用して、シークレットへのアクセスを管理する。
・各シークレット情報は各サーバーからAPIを叩くことでシークレット情報を取得でき、認証やサーバセットアップに利用できる
・シークレットはデフォルトで KMS によって暗号化されるが、この暗号化キーの管理はAWSが行う。

[シークレットのローテーション]
(Rotation Schedule リソース)
暗号化された安全なストレージを提供され、シークレット、データベースまたはサービスの認証情報が更新する。定期的なキーローテーションスケジュールを設定できる。
※長期のシークレットを短期のシークレットに置き換えることが可能となり、侵害されるリスクを大幅に減少させることができる。

以下の2つの方式がある。

  • マネージドローテーション
    ・ほとんどのマネージドシークレットで利用される。
    ・サービス側がローテーションを設定・管理するため、Lambda関数は不要
  • Lambda関数によるローテーション
    ・その他のタイプのシークレットで使用される。
    ・ユーザーが用意したLambda関数を使って、シークレットと関連サービス(データベースなど)の認証情報を更新する。
リソースタイプ

Secrets ManagerにはCloudFormationテンプレートの一部として作成できるリソースタイプが複数ある。

AWS::SecretsManager::Secretシークレットを作成し、Secrets Manager に保存。パスワードは、ユーザーが指定するか、Secrets Manager に生成できる。空のシークレットを作成し、後でパラメータ SecretString を更新もできる。
AWS::SecretsManager::ResourcePolicyリソースベースのポリシーを作成し、指定されたシークレットにアタッチ。リソースベースのポリシーは、シークレットに対してアクションを実行できるユーザーを制御する。
AWS::SecretsManager::RotationSchedule指定した Lambda ローテーション関数を使用して、定期的な自動ローテーションを実行するようにシークレットを設定する。
AWS::SecretsManager::SecretTargetAttachmentシークレットを作成後、サービスまたはデータベースの作成時にそれを参照して認証情報にアクセスすると、このリソースタイプはシークレットに戻ってその設定を完了する。Secrets Manager は、ローテーションが機能するために必要なサービスまたはデータベースの詳細をシークレットに設定する。

S3 の暗号化

デフォルトで暗号化が有効化。HTTPSを使用してデータをS3にプッシュして転送中に暗号化できる。

転送時:S3との間でデータを送受信するとき。
・保管時:S3データセンター内のディスクに格納されている時。

・HTTP 503 レスポンスとは「サービスが利用できない」ときに表示されるエラー
・Secure File Transfer Protocol (SFTP) を使用して ファイルを直接転送することができる

[暗号化する場所]
  • クライアント側
    クライアント側でデータを暗号化し、暗号化したデータをS3にアップロードする。
    この場合、暗号化プロセス、暗号化キー、関連ツールはユーザ管理。
  • サーバー側
    送信先で暗号化を実施する方法。暗号化キーによって管理方法が変わる。
    オブジェクトをデータセンター内のディスクに保存する前にオブジェクトレベルで暗号化アクセスするときに復号するようにS3にリクエストする。

[暗号化の種類]
SSE-S3
S3で管理された
暗号化キー
S3が暗号化キーの生成・管理・保管を行う。そのため、暗号化キーの変更、管理を行えない。
・各オブジェクトは、強力な多要素暗号化機能を備えた一意のキー暗号化される。
・キー自体が定期的に更新されるマスターキーによって暗号化される。
・256ビットの高度暗号化規格(AES-256)を使用してデータを暗号化。
SSE-KMS
KMSで管理された
暗号化キー
AWS KMSが暗号化キーの生成・管理・保管を行う。追加の料金がかかる。
任意のキーを用いて暗号化できる
・キー自体へのアクセス制御によって、暗号化・復号化できるユーザーを制御できる
・いつ、だれによってキーが使用されたか、ClouodTrailから監査証跡が提供される。
・エンベロープキー(データの暗号化を保護するキー)オブジェクトの不正アクセスに対する追加の保護を提供する。
SSE-C
ユーザー側で用意した暗号化キー
ユーザー自身が暗号化キーの生成・管理・保管を行う。S3に送信する前にデータが暗号化される。
どのキーどのオブジェクトが暗号化されたのかという情報は自分自身で管理。
・暗号化・復号化に伴う料金は発生しない
・任意のキーを用いて暗号化することができる
・AES-256暗号化タイプを使用
・HTTPSだけサポートしている
・キーの管理全般はユーザーであるため、セキュリティ面が弱い。
[比較表]

「AWS S3でサーバー側暗号化をしたい」というニーズに応えつつ、セキュリティ運用の方針に合わせて選べるようになっている。「AWSにキー管理を任せて利便性やセキュリティレベルを高めたい企業」はSSE-KMS
「AWSにキーを預けたくない」「極限まで自分で管理したい」というセキュリティポリシーが厳格な組織やプロジェクトではSSE-C。一番簡単に使える暗号化方式で、「保存時に暗号化されればOK」という基本的なセキュリティ要件にはSSE-S3クライアント側暗号化AWS外で処理を完結したい場合に有効。

たとえば、

  • 金融や医療分野などで「クラウドでも鍵は一切預けない」といった方針があるならSSE-C。
  • 監査対応やIAM連携を重視する企業であればSSE-KMS。
観点SSE-S3SSE-KMSSSE-Cクライアント側暗号化
キー管理AWSが自動的に管理(AES-256)AWS KMSで管理されたキー顧客が自分で管理・提供顧客がローカルで暗号化・管理
利便性高い:設定だけで利用可能高め:KMS連携の設定が必要低め:毎回キー提供が必要低め:全て手動で管理する必要あり
監査・制御CloudTrail対象外CloudTrail対応・IAM制御可能CloudTrail対象外・制御困難自前で監査ログを準備する必要あり
コスト無料KMS利用料が発生無料(但し運用負荷高)暗号化ツールの導入コストあり
セキュリティ水準基本的な保護(AES-256)より強力・柔軟な制御顧客が鍵を持つため強力最も厳密な管理が可能(自己責任)
代表用途一般的な暗号化要件を満たす用途企業・監査向け用途金融・法務など高セキュリティ用途機密性重視の組織や独自運用環境

分析サービス

基礎知識

●ETL

(Extract(抽出)Transform(変換)Load(格納))
社内に点在する情報(データ)を必要な情報(データ)のみ1箇所に集約し蓄積し、経営に役立つ洞察を得るために利用する。

※これまでは情報を蓄積させるにも異なるデータソースであったため、各開発工数と専門知識が求められた

[RPAとの違い]
RPAツール:既存のアプリケーションの利用を前提とする。
ETLツール:ツールを利用してデータの収集や加工を行う。

サブセット一部分、部分集合、下位集合などの意味を持つ英単語。ある集団全体を構成する要素の一部を取り出して構成した小集団のこと。ITの分野では、仕様や規格、データ集合、ソフトウェアの機能などについてよく用いられる用語。本来備えている要素の一部を省略・削除した簡易版、限定版、軽量版という意味で用いられることが多い。
ヒューリスティック必ず正しい答えを導けるわけではないが、ある程度のレベルで正解に近い解答を得ることができる方法。答えの精度が保証されない代わりに、回答に至るまでの時間が少ない。
データパーティショニングスキャンされるデータ量が最小限に抑えられ、パフォーマンスが最適かされ、S3での分析クエリのコストが削減される。データへのきめ細かいアクセスも向上。

●Fluent Bit

Kubernetes対応:DaemonSetとして簡単にデプロイ可能。PodやNodeのログ収集に最適
・用途:ログの収集、処理、転送(ログルーターとして機能)
・軽量設計:C言語で実装されており、メモリ使用量が非常に少ない(数MB程度)
対応フォーマット:JSON、CSV、Apache/Nginxログなど、さまざまな形式に対応
・出力先:Amazon S3、CloudWatch Logs、Elasticsearch、Kafka、Splunk、Datadog など多数

機能説明
Input Pluginsログの取得元(ファイル、systemd、TCP、Kubernetesなど)を指定可能
Filter Pluginsログの加工(タグ付け、除外、JSON変換、Grepなど)
Output Plugins転送先の指定(S3、CloudWatch、Elasticsearchなど)
パフォーマンス高速処理と低リソース消費で、IoTやエッジ環境にも適している

Quick Sight

【ダッシュボード】
クラウド内のデータに接続し、さまざまなソースのデータを結合し、AWSで簡単に分析環境を作ることができるBIサービス。単一のデータダッシュボードに AWS データ、サードパーティーデータ、ビッグデータ、スプレッドシートデータ、SaaS データ、B2B データなどを含めることができる。

※CloudWatchLogsを直接データソースとして利用できない

[参考]

Open Search Service

【ログ等高速検索】
Elasticsearch から派生したオープンソースの分散検索および分析スイート。リアルタイムのアプリケーションモニタリング、ログ分析、ウェブサイト検索などの幅広いユースケースにご利用できる完全なオープンソースの検索および分析エンジン。統合された視覚化ツールである OpenSearch ダッシュボードを使用して、大量のデータへの高速アクセスと応答を提供するための高度にスケーラブルなシステムを提供する。これにより、ユーザーはデータを簡単に探索できる。

Apache Lucene 検索ライブラリを搭載しており、KNN 検索、SQL、異常検出、機械学習コモンズ、トレース分析、フルテキスト検索など、多くの検索および分析機能をサポートしている。ドキュメントやメッセージ、ログ等の様々なデータソースに対してDashboards Query Language(DQL)を使用することでデータの分析や可視化ができるサービス。

※Cloud Frontのログの格納先にOpenSearchドメインを使用することはできない
※本サービスを停止することはできない

[Open Searchについて詳細]

[Kibanaへのアクセス制御]

以下設計により、認証とIP制御の柔軟な組み合わせで、Kibanaのセキュリティを強化することが可能。

[認証と保護の方法]

Amazon Cognito認証(Elasticsearch 5.1以降)Kibanaにユーザー名とパスワードによるアクセス制限を設定可能。オプション機能。
IPベースのアクセスポリシー + プロキシの利用Cognito認証を使用しない場合でも、IP制御とプロキシを使ってアクセス制御が可能。
[JavaScriptとアクセス制御の考慮点]

多数のIPをホワイトリストに登録するのは非効率なため、プロキシのIPアドレスからのみアクセス許可する方法が提案されている。KibanaはJavaScriptアプリのため、アクセス元IPは「ユーザーのIP」となり、IPベースの制御が難しくなる。

Compute Optimizer

【リソース評価・分析】
AWS「リソース設定」と「使用率」のメトリクスを分析。機械学習を使って過去の使用率メトリクスを分析することでリソースが最適かどうかを報告し、コスト削減し、パフォーマンスを向上させる。コストを削減しつつパフォーマンスを向上させるための最適化に関する推奨事項を生成する。(EC2、EBS、ECS、Lambdaを対象

[グラフ機能]

最近の使用率メトリクスの履歴データと、レコメンデーションの予測使用率を示す。最適なコストパフォーマンスのトレードオフとなるレコメンデーションを評価できる。実行中のリソースを移動またはサイズ変更するタイミングを決定し、パフォーマンスとキャパシティーの要件を満たすのに役立つ。

Kinesis

【プラットフォーム】
AWSでデータをストリーミングするためのプラットフォーム。受信するとすぐに処理,分析を行うため、すべてのデータを収集するのを待たずに処理を開始して直ちに応答する。複数のソースから高頻度でストリーミングデータをリアルタイムで収集、処理、分析することが簡単になるため、インサイト(見通し)を適時に取得して新しい情報に低レイテンシーに対応できる。また、特殊なニーズに合わせてカスタムストリーミングデータアプリケーションを構築する。

●ストリーミングデータ

数千ものデータソースによって継続的に生成されるデータ。

[ユースケース]
動画分析、一括からリアルタイムへの移行、動画分析アプリ、リアルタイムアプリなど

Kinesis Data Streams

【シャードの集合体】
次々と送られる大量のデータをリアルタイムに加工、収集、次のサービスに配送するためのサービス。データを中長期保存することを目的としない。そのため、レコードが追加されてからアクセスできなくなるまでの保持期間(Default:24h)がある。(DynamoDBにデータ保存はできない)

仕組み

一連のデータレコードを持つ「シャード」のセット。各シャードのデータレコードには、Kinesis Data Streams によってシーケンス番号(順序)があるため、メッセージが失われず、重複されず、到着と同じ順序で伝送することが可能。サーバー側での暗号化をサポートする。特定の場所に転送することはできない。
(処理速度を向上させるものではない、スループット(処理量)を増加させるもの)

デフォルトのデータ保持期間は24時間。この期間は、最大で8760時間(365日)まで延長できる。保持期間を延長すると、追加料金が発生する。

データバッファリングや一括処理には不向き

シャードKinesis Datastream内のデータレコードのシーケンス。シャードの増減によってデータの転送速度を変動できる。各シャードには、一連のデータレコードが含まれる。 [参考]
【1つのシャードあたり…】
・取り込み:1秒あたり最大 2MB のデータ
・書込み:1秒あたり 1,000 レコード
・ストリーム:1秒あたり最大10ギガバイト
[引用元公式サイト]
データレコードKinesis data stream に保存されたデータの単位。シーケンス番号、パーティションキー、データ BLOB (イミュータブルなバイトシーケンス) で構成される。各データレコードには、シャード内のパーティションキーごとに一意のシーケンス番号が割り当てられる。
※BLOB 内のデータが検査、解釈、変更されることは一切ない
構成

●プロデューサー(データ送信側)

データレコードを Kinesis Data Streamsに送信する。たとえば、Kinesis data stream にログデータを送信するウェブサーバーはプロデューサー。コンシューマーは、ストリームのデータレコードを処理する。

●コンシューマー(データ処理側)

Kinesis Data Streams からレコードを取得して処理する。これらのコンシューマーは Kinesis Data Streams Application と呼ばれる。S3、Redshift、Splunk などのサービスに直接ストリームレコードを送信する場合は、 Kinesis Data Firehose 配信ストリームを使用できる。
[拡張ファンアウト]
コンシューマーは、シャードあたり 1 秒間に最大 2 MB のデータのスループットで、ストリームからレコードを受け取ることができる。これにより、コンシューマーはスループット性能を向上させることができる。

●Kinesis Client Library(KCL)

Kinesis Data Streamからレコードを取得して、レコードプロセッサ と呼ばれるレコードを処理するためのハンドラをアプリケーション。EC2などの上で常駐させる。アプリケーションの開発者はこの レコードプロセッサ に処理を実装するだけで良く、レコードの取得、どのレコードまで処理したかの状態、Kinesisストリームのシャード増減を自動的に管理してくれる。

●Kinesis Producer Library(KPL)

Kinesis Data Streamsが提供するライブラリ。データストリームへの書き込みプロセスを簡素化する。 バッチ処理、集約、自動再試行などの機能を提供し、データ取り込みの効率性と信頼性を向上させる。

[データ処理によって、複数回のレコードが送信される理由]

Kinsis系のサービスではストリーミング処理を失敗した場合に、プロデューサーが断続的に再起動され複数回送信されてしまう場合がある。重複させないために主キーをレコード内に埋め込み、それぞれのレコードをユニークにする(同じものの存在を1つしか許さない状態)必要。下記2点についてはアプリケーション側で設計時に複数回送信されることを想定される。

  • プロデューサーの再試行
  • コンシューマーの再試行
連携サービス
LambdaLambda 関数を使用すると、Kinesis DataStreams のレコードを高速処理できる。Kinesis データストリームは、シャードのセット。Lambda 関数を共有スループットコンシューマー (標準イテレーター) にマップすることも、拡張ファンアウトを使用する専用スループットコンシューマーにマップすることもできる。
Application Auto ScalingApplication Auto Scalingを利用することでKinesis Data Stream に対してシャードを自動的に追加・削除する。スケーリングポリシーを定義を利用することでKinesis Data Stream に対してシャードを自動的に追加・削除するスケーリングポリシーを定義する。

Kinesis Data Firehose

完全マネージド型サービス(ゼロ管理)。設定を行うだけで、次々と送られる大量のデータをRedShiftやS3に流し込むサービス。分析用途であり、大量のデータを効率よく格納する圧縮技術やいかにセキュアにデータを保持するかに向いている。アプリケーションの構築なしに設定を行うだけでS3、Redshift,Elastic searchに自動的にデータを収穫・格納できる。

データのリアルタイム分析を直接実行する機能はない

・Lambda関数と統合されており、Lambda関数によるELT処理を連携することでデータ変換しつつ配信処理を実行できる。

●サブスクライバー

Marketplaceで提供されているソフトウェアやサービスを契約して利用しているユーザー。

機能概要
動的パーティショニングデータ内のキーを使用して、Kinesis Data Firehose でストリーミングデータを継続的にパーティショニングし、これらのキーでグループ化されたデータを対応する S3 プレフィックスに配信できる。これにより、Athena , EMR ,Redshift Spectrum などのさまざまなサービスを使用して、S3のストリーミングデータに対して高機能でコスト効率の高い分析を簡単に実行できる。
ゼロバッファリングほぼリアルタイムでデータを配信できるオプション。従来の Firehose は、データを一定時間(最小60秒)バッファリングしてから S3 や Redshift などに配信していたが、バッファ時間を0秒(0〜900秒 の範囲)に設定可能となり、数秒以内にデータを配信できる。
(リアルタイム性が求められるユースケースに最適)
追加処理(変換など)がない場合、5秒以内に配信できる
Lambda変換にもゼロバッファリング対応

Kinesis Video Streams

【動画処理】
動画を処理する。

Kinesis Data Analytics

【分析】収集したデータを可視化・分析。
リアルタイムのストリーミングデータの分析や処理、保存を行う。

Managed Grafana

【Grafana専用】
複数のソースからの運用メトリクス、ログ、トレースを即座に照会、関連付け、視覚化する。
拡張可能なデータサポートに対して定評があり、広く展開されているデータ視覚化ツールである Grafana を簡単に展開、運用、スケールできる。

★Grafana(グラファナ)とは
分析およびインタラクティブな視覚化を可能にする、マルチプラットフォームで動作するオープンソースのWebアプリケーション

ワークスペースと呼ばれる論理的に分離された Grafana サーバーを作成する。
シングルサインオン、データアクセスコントロール、監査レポートなど、コーポレートガバナンス要件に準拠するためのセキュリティ機能が組み込まれている。

MSK

【Apache Kafka専用】※MSK:Managed Streaming for Apache Kafka
Apache Kafkaをベースにした完全マネージドのストリーミングサービス。

★Apache Kafka
オープンソースの分散ストリーム処理プラットフォームで、リアルタイムのストリームデータを扱うためのツール

・可用性が高く、クラスターは最新の状態に保たれる。
・拡張性が高く、必要に応じて規模を換えることができる。
・Apache Kafka クラスターを複数のアベイラビリティーゾーン (AZ) に分散して提供する。
・既存アプリケーションで処理しているメッセージング機能をクラウドにすばやく簡単に移したい場合に最適。

Broker(ブローカー)Kafkaクラスタを構成するサーバーのこと。
Topic(トピック)メッセージを格納するための論理的な単位。データはTopicに分類される。
Producer(プロデューサ)Kafkaにメッセージを送信するアプリケーション。
Consumer(コンシューマ)Kafkaからメッセージを取得するアプリケーション。

[引用元]

[処理手順]

★以下を処理実行する
1:サーバーのプロビジョニング
2:Apache Kafka クラスターの設定
3:障害時のサーバーの交換
4:サーバーのパッチとアップグレードのオーケストレート
5:高可用性のためのクラスターの構築
6:データの永続的な保存とセキュリティの確保
7:モニタリングとアラームの設定
8:負荷変動をサポートするためのスケーリングの実行

MSF

【Apache Flink専用】※Managed Service for Apache Flink
Apache Flink を使用してストリーミングデータをリアルタイムで変換および分析し、アプリケーションを他の AWS サービスと統合できる。管理するサーバーやクラスターはなく、コンピューティングやストレージのインフラストラクチャをセットアップする必要もない。

・複雑なストリーム処理に適している。

●RANDOM CUT FOREST

データストリーム内の異常を検出する。

分析サポートサービス

Glue

【データ変換】
サーバレス型分析サービス。データ管理と変換する機能。データの加工などを行う、ETL(抽出・変換・格納)サービスであり、主にデータを分析する前に使うサービス。 データソースのデータを探索し、メタデータとして管理する。

[組み込み変換]

データを処理するために使用できる一式の組み込み変換を用意。これらの変換はETLスクリプトから呼び出すことができる。データは変換から変換へとDynamicFrameと呼ばれるデータ構造で渡される。

Data Catalogメタデータを格納するデータストア(=メタデータストア)。データベースやテーブルといった構造で保管する。S3 などのデータソースに保存されている構造化データ、または半構造化データの集まりをメタデータとして管理する。データカタログには、データベース、テーブル、スキーマといった構成を持ち、コネクション、クローラー、分類子といったメタデータを抽出するための機能がある。
Crawlerデータソースへの接続、データスキーマの推測、データカタログでメタデータテーブル定義の作成を行うプログラム
ETL Jobソースからデータの抽出、Apache Spark スクリプトを使用して変換、ターゲットにロードするビジネスロジック

[公式参考サイト]

Dynamic Frame

AWS Glue専用のデータ構造。SparkのDataFrameと似ていますが、1つのカラム(列)に複数の異なるデータ型を混在させられるという高い柔軟性が最大の特徴。

[主な機能と特徴]

生データの複雑なETL処理を簡単にするために設計されています。複数のデータ型候補を「Choice型」として保持し、後の処理で型を決定できます。SparkのDataFrameと相互に変換可能。一般的に、データの読み書きはDynamicFrameで行い、途中の複雑なデータ変換はDataFrameに変換して行うことが多い。

[構造]
DynamicFrameがデータ全体(テーブル)を表し、その中の1行のデータをDynamicRecordと呼ぶ。

Glue Find Matches

機械学習を使って類似レコードを検出する機能。特に、完全一致しないデータ(名前のスペル違いや住所の表記揺れなど)でも、同一人物や同一商品などを見つけたいときに活躍する。

[特徴]
・主キーや完全一致がなくても類似レコードを検出可能
・ラベル付きデータを使って機械学習モデルをトレーニング
・match_id列を付与して、同一グループのレコードを識別
・重複排除やインクリメンタルマッチングにも対応

Lake Formation

データレイクの構築・管理・アクセス制御を簡素化するマネージドサービス。S3 上のデータに対して詳細なアクセス制御が簡単に設定できる。構造化・非構造化データを一元管理できる。

  • アクセス制御を強化:IAM とは別の独自の権限モデルで、列・行・セルレベルまで細かく制御
  • セキュリティとガバナンスの向上:企業全体でのデータ共有と制限を両立
  • Lake Formation タグ を使ってデータを分類・ラベル付けし、リソースアクセスをキャンペーン単位などで制限可能。
  • AWS Glue Data CatalogAmazon Athena と連携し、統合的なメタデータ管理やアクセス制御を実現。
[主な機能と構成要素]
コンポーネント説明
データカタログGlue と共有するメタデータ管理機構。S3 上のデータをテーブルとして定義
アクセス制御LFタグ方式(タグベース)とリソース方式(個別付与)の2種類
ブループリントデータ取り込みのテンプレート。Glue のクローラーやジョブを自動生成
ワークフローデータ取り込みや変換処理の流れを定義。Glue のトリガーと連携
プリンシパルIAMユーザーやロールに対応。Lake Formation 独自の管理者権限も存在
LF-TBAC

[Lake Formation のタグベースアクセス制御 (LF-TBAC)]

  • LF-TBAC は、属性(タグ)に基づいて許可を定義する仕組み。
  • LF タグは Data Catalog リソース、Lake Formation プリンシパル、テーブル列などに付与可能。
  • プリンシパルのタグがリソースタグと一致したときに操作を許可する。
  • 急成長する環境やポリシー管理が複雑な状況で有効。
  • IAM の属性ベースアクセス制御 (ABAC) と連動し、細粒度アクセスを提供。

[メリット]

・名前付きリソース方式よりも柔軟で効率的。
・リソースが多数あってもスケーラブルに管理可能。

ADOT

※AWS Distro for OpenTelemetry
AWSが公式に提供する OpenTelemetry のディストリビューションで、クラウドネイティブな監視とトレーシングを簡単に実現するためのツールセット。

項目内容
目的アプリケーションのメトリクス、ログ、トレースを収集・送信するための統合ソリューション
ベース技術CNCF(Cloud Native Computing Foundation)プロジェクトの OpenTelemetry
特徴AWSサービスとの統合が強力(X-Ray、CloudWatch、ECS、Lambda など)
コンポーネントOpenTelemetry Collector(AWS対応版)、SDK(Java, Python, Go など)

[メリット]
AWSリソースのメタデータ取得:アプリケーションとインフラの関連付けが可能で、トラブルシューティングが高速化
一度の計装で複数サービスに送信:X-RayやCloudWatchなど、複数の監視ツールに同時にデータを送れる
サイドカーやエージェントとして柔軟にデプロイ可能:ECS FargateやEC2、Lambdaなどに対応

キューイングサービス

ストリーム処理をかけるデータはキューイングサービスを通すことが一般的である。

SQS

(Simple Queue Service)
キュー内の(複数の)ワーカープロセスでメッセージを処理し、確実な非同期(分散並行)処理を行う。キューの有効期限が切れるまで繰り返し処理する。

プロデューサキューにメッセージを入れる、取り出すサービス。
エンドポイントURLを介して送受信する。
キュー

メッセージを管理する入れ物のようなもの(256KB限度)デフォルトは4日間保存する。キューは手動で削除することが可能。

スタンダードキュー順番は保証されない。一回のメッセージ配信をサポートする。

・シーケンス情報
追加することで、順序良く受信させることができる。(スタンダードキュー可能)
先入れ先出し(FIFOキュー利用料金は高め。受信時にメッセージの並び替え、最低1回のメッセージ配信をサポートする。
・S3との連携はできない
・1秒あたり最大3,000トランザクション
・1秒あたり最大300メッセージをサポートする

[キューの切り替え]
FIFOキューに切り替えるなどする際は、新しくキューを作成する必要がある。
※FIFOキューは「コンテンツベース重複排除」を有効化することで、データを一意にできる
その他機能
キューイング
(待ち行列)
【一時退避】一時的に送信するデータをデータ領域に保持し、滞留させず確実に相手へ届ける。疎結合が可能。
デッドレターキュー (DLQ)【失敗処理】処理できないメッセージを別のキューに移動させる。正常に処理 (消費) できないメッセージのターゲットとする。アプリケーションやメッセージングシステムのデバッグに役立つ。
遅延キュー【受信遅延】キューへの新しいメッセージの配信を数秒間遅延させ、そのキューに送信したすべてのメッセージは遅延期間中にコンシューマーに表示されない。キューのデフォルト (最小) 遅延は 0 秒。最大値は15分。
メッセージ

キューの中に格納される情報。

●メッセージグループ ID

【メッセージのタグ付け】
メッセージが特定のメッセージグループに属することを指定するタグ。 同じメッセージグループに属するメッセージは、そのメッセージグループに関連して厳密な順序で 1つずつ処理される。

●可視性タイムアウト

【重複受信防止】
メッセージの受信中に他クライアントが受信しないように防止する(30秒~12時間まで延長可能)。メッセージは受信しただけでは消えず、クライアント側から削除指示を受けた時のみ削除される。

  • ChangeMessageVisibility
    新しいタイムアウト値を指定すると、メッセージの可視性を短縮または拡張できる。
  • VisibilityTimeout
    メッセージが1回受信された後、他のクライアントから同じメッセージを受信不可にするための時間。
    (デフォルトは30秒. 値は0〜43,200(12時間) の間で設定可能)
  • ReceiveMessage
    リクエストによってメッセージを取得。

●SQS Java 拡張クライアントライブラリ

【メッセージの保存管理】
メッセージを常に S3 に保存するか、メッセージのサイズが 256 KB を超える場合のみ保存するかを指定する。

・S3 バケットに保存されている単一のメッセージオブジェクトを参照するメッセージを送信する
・S3 バケットからメッセージオブジェクトを取得 / 削除する

ポーリング

複数のキューを呼び出して分散してメッセージを処理する。ただし、1つのキューにすべてのメッセージが入っているわけではない。
キューの中の先頭のデータが渡されるため、中の特定のメッセージを指定できない。
[参考]

ショートポーリングメッセージ取得時に特定のキューをランダムに選択し、そのキューからメッセージを取得する。リクエストを投げると結果は直ぐに返ってくるため、メッセージ取得時の待機時間0秒。しかし、結果が0件だった場合はリトライされるため、リクエスト回数が増え、料金が増加する
ロングポーリング
(推奨)
すべてのキューを確認し、処理可能な(待機時間を超過した)メッセージが存在する場合と接続タイムアウトになった場合のみ結果を返す。結果が0件の場合は返答しないため、SQS使用時のコストを削減できるので、ショートポーリングよりも推奨される。

※ReceiveMessageAPI アクションが 0 より大きい場合ロングポーリングは実行中

・KMSを使用したサーバー側の暗号化を使用したシームレスな保存データの暗号化をサポート。一元化されたキー管理が可能になる。
メトリクス

[参考公式サイト]

[AWS SQSで利用可能なCloudWatchメトリクス]

メトリクス名説明
ApproximateNumberOfMessagesVisibleキュー内で現在可視状態にある(取得可能な)未処理メッセージの数。消費対象としてすぐに取得可能。
ApproximateNumberOfMessagesDelayed遅延状態にあるメッセージの数。DelaySecondsが設定されており、まだ可視でないもの。
ApproximateNumberOfMessages(属性)CloudWatchメトリクスではなく、SQSキュー属性。Visible、Delayed、NotVisibleをまとめた情報をAPIで取得可能。

MQ

【Apache用】
Apache ActiveMQ および RabbitMQ 用マネージド型のメッセージキューイングサービス。AWS独自の方法ではなく業界標準APIやメッセージング用プロトコルを使ってるため、今までのアプリから接続先をMQに変えるだけで簡単に移行できる。リージョン内の複数のAZにメッセージを冗長的に保存するため、耐障害性が高い。

・ソフトウェアをインストールして管理したりする必要はない。
・ソフトウェアのアップグレードやセキュリティの更新、障害の検出と回復などのタスクを自動的に管理する。

●メッセージブローカー

【中間システム】
異なるシステム間でメッセージやり取りの時、直接データのやり取りせず、中間システムとしてメッセージ格納領域を管理する機能。

その他関連サービス機能

IAM Access Analyzer

【意図せぬ公開】
外部エンティティ(別のAWSアカウントのエンティティ)と共有されているS3バケットIAMロールなどが、セキュリティ上のリスクであるリソースとデータへの不適切なアクセスがないかを特定する。すなわち、AWSリソースに紐付いているポリシーを検査し、他AWSアカウントや外部のインターネット等からのアクセスを可能とするような意図せぬ公開設定がされているか確認する機能。

・ユーザーアクセスと最後にアクセスした情報に関する詳細なレポートを作成できる。

●S3 Access Analyzer

IAM Access Analyzeに基づいて現在のS3へのアクセスポリシーを監視できるサービス。
※IAM Access AnalyzeのS3用みたいなもの
バケットアクセスポリシーがS3リソースへの意図したアクセスのみを提供するように意図しないアクセスの可能性があるバケットを検出して迅速に修正できるようにする。また、S3バケットに対する外部アカウントからのアクセス情報を分析して、不正なアカウントアクセスがないかを確認することができる。

S3に関する分析機能

S3 Select

単純なSQL式を使用してS3バケット内のオブジェクト内のデータのサブセットを取得し、より迅速かつ安価に分析および処理できる。

[S3インベントリをフィルタリング]
S3インベントリ内のレポートをフィルタリングして、暗号化されていないオブジェクトなどを検索できる。

[データの解析には不向き]
シンプルなSQLステートメントを使用してS3オブジェクトのコンテンツをフィルタリングし、必要なデータのサブセットのみを取得できる。結果として、S3が転送するデータ量を削減でき、データ取得に要するコストを削減し、待ち時間を改善できる。

・アーカイブ容量の最大は250MB未満

※簡単なデータ検索や抽出に利用される機能であるため、本件の高度なビッグデータ分析には利用できない。

Athena

標準のSQL式を使用して、S3 内のデータを標準 SQL を使用して簡単に(アドホックなSQL)分析できるクエリサービス。サーバーレスなため、インフラストラクチャの管理は不要。S3のデータをポイントし、スキーマを定義し、標準のSQL式を使用してクエリを開始するだけ。S3上にログ等のデータを保管しており、それを分析用途に簡単に利用したい、新しく取得したデータに対してDWHに入れるべきかを検証する場合に利用が適する。

[課金について]
実行したクエリに対してのみ料金が発生する。

●CTAS (CREATE TABLE AS SELECT) コマンド

あるクエリの実行結果から新しいテーブルを作成できる。作成されたデータファイルは、指定したS3の場所に保存されます。S3上のデータをクエリしやすい形式(例: Parquet形式やパーティション化された形式)に変換・最適化し、分析パフォーマンスを向上させるための強力な機能。

[パーティション化]

機械学習を使って類似レコードを検出する機能。特に、完全一致しないデータ(名前のスペル違いや住所の表記揺れなど)でも、同一人物や同一商品などを見つけたいときに活躍。時系列データを日付プレフィックスでパーティション化することでクエリ効率を大幅に向上させることができる。

[特徴]
・主キーや完全一致がなくても類似レコードを検出可能
・ラベル付きデータを使って機械学習モデルをトレーニング
・match_id列を付与して、同一グループのレコードを識別
・重複排除やインクリメンタルマッチングにも対応

S3 分析

ストレージクラス分析】

ストレージアクセスパターンを分析し、適切なデータをいつ適切なストレージクラスに移行すべきかを判断できる。
アクセス頻度の低い STANDARD ストレージをいつ STANDARD_IA (IA: 小頻度アクセス) ストレージクラスに移行すべきかを判断できるように、データアクセスパターンを確認する。

EMR

【S3を高分析】※Elastic MapReduce
※スポットインスタンスと相性が良い
Apache HadoopApache Sparkなどのオープンソースツールを利用し、大量のデータを迅速に処理するために分散アプリケーションを実行する。マネージド型 Hadoop フレームワーク。(高速処理ではない)

・GoogleのフレームワークであるMapReduceをベースに実装されている。
・S3にある大量のログファイルを処理して、分析するのに最適なサービス。
・EMRの処理結果をS3をはじめとしたAWSの他のサービスと連携できる。

伸縮自在EMRのコンピューティングとストレージは分離されているため、スケーリングができる。
信頼性クラウド向けの調整。パフォーマンスの低いインスタンスは自動的に置き換わる。
安全性インスタンスへのアクセスは自動制御、またKMSを使用して暗号化を行うことが可能。
低コスト最小課金時間が1分、そして1秒毎に課金される。
仕組み

●Apache Spark

EMRクラスターを使用した機械学習、ストリーム処理、またはグラフ分析に役立つ分散処理フレームワークおよびプログラミングモデル。 Apache Hadoopと同様に、ビックデータのワークロードを処理するために一般的に使用されているオープンソースの分散処理システム。

イメージ比較
・Redshiftは標準的な Apache Sparkの3倍以上の速さで、ペタバイト規模の分析を実行できる。

●Hadoop

巨大なデータを処理するため、アプリケーションの実行をハードウェアのクラスター上で行うオープンソースのソフトウェアフレームワーク(プラットフォーム)。

  • HDFS(Hadoop Distributed File System)
    コモディティハードウェア上で実行するように設計された分散ファイルシステム。

    ・耐障害性を備えており、低コストのハードウェアに導入できるように設計されている。
    ・アプリケーションデータへの高スループットを提供する。
    ・Apache Hadoop のファイルシステムデータへのストリーミングアクセスを可能にする。

●Kerberos ベースの認証

EMRクラスターのセキュリティ強化に使用。はじめにIDとパスワードで認証に成功すると、証明のための「チケット」が発行される仕組み。

ノード
プライマリノード
(Primary Node)
・クラスター全体の管理を担当
・データ損失が起きるとクラスター全体に影響
・オンデマンドインスタンスで実行し、高い可用性を確保するのが推奨
コアノード
(Core Node)
・データストレージと分散処理に不可欠な役割を持つ
・データ損失が発生すると復旧困難
・オンデマンドインスタンスを選択して安定性を担保するのが推奨
タスクノード
(Task Node)
・主に計算負荷の分散処理を担当
・データストレージには関与しない
・コスト効率を優先して スポットインスタンスを利用可能
・中断される可能性があるが、タスクノードはその影響を最小限に抑えられる設計

●マスターノード

クラスターを制御し、分散アプリケーションのマスターコンポーネントを実行。クラスターにサブミットされたジョブステータスを追跡して、 インスタンスグループの健全性を監視。マスターノードは一つしかなく、インスタンスグループまたはインスタンスフリートは1つの EC2で構成される。
※マスターノードが終了するとクラスターも終了するため、マスターノードは突然終了しても問題が発生しないクラスターを実行している場合にのみ、スポットインスタンスとして起動するようにするとよい。

●コアノード

マスターノードによって管理される。データノードデーモンを実行して、Hadoop Distributed File System(HDFS)の一部を使用して データを格納する。さらにタスクトラッカーデーモンを実行し、インストールされているアプリケーションを要求する。 データ上で、その他の並列計算タスクを実行。マスターノードのように、クラスターあたり最低一つのコアノードが必要。
※コアインスタンスを終了すると、データ損失のリスクがある

●タスクノード

タスクノードはオプション。Hadoop MapReduceタスクやSpark実行プログラムなど、データに対して平行計算タスクを実行するための能力を追加するために使用。データノードデーモン上で実行されることも、HDFSでデータを保存することはない。コアノードと同様に既存のユニフォームインスタンスグループにEC2インスタンスを追加することでクラスターにタスクノードを追加、あるいはタスクインスタンスフリートのターゲット容量を変更することができる。オンデマンドインスタンスなど、異なるインスタンスタイプおよび価格設定オプションを組み合わせることができる。

S3 Storage Lens

オブジェクトストレージおよびアクティビティを組織全体で可視化するために使用できるクラウドストレージ分析機能。メトリクスを分析して、ストレージコストを最適化し、データ保護に関するベストプラクティスを適用するために使用できるコンテキストに応じた推奨事項を提供する。

[(デフォルト)ダッシュボード]
複数のAWSリージョンにわたるS3バケットの監視と、暗号化されたオブジェクトの割合の追跡に適した統合ダッシュボード。
S3コンソールを使用して直接ダッシュボードにアクセスできるため、追加のデータ集約やダッシュボードの作成が不要になる。

[クエリと集計関数の活用]
stats コマンドを使ってログデータを集計
・特定フィールドの値でグループ化し、件数をカウント
・クエリ結果を棒グラフ・折れ線グラフなどで視覚化可能

[視覚化とパターン分析]
・ログデータの傾向や異常をグラフで把握
stats と集計関数を組み合わせて、効率的な分析が可能

[クエリ構文の柔軟性]
・正規表現、算術演算、関数などをサポート
・複雑な条件でロググループに対して検索・抽出が可能

Cloud Watch関係

CloudWatch log insight

【Cloud Watchlogの検索】
CloudWatch Logsのログデータに対し、独自の構文を使ってクエリのようにデータを検索したり分析したりすることができる機能。ロググループ内のログデータの分析に特化しており、集計したデータをダッシュボードに表示することができる。

リアルタイムの監視やアラート設定はできない。

●ロググループ

複数のログストリームをまとめた単位。1つのロググループには複数のストリームが含まれ、アプリケーションやサービス単位でのログ管理を可能にする。

[クエリ構文]
専用のクエリ言語を用いてロググループを分析できる。

  • 汎用関数:ログ項目の抽出や結合、フィルタリング
  • 算術・比較演算:数値演算や大小比較による絞り込み
  • 正規表現サポート:文字列パターンのマッチング
  • 集計関数:集計、統計情報の生成
  • ソート・制限:結果の並び替えや上位N件の取得

CloudWatch Application Insights

【アプリケーションの監視】
他のアプリケーションリソースとともに インスタンスを使用するアプリケーションをモニターリングする。

[アクション実行]
メトリクスとログを継続的にモニターリングし、異常やエラーを検出して相互に関連付ける。エラーや異常が検出されると、Application Insights は CloudWatch Events を生成する。これを使用して、通知を設定したり、アクションを実行したりできる。

[ダッシュボード]
トラブルシューティングに役立てるために、検出した問題の自動ダッシュボードを作成します。このダッシュボードには、相互に関連付けられた異常とログエラー、さらに根本原因を示唆する追加のインサイトが示されます。

CloudWatch Contributor Insights

【高頻度ボトルネック可視化】
CloudWatch Logsから取得した時系列データから上位(高頻度)の要素をリアルタイム分析を簡素できる機能。ログデータから特定の項目の頻度をランキング形式で表示し、トラフィックの傾向や主要な原因を特定するためのサービス。

パフォーマンスのボトルネックや、使用されているリソースなどを一目で確認できるダッシュボードで確認することができる。
CloudWatch Logsにエクスポートしたシステムやアプリケーションログなどからエラーが多いURLを特定したり、VPC Flow Logsで意図しないIPアドレスからのアクセスを特定したりすることができる。

CloudWatch Container Insights

ECS・EKS・EC2 上の Kubernetes クラスタで動作するコンテナ化アプリケーションやマイクロサービスのリソース使用率と稼働状況を収集・可視化する機能。

[主要ポイント]

[対象環境]Amazon ECS、Amazon EKS(EC2 プロビジョニングされたクラスタのみ)、EC2 上の Kubernetes
[収集メトリクス]
・Pod レベルのメモリ使用率(pod_memory_utilization)
・ノードレベルのメモリ使用率(node_memory_utilization)
・サービスレベルのエラー率や CPU 使用率(Service インサイト)

[活用方法と注意点]
・AWS CloudWatch ダッシュボードで Pod/ノード/サービス単位のメトリクスを可視化できる
・サービスインサイトを有効にするには、対象となる Kubernetes サービスにタグ付けが必要
・タグがないとサービスレベルのメトリクス収集が行われない

  • 目的:リアルタイムで CloudWatch メトリクスを外部サービスにストリーミングする機能。
  • 用途:監視や可観測性の向上、サードパーティーサービスとの統合に活用。
  • 対応先:Amazon S3、Amazon Kinesis Data Firehose、サードパーティープロバイダーなど。

[構成要素]

要素説明
データレイクメトリクスを Amazon S3 に保存して分析可能。Kinesis Data Firehose 経由で S3 に送信。
サードパーティープロバイダーDatadog や New Relic などの外部サービスに直接ストリーミング可能。

Data Exchange

【リソース取得】
公開されている第三者機関のデータをAWSクラウドへ取り込み、分析したり機械学習に活用したりできる。または、手持ちのデータをアップロードして、ユーザーへ配布・共有できる。

[サブスクリプションの検証]
データを共有する前に送り先の身元を確認でき、信頼性の確保を実現する。

データベースサービス

基礎知識

●エビクション

キャッシュが満杯の状態。キャッシュ内に必要なデータを保存し、不要なデータを追い出すこと。

●接続文字列

どのサーバの、どのデータベースに、どのOLEDBプロバイダーで接続するかを指定するための文字列。障害発生時に、再度更新に時間がかかる要素。AWS DLM(EBS)が有効策。

●プロキシフリート

リソースのフリート(集団)を管理しており、DBなどの接続を仲介する(?)

  • フリート
    一般的に、「集団」、「ものの集合体」を意味する。フリートを使用することによって、マルチクラスタ機能の使用と管理、複数のシステム間での一貫したポリシーの適用が可能。

●変更データキャプチャ(Change Data Capture:CDC)

テーブルの特定のデータソースが追加・削除・更新などの変更情報を追跡することができる。

●RDBMS(Relational DataBase Management System)

SQLを利用して、RDBを管理するためのソフトウェアの総称 下記のソフトウェアを選択して利用できる。(各ソフトウェアを利用したDBを作成可能)
・MySQL(Amazon Auroraと互換性あり)⇒パフォーマンスの向上
・ORACLE
・Microsoft SQL Server , PostgerSQL
・MariaDB
・Amazon Aurora(MySQl,PostgerSQL)

●完全なスナップショット

インスタンスの停止が必要。マルチAZ配置で設置されたDBのスタンバイ側は読み込みをサポートしていない。

[サーバーとセッション情報について]

セッション管理しているサーバーに障害が発生した場合、セッション情報が消える。⇒再度処理しなおす必要がある。➡各サーバーにセッション情報を置かずに、DBを利用して保存する。(セッション情報は消えない)

[NoSQLについて]

「柔軟でスキーマレスなデータモデル」「水平スケーラビリティ」「分散アーキテクチャ」「高速な処理」 RDSやAuroraなどのリレーショナルデータは、サーバレスアーキテクチャとの互換性が低い 小規模データを保存・処理するためにはNoSQLデータベースを利用することが最適。

[「DBインスタンス」という表現]

例として、「RDS」と「DBインスタンス」の違いを記載すると以下になる。

・AWS RDSは、クラウド上でデータベースの管理を簡素化するマネージドサービス全体
・AWS DBインスタンスは、RDSの中で実際に動作する個々のデータベース環境。ユーザーが選択したエンジン(MySQL、PostgreSQLなど)で動作し、設定可能。

つまり、RDSはサービスの枠組みであり、DBインスタンスはそのサービスの中で動作する具体的なデータベース環境ということ。

RDS

(Relational Database Service)
シンプルかつ迅速にスケール、安定したパフォーマンス、低コストを実現可能なデータベース。(停止してから7日間経つと自動的に起動される)。データを複数の表として管理し、それぞれの関係を定義することで、互いの関連性を扱えるデータベース。リードレプリカは最大5台まで。

高速なフェイルオーバー: データベースに障害が発生し、別のデータベースに切り替わっても、プロキシが自動的に接続先を切り替えるため、アプリケーションは再接続する必要がなく、ダウンタイムを最小限に抑えられる。

接続の管理: アプリケーションからの接続をプール(集約)し、データベースへの接続数を削減することで、データベースの負荷を軽減する。

(課金:1秒単位 ※プライマリとスタンバイ間のデータレプリケーションに課金は発生しない)
※RDSのオンデマンドより、リザーブドインスタンスの方が費用対効果が高い

マルチAZ構成にすると、自動的にフェイルオーバー構成になる
・頻繁にまたは同時に上書きおよび削除するデータに向いている
・複数の同時書き込み操作をサポートし、常に最新のデータが返される
・MySQLのストレージエンジンに【InnoDB】を利用⇒複雑なクエリ、結合処理が可能
・DBインスタンスのバックアップに自動バックアップとスナップショットをAmazon S3に保管する
・DBインスタンス全体の保存期間を35日間に設定できる。破損からデーターベースを守ることができる。

[注意点]

・個別パッチは適用できない
・AutoScaling グループは使用できない
・OSにログインはできない(別途RDBMSの検討が必要)
・ファイルシステムへのアクセスができない(ファイルシステムとの連携がサポートされていない)
・作成した、DBインスタンスのパラメータの変更について➡[動的:インスタンスの再起動不要]、[静的:インスタンスの再起動必要]
・テーブルのパーティションは16TBが限度(ストレージは64TBまで拡張可能)

●リードレプリカ

読み取り専用のDB。アクセス数が多くDBに読み取り負荷が起きている場合など、リードレプリカを構築することでプライマリデータベースへの負荷を分散する。マルチAZ構成との違いは、リードレプリカへのデータ更新は非同期で行われる点。

機能性

●RDS Performance Insights【DB負荷評価】

データベースの負荷を可視化し、負荷を発生させている SQL ステートメントとその理由を簡単に調べられるようにする。RDSのパフォーマンス分析ツール。データベースのワークロードを分析し、ボトルネックや遅延の原因を特定。

・設定もメンテナンスも不要で、現在は Auroraと RDSで利用可能。
・AWS API と SDK を使用すると、Performance Insights をオンプレミスやサードパーティーのモニタリングツールと簡単に統合できる。

[データの保存期間]
無料で 7 日間のパフォーマンス履歴を保存でき、多種多様な問題を簡単に突き止めて解決できる。もっと長い期間の保存が必要なときは、最大 2 年間のパフォーマンス履歴を有料で保存することもできる。

●RDSメンテナンスウィンドウ

週次で設定し、AWSによって行われる、変更やソフトウェアのパッチなどが実行されるタイミングをコントロールできる。アップデートが突然行われると、提供しているサービスがダウンしたりと障害につながるようなことを防ぐ。なお、設定しない場合は、デフォルトのメンテナンスウィンドウを指定される。

[オプション]

ポイントインタイムリカバリー直前5分前から最大35日間までの任意のタイミングの状態のRDSを新規に作成することができる。
バックトラック機能指定した時間(上限は72時間)まで新しいDBクラスターを作成せずに、本番用データベースクラスターを巻き戻すことが可能。新しいDBクラスターを作成しないため、スナップショットからの復元やポイントタイムリカバリと比較すると迅速に復元できる。
拡張モニタリング有効化(Enhanced Monitoring)
DBインスタンス上のさまざまなプロセスまたはスレッドがCPUをどのように使用しているかを常時モニタリングする。OSレベルのメトリクスをリアルタイムで提供(CPU,メモリ、ファイルシステム、ディスクI/O、プロセスリストなど)
クロスリージョンリードレプリカRDS のリージョン間リードレプリカを使用すると、ソース DB インスタンスとは異なるリージョンに MariaDB、MySQL、Oracle、PostgreSQL、または SQL Server のリードレプリカを作成することができる。
※DR対策に有効
Amazon RDS on VmwareオンプレミスVMware 環境マネージド型データベースをデプロイできる。RDS同様に下記処理を自動化できる。
・ハードウェアのプロビジョニング
・データベースのセットアップ
・パッチ適用
・バックアップなど

RDS Proxy

【可用性機能】
アプリケーションでデータベース接続をプールおよび共有して、アプリケーションのスケーリング能力を向上させる。「データベース接続のオーバーヘッド削減」、「コネクション管理」を主とする。RDS の前段に配置され、RDSのエンドポイントにプロキシとして接続するサービスでもある。

・アプリケーションがDBへの接続を失ったとしても、再起動することなく接続を再確立できる。

交通整備接続プールからアプリケーション接続をすぐに提供できない場合、これらの接続の処理順番を決めたり、スロットリングを行う。
スケーリングレイテンシー増加時、データベースの障害や過負荷を発生させず、アプリケーションは継続して(RDSインスタンスが)スケーリングされる。
接続数管理接続リクエスト数が指定した制限を超えると、アプリケーション接続を拒否 (負荷を削除) 。同時に、負荷に対してパフォーマンスを維持する。
接続プール再利用アプリケーションの接続を維持しながらスタンバイインスタンスに自動的に接続することができるように設定されている。これにより、アプリケーションはデータベースへの接続を失った場合でも、再起動することなく接続を再確立できる。
フェイルオーバーデータベース接続プールを確立し、このプール内の接続を再利用することで、毎回新しいデータベース接続を開くことによるメモリと CPU のオーバーヘッドを回避できる。
(※認証情報を処理するオーバーヘッドを減らし、新しい接続ごとに安全な接続を確立できる。この作業の一部をデータベースに代わって処理できる)

●RDSプロキシエンドポイント

アプリケーションがデータベースに接続する際に使用する、RDSプロキシというサービスの接続先。通常、アプリケーションは直接RDSデータベースに接続しますが、RDSプロキシを使うことで、その間にプロキシが入り、接続管理を効率化できる。

パラメータグループ

データベースに割り当てるメモリなどのリソースの量などの設定方法を指定できる。
※データベース接続時の SSL / TLS 暗号化を強制できる

DB インスタンスとマルチ AZ DB クラスターをパラメータグループに関連付けて、データベースの設定を管理する。
Amazon RDS は、デフォルト設定を使用してパラメータグループを定義する。カスタマイズした設定を使用して独自のパラメータグループを定義できます。

ストレージタイプ

※GBあたりの容量課金を実施

・汎用(SSDタイプ)
・プロビジョンドIOPS(SSDタイプ):汎用よりIOPSが高い
・マグネティック(HDDタイプ):[GBあたりの容量課金を実施]+IOリクエスト課金

暗号化

・SSL/TLSを使用してDBインスタンスへの接続を暗号化する
・保管時のデータリソースを暗号化する
・暗号化オプションの有効化はRDSインスタンス作成時のみ有効。

[作成後の暗号化]

スナップショットをコピー・暗号化し、新しいインスタンスとして復元することで可能。

[接続の暗号化(PostgreSQL)]

Amazon RDS for PostgreSQL ではカスタムパラメータグループを使用することで、データベース接続時のSSL/TLS暗号化を強制でき、通信内容を暗号化することができる。

[その他]

  • AES-256暗号化
  • AWS KMSによる鍵管理
  • リードレプリカも同じ鍵管理を利用
  • インスタンス作成時にのみ設定可能
  • スナップショットのコピーの暗号化/リストア可能
[ストレージ容量の確認方法]

Webコンソールの「RDS」→「インスタンス」→「モニタリングを表示」で「Free Storage Space(MB)」が表示される。

[Lambda関数を使って、RDSに接続設定]

(Lambdaを利用したサーバーレス構成必須)
Lambda 関数用の Amazon RDS Proxy データベースを作成できる。 データベースプロキシは、データベース接続のプールを管理し、関数からのクエリを中継する。これにより、データベース接続を 使い果たすことなく、関数の同時実行レベルを高くすることができる。

Aurora

(RDSで使用できるデータベースの1つ)
MySQLとPostgreSQLと互換性がある分散型RDB。標準的なMySQL。データベースと比べて最大で 5 倍、標準的な PostgreSQL データベースと比べて最大で 3 倍高速。(※NoSQL非対応)※高頻度の書き込みの不向き

・Auroraリードレプリカは負荷削減として機能すると同時に自動フェールオーバー機能を備えているため、セカンダリデータバーストしても機能する。また、自己修復機能を備えている。
・DBインスタンスを作成すると、DBクラスタ(複数のDBインスタンス)が作成される(データ量:最大64TB)
・作成されたDBインスタンスは3つのAZにわけられる。1AZあたり2箇所、3AZに渡りコピー、つまり2×3=6箇所のストレージにコピーされる
(※3つのAZに6か所のデータをレプリケート)
・DBの冗長化構成(マスターデータベース/リードレプリカ)。スタンバイレプリカで読み取り処理は不可
・データベースインスタンスのトランザクションログを5分ごとにS3に保存している

機能性

●Amazon Aurora AutoScaling

Aurora DB クラスター用にプロビジョニングされる Aurora レプリカのみ (リーダー DB インスタンス) の数を動的に調整する。
・Aurora MySQL と Aurora PostgreSQL の両方で使用できる。
・使用する Aurora DB は急激な接続やワークロードの増加を処理できる。

・クラスターボリュームはDBエンジンのバージョンに応じて、128テビバイト(TiB)または64Tibまで自動的にスケールする

種類

●Aurora Serverless(※AZ規模のDR(Disaster Recovery)向け)

オンデマンドで自動スケーリングするデータベース。アプリケーションの負荷に応じて自動的に起動・(アクセスがなければ)停止し、容量も調整される。必要なときに必要なだけリソースを利用できる。処理負荷が一定ではない、予測困難なワークロードに適している。

秒単位での従量課金制が採用されており、非アクティブ時はコストが抑えられる。
・セットアップはシンプルで、エンドポイントの作成と容量範囲の指定のみで使用可能。
標準のAurora設定との切り替えも簡単で、数クリックで移行できる。

[構造]
・DB インスタンスクラスのサイズを指定せずにデータベースエンドポイントを作成して、最小と最大のキャパシティーを設定。
・データベースエンドポイントからプロキシフリートに接続される。(プロキシフリート=インスタンス群のグループ?)このフリート内で、最小と最大のキャパシティー設定に基づいてリソースを自動的にスケールして調整する。
[引用元サイト]

●Aurora Global Database

(※リージョン規模のDR(Disaster Recovery)向け)
複数のAWSリージョンにまたがる単一のAuroraデータベースを使って、グローバルに分散したアプリケーションを実行できる。データのマスターをプライマリリージョンに1つ、読み取り専用(最大5つ)をセカンダリリージョンに構成。書き込み操作は、プライマリAWSリージョンにあるプライマリDBクラスターに直接発行。

データベースのパフォーマンスに影響を与えずにデータをレプリケートし、各リージョンでレイテンシーを低減してローカル読み取りを 高速化し、リージョン規模の停止からの災害復旧を実現する。

※マルチマスター設定非対応
マルチマスター設定:複数のマスターノードが互いに連携して動作する構成
DBインスタンスごとに、読み取りオペレーションと書き込みオペレーションの両方を実行できる Auroraクラスターのアーキテクチャ。シングルマスターと比較するとmマルチマスタークラスターは、マルチテナントアプリケーションなどのセグメント化されたワークロードに最適。

●Aurora Serverless v2

・オンデマンドで自動的にスケーリングされる Aurora データベースの構成
・アプリケーションの負荷に応じて容量を自動的に調整
・使用したリソースに対してのみ課金されるため、コスト最適化に有効
・手動のキャパシティ調整が不要になり、運用負荷が軽減
Auto Scaling 機能を備えたリレーショナルデータベース。キャパシティは自動で調整される。
コンピューティングとストレージの分離がある。結果として、個別に独立してスケールすることが可能。

★2025 年 3月 31 日 サポート終了
Aurora Serverless v1 (Aurora サーバーレスバージョン 1)
Aurora 用のオンデマンドオートスケーリング構成。頻度が低く、断続的、または予測が困難なワークロードを処理するための、比較的シンプルかつコスト効率の高いオプションを提供。
コスト効率が良いのは、アプリケーションの使用状況に合わせて自動的に起動してコンピューティング性能をスケールし、不使用時にはシャットダウンするためである。
Aurora Serverless v1 DB クラスターでは、クラスターのコンピューティング容量を、アプリケーションのニーズに対応して増減させられる。

※リードレプリカや複数のライターインスタンスをサポートする機能を提供しない。
このため、リードレプリカの作成や複数のライターインスタンスを持つDBクラスターの設定は実現できない。

エンドポイント

エンドポイントを使用すると、ユースケースに基づいて各接続を対応するインスタンスまたはインスタンスグループにマッピングできる。

クラスターエンドポイントDB クラスターに対するすべての書き込みオペレーション (挿入、更新、削除、DDL の変更など) で使用する。DB クラスターへの読み取り/書き込み接続のフェイルオーバーサポートを提供。
リーダーエンドポイントすべての Aurora レプリカ間で接続バランシングを自動的に実行する。
インスタンスエンドポイント特定の DB インスタンスの詳細を調べて、診断またはチューニングを行う。
カスタムエンドポイントDB クラスター上の DB インスタンスのさまざまなサブセットに接続する。
Aurora Global Database ライターエンドポイント書き込みリクエストと読み取りリクエストの両方を処理する。

[公式参考ページ]

[RDS との比較]
特徴AuroraRDS for MySQL
Multi-AZ 構成3つのAZに2つずつの
レプリケーションを
デフォルトで構成
2つのAZを利用
データベース
ストレージサイズ
最大64TiB最大32TiB
最大リード
レプリカ数
最大15最大5
レプリケーションタイプ非同期的MultiAZ構成:同期
リードレプリカ:非同期
リードレプリカの
フェイルオーバー
ターゲットとしての機能
はい
(データ損失なし)
はい
(数分間データ損失の可能性)
自動フェイルオーバーはいいいえ

[引用元サイト]

DynamoDB

※スナップショットなし【NoSQL型=ビックデータ向けDB】
パーティショニング(分散処理)で、ビッグデータ処理や大量データ処理、ストリーミングデータを利用したリアルタイムデータ集計・処理などに最適。セッションデータやメタデータなどのシンプルな高速処理をするサーバレスDB。マルチAZ 3か所のAZに保存される。ストレージの容量制限がない。

※DynamoDBにSaving Plansは提供されない

[料金]
コストはHTTPリクエスト(データI/O)の回数とリクエスト、レスポンスの量(データI/Oのサイズ)により計算される

[エラー]
Provisioned Throughput Exceeded Exception:書き込み容量の不足

機能性

●Amazon DynamoDB Read OnlyAcess権限

AWSリソースにアクセスするための一時的な認証情報をEC2インスタンスに付与する安全な方法。

●Amazon DynamoDB 有効期限 (TTL)

項目ごとのタイムスタンプを定義して、項目が不要になる時期を特定できる。指定されたタイムスタンプの日付と時刻の直後に、DynamoDB は書き込みスループットを消費することなく、テーブルから項目を削除する。TTL は、ワークロードのニーズに合わせて最新の 状態に保たれている項目のみを保持することで、保存されたデータボリュームを削減する手段として、追加料金なしで提供される。

●DynamoDB AutoScaling

Application Auto Scalingサービスを使用して、実際のトラフィックパターンに応じて、プロビジョニングされたスループット容量を動的に 調整する。これは、コストを最適化するための最も効率的で費用効果の高いソリューション。 テーブルまたはグローバルセカンダリインデックスで、プロビジョニングされた読み込みおよび書き込み容量が拡張され、トラフィックの 急激な増加をスロットリングなしに処理できるようになる。ワークロードが減ると、Auto Scalingはスループットを低下させ、未使用の プロビジョニングされた容量の料金が発生しないようにする。

[テーブル関係]

●TrasactWriteItems

テーブル内の複数のアイテムに対する調整されたオールオアナッシングの変更をサポートする。

●オプティミスティックロック

データベースの書き込みは他のユーザーの書き込みによって上書きされないように保護する。

●ペシミスティックロック

編集されている間、レコードごとロックされる。

●FGAC(Fine Grained Access Control)

DynamoDB テーブルの所有者がテーブル内のデータに対して詳細なコントロールを行うための機能。具体的には、テーブル所有者は 誰(呼び出し元)がテーブルのどの項目や属性にアクセスでき、どのようなアクション(読み込み/書き込み)を実行できるか指定できる。IAMと組み合わせて使用され組織内のユーザーのアクセスを細かく管理することができる。セキュリティ認証情報および対応する アクセス権限の管理は、IAM で行う。

処理概要

・テーブル設計(テーブル>項目(アイテム)>属性)
・プライマリキーの値を指定して、テーブルの項目に高速アクセスしデータを迅速に取得する。
・多くのアプリケーションでプライマリキー以外の属性を使って、セカンダリ(または代替)キーを 1 つ以上設定することで、データに効率的にアクセス。(ホストを増やし(ホスト1 A/ホスト2 B,C)、テーブルを自動的にスケールアップ/ダウンして容量を調整し、大量の処理が可能になる)

・データ項目に制限在り(アイテム最大サイズ:上限400KB)増え続けるデータを永続的に保持する。

処理形式

[DB処理形式]

スカラー型スカラー型は 1 つの値を表すことができます。スカラー型は、数値、文字列、バイナリ、ブール、および null
ドキュメント型ドキュメント型は JSON ドキュメントなどの入れ子の属性を持つ複雑な構造を表すことができる
セット型セット型は複数のスカラー値を表すことができます。セット型は、文字セット、数値セット、およびバイナリセット。

[書き込み形式]

条件付き書き込み複数のユーザーが同じ項目を同時更新することを防げる
アトミックカウンターその他の書き込みリクエストを妨害することなく、無条件で増分される数値属性。
バッチオペレーションアプリケーションからDynamoDBへのネットワークラウンドトリップの数を減らす
テーブル

テーブル上に複数のパーティション{パーティションキー(大枠)+ソートキー(分類など)}。

パーティションキーデータをどのパーティションに配置するか決定する。各パーティションへのアクセスがなるべく均一になるようなパーティションキー設計を推奨。
ソートキーソートキーによってデータはパーティション内で並べ替えられて物理的に近くなるように配置される。QueryAPIではソートキーを指定して取り出すデータの範囲をフィルタできる。ソートキーの設定は任意。
プライマリキー(主キー)「パーティションキー」または「パーティションキーとソートキーの複合キー」のこと。プライマリキーによってデータは一意に識別される。
キーバリュー型リレーショナルなしにバリュー1行にデータをまとめることで高速処理になる
並列スキャンスキャンパフォーマンスの向上。
乱数
サフィックス
書き込みスループットを大幅に向上させることができる。
制限
パラメーター
消費されるプロビジョニング済みのスループットを制限できる(読み込みキャパシティーユニットの半分でテーブル全体のスキャンを行う)
グローバル
テーブル
複数のリージョン間でのレプリケーション(同期)を自動化する。
マルチリージョンフェイルオーバー機能が提供される。
APIが利用するデータが常に最新の状態で 保たれるため、リージョン間でフェイルオーバーがスムーズに行われる。
キャパシティモード

【24時間に1回行える
キャパシティモードの指定はテーブル毎に設定可能。読み取りおよび書き込みスループットの課金方法と容量の管理方法を制御する。読み取り/書き込みキャパティーモードは、テーブルを作成するときに設定できる。

●キャパシティユニット

パフォーマンスをどれだけ出せるかの設定であり、これが高いとコストがかかるがパフォーマンスが出せる。キャパシティユニットは2種類に分かれる。WCU(ライトキャパシティユニット)は書き込みできる量。RCU(リードキャパシティユニット)は読み取りできる量。

  • キャパシティ
    利用量のこと。DynamoDBは項目の読み込み、書き込みの量。

●プロビジョニングモード

(1時間辺りのキャパシティに対する課金)
テーブルに設定すると、1秒間あたりのテーブルの読み込み及び書き込み回数に制限を設ける必要がある。DynamoDBにおけるスループットキャパシティの単位として、テーブルに書き込みキャパシティユニットと読み込みキャパシティユニットを指定する。この制限をスループットと言う。

スループット:テーブルが1秒間に許容できるデータの書き込み及び読み込み上限回数のこと

  • 読み込みキャパシティユニット
    項目の読み込みについて、基本的な消費キャパシティユニットの計算は以下の通り。
    ・1秒あたり4KBの項目の結果整合性読み込みを2回行う:1キャパシティユニット消費
    ・1秒あたり4KBの項目の強力な整合性読み込みを1回行う:1キャパシティユニット消費
    ・1秒あたり4KBの項目のトランザクション読み込みを1回行う:2キャパシティユニット消費

    なお、4KB以下の項目の場合も4KBとして計算されます。5KBの項目の場合、8KBとしてサイズを4の倍数で切り上げて計算される。8KBの場合、消費キャパシティユニットも2倍。
  • 書き込みキャパシティユニット
    項目の書き込みについて、基本的な消費キャパシティユニットの計算は以下の通り。
    ・1秒あたり1KBの項目の書き込みを1回行う:1キャパシティユニット消費
    ・1秒あたり1KBの項目のトランザクション書き込みを1回行う:2キャパシティユニット消費

    なお、1KB以下の項目の場合も1KBとして計算される。1.1KBの項目場合は2KBとして計算される。2KBの場合、消費キャパシティユニットも2倍になる。テーブルの項目を読み込む方法には、PutItem、UpdateItem、DeleteItem、BatchWriteItemがある。例えば、5ユニットの書き込みキャパシティ/読み込みキャパシティをテーブルに設定すると、
    ・1秒に5KBまでの書き込み (1KB × 5回)
    ・1秒に20KBまでの強力な整合性読み込み (4KB × 5回)
    ・1秒に40KBまでの結果整合性読み込み (4KB × 10回)
オンデマンドモード

オンデマンドモード(リクエスト数課金)
事前の容量設定が不要で、使用量に応じて課金される柔軟な課金モデル。トラフィックの増減に応じて自動でスケーリングし、突発的なアクセス集中にも高可用性を維持したまま対応できます。低レイテンシーやSLA保証、セキュリティ機能も通常モードと同様に提供されており、新規・既存テーブル問わず利用可能です。また、1秒あたり数千リクエストを処理可能で、読み書きキャパシティユニットの指定が不要な点も特徴です。

  • 読み込みリクエストユニット
    項目の読み込みについて、以下は1リクエストユニットが消費される。
    ・4KBの項目の結果生合成読み込みは2回
    ・4KBの項目の強力な生合成読み込みには1回

    項目の読み込みについて、以下は2リクエストユニットが消費される。
    ・4KBの項目のトランザクション読み込みは1回
  • 書き込みリクエストユニット
    項目の書き込みについて、以下は1リクエストユニットが消費されます。
    ・1KBの書き込み1回
    ・1KBのトランザクション書き込み1回
セカンダリインデックス

テーブルからの「属性のサブセット」と、「Query オペレーションをサポートする代替キー」で構成されるデータ構造(検索速度が向上) 1つのテーブルで 1つ以上のセカンダリインデックスを作成して、それらのインデックスに対して Query または Scan リクエストを実行する。これにより、アプリケーションは複数の異なるクエリパターンにアクセスしインデックスからデータを取得できる。ベーステーブルの項目を追加、変更、削除すると、そのテーブルのインデックスも更新され、この変更が反映される。

・すべてのセカンダリインデックスは、DynamoDB によって自動的にメンテナンスされる。

・ローカルセカンダリインデックスは基本テーブルのキャパシティモードが 継承され、グローバルセカンダリインデックスは、ベーステーブルとは別のキャパシティモードの指定が可能。

※テーブルの項目を読み込む方法には、GetItem、BatchGetItem、Query、Scan(DynamoDB API)がある。

  • セカンダリ(代替)キー
    Primary Key以外の属性を使って、データに効率的にアクセスできるようにする。
  • Scanオペレーション(全件走査のAPI)【全体スキャン】
    常にテーブルまたはセカンダリインデックス全体をスキャンし、より多くのRCUを消費する。頭からすべてのデータを取得する。全件走査であるscanを行うと、このキャパシティを食いつぶしてしまう危険性がある。対策として、属性(Attribute)で結果を絞り込むオプションがある。 

  • クエリ(Query)オペレーション(scanと同じで、データを取得するAPI)
    プライマリキー、複合プライマリキー、パーティションキー、セカンダリインデックスといったDynamoDBのキーを条件にデータ取得ができる。ただし、検索条件に使用できるのがkeyのみ。Attributeを条件にデータ取得できない。

    ※DynamoDBはkeyに指定できる項目数が限られている。通常は1つ、複合プライマリキーを使用すれば2つ設定できる。 また、セカンダリインデックスを使用することで、さらに増やすことができる。しかし、keyに指定できる項目数には限界があるため、なんでもかんでもqueryで取得するというわけにはいかない。

●(属性の)射影

テーブルからセカンダリインデックスにコピーされる属性のセット。アプリケーションのクエリ要件をサポートするために、 他の属性を射影できる。その属性が自身のテーブル内にあるかのように、プロジェクション内の任意の属性にアクセスできる。
(※テーブルのパーティションキーとソートキーは常にインデックスに射影される)

[種類]

※結果整合性とは
常に2倍の強力な整合性のある読み込み容量を提供する。「1つの強力な整合性のある読み込み」=「2つの結果整合性のある読み込み」

●グローバルセカンダリインデックス(GSI)【結果整合性】

大規模にスケールされたアプリケーション向け。多数の異なる値が存在する属性間の関係を追跡する場合に特に便利。そのため、再上限に抑えて別のテーブルを作成でき、取得されるデータの量が少なくなる。

・あるテーブルをベースに、パーティションキーやソートキーの対象を組み替えて、見やすいようにテーブルを作成すること
・インデックスに関する クエリが、すべてのパーティションにまたがり、表内のすべての項目を対象とする
・専用のプロビジョニングされたキャパシティーユニットで異なるパーティションキーとソートキーを持つ別のインデックスを作成するのに役立つ。これによりテーブル内のデータへの高速アクセスを提供し要件を満たすことができる。

●ローカルセカンダリインデックス(LSI)

【結果整合性】【強い整合性】

・すべてのパーティションの範囲が、同じパーティションキーを持つテーブルパーティションに限定される
・オリジナルのテーブルのパーティションキー・ソートキーだけでは不十分な場合、別のパーティションキー・ソートキーを 設定することができる。
・GSIのパーティションキーは固定したままでテーブルを作成すること。(テーブル作成時に作成する必要がある)

※一部のAPIを除き、基本的にデータの読み書きは「プライマリキー」を指定して行う
※データアクセスの特徴にあわせてパーティションキーとソートキーを設計すると良いでしょう

[引用元サイト]

連携サービス
LambdaDynamoDB は AWS Lambda と統合されているため、トリガー となるDynamoDB ストリーム 内のイベントによって実行される サーバレスアプリケーションを作成できる。DynamoDB ストリームを使用すると、DynamoDB テーブル内のデータ変更に対応する アプリケーションを構築できる。テーブルの項目が変更されるとすぐに、新しいレコードがテーブルのストリームに表示され、 Lambda は ストリームをポーリングし、新しいストリームレコードを検出すると、Lambda 関数を同期的に呼び出す。

DynamoDB Accelerator (DAX)

フルマネージド型高可用性インメモリキャッシュ。 レスポンスを向上させる。
Dynamo DB の読取りコストを大幅に削減する。
※永続的なユースケースではない

・DynamoDBの前段にキャッシュクラスタを設置する。
・読み取りキャパシティ(読み取り操作を実施する回数)の低減。コスト削減。最大10倍のパフォーマンスにする。

削除後に、不要なスナップショットを産まない仕組みを整備。

RedShift

【データ保管庫・分析】
クラウド内で完全に管理されたペタバイト規模のリレーショナルデータベース型DWH。列指向ストレージ、データ圧縮 「ノード」というコンピューティングリソースで構成されている。
※様々なデータを集計、統合、分析のための保管庫のようなもの

※シングル AZ 配置のみをサポート
・基本的にAWSネットワークにおけるその他のサービスへのトラフィックはインターネットを経由する

[分析力]
・複雑な分析クエリの対応が可能
・BIツールと簡単に統合できる標準SQLを使用
・標準的な Apache Sparkの3倍以上の速さで、ペタバイト規模の分析を実行できる

[データの取り扱い]
・データをキャプチャできない
・スナップショットがクラスターのプライマリAWSリージョンで作成されると、セカンダリAWSリージョンにコピーされる

[拡張された VPC のルーティング]
➡[監視サービスにて説明]

構造

複数のノードのまとまり(1つのリーダノード/複数のコンピュータノード)で構成されている。「ブロック」単位で ディスクにデータを格納。
※1ブロック=1MBブロック内の最小値と最大値をメモリに保存不要なブロックを読み飛ばすことが可能

[ノード付帯機能]

●MPP(Massively Parallel Processing)

1回の集計処理を複数のノードに分散する。ノードを追加するだけで実施できる仕組み

●シェアードナッシング

各ノードがディスクを共有せず、ノードとディスクセットで拡張する仕組み

[ノードの種類]

リーダノードSQLクライアントやBIツールからの実行クエリを受け付けてクエリ解析や実行プランを作成(司令塔)
コンピュートノードリーダーノードからの実行クエリを処理する
ノードスライス分散並列処理を実施する最小単位
ゾーンマップ(各ブロックごとに最大・最小を持っているため高速にアクセス)
バックアップストレージ

データウェアハウスのスナップショットに関連するストレージ。
24 時間未満のRedshift Serverless リカバリーポイントについては、課金されない。
スナップショットスケジューリング機能を使用して作成される Redshift 自動スナップショットに料金は発生せず、最大 35 日間保持できる。

[料金発生について]
使用料は、バックアップ保持期間の延長やスナップショットの追加取得を行うと増加する。
24 時間を超えてリカバリーポイントを保持することを選択した場合、RMS の一部として料金が発生する。
コンソール、アプリケーションプログラミングインターフェイス (API)、コマンドラインインターフェイス (CLI) を使って行うマニュアルスナップショット。

[参考公式サイト]

WLM(Work Load Management)

Redshiftに投げ込まれるクエリ処理を実施する際に、事前に用意したWLMキューに割り当て、クエリ処理に実行(優先)順序を定義することが可能。

[構造]
構成はパラメーターグループに含まれる。
カスタマーパラメーターグループを作成してグループ内の下記設定を編集しクラスターに関連付ける。
・キュー間でのメモリ配分
・あるキューにおけるクエリータイムアウト設定
・それぞれのキュー内でいくつのクエリーが同時に実行可能か
・クエリーがどのようにキューにルーティングされるか
・誰がクエリーを実行しているか、クエリーレベルは、などの基準

[キュー]
以下情報を指定できる。
・分析時のサイズ、メモリの割合
・並列度、タイムアウトの時間

(短くて実行速度の速いクエリが実行時間の長いクエリの後に留まらないようにできる)

動的マスキング

「動的データマスキングポリシー」を設定することで、データサイエンティストなどのユーザーが機密データにアクセスしようとする際に、クエリ(問い合わせ)を実行した時点で自動的にデータをマスキング(隠す)することができる。

[主なポイント]

  • データの匿名化: ユーザーの権限に応じて、表示されるデータを動的に隠すことで、機密データを保護する。
  • データ変更が不要: データベース内の元のデータを変更したり、移動したりする必要はありません。ポリシーを設定するだけで適用できる。
  • 柔軟なアクセス制御: 特定のユーザーや役割(ロール)ごとに、異なるマスキングルールを適用できる。
  • プライバシー要件への対応: SQLクエリを編集することなく、プライバシー要件の変更に迅速に対応することが可能。

要するに、最小限の作業で、データウェアハウス内の機密データを保護し、誰がどのようにデータを見られるかを柔軟に制御できる機能である。

その他機能
同時実行スケーリング機能一貫した高速のクエリパフォーマンスで数戦の同時ユーザーと同時クエリをサポートできる。自動的に新たなクラスターキャパシティーを追加し、読み取りと書き込み両方でクエリの増加に対応する。
Redshift SpectrumS3のエクサバイトの非構造化データに対してSQLクエリを直接実行できる。取得されるデータに基づいてクエリの計算能力を自動的に スケーリングするため、データセットのサイズに関係なく、S3に対するクエリは高速に実行される。 既存でRedshiftを利用している場合のロード対象データ容量に対するノード課金を抑える用途や、データロードにかかるリソース負荷や 金額負担を抑えたい場合の移行対象として利用できる。

Elastic Cache

【キャッシュDB】
NOSQL型。キーバリュー(ストア)型で非常にシンプルなデータ構造をした、インメモリデータストア(インメモリキャッシュ)。

・高速のインメモリシステムで処理を実行するため、ウェブアプリケーションのパフォーマンスを向上し、セッション情報の管理に最適。
・データをノードのメモリに保存するため、高速なデータの出し入れできる。しかし、データに永続性がなく、再起動すると、データ消去される。
・サーバノードのデプロイおよび実行をクラウド内で簡単に実行できるウェブサービス

機能性
レプリケーションノード間で同じデータを共有すること。 プライマリノードへの書き込みを、プライマリノードに紐づくすべてのリードレプリカへ非同期的に反映する。耐障害性の向上・読み込みの負荷分散を実現できる。
シャーディング【水平分割(horizontal partitioning)】
データをシャード間で分割すること。データベース内の複数のテーブルにデータを分割するための一般的な概念。リクエスト増加などで単一のマスターDBの運用で限界がある場合、一定のルールに従いデータを複数のDBに振り分けることでアクセスを分散させ、読み書きの負荷分散・コストパフォーマンス向上を図ることができる。
・小さめのノードを、複数のシャードに分割することで、データ容量を増やしつつ、クラスタ全体のコストを抑えることができる
構造

(クラスタ>シャード>ノード)

クラスタシャードをまとめる論理グループ。複数のシャードを作ることで、シャーディングができる。データはシャード間で分割される。
クラスタごとにキャッシュエンジン(Redis, Memcached)を設定でき、Redisエンジンのクラスタはクラスタモード無効、有効の2種類。

・Redis (クラスタモード有効) は、クラスタ 1 つにシャード 1〜15 個持つことができる。
・Redis (クラスタモード無効) は、クラスタ 1 つにシャード 1 個持つことができる。
シャードノードをまとめるグループ。データはノード間で同期され、2つ以上のノードを用いることで、レプリケーションできる 。
1 シャードは、読み書きができるプライマリノード 1 個と、読み込み専用のセカンダリノード(リードレプリカ)0 〜 5 個を持つ。
ノードElastic Cache の最小単位で、保存領域(RAM)を持つ。 設定したノードタイプによって CPU 性能や保存領域のサイズが異なる。
キャッシュエンジンは、クラスタごとに設定できるため、クラスタ以下のノードすべては、同じキャッシュエンジンで動作する。
メモリエンジン(クラスタ構成)

●Redis

多機能(バックアップなどの機能を持っている),シングルスレッドで動作, 全てのデータ操作は排他的である特徴

・ノード間のレプリケーション機能、フェイルオーバー機能、データ永続性機能、バックアップと復元の機能がある。
・複雑なデータ型を設定できる。複数のデータベースをサポートしている。
・インメモリデータセットのソートまたはランク付けが可能である。
・データをリードレプリカにレプリケートできる。

[ノードの種類]
シャード内で、1つのPriamryノードに対して、Replicaノードは5つまで追加可能。
●Priamryノード(読み書き)
●Replicaノード(読取り)

[クラスターモード]
クラスタモードを用いるとリードレプリカが追加できなくなる。

  • クラスターモード無効
    ・シャーディング不可能
    ・クラスタ作成後、ノードタイプ、エンジンタイプの変更可能。
    ・S3へのバックアップ、S3からの復元に対応。
  • クラスターモード有効
    ・シャーディング可能
    ・クラスタ作成後、構成の変更は基本的に不可能。
    ・クラスタレベルでのS3へのバックアップ、S3からの復元対応可能
  • [推奨]リーダーボード作成
    Redis はリーダーボードを実装する上で推奨されているサービス。
    通常ユーザのレーティングの計算にはネストされたクエリが必要だが、Redisではソートセットによって、ネストせず少ない計算量でレーティングなどのリーダーボードの作成に必要なクエリを実施できる。

    ★リーダーボード:プレイヤーは互いのパフォーマンスを比較するために用いる
    【使用例:引用サイト


[pub/sub機能を提供]
publish/subscribe(発行/購読)モデルを実現するための機能。Redisに接続しているクライアント間で、メッセージを送信できる。WebSocketなどのリアルタイム通信に利用されることが多い。

[認証処理]
Redis認証トークンを使用すると、Redisはクライアントにコマンドの実行を許可する前にトークン(パスワード)を要求でき、 セキュリティが向上。データ転送時の暗号化、データ保管時の暗号化およびRedis Authによる認証を実施することが可能。

●Memcached(ノードタイプの変更ができない)

・シンプルで高速(データ暗号化機能はなし)
・データベースなどのオブジェクトをキャッシュできる

[メトリクスの種類]
⇒[引用元サイト]

[Redis と Memcached の比較]

キャッシュ方法

●レイジーキャッシング(遅延読み込み)

オブジェクトがアプリケーションによって実際に要求された場合にのみキャッシュにデータを入力。

  • メリット
    リクエストされたデータのみキャッシュするため、キャッシュがデータでいっぱいにならない。
  • デメリット
    データが更新された場合に、キャッシュミスが起こらないとキャッシュされたデータは更新されない。データが古くなる可能性。キャッシュミスした場合、データの取得に時間がかかる。
    (※キャッシュへのリクエスト、DBへのリクエスト、キャッシュへの書き込みが行われるため)

ライトスルーキャッシュ

データがDBに書き込まれると常にデータを追加するか、キャッシュがリアルタイムに更新される。(※DBとCache両方書き込みされる) システムでの需要の増減に応じてノードを追加または削除するスケールアウトおよびスケールイン機能が利用できる。キーストアの永続性はない、バックアップと復元の機能がない。また、複数のデータベースを利用できない

  • メリット
    キャッシュのデータが古くならなく、常に最新のデータの状態になる。
  • デメリット
    すべてのデータをキャッシュに書き込むためアクセスされないキャッシュで圧迫される可能性。
    (「有効期限 (TTL) の値を追加する」を使用すると、無駄なスペースを最小限に抑えることができる)

[データの欠落]
ノード障害またはスケールアウトにより、新規ノードをスピンアップすると、データが欠落する。このデータは、DBで追加、更新されるまで失われ続ける。最小限に抑えるには、[遅延読み込み] を書き込みスルーで指定。

スケーリング方法

Redis クラスターのスケーリングは、CPU 使用率(PrimaryEngineCPUUtilization)などのメトリクスに基づいて自動で行われる。スケーリングは、ターゲット追跡ポリシーを使用して、指定されたしきい値に合わせてノード数を増減。xスケーリング後も、アプリケーションは同じエンドポイント(Configuration endpoint)を使い続けられる。スケーリング方法は2種類ある。

  • 水平スケーリング(horizontal)
    横方向にノード数を増減する方法。
  • 垂直スケーリング(vertical)
    縦方向にノードの性能をグレードアップ、ダウンする方法。
水平スケーリング垂直スケーリング
Memcached同じAZ内で最大40個ノードを追加する。処理能力向上。性能を向上させるだけ。
Redis
クラスター無
ひとつのシャード内でスケーリング。シャードの追加はできない。新しいクラスターに変更後、ノードが作成されてデータがコピーされる。数秒のダウンタイムが生じる。
Redis
クラスター有
シャードの追加ができるようになる。ダウンタイムを発生させず、スケーリング可能。
セッション管理

[参考]

[ローカルセッションキャッシングを使用したスティッキーセッション]

セッションの有効性は、クライアント側のCookieや、リクエストをWebサーバーにルーティングするロードバランサーで設定できる 構成可能な期間パラメーターなど、さまざまな方法で判断できる。

  • 利点
    アプリケーションを実行している同じWebサーバーにセッションを保存しているため、費用対効果が高くネットワークの待ち時間がなくなり セッションの取得が高速である。
  • 欠点
    個々のノードで保存セッションを使用する場合、障害が発生時に障害が発生したノードに常駐するセッションが失われる可能性がある。さらに、Webサーバーの数が変更された場合、特定サーバーにアクティブなセッションが存在する可能性があり、トラフィックがサーバー 全体に不均等に分散される可能性がある。適切に軽減されない場合、アプリケーションのスケーラビリティを妨げる可能性がある。

●分散セッション管理

個々のWebサーバーからアクセスできるセッションに共有データストレージを提供。Webサーバー自体からHTTPセッションを抽象化できる。 RedisやMemcachedなどのインメモリキー/値ストアを活用する。(Key / Valueデータストアは非常に高速でミリ秒未満の遅延を提供する)

  • 利点
    HTTPセッションだけでなく、任意のデータをキャッシュするためにも利用できる。アプリケーションの全体的なパフォーマンスを向上。
  • 欠点
    ネットワーク遅延とコストの増加。
メトリクス

Memcached のメトリクス [参考公式サイト]
●Evictions
新しく書き込むための領域を確保するためにキャッシュが排除した、期限切れではない項目の数。

●Get Misses
キャッシュが受信したが、リクエストされたキーが見つからなかった get リクエストの数。

接続エンドポイント

[Redis]

スタンドアロンノード読み取りオペレーションと書き込みオペレーションの両方にノードのエンドポイントを使用
Redis OSS (クラスターモードが無効) クラスターすべての書き込みオペレーションにプライマリエンドポイントを使用する。読み込みエンドポイントを使用して、すべてのリードレプリカ間でエンドポイントへの着信接続を均等に分割。個々のノードエンドポイント (API/CLI ではリードエンドポイント) を読み取りオペレーションに使用する。
Redis OSS (クラスターモードが有効) クラスタークラスターモードが有効なコマンドをサポートするすべてのオペレーションで、クラスターの設定エンドポイント[Configuration endpoint]を使用する。Redis OSS 3.2 以降の Redis OSS クラスターをサポートするクライアントを使用する必要がある。個々のノードエンドポイント (API/CLI ではリードエンドポイント) から読み取ることもできる。

[Memcached]

ElastiCache サーバーレスキャッシュコンソールからクラスターエンドポイント DNS とポートを取得する

DocumentDB(MongoDB互換)

ドキュメントデータベースであり、JSONデータの保存、クエリ、インデックス作成が簡単に行える。MongoDBのワークロードをサポートする。 ミッションクリティカルなMongoDBのワークロードを大規模に運用するときに自動レプリケーション、継続的なバックアップ、および厳格な ネットワーク分離、可用性を提供するためにゼロから設計された、非リレーショナルデータベースサービス。また、数分で低レイテンシーの リードレプリカを最大15個まで追加し、読み取り容量を1秒あたり数百万件のリクエストにまで増加させることができる。 データのサイズは関係なし。マルチAZをサポートしていない。

[特徴]
・コンテンツおよびカタログ管理
・プロファイル管理
・モバイルアプリケーションとウェブアプリケーション

DocumentDBの優位性は柔軟にクエリが書ける点。アクセスパターンが複数ある、もしくは読み切れない場合にはDocumentDBの方が便利。

※スケーリング性能でいえばDynamoDBの方が高い。
※MongoDBと互換性あり。

Timestream

高速かつスケーラブルなサーバーレス時系列データベースサービス。1日あたり数兆件規模のイベントを最大 1,000 倍の速度でより簡単に保存及び リアルタイム分析でき、行動傾向の特定に役立つ。

・数百テラバイトのデータを格納、保存
・容量とパフォーマンスを自動的にスケールアップまたはスケールダウン
・データ用のメモリストアと履歴データ用の磁気ストアにより、データライフサイクル管理を簡素化

※時系列データ:メモリやCPUなどの利用状況の推移や気温の移り変わりなど時間的に変化する情報をデータとする

バッチ書込みTimestreamへのデータ書き込み処理が高速化できる。複数のログイベントを1回の書込み操作で処理することができ、NW遅延や書き込み回数によりオーバーヘッドが軽減されるため、大量のデータ生成において効率的である。
マルチメジャーレコード・1つのレコード内に複数のメジャー(項目)をまとめて書き込める形式
・従来のシングルメジャーレコードは「1項目につき1レコード」のみ書き込み可能
・1回のリクエストで書き込めるレコード数は最大100件の制限があり、101件以上は複数リクエストが必要
・実装の手間やパフォーマンス効率を改善する
[マグネティックストレージレイヤーへの書き込み]

・時系列データを長期保存するためにマグネティック層へ自動的に移行
・大容量データのコスト効率と耐久性を向上させる

[スケジュールドクエリによる格納と分析]

・定期的にクエリを実行し、データの集計やフィルタリングを自動化
・保存済みの時系列データを分析してダッシュボードやレポートに活用可能

QLDB

(Quantum Ledger Database)
フルマネージド型。台帳データベース(※台帳データベース:変更履歴などを残し、それらを履歴として検証可能なものとする)

Neptune

フルマネージド型。グラフデータサービス(「ノード」「エッジ」「プロパティ」要素から成り立つ)

Key spaces

フルマネージド型。Apache Cassandra互換のデータベースサービス。

CDC(変更データキャプチャ)

※継続的なレプリケーション

サポートされているターゲットデータストアへの初回(全ロード)の意向が完了した後、継続的な変更をキャプチャするタスクを作成できる。

ストレージサービス

基礎知識

●静的webサイトホスティング

・サーバなしにWebサイトを構築できる
・クラウドでウェブサイトとウェブアプリケーションを構築、デプロイ、管理するための無料のサービス

●IOPS(Input Output Per Second)

1秒あたりに読み書きができる回数を表したもの。値が大きいほど性能の高いストレージである。

◇ストレージについて

gp2 ストレージのベースライン I/O パフォーマンスは、1 GiB あたり 3 IOPS で、最低 100 IOPS 。
ボリュームが大きいほどパフォーマンスが向上することを意味する。
(例)100 GiB⇒300 IOPS / 1 TiB⇒3,000 IOPS

ブロックストレージ
【頻繁な更新】【高速アクセス】
(データベース,トランザクションログ)データを物理的なディスクにブロック単位で管理する。
ファイルストレージ
【データ共有】【過去データ一括保存】
(ファイル共有,データアーカイブ)ブロックストレージ上にファイルシステムを構成し、データをファイル単位で管理する。
オブジェクトストレージ
【更新頻度が低い】【大容量】
(マルチメディアコンテンツ,データアーカイブ)ファイルに任意のメタデータを追加してオブジェクトとして管理する。

インスタンスストア

・ホストコンピューティングに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ
・EC2の一時的なデータが保持され、EC2の停止・終了とともにデータがクリアされる
・無料

S3

Simple Storage Service
ネットワーク上のオブジェクトストレージサービス(HTTP,HTTPSでアクセスする)。S3エンドポイントを使用してVPC内からS3にアクセスする。耐久性、可用性99%で、ストレージ容量は無制限であり、ユーザー側で設定する。データは3つのAZに保存される。

・S3ユーザーによって既に指定されている命名規則は使えない
・使用したストレージの容量に対して費用を支払い、使えば使うほど安くなる
・画像保存に適しており、アプリケーション用として使用することが多い
・データの初回のフルバックアップ以降は、追加のバックアップはすべて増分される
・DynamoDBよりレイテンシーが高いため更新が多いファイルはおすすめされない

※S3をWebサイトホスティング用にバケットを構成する場合
ウェブサイトエンドポイントのリソースレコードの名前が、S3バケットの名前と一致する必要がある。

●S3リクエスタ支払い

データのリクエスト者がデータ転送コストを支払う仕組み。

バケット>オブジェクト

バケット
バケット最大5TB
バックアップ領域・1ファイル(オブジェクト:メタデータで管理)5TBまで
・総計制限なし(5GBまでは無料)

S3 に格納されるオブジェクトのコンテナ。すべてのオブジェクトはバケット内に格納される。 バケットへのアップロードは書き込みアクセス許可が必要。

  • AWSユーザーの正規ID
    他のAWSアカウントにアクセスを許可するために必要

[s3 Sync コマンド]
S3バケット間でデータを同期するために使用される。
※EFSやFSx for Windows File Server を転送先としてサポートしていない

オブジェクト

S3 に格納される基本エンティティ(ファイルデータ)。オブジェクト(ID)データとメタデータで構成される。キー (名前) とバージョン ID によってバケット内で一意に識別される。オブジェクト所有者はオブジェクトのアクセスコントロールリスト(ACL)を更新することによって、バケット所有者にオブジェクトのフルコントロールを付与できる。

・ファイルが保存されるグループに対して、それぞれにセキュリティーポリシーを適用する

[オブジェクトの取得方法]

  • 1 回で取得
    Amazon S3 に格納されているオブジェクトを 1 回の GET オペレーションで取得。
  • オブジェクトを複数回に分けて取得
    GET リクエストの Range HTTP ヘッダーを使用すると、 S3 に格納されているオブジェクトの特定のバイト範囲を取得できる。アプリケーションの準備ができた時点でいつでも残り部分の取得を再開でき、この再開可能なダウンロードは、オブジェクトデータの一部だけが必要な場合に便利。また、ネットワーク接続の状態が悪く、障害に対処する必要がある場合にも役立つ。

[オブジェクトのアップロード方法]

AWS SDK、REST API、または AWS CLI を使用して、
・1 回のオペレーションでオブジェクトをアップロード。
※1回のPUTオペレーションで、最大 5 GB の単一のオブジェクトをアップロード可能

マルチパートアップロード API を使用すると、最大 5 TB のサイズの単一の大容量オブジェクトをアップロード可能。

・Amazon S3 コンソールを使用して 1 つのオブジェクトをアップロード。
※Amazon S3 コンソールでは、最大 160 GB のオブジェクトをアップロード可能

・オブジェクト格納成功時、【HTTPステータスコード200】を返す。

キー

バケット内のオブジェクト固有の識別子。バケット内のすべてのオブジェクトは、厳密に 1 個のキーを持つ。

ポリシー
アクセスコントロールタイプAWSアカウントレベルの制御IAMユーザーレベルの制御形式
ACL×XML
バケットポリシーJSON
IAMポリシー×JSON

※バケットポリシーでは、プリンシパルとして対象のアカウントIDが使用するIAMロールを指定してアクセス許可を付与することができる。

●ACL

バケットとオブジェクトへのアクセスを管理できる。各バケットとオブジェクトには、サブリソースとして ACL がアタッチされている。これにより、アクセスが許可される AWS アカウントまたはグループとアクセスの種類を定義。リソースに対するリクエストを受信時、S3 は該当する ACL を調べて必要なアクセス許可がリクエスタにあることを確認する。

[(バケットの)アクセス許可を付与する]

AWSユーザーの正規ID を設定することで対応可能。

[種類]

  • Bucket ACL
    手軽に基本的なアクセス権(バケット及び個々のオブジェクトへのアクセス権の設定)許可のみであり拒否はなし。
  • Object ACL
    オブジェクト単位で制御したいときに向いている。
    [指定バケット > アクセス権限 > アクセスコントロールリスト],[指定オブジェクト > アクセス権限]
READバケット内のオブジェクトをリストできる/オブジェクト、メタデータを表示
WRITE(※オブジェクトは使用不可)バケット内にオブジェクトを作成
READ_ACPバケットACL、オブジェクトACLを読み込むことが出来る
WRITE_ACPバケットACL、オブジェクトACLを変更することが出来る
FULL_CONTROLバケットACL、オブジェクトACLの読み込み、書き込みを実施できる

●バケットポリシー

【S3への高度なアクセス制御を実施する】
S3オブジェクトへのアクセス許可。バケット単位でIAMユーザやグループのアクセス権、他のAWS アカウントを指定することが可能。BucketPolicyの方が強いが、設定されていない場合は、ACLによって制御される。

・サーバー側の暗号化を必要としないオブジェクトのアップロードを拒否できる
・バケットにアクセス権を付けただけではアクセスできないため、オブジェクトへのアクセス許可も必要。

x-amz-server-side-encryptionヘッダーに追加することで、S3 へオブジェクト保存時に暗号化を強制できる。
bucket-owner-full-control ACLオブジェクトをアップロードする際に使えるACL設定の一種で、バケットの所有者にそのオブジェクトへの完全なアクセス権を与える。

[エレメント]

  • プリンシパル(Principal)
    Principalエレメントは、リソースへのアクセスを許可または拒否するユーザー、アカウント、サービス、または他のエンティティを指定。
    [参考公式サイト]

●ユーザー(IAM)ポリシー

別のAWSアカウントに自分が所有するS3バケットへのアクセス利用を許可したい時、バケットポリシー及びユーザーポリシーの 両方の許可設定が必要(特定のIAMユーザー、IAMロールだけ操作できるようにしたいとき)。レプリケーションを実施するためには、両方のS3バケットにおいてバージョン管理を有効化。

●被付与者

AWS アカウント または事前定義済みのいずれかの Amazon S3 グループ。
E メールアドレスまたは正規ユーザー ID を使用。AWS アカウント にアクセス許可を付与。ただし、付与のリクエストでメールアドレスを指定すると、Amazon S3 はそのアカウントの正規ユーザー ID を確認して ACL に追加する。その結果、ACL には AWS アカウント の E メールアドレスではなく、常に AWS アカウント の正規ユーザー ID が含まれる。

ストレージクラス

※IA はinfrequent access (低頻度アクセス) の略

Standard (S3 標準)デフォルトのストレージ、高耐久性(低レイテンシー、高スループット)
Standard – IA(低頻度)読み込みは早く、Standardよりも安価に利用可能。 アクセスが頻繁ではないマスターデータの長期保存に適している。データの読み込みに対し課金される。耐久性はスタンダードと同じ。
One Zone – IA(低頻度)アクセス頻度が低いが、すぐにデータを取り出せる。Standard-IA と比べて20%のコストを削減できる。単一AZ内にデータを複製する(データを少なくとも 3 つのAZ に保存する他の S3 ストレージクラスとは異なり、S3 1 ゾーン – IA はひとつのAZ にデータを保存する)データの耐久性は落ちるがコストは節約できる。
低冗長化(RRS)重要でない再生可能なデータ向けデータの耐久性は落ちるものの、コスト面はよい。
Intelligent-Tiering参照頻度の判別がつかない時に使用。30日間使用されなければ、更に低頻度とする。アクセスパターンが変化するような状況でも、性能の影響なく利用料金を節約することができる。最もコスト効率の高いアクセス階層に自動的にデータを移動することで、コストを最小限に抑えるように設計されている。
暗号化

★トピック「暗号化」にて記載

整合性検証

★Content-MD5 ヘッダーの役割と使用方法 / オブジェクトの整合性検証

[Content-MD5 ヘッダーの目的]

  • Content-MD5 は、アップロード時のデータ整合性を検証するためのチェックサム
  • オペレーション(PUT、POST、COPYなど)で送信されたデータが、Amazon S3 に正しく保存されたかを確認する。
  • エラーが発生した場合、Amazon S3 はリクエストを拒否し、整合性が保証されない。

[オブジェクトの整合性検証方法]

  • オブジェクトの ETag(通常は MD5 ダイジェスト)を使って、アップロード後に整合性を確認できる。
  • マルチパートアップロードでは、ETag は複数パートの組み合わせで生成されるため、ETag ≠ Content-MD5 になる。
  • オブジェクトをダウンロード後、ローカルで MD5 を計算し、ETag と比較することで整合性を確認可能。

[注意点]

  • Content-MD5 を使用する場合、Base64 エンコードされた MD5 ダイジェストをヘッダーに含める必要がある。
  • ETag が MD5 であるとは限らず、暗号化やマルチパートアップロードでは異なる形式になる。
保護機能
パブリックアクセスブロック機能デフォルトはパブリックアクセスブロックは無効化。AWSアカウント全体または各S3バケット単位、アクセスポイント単位での制御が可能となり、オブジェクトがパブリックアクセスを受けないようにする。
S3 オブジェクトロック(ログの上書き、削除防止)
・ガバナンス:特別なアクセス権限を持たない限り、オブジェクトの上書きや削除、ロック設定の変更ができない
・コンプライアンス:保持期間中はルートユーザーを含め誰もオブジェクトの上書きや削除、ロック設定の変更ができない
バージョニング機能
S3 MFA DeleteS3オブジェクトの誤削除を防止するセキュリティ機能の1つ。バケットからオブジェクトを削除する際にMFAデバイスによる二段階認証を必須にできる。
管理機能
S3インベントリ正確なオブジェクトのリスト化ができる。暗号化できているか確認等できる。カンマ区切り値 (CSV)、Apache Optimized Row Columnar (ORC)、または Apache Parquet 出力ファイルを通じて、S3 バケットや共有プレフィックス (オブジェクト名の先頭が共通文字列) を持つオブジェクトについて、オブジェクトおよび対応するメタデータを毎日または毎週一覧表示する。
毎週のインベントリを設定すると、最初のレポートの後は毎週日曜日 (UTC タイムゾーン) にレポートが生成される。
S3 RTC
(Replication Time Control)
S3 に保存された新規オブジェクトの 99.99% を 15分以内に別リージョンへレプリケート可能。
(予測可能な時間内でのレプリケーションを保証する機能で、SLAに基づいている)

・レプリケーションの時間を可視化
※「S3 API オペレーションの総数」、「オブジェクトの合計サイズ」、および最大レプリケーション時間をモニタリング
・レプリケートを完了次第、S3イベント通知を受け取ることができる
・デフォルトでS3レプリケーションメトリクスとS3イベント通知が含まれている
S3ライフサイクルポリシーS3バケット内のオブジェクトを自動的に確認して、Glacerに移動させるか、S3からオブジェクトを削除することができる。Tierringにて削除まで実行する(保存期間に基づいて削除や移動を実施する)。オブジェクトのライフタイムでS3が実行するアクションを定義することができる。
S3バッチオペレーションS3オブジェクトに対して大規模なバッチ操作ができる。コンソールで数回クリックするだけでS3の数十億オブジェクトのリストに対して、1つのオペレーションを実行することができる。また、全てのオブジェクトタグを置き換えすることが可能。
S3 Range Getオブジェクト全体を読み取らず、必要な部分やバイトの身を読み取ることができる。
Multi-Object Delete API単一の HTTP リクエストで最大 1,000 個のオブジェクトを削除。
破損検出Content-MD5チェックサムと周期的な冗長性(CRC)チェック。

共有(クロス)機能
CRR(クロスリージョンレプリケーション)リージョンを跨いで別のバケットにリアルタイムでオブジェクトをコピーできる。 障害発生時にデータを保護する観点から有効なサービス。
SRR(同一リージョンレプリケーション)同じリージョン内のS3バケット間でオブジェクトをコピーする際に使用。
CORS(クロスオリジンリソースシェアリング)1つのWEBサイトを複数のドメインでS3リソースを共有して利用できる、最新ウェブブラウザのセキュリティ機能。設定することで、特定のドメインに関連付けられたWEBアプリケーションが異なるドメイン内のリソースと通信する方法を定義する。
クロスアカウントレプリケーションS3バケットを別のアカウントに共有(コピーが生成)することができる。
Mount Point for Amazon S3S3のデータ領域をEC2やECSにマウントして、共有ディスクのように利用できる。
※各 EC2 と S3 間の最大100 GB/秒のデータ転送などと高スループット
EC2上のアプリケーションは「開く・読み取る」などのファイルシステム操作を通じて S3に保存されているオブジェクトにアクセスできる。これらの操作はS3オブジェクト API 呼び出しに自動的に変換し、アプリケーションがS3のエラスティックなストレージとスループットにファイルインターフェイスを通じてアクセスできるようにする。

その他機能

●静的Webホスティング機能

バケットに格納した静的なファイルをウェブサイトとして公開することができる機能。

●S3イベント

「新しいオブジェクトの作成イベント」,「オブジェクト削除イベント」,「オブジェクト復元イベント」,「低冗長化ストレージ (RRS)。 オブジェクト消失イベント」,「レプリケーションイベント」発生時、イベントを通知発行する。

・S3へのアクションをトリガーにLambdaを呼び出すことができる。
[引用元サイト]

[S3のイベント発行トリガー]
①Amazon SNSトピック:S3をトリガーとしてメールなどを通知できる。
②Amazon SQSキュー:S3をトリガーとしてStandardキューを配信できる。
③AWS Lambda:Lambda関数を作成時、カスタムコードをパッケージ化してLambdaにアップロード。S3をトリガーにLambda関数を実行できる。

●S3アクセスポイント

S3 の共有データセットへの大規模なデータアクセスの管理を簡素化する機能。アクセスポイントはバケットにアタッチされた名前付きのネットワークエンドポイントで、S3 オブジェクトのオペレーション (GetObject や PutObject など) を実行するために使用できる。。同時書き込みのオブジェクトロックはサポートしない。2020年12月まで、結果整合性モデルを主だったが、現在は強い結果整合性モデル。
(アクセス制御に役立つが、プライベート接続の確立には不十分)

※VPCエンドポイントの接続先として利用されることもある

[引用元サイト]

●S3 アダプター

プログラムによるデータ転送とデータ転送を行うことができル。AWS Snowball EdgeAmazon S3 REST API アクションを使用するデバイス。AWS Snowball Edge デバイスにデータを転送する方法として利用される。

●ストレージクラス分析

ストレージアクセスパターンを分析し、適切なデータを適切なストレージクラスに移行すべきタイミングを判断できる。フィルタリングされたデータセットのアクセスパターンを一定期間監視することで、ライフサイクルポリシーを設定することができる。

●S3 Object Lambda アクセスポイント

S3オブジェクトにアクセスする際にLambda関数を使ってデータを動的に加工・変換できる仕組み。通常のS3 GET、HEAD、LISTリクエストに対して、カスタムコードを挟むことが可能。これにより、オブジェクトの内容やメタデータを動的に変更して返すことができる。

生データを直接変更することなく、各アプリケーション固有の処理要件に合わせたデータの動的変換が可能になる。

[主な用途]

  • 画像の動的リサイズ(例:レスポンシブ対応)
  • 機密情報のマスキング(例:個人情報の除去)
  • CSVやJSONのフィルタリング(例:特定行だけ返す)
  • カスタムビューの生成(LISTリクエストで特定条件のオブジェクトだけ表示)
エラー

●403 Access Denied
オブジェクトは存在するが、そのオブジェクトの読み取りアクセス許可が付与されていない。

[考えられる要因]
・リクエスタ支払いバケットに関するリクエストがすべて認証されていない場合、アクセスできない
・S3バケットからS3ブロックパブリックアクセスのオプションを削除していない

Glacier

アーカイブを目的としたストレージ。大容量のデータを安価に安全で耐久性が高く、非常に低コストのストレージクラス。S3と同じ耐久性をもち、また同様に複数AZにデータを保存するため回復性が高い。読み込みに時間がかかる。

・Glacierの最低保持期間は90日。3カ月以上保管されていたアーカイブを削除する場合は無料。
・1つのアーカイブの最大サイズは 40 TB。1カ月あたり10GBまで無料。保存可能なアーカイブ数とデータ量に制限なし。


[階層] ボールト/アーカイブ/インベントリ
[取り出しオプション] 高速、標準、バルク(大容量)

機能

●S3 glacier Select

S3 Graicerの保存データの参照。

●S3 Glacierボールト

ボールトロックポリシー一度ロックされると変更できなくなる。保護されているアーカイブがなくなるまでロックされたポリシーを削除または変更できない。
ボールトアクセスポリシーボールトに対するアクセス許可を管理する。
ボールト通知ジョブが完了すると、メッセージがSNSトピックに送信されるように設定できる。
迅速取り出しアーカイブの最大容量は250MBまで
暗号化

保存時にSSLで実施。サーバー側ネイティブで暗号化される。キー管理とキー保護が自動的に行われ、AES-256が使用される。

ストレージクラス
Instant Retrieval【高速引き出し】
アクセスされることがほとんどなく、ミリ秒単位で取り出すことが可能。取り出す期間が四半期に一度などと、長期間であると大幅にコストを削減することができる。
・高速の復元が必要になるアーカイブ済みデータ
・ミリ秒単位で復元
Flexible Retrieval一年に1~2回アクセスするなどと取り出し頻度が少なく、大量のデータを取り出すことができる。Instant Retrievalよりも最大10%安くコストを抑えられる。
・予測不能だが復元が必要になるオブジェクト
・数分~数時間で復元
S3 Express One Zone超低レイテンシー・高頻度アクセス向けのオブジェクトストレージクラス。AWSの新しいストレージクラスで、単一のアベイラビリティーゾーンにデータを保存し、高速で低レイテンシーなアクセスを実現する。通常のS3よりも読み書きが速く、リクエストコストは安いが、保存コストは高め。主にリアルタイム分析や頻繁にアクセスする小さなデータ向けで、低遅延を重視する用途に適している。ただし、単一AZのため、AZ障害が起きるとデータ損失のリスクがある点には注意が必要。
Glacier Deep ArchiveFlexible Retrieval より安く、取り出しに12時間~かかる。
・復元される可能性が低いアーカイブデータ
・12時間以内で復元(オブジェクトを取得する度に、復元リクエストも必要になる)

◎オプション
・迅速 (250 MB 以上) を除く:1~5分
・標準取り出し:3~5時間
・大容量取り出し:12時間 (高い←→安)

S3 Transfer Acceleration

【高速アップロード】受信トラフィック用のサービス

クライアントとS3バケットの間で、長距離にわたるファイル転送を高速、簡単、安全にする。 ※Amazon CloudFront の世界中に点在するエッジロケーションを利用してアップロードレイテンシーを改善
➡レイテンシーを改善するわけではないため注意

マルチパートアップロード

パラレル形式で送信する。アップロード中に中断されたパートのアップロードを再試行するだけで済む 大容量オブジェクトをいくつかパートのセットとしてアップロードできるようになる。各パートはオブジェクトのデータを連続する部分。これらのオブジェクトパートは任意の順序で個別にアップロードできる。いづれかのパートの送信が失敗すると、他のパートに影響を 与えることなくそのパートを再送することができる。

ただし、地理的な遅延の対応としては適当ではない

マルチアップロードはチャンクを並列でアップロードすることにより、サービスを実現している。

EBS

(Elastic Block Store)
EC2とEBS間に専用線をひくことで、EC2にアタッチされる永続的なブロックレベルのネットワーク接続型ストレージ。(外付けストレージのようなもの)データに素早くアクセスできる。サイズ(割り当てたボリューム分)と利用期間によって課金される。

Amazon EBS 最適化インスタンス

最適化された設定スタックを使用し、EBS I/O に対して追加の専用の容量(帯域幅)を提供する。この最適化は、EBS I/O とその他のインスタンスからのトラフィック間の競合を最小化することで、EBS ボリュームの高パフォーマンスを提供する。

[ステータス]

  • ok:通常状態
  • warning:パフォーマンスが下回っている
  • impared:致命的な被害
  • insufficient-data:実行中

性能面

・初期化を必要としない
・ディスクの縮小は不可
・書き込みのスループットが高いアプリケーションに適する。[IOPS最大割合(GiB単位)500:1]
・他のリージョンにコピー可能(スナップショットから作成する)
・EBSボリュームが作成されるとすぐに最大パフォーマンスを発揮。
・セキュリティグループによる保護は対象外(全ポートを閉じても利用可能)
・NFSv4 プロトコルは利用していない
・保存世代や世代数は無制限
・RAID5,RAID6構成はIOPSがパリティ書き込みによって消費されるため推奨されない(RAID構成はRAID0 , RAID1)

[アタッチ・デタッチについて]

・複数のインスタンスを対象に接続はできない(他のインスタンスへ付け替えは可能)
・AZは跨げない(EBSマルチアタッチ:AZ内の複数のインスタンスにアタッチできる)
・インスタンスに EBSボリュームをアタッチ後に任意のファイルシステムでボリュームをフォーマットしてからマウントすることが必要

  • DeleteOnTermination
    属性を使用すると、EC2インスタンスが削除されても接続されたEBSとデータは保持される。
バックアップ

スナップショットによる、増分バックアップ。スナップショット中は読み書きが可能。
※EBSのスナップショットをS3にコピーすることはできない

●EBS高速スナップショット復元機能

通常のスナップショット復元で発生するブロックの初回アクセス時におけるI/Oオペレーションのレイテンシーがなくなる。

●Data Lifecycle Manager (Amazon DLM)

EBSのバックアップであるスナップショットの作成、保存、削除を自動化。
また、スナップショットの管理に必要な許可を得るためには、IAMロールを使用する。
※リージョン間でコピーすることができる

●クロスリージョンコピー機能

一度作成するだけで、EBSスナップショットを少なくとも2つのリージョンへ毎日自動複製できる。

ボリュームタイプ

[SSD]

汎用SSDEC2のブートボリューム、アプリケーションリソース向け。バースト機能で3000IOPSまで処理できる(ベースラインは300IOPS)
プロビジョンドIOPSI/O負荷の高いデータベースのデータ領域向け⇒IOPSに対して課金あり、DBによく使われる。ボリュームサイズに対するプロビジョンド IOPS の最大割合(GiB 単位)は500:1。

[HDD]

スループット最適化HDDログ分析、バッチ処理用大容量インプットファイル向け
コールドHDDアクセス頻度が低いデータのアーカイブ向け
マグネティック旧世代のボリュームタイプ

[EBS ボリューム拡張方法]

  1. EC2コンソールまたはCLIからEBSボリュームのサイズを増やす。
  2. オペレーティングシステムにマウントされたボリュームのファイルを拡張して、追加したストレージ容量をしようする。
暗号化

EBSボリュームやスナップショット作成時、KMSのCMKを使用して暗号化。

●EBS Encryption

EBSストレージ間でのデータ保存と転送中のデータの両方のセキュリティを暗号化し保証する。
ただし、新規作成されるボリュームに対してのみである。
※既存ボリュームの暗号化はConfigやEventBridgeなどを利用して暗号化すること

[ボリューム内の保存データも可能]

現世代のすべてのインスタンスタイプ、旧世代のインスタンスタイプ A1、C3、cr1.8xlarge、G2、I2、M3、R3 で使用可能。暗号化処理はインスタンスが稼働するホストで実施される(ストレージ自体の暗号化)。ボリュームから取得したスナップショットも暗号化は適用される(スナップショット数:デフォルト最大100,000)。スナップショットは基本的に自動的にS3に保存される。

[既存EBSボリュームを暗号化する手順]

  1. 既存EBSボリュームのスナップショットを取得
  2. 取得したスナップショットを、[EBS暗号化] を有効化しコピー
  3. コピーしたスナップショット(暗号化済み)から EBS ボリュームを作成
  4. EC2インスタンスから既存EBSボリュームをデタッチする
  5. EC2インスタンスに作成した EBSボリューム(暗号化済み)をアタッチする

EFS

※Elastic File System
リージョン、AZ、VPC間でファイルシステムにアクセスできる。Direct ConnectあるいはVPNを介して複数のEC2インスタンスやオンプレミスサーバー間でファイルを共有できる。
※Windowsファイルサーバーをサポートしていない

・POSIX準拠、耐久性、高可用性、MySQL・PostgreSQL
・マウントターゲット(エンドポイントのようなもの)はAZ内に作成しなくてはならない。
・自動的に3か所のAZに作成される。オンプレミスを含めて、複数のAZに跨ることが可能。

[暗号化]
「転送時の暗号化」と「保管時の暗号化」をサポートしている。
※EFSを作成する際は、「保管時の暗号化」を有効にすること。(暗号化するときに再度作成する羽目になる)

[料金表]
S3より少し料金が高くなる

●EFS CSIドライバー

Kubernetes(特にAmazon EKS)でAmazon EFSを使うためのストレージドライバー。

●amazon-efs-units

ファイルシステムにトラブルが発生した場合のトラブルシューティングに役立つログを記録できる。

機能性

・競合することなく部分的な変更もできる。
・大規模で並列の共有アクセスできる設計。
・アクセス頻度の低いストレージクラスに適している。
・強い整合性やファイルのロックなど が用意されている。
・インスタンス間で共有ストレージを頻繁に読み取ることができる。

※Windowsファイルサーバーはサポート外

[利用メリット]

・EFSの高可用性・スケーラビリティを活用可能
・Pod間でファイルを共有できる
・ステートフルなアプリに最適

[アプリケーション処理]

高レベルのスループットとIOPSを一定の低レイテンシーで実施。
中断することなく、ファイルの追加や削除に合わせて、自動的にペタバイトのオンデマンドにストレージ容量の拡張や縮小する。

[主なポイント]

項目内容
目的KubernetesのPodからEFSをマウントしてファイル共有
利用方法Persistent Volume(PV)としてEFSを使う
特徴複数Podで共有可能、動的プロビジョニング対応(v1.2以降)
導入EKSアドオンとして簡単にインストール可能
対応環境Amazon EKS、Fargate(一部制限あり)、Graviton
構成要素
ファイルシステムファイルを保存するための論理的なストレージ領域です。VPC内に作成され、複数のAZにまたがってデータを複製することで高可用性を実現します。
マウントターゲットファイルシステムへのアクセスを提供するエンドポイントです。各AZにマウントターゲットが作成され、EC2インスタンスはそのマウントターゲットを介してファイルシステムにアクセスします。
ファイルシステム

(推奨)EFSリージョナルファイルシステム

複数のAZにわたってデータを保存したりすることで、高レベルの耐久性と可用性を実現する。

●EFS One Zone

1つのAZ内にデータを冗長的に格納する。そのため、耐久性、可用性に脆弱性がある。

パフォーマンスモード

・汎用パフォーマンスモード(基本)
・最大I/Oパフォーマンスモード
・スループットモード
・バーストスループットモード
・プロビジョニングスループットモード

プロビジョンドスループット
ファイルシステムが駆動できるスループットのレベルを指定する

バックアップ

EFSデータの保護と復元が柔軟かつ効率的に行えるよう設計されている。

AWS Backupとの統合完全に管理されたポリシーベースのサービス「AWS Backup」とネイティブに統合されている。
バックアップの種類・継続的バックアップ:ある時点の状態(Point-in-time)への復元が可能
・定期的バックアップ:長期的な保存目的で使用
バックアッププランの管理自動化されたスケジュール設定や保持ポリシーの指定が可能。以下の項目を管理できる。
・頻度(どれくらいの間隔でバックアップするか)
・タイミング(いつ開始するか)
保持期間(バックアップの保存期間)
ライフサイクル(保存・削除の自動管理)
復元の柔軟性・新しいファイルシステムへの復元
・既存のファイルシステムへの復元
・完全復元または項目レベルでの復元も選択可能

Fsx

for Windows File Server
※NFSバージョン4 非対応
フルマネージド型ファイルサービス(Windows向け)【Windows File Serverと互換性あり】

・デプロイタイプは一度作成すると更新できない

種類

●for Windows
ファイルシステム当たり最大 2 GB/秒のスループット、数百万のIOPS、一貫したミリ秒未満のレイテンシーという高速パフォーマンスが実現可能な高性能なストレージ。
・HDDからSSDに変更することはできない

●for Lustre
ハイパフォーマンスコンピューティングなどで高速ストレージを必要とするアプリケーション向けに設計されている。Lustre ファイルシステムを簡単かつ費用効果の高い方法で起動して実行する。

※Lustre ファイルシステム
高速ストレージを必要とするアプリケーション向けに設計されており、ストレージがコンピューティングに対応できるように設計されている。リ秒未満のレイテンシー 最大数百 Gbps のスループット、および最大数百万のIOPS を提供。

●for OpenZFS
OpenZFS ファイルシステム上に構築され、NFS プロトコル (v3、v4、v4.1、および v4.2) を介してアクセスできるフルマネージド共有ファイル。

●for NetApp ONTAP
AWS 上でフルマネージドの NetApp ONTAP ファイルシステムを提供するストレージサービス。オンプレミスの NetApp 環境と同様の機能・API をクラウドで利用可能。
・NFS、SMB、iSCSI などの業界標準プロトコルに対応
・Linux、Windows、macOS からの広範なアクセスをサポート
・スナップショット、クローン、レプリケーション などの高度なデータ管理機能を簡単に利用可能
・圧縮・重複排除 によるストレージコスト削減
・フルエラスティックで実質無制限のストレージ容量

[(for NetApp ONTAP)SnapMirror によるレプリケーション概要]

  • スケジュールされたレプリケーションによるデータ保護
    ・FSx for ONTAP 間、またはオンプレミスから AWS への定期的なデータ複製が可能。
    ・リージョン内・クロスリージョン両方に対応。
    ・最短 5 分間隔でレプリケーション可能(RPO/RTO/パフォーマンスを考慮して設定)。
  • SnapMirror の技術的特徴
    ・高可用性と効率的な災害対策に有効。
    ・ONTAP の Snapshot 技術を活用。
    ・差分データのみを転送することで、ネットワーク帯域を節約し、高速なレプリケーションを実現。
デプロイタイプ

以下の2つのデプロイタイプを提供する。
コストを抑えたい用途にはシングル AZ。高い可用性・耐障害性が必要な業務にはマルチ AZ。

シングル AZ
(アベイラビリティーゾーン)
構成:1つのAZにファイルサーバーとストレージを配置。
可用性:単一コンポーネント障害には自動復旧、ただし完全な可用性は保証されない。
ダウンタイム:メンテナンスや障害復旧時に約30分のダウンタイムあり。
リスク:稀に複数障害で回復できない場合があり、その際はバックアップから復元可能。
マルチ AZ構成:2つのAZにまたがる高可用性クラスタ(WSFC使用)。
可用性と耐久性:AZ間での同期複製と自動フェイルオーバーにより、可用性とデータ保護が強化。
ダウンタイム回避:計画的/計画外の障害でも継続利用が可能。

snowball

ペタバイト規模のデータをAWSクラウドに高速かつ安全に移行できる物理的なデータ転送サービス。※[使用不可]snowball:(50~80TB) 

●Snowball Edge Compute Optimized(42TB)
AWSが提供する物理デバイスで、ローカル環境で強力なコンピューティング処理が可能。限られたネットワークインフラストラクチャをもつ工場サイトでのアプリケーションホスティングに適している。このデバイスはエッジロケーションでのコンピューティング、データ転送、ストレージのタスクを処理する能力を持っており、同時に一貫したAWS開発者エクスペリエンスを提供する。

項目内容
vCPU104コア
メモリ416 GiB
GPUオプションで NVIDIA Tesla V100 を搭載可能
ストレージ28TB(NVMe SSD)で S3 互換または EBS 互換として利用可能
インスタンスタイプsbe-c(C5, M5a 相当)、sbe-g(G3, P3 相当)

●Snowball Edge Storage Optimized(HDD:80 TB/NVMe 容量:210 TB)

大容量データ(例:200TB)をネットワークに頼らず迅速かつ安全にオンプレミスから Amazon S3 へ移行できる専用デバイス。特に帯域が限られた環境で、時間とセキュリティの面で大きな利点がある。

Snowcone ※[2025年11月12日までサポート]
エッジコンピューティングとデータ転送のためのポータブルで堅牢かつ安全なデバイス。デバイスをAWSに発送してオフラインで、またはDataSyncを使用してオンラインでデータを収集、処理し、AWSクラウドに移動できる。

自動化サービス

基礎知識

●データストア

コンピュータシステムに情報を格納して保護するデジタルリポジトリ。
情報テーブルなどの構造化データと、E メール、画像、動画などの非構造化データの両方を保存できる。

●Puppet

サーバーの環境設定インストールなどを自動化する設定管理ツール。Ruby で実装されており、各種操作の実行を行うためのフロントエンドであるpuppetコマンドと、各種機能を実装した Ruby ライブラリから構成される。

Lambda

【処理の自動化】
サーバやアプリケーションを立てずに、実行したい処理をコードで実施できるコンピューティングサービス(アプリケーションをデプロイする)。Lambda API を使用して関数の呼び出し、Lambda を使用してその他の AWS サービスからのイベントをトリガーにして関数を実行できる。再帰的な(自己の行為の結果が自己に戻ってくる)なコードの使用は避けること。

機能性
オートスケール処理件数に対して、自動的に実行ユニットを増やして並列にスケールアウトする。
Lambda のクォータ・最大実行時間:900秒(15分)
・メモリの割り当て:10,240MB
・エフェメラルディスク:512MB(/tmpディレクトリのストレージ上限)
※メモリの量に比例して、CPUパワーを割り当てる。
デプロイパッケージ「コンテナイメージ」、「zip ファイルアーカイブ」の 2 種類ある。
[デプロイパッケージのサイズ]
・50 MB(zip 圧縮済み、直接アップロード)
・250MB(解凍、レイヤーを含む)
・3 MB(コンソールエディタ)

依存パッケージをまとめて、libフォルダー内にライブラリーとして配置すると解凍時間を短縮できる。
コンテナイメージコンテナイメージからLambda関数を作成できる。
実行ロールAWS サービスおよびリソースにアクセスする許可を関数に付与するIAM ロール。他のAWSサービス(S3など)からファイルを取得する時、その権限が含まれるIAMロールをLambda関数に割り当てる必要がある。CloudWatch にログを送信し、トレースデータをX-Ray にアップロードするためのアクセス許可をもつ開発用の実行ロールを作成できる。
[参考]

●Monitor 設定

パフォーマンスメトリックやオペレーショナルな監視に関連する設定。

デッドレターキュー

正常に処理できなかったイベントをSQSキューやSNSのトピックにリダイレクトしてエラーを監視・分析する。
・2回の再試行の後にイベントを処理することを失敗したイベントをキャプチャできる。その際、最初の 2 回の試行の間に 1 分間、2 回目と 3 回目の間に 2 分間の待機時間がある。
・関数エラーには、関数のコードによって返されるエラーと、タイムアウトなど関数のランタイムによって返されるエラーが含まれる。

●エクスポネンシャルバックオフ

【許容可能なリトライ】
リクエスト処理が失敗した後のリトライで、現実的に成功しそうな程度のリトライを許容可能な範囲で徐々に減らしつつ継続するアルゴリズム。再試行する度に、1秒後、2秒後、4秒後と指数関数的に待ち時間を加えていく。全体のリトライ回数を抑え効率的なリトライを実現。

●Lambda Layer

【Lambdaコード共有】
コードやライブラリ、共通のビジネスロジックをZIPアーカイブをLayerに追加し、複数のLambda関数で、外部ライブラリやビジネスロジックを共有できる仕組み。主には異なるLambda関数間で、同じ処理を使いたい場合に利用する。
・デプロイパッケージの容量を少なくなるためLambdaのソースコードの管理が楽になる。

★これまでは同じライブラリを利用する関数が複数あった場合、全ての関数に対してライブラリを含めてパッケージングすることが必要だった。ライブラリをLayerとしてアップロードしておくことで、個々の関数はLayerを使用することができる。

  • レイヤー
    追加のコードまたはデータを含むことができる .zip ファイルアーカイブ。

●Lambda エイリアストラフィックシフティング

【面倒なデプロイ簡素化】(※エイリアス:Lambda関数のバージョンを参照するポインタ)
エイリアスの追加バージョンの重みを更新することで、呼び出しトラフィック指定された重みに基づいて新しい関数のバージョンにルーティングされる。これによってLambda関数の2バージョン間でシフトを行う場合、Lambda関数のエイリアスに重み付けを行うことが可能になり、カナリアデプロイやブルーアンドグリーンデプロイメントといった方法が使用できるようになった。

●Lambda SnapStart

Lambda 関数の初期化処理が終わった後に、実行環境のスナップショットを取って、コールドスタートに該当する起動の場合にスナップショットからのリストアを行うことでコールドスタートの場合の起動時間を短縮する。ゼロから初期化するのではなく、キャッシュされたスナップショットから新しい実行環境を再開するため、起動時のレイテンシーが短縮される。
※一意の ID を生成するコードを Lambda ハンドラーに移動することで、スナップショット時に不要な初期化が防げる。

[仕組み]
①関数バージョンを発行するときに関数を初期化
②初期化された実行環境のメモリとディスク状態の Firecracker MicroVM スナップショットを作成
③スナップショットを暗号化して、低レイテンシーアクセスのためにキャッシュする

※Lambda SnapStart for Java
レイテンシーの影響を受けやすいアプリケーションの起動パフォーマンスを追加のコストなしで最大 10 倍 向上させることができ、通常は関数コードの料金もかからない。

●Lambda トランスフォーマー

API GatewayとAWS Lambdaを連携させる際に、リクエストやレスポンスのデータ形式を変換するための機能。
これは主に、API Gatewayが受け取ったJSON形式のデータを、Lambdaが処理しやすい形式(例えば、シンプルなJSONや特定のデータ構造)に変換したり、逆にLambdaからのレスポンスをAPI Gatewayのクライアントが期待する形式に変換したりする際に使われる。

Lambda関数ハンドラー

[呼び出し関数]
Lambdaがコードを実行する際に呼び出す関数名。関数が呼び出されると、Lambda はハンドラーメソッドを実行。関数はハンドラーが応答を返すか、終了するか、タイムアウトするまで実行する。

[ハンドラー外の実行について]
Lambda 関数内の処理は関数が再度呼び出された際に追加で最適化されない限り、初期化状態が維持される。グローバル領域(ハンドラー外)の処理は初期化されないため、キャッシュのように処理が最適化される。そのため、Lambda関数のグローバル領域(ハンドラー外)に動的な処理は書かない方が良く、リソースへの接続などのワークロードが適切。

グローバル領域(ハンドラー外)に何か書くときは以下の点を意識する。
・コールドスタート時はグローバル領域(ハンドラー外)の処理が実行される。
・ウォームスタート時はグローバル領域(ハンドラー外)の処理が実行されない。
[引用サイト]

処理実行

利用できる同時実行コントロールには、次の2種類がある。

●予約された同時実行

Lambda関数に必要な同時実行数の上限と下限を設定し、リソースの優先確保や過負荷防止を可能にする仕組み。ある関数が予約済同時実行数を使用している場合、他の関数はその同時実行数を使用できないスケーリングの制御と安定した処理性能の確保に役立つ。設定に追加料金は発生しない。

[同時実行数を下げるメリット]
システム全体の安定性と効率を高めるための「負荷制御」が働くため。同時に大量のリクエストを処理しようとすると、CPU・メモリ・ネットワーク帯域などのリソースが奪い合いになる。実行数を制限することで、各プロセスが十分なリソースを確保でき、安定して処理できるようになる。

●プロビジョニングされた同時実行

関数に割り当てる、事前に初期化された実行環境の数。(関数のレイテンシーを下げる場合に最適)
これらの実行環境は、受信した関数リクエスト即座に対応できるように準備される。プロビジョニングされた同時実行を設定すると、AWS アカウントに料金が請求される
予約済同時実行数の設定

同期呼び出し(invoke)

関数が呼び出しを受けると、その関数の処理にインスタンスを割り当てて処理を実行する。完了次第、別のリクエストの処理に移ることができる。なお、処理中に別のリクエストが呼び出されると別のインスタンスを割り当てて、別リクエストの同時実行になる。

●同期的処理

エラーが発生した場合、処理が成功するかデータの有効期限が切れるまでLambdaはバッジを再試行する。

※Kinesis Streamと比較
Data Streamからレコードを読み取り、ストリームレコードを含むイベントを使用して関数を同期的に呼び出す。

●非同期呼び出し

関数の非同期イベントキューを管理しエラー発生時に再試行を行う
関数からエラーが返された場合、関数エラーを 2 回再試行する。

  • リクエストデータ
    以下が含まれる。(ただし、リクエストパラメータの順序は保持されない)
    ・リクエストヘッダー
    ・クエリ文字列パラメータ
    ・URL パス変数
    ・ペイロード
    ・API 設定データ
    ※現在のデプロイステージ名、ステージ変数、ユーザー ID、または承認コンテキスト (存在する場合) を含める。
リソースリソースパスを介してアプリがアクセスできる論理エンティティを表す。
メソッドAPIユーザーによって送信されるREST APIリクエストやユーザーに変えるレスポンスに対応。
(※リクエストレスポンスで構成)
ステージタグに似ている。ステージは、デプロイ環境からアクセス可能なパス経路を定義する。

[API Gatewayの統合タイプ5種]

AWS_PROXYLambdaプロキシ統合の場合に選択。
AWSLambdaカスタム統合およびその他すべてのAWS統合の場合に選択。
HTTP_PROXYバックエンドのHTTPエンドポイントを公開するかつ、統合リクエストと統合レスポンスの両方を特別に設定する必要がない場合。
HTTPバックエンドのHTTPエンドポイントを公開するかつ、統合リクエストと統合レスポンスの両方を指定したい場合。
MOCKこのタイプの統合はリクエストをバックエンドに送信することなくレスポンスを返すため、テストを行う場合に選択する。

[バッチ分割]

大量のデータを小さなグループ(バッチ)に分割し、それぞれのバッチを個別に処理する手法。これにより、処理効率の向上やリソースの最適化が期待できる。

また、関数がエラーを返した場合、再試行する前にバッチを2つに分割し処理をすることができる。元のバッチサイズ設定は変更されない。

[rate または cron を使用する式をスケジュール]

[参考公式サイト]

連携サービス

※「同期処理・非同期処理について

SQS
非同期処理(疎結合)
・サーバレスアーキテクチャ
・Lambdaを使用するにはトリガーとして全段にサービスが必要(SQS、APIGateway・・・など)
・Lambdaの処理が失敗した場合(デッドレターキュー)、再実行できる
Kinesis Data Stream
高速処理
該当ページへ遷移
API Gateway
非同期処理
プロキシ統合タイプ
シームレスに統合し、サーバーのプロビジョニングや管理を行うことなく、拡張性の高いアーキテクチャを提供する高速なメカニズム。クライアントが API リクエストを送信すると、API Gateway は統合されたLambda関数にイベントオブジェクトを渡すための「玄関(トリガー)」として機能する
・RESTful API および WebSocket API を作成することができる。

REST API
リソースとメソッドで構成。リアルタイム双方向通信アプリケーションを実現する。

Amplify

【WebApp自動構築】
AWSのクラウドサービス上にモバイルアプリケーションを構築するための最も速く、簡単な方法。ポピュラーなバックエンドの構成とそれを利用するためのフロントエンドの統合を自動で構築できる。

Amplify を使って、オブジェクトストレージの S3 とCDN (コンテンツ配信ネットワーク)の CloudFront を利用したスケーラブルな Web サイトホスティングを始め、ユーザー認証機能や RESTful API や GraphQL API の作成・管理など、豊富な機能が自動的にセットアップされて、簡単に利用できる。

例えば、 Amplify を通じて Web アプリを公開すると、オブジェクトストレージの S3 や CDN (コンテンツ配信ネットワーク) の Cloudfront が自動的にセットアップされスケーラブルなバックエンドが自動的に構成される。
また、アプリにログイン機能を実装したいときは、 Amplify でアプリケーションにユーザ認証機能を追加すれば、アイデンティティおよびデータ同期の Cognito が透過的にプロビジョニングされる。

[引用元サイト]

CloudFormation

【リソース構築自動化】
YAML という形式で記載された Template ファイルを読み込む事で、Stack という1 つの単位で(リソースの設定含めて)環境を構築する。利用は無料。

  • CloudFormation デザイナーのチェック機能でエラーが出ないかを確認すること
  • ユーザーデータを使用するとアプリケーションのデプロイと構成を自動化できる
  • AWS上のインフラ構成をコード化して管理したり、ユーザー間で共有することが可能
  • パッケージはアーティファクトをS3にアップロードし、アーティファクトのパスが更新されたテンプレートを返す。
  • CloudFormation で作成したAWSリソースは、CloudFormation 以外の方法で変更してはいけない
ヘルパースクリプト
cfn-signal【インスタンス作成シグナル】
インスタンスが正常に作成または更新されたかどうかを示すシグナルを CloudFormation に送信する。インスタンスにソフトウェアアプリケーションをインストールして設定する場合、ソフトウェアアプリケーションが使用できる状態になった時にCloudFormation にシグナルを送信できる。
cfn-initスタックのメタデータを読みこみ、パッケージのインストール、ファイルの書き込みなどのセットアップタスクを実行する。
AWS::CloudFormation::Init キーからテンプレートメタデータを読み取り、次の状況に応じて操作を行う
CloudFormation のメタデータの取得と解析
パッケージをインストールする
ディスクへのファイルの書き込み
サービスの有効化 / 無効化と開始 / 停止
cfn-hupメタデータの変更を監視し、変更があるたびに指定されたアクションをトリガーするため、テンプレートの変更が適用されることを保証する。リソースメタデータの変更を検出し、変更が検出された場合に、ユーザーが指定した操作を実行するデーモン。これにより、UpdatesStack API アクションを介して、実行中の EC2 インスタンスに構成を更新できる。

テンプレート

Cloud Formationの設定ファイル。(JSON/YAMLフォーマット:形式)AWS リソース(またはプロパティ)を作成する際の設計図として使用。
※YAML はインデント(左から右へ寄せた量)で階層を判断する形式。
※YAML は「記法」となる為、プログラミングのような分岐処理や繰り返し処理の記述はできない。

論理IDVPC など AWS リソースにも作成された瞬間に ID(リソース ID)が付与されるので、それと区別するための名称。
AWS:IncludeS3上に置かれたファイルの中身をCloudFormationのテンプレート内に読み込むためのマクロ。
Fn::GetAZs【組み込み関数】
指定したリージョンのアベイラビリティーゾーンアルファベット順にリストした配列を返す
アベイラビリティーゾーンへのアクセス権は顧客ごとに異なり、テンプレート作成者は組み込み関数 Fn::GetAZs を使用することで、呼び出し元のユーザーのアクセス権にうまく適応するテンプレートを作成する。
特定のリージョンのすべてのアベイラビリティーゾーンをハードコーディング(情報の書き換え)する必要はなくなる。

※組み込み関数はリソースプロパティ、出力、メタデータ属性、更新ポリシー属性で使用できる
Fn::ImportValue組み込み関数は、同じリージョン内でエクスポートされた値のみインポートできる。
※エクスポート(オプション)

[テンプレートセクション]

セクション名役割・説明
AWSTemplateFormatVersionテンプレートのバージョンを指定(任意)
Descriptionテンプレートの説明(任意)
Metadataテンプレートに関する追加情報(任意)
Parametersスタック作成や更新時にテンプレートへ渡す値。
(例:インスタンスタイプなど)
Mappings条件付きパラメータ値に使用するキーと値の対応表(検索テーブルのようなもの)。ResourcesOutputs セクションで Fn::FindInMap 組み込み関数を使って値を取得する(例:リージョンごとのAMI ID)
Conditions条件付きリソース作成やプロパティ設定(例:Prod環境のみ作成)
Resources実際に作成する AWS リソースを定義(必須)
Outputsスタック作成後に表示する情報(例:URLやARN)
Rulesパラメータの検証ルール(例:特定の組み合わせのみ許可)
Transformマクロや AWS SAM を使う場合に指定(例:AWS::Serverless-2016-10-31

[(一例)基本テンプレート]

テンプレートの様式バージョン
テンプレートの説明
AWSTemplateFormatVersion: 2010-09-09
Description: sample template
カスタマイズ可能な論理IDParameters:
 NameBase: #←これが名前用変数の論理ID
 Description: this is base name.
 Type: String
 Default: Test
作りたいリソース
EC2の論理ID
Resources:
 Ec2Instance1:
 Type: AWS::EC2::Instance
 Properties:
 KeyName: key-raisetekkun
 ImageId: i-hogehogehogehogeyo
 InstanceType: t2.micro
 SecurityGroupIds:
 - !Ref Sgrp1
ユーザーデータUserData: !Base64 |
!/bin/bash -xe
yum update -y
yum install -y httpd
service httpd start
chkconfig httpd on
Tags:
– Key: Name
Value: !Sub ec2-${NameBase}
スタック内のリソース ID をほかのスタックから呼び出し可能にさせるためOutputs:
スタック

【リソース定義】
関連リソースはスタックと呼ばれる単一のユニットとして管理できる AWS リソースのコレクション。
「承認されたテンプレートの強制」や「開発者によるテンプレートの制限」を実装する機能はない

・スタックを作成、更新、削除することで、リソースのコレクションを作成、更新、削除できる。
・「エラー時のロールバック」機能が有効であると、失敗しても作成されずロールバックする。

スタックの更新には2つの方式がある。

直接更新
(in place)
変更を送信するとCloudFormationによって即時にデプロイ。
更新を迅速にデプロイするには直接更新を使用する。
変更セット(blue-green)更新されたスタックなど実際に実装する前に検証できる。影響度を確認するためのスタック。そのため、安心したスタック更新が可能。スタックの変更案が実行中のリソースに与える可能性がある影響を確認できる。
  • スタックセット
    1つのテンプレート内AWS リソースの設定を定義して、複数の AWS アカウントやリージョンにスタックを作成・管理、展開することができる。
    スタックセットを定義したら、スタックセットはリージョンのリソースである。

    ※自動デプロイを有効にすると、今後ターゲットの組織または組織単位(OU)に追加されるアカウントにStackSetsが自動デプロイを行う
  • スタックポリシー
    重要なスタックリソースを保護して、意図しない更新でリソースが中断されたりするのを防ぐJSONドキュメント。

●カスタムリソース

【使用できないリソース】
CloudFormationのリソースタイプとして使用できないリソースをプロビジョニングするためのカスタムリソースの作成をサポートする。
テンプレートにカスタムのプロビジョニングロジックを記述し、ユーザーがスタックを作成、更新(カスタムリソースを変更した場合)、削除するたびにそれを実行。リソースは、カスタム リソースを使用して含めることができる。この方法により、すべての関連リソースを 1 つのスタックで管理できる。
LambdaとZipFikeを使用するカスタムリソースはインラインの nodejs リソース構成を可能にする。

[EC2のAMI IDを自動取得する方法]
CloudFormationテンプレートでEC2インスタンスを作成する際、通常は手動でAMI(Amazon マシンイメージ)IDを指定する必要があります。AMI IDは、インスタンスタイプやリージョン、またはソフトウェアの更新によって頻繁に変わるため、その都度テンプレートを修正する必要がありました。しかし、カスタムリソースとAWS Lambdaを使うことで、テンプレートの実行時に最新のAMI IDを自動で取得できるようになります。これにより、AMI IDのマッピングを手動で管理する手間が不要になる。

●クロススタック

スタック間でリソース情報を共有する仕組み。1つのスタックで作成したリソース(例:VPCやSubnet)を、別のスタックから参照できます。

ステップ内容
ExportスタックAで Outputs に値を定義し、名前を付けてエクスポート
ImportスタックBで Fn::ImportValue を使ってその値を参照

・複数のスタックにリソースを分散させ、それらを相互に連携させる方法。
・リソースを1つの巨大なテンプレートに詰め込まず、機能単位で分割して再利用性や保守性を向上。

[ネストされたスタック]
他のネストされたスタックが含まれているため、スタックが階層を成す構造になる。ルートスタックはネストされたすべてのスタックが最終的に属する最上位スタック。さらにネストされたスタックにはそれぞれ、直接の親スタックが存在する。

ネストされたスタックを使用して共通コンポーネントを宣言することがベストプラクティスとみなされている。

[参照の仕組み]
出力(Output) を使って、スタック A が持つリソースの情報を外部に公開。
・スタック B が、その出力を ImportValue 関数で参照し、スタック A のリソースを利用。

[ 例 ]ネットワークスタックとアプリケーションスタック

  • ネットワークスタック → VPC・サブネット・セキュリティグループなどを定義。
  • アプリケーションスタック → ネットワークスタックのサブネットやセキュリティグループを参照して Web アプリを構築。
  • この方法により、アプリ担当者はネットワークの詳細を気にせずに利用可能
ドリフト

【乖離】CloudFormationテンプレートとそれによって展開したリソースとの間の乖離(変更点)。スタックでドリフト検出オペレーションを実行すると、スタックが予想されるテンプレート設定からドリフトが発生しているかを検証される。

属性
DeletionPolicy【削除対策】
スタックが削除された際にリソースを保持またはバックアップができる。
・Retain
リソースの削除防止。スタックが削除された際にリソースを保持するには、そのリソースに対して Retain を指定する。
・Snapshot
リソース削除前にスナップショットを作成する。
DependsOn【依存関係】
特定のリソースが他のリソースに続けて作成されるよう依存関係)に指定できる。依存関係のエラーが発生した場合、テンプレート内の他のリソースに依存するリソースに DependsOn属性を追加する。
Creation Policy【作成管理】
CloudFormationが指定数の成功シグナルを受信するかまたはタイムアウト期間が超過するまでは、ステータスが作業完了にならないようにする属性。

・Wait Condition
リソースの作成を詳細に調整できる。
UpdatePolicy特定のリソースに対する更新処理の挙動を制御する。この仕組みにより、CloudFormation スタックの更新時にインスタンスの置き換えやローリング更新を制御でき、運用中のサービスへの影響を最小限に抑えながら変更を反映することが可能。

[(UpdatePolicy)対象リソースと適用可能なポリシー]

対象リソース利用可能なポリシー
AWS::AutoScaling::AutoScalingGroupAutoScalingReplacingUpdate / AutoScalingRollingUpdate / AutoScalingScheduledAction
AWS::ElastiCache::ReplicationGroupUpdatePolicy
AWS::Elasticsearch::DomainUpdatePolicy
AWS::Lambda::AliasUpdatePolicy

[テンプレートセクション]

パラメーター
  • NoEcho
    値をtrueに設定すると、機密データのパラメーターをマスクできる。パラメーター値はアスタリスクでマスクされる。データーベースのパスワードなどに有効。呼び出された時にパスワードが表示されないようにすることができる。

●リクエストパラメータ

「カスタム名」をもつIAMリソースがある場合は、CAPABILITY_NAMED_IAM を指定する必要がある。

項目CAPABILITY_IAMCAPABILITY_NAMED_IAM
機能IAMリソースを作成・更新する際に使用される機能カスタム名をもつIAMリソースを作成・更新する際に使用される機能
使用用途自動生成された名前のIAMリソースの作成明示的に指定した名前を持つIAMリソースの作成
適用範囲通常のIAMリソース(ロール、ポリシーなど)カスタム名を持つIAMリソース(カスタムロール、カスタム下ポリシーなど)
指定が必要なシナリオ一般的なIAMロールやポリシーの作成特定の名前をもつIAMロールやポリシーの作成
エラーメッセージの発生カスタム名を指定したIAMリソースを作成しようとした場合にエラーが発生正しい機能が指定されていれば、エラーは発生しない

エラー

InsufficientInstanceCapacity エラー
AZ内の「インスタンス容量の不足」を意味する。インスタンスを起動したり、停止したインスタンスを再起動したりする際にこのエラーが発生する場合、使用するAWS に十分なオンデマンドキャパシティーがないことを意味する。

・選択されたインスタンスタイプが一時的に利用できない。
・特定のAZにおいてインスタンスの容量不足が発生している。

補助サービス

●CloudFormation Hooks

CloudFormation スタックの操作(作成・更新・削除)前に カスタムロジックを実行できる仕組み。スタック、リソース、変更セット、Cloud Control API などを対象にスタック操作前、リソース作成前などにリソースの構成を事前に検証し、非準拠な操作を防止できる。

[CodePipeline を使用した継続的デリバリー]
CloudFormationはCodePipelineと統合されている。

[参考公式サイト]

[既存リソースをCloudFormation 管理に取り込む]
CloudFormation 管理外のAWSリソースを作成した場合、resource import を使用して既存のリソースをCloudFormation 管理に取り込むことができる。

[スタックへ既存リソースをインポート]
[参考サイト]

●CloudFormation サービスロール

AWS CloudFormation にユーザーに代わってスタック内のリソースを呼び出すアクセス権限を許可する IAM ロール。スタックリソースの作成、更新、または削除を許可するIAMロールを指定できる。デフォルトの場合、CloudFormationはユーザー認証情報からスタック操作に対して作成される一時的セッションを使用する。

●Mapping

【キーと値の関連性】
キーと名前付きの一連の値とが対応付けられる。たとえば、リージョンに基づく値を設定する場合、リージョン名をキーとして必要な値を保持するマッピングを作成する。具体的なリージョンごとに必要な値を指定する。

●Cloud Former

【JSONへ変換する】現在の構成をJSONフォーマットに変換でき、構成のコピーや雛形の作成が楽になる。アカウントに既に存在するAWSリソースからCloudformationテンプレートを作成するテンプレート作成用のβツール。アカウントで実行中のサポートされているAWSリソースを選択すると、CloudFormerはS3バケットにテンプレートを作成する。

●SAM

【テンプレート集】※SAM:Serverless Application Model
CloudFormationの拡張機能とされる。サーバーレスアプリケーションの開発やデプロイを簡単にするための簡略化された独自のモデリング構文を提供する。YAMLを使用して、サーバレスアプリケーションのするLambda関数、API、データベース、イベントソースマッピングをモデリング。

・迅速に記述可能な構文で関数、API、DB、イベントソースマッピングを表現できる。
・デプロイ中、SAMがSAM構文をCloudformation構文に変換および拡張することで、サーバーレスアプリケーションの構築を高速化することができる
(CloudFormationの拡張機能であり、CloudFormationの信頼性の高いデプロイ機能を利用できる)
・SAM CLI を使用して、開発ライフサイクルの作成、構築、デプロイ、テスト、モニタリングの各フェーズを通じてサーバーレスアプリケーションを管理

[参考]
[SAMについて]

連携サービス

【併用:Code Commit】
CloudFormationのテンプレートをCodeCommitでバージョンなど管理できる。
①CodeCommitリポジトリを作成し、そこにCloudFormationテンプレートファイルを保存。
②CloudFormationのスタック作成時に、テンプレートの場所としてCodeCommitリポジトリのURLとファイルパスを指定

【併用:Auto Scaling】
CloudFormationでAuto Scalingグループの起動設定(Launch Configuration)を更新方法について。
要するに、起動設定を変更したい場合は、既存のものを上書きするのではなく、新しい設定を作成して置き換え、必要に応じてローリングアップデートを行うことが重要。

主な内容は以下の通りです。

  • 起動設定そのものは作成後に変更できませんが、新しい起動設定を作成して、Auto Scalingグループに適用することで更新できます。
  • AWS CloudFormationで起動設定を更新すると、古いリソースが削除され、新しいリソースが作成されます。
  • 新しい起動設定を適用しても、既存のインスタンスは変更されず、古い設定のまま維持されます。新しいインスタンスのみが新しい設定で起動します。
  • AutoScalingRollingUpdateポリシーを使うと、Auto Scalingグループ内のインスタンスを段階的に新しいインスタンスに置き換えることができます。これにより、サービスへの影響を最小限に抑えながら更新が可能です。

CDK

【コードで環境構築】※Cloud Development Kit (CDK)
既存のスクリプトを使用して CloudFormation テンプレートを作成するため、CloudFormation を学習する必要がない。プログラミング言語を使ってクラウドインフラをコードで定義・管理できるフレームワーク。テンプレートやスクリプトに頼らず、より柔軟で再利用可能な構成が可能。

  • 対応は AWS のみではある。
  • 複数のプログラミング言語で記述が可能。
  • コードから CloudFormation テンプレートが生成され、実際の作成処理はCloudFormation で行われる。
  • コンストラクトという仕組みで、ベストプラクティスに基づく構成が簡単に作れる。
  • 背後では CloudFormation が使われ、安全にリソースをデプロイできる。
  • 独自のカスタムコンストラクトを作成・共有することで、開発の効率を向上できる。
  • Terraform(cdktf)Kubernetes(cdk8s) にも対応し、多様な環境で利用可能。
アサーションモジュール

CDKのアサーションモジュール(aws-cdk-lib/assertions)は、AWS Cloud Development Kit(CDK)で作成したスタックに対してユニットテストを行うための専用ライブラリ。これは、CDKが生成するCloudFormationテンプレートの内容を検証するために使われる。

[概要]

項目説明
主な目的CDKスタックから合成されたCloudFormationテンプレートに対して、リソースの存在やプロパティを検証する
使用場面リファクタリング時の回帰テスト、TDD(テスト駆動開発)、構成の正当性確認
主なクラスTemplate(スタックをテンプレートとして扱う)
主なメソッドhasResourceProperties(), resourceCountIs(), resourcePropertiesCountIs() など

Elastic Beanstalk

【APPデプロイの自動化】※Beanstalk:豆の木
コードのアップロード、容量のプロビジョニングや負荷分散、アプリケーションのヘルスモニタリングなどのアプリケーションをデプロイするために必要なインフラストラクチャ(サーバーやネットワーク)やリソースの設定をコードを書くだけで自動構築してくれる。また必要に応じてアプリケーションのスケールアップ、ダウンを実施するため、運用面での管理は不要となる。

・モニタリングやセキュリティーに必要なパッケージのみ使用するため、不要なコストを削減できる
・WEBアプリケーションのデプロイを容易にする、タスク時間の長いワークロードの展開に有効
・本サービスの環境内にはEC2インスタンスを管理するAuto Scalingグループが含まれている
・開発言語は、Java / PHP / Python / Python(with Docker) / Node.js / Go / NET / Ruby
・OSとデーターベースの管理ができる

[注意点]
・アプリケーションのバージョンを更新時にインプレース更新を実行するため、アプリケーションはわずかな期間、ユーザーに利用不可になることがある。

[ログ保存機能]
・アプリケーションファイルと、オプションでサーバーログファイルが S3 に保存される。
・サーバーのログファイルを 1 時間おきに S3 にコピーするように設定することもできる。

[通知機能]
通知の仕組み

  • デプロイの状態変化や問題発生時に、指定されたメールアドレスへ自動で警告が送信されます。
  • これにより、アプリケーションチームがデプロイ失敗を即座に把握できるようになります。
作成機能

設定ファイル(.ebextensions)

環境を設定し、環境に含まれる AWS リソースをカスタマイズできる。この設定ファイルを .ebextensions というフォルダ内に配置してアプリケーションソースバンドルにデプロイする。
※Webサーバ構成:(ELB+AutoScaling+EC2) / Batchワーカー構成:(SQS+AutoScaling+EC2)
※ファイル拡張子を .config とするYAML 、 JSON 形式のドキュメント。

  • BlockDeviceMappings
    インスタンスにブロックデバイスを追加できる。

●コンソール

【リソース設定】
環境とそのリソースに関する多数の設定オプションを表示し、デプロイ時の環境動作のカスタマイズ、追加機能の有効化、環境作成時に選択したインスタンスタイプやその他の設定を変更することができる。

●共有機能

開発者は単にそのアプリケーションをアップロードするだけで、展開できる。複数のユーザーや企業が同じアプリケーションを共有し、各々でカスタマイズすることが可能。

デプロイ機能

●ワーカー環境 SQS デーモン(※Elastic Beanstalk 内)

長期間実行される可能性があるタスク(例えば、画像処理やEメール送信、ZIP生成など)は、ワーカー環境にオフロードさせることができる。

ワーカー環境・Elastic Beanstalk から提供されるプロセスデーモンを実行する。
・アプリケーションが成功を返さない場合、プロセスデーモンはメッセージをキューに戻す。
・Auto Scalingグループ、1 つ以上のEC2 インスタンスおよび IAM ロールが含まれている。
・ワーカー環境にSQS キューがない場合、Elastic BeanstalkによってSQS キューが作成され、プロビジョニングされる。
デーモン・デーモンは定期的に更新され、機能の追加とバグの修正が行われる。
・デーモンの最新バージョンを取得するには、プラットフォームバージョンに更新。

[オフロード]
ある特定のデータ処理に特化したハードウェアをコンピュータに装着し、CPUの処理を肩代わりして負荷を軽減し、システム全体の処理性能を向上させる。

[200 OKレスポンスについて]

  • ワーカー環境内のアプリケーションが 200 OK レスポンスを返す。
    ①リクエストを受信して正常に処理したことを確認する。
    ②デーモンが DeleteMessage 呼び出しを Amazon SQS キューに送信し、そのメッセージをキューから削除。
  • アプリケーションが 200 OK 以外の応答を返した場合
    ①設定済みの Error Visibility Timeout 期間の経過後にメッセージをキューに戻す。
    ②応答がない場合、処理中の別の試行でそのメッセージを使用できるように、InactivityTimeout 期間の経過後にメッセージをキューに戻す。
デプロイの種類

[※既存のインスタンスを使用すると容量が減少]

All at once(既存のインスタンス)
同時に全ての既存インスタンスに新しいバージョンをデプロイするポリシー。最も迅速なデプロイ方法。環境内のすべてのインスタンスは、デプロイが実行される間、短時間サービス停止状態になる。
Rolling(既存のインスタンス)
バッチに新しいバージョンをデプロイするポリシー。複数インスタンスに対し、少しづつデプロイ。デプロイが終わると全てのインスタンスでデプロイしたバージョンのアプリケーションが起動。ダウンタイムを回避できるが、デプロイ時間が長い。サービスの完全停止を防ぐアプリケーションのログ保持向き。
Rolling with additional batch(既存・新規のインスタンス)
デプロイの対象となるインスタンス分、新しくインスタンスを起動させて、100%の状態を保つ。インスタンスがサービス停止する前に、インスタンスの新しいバッチを起動するように環境を設定してデプロイ中に総容量を維持できる。
Immutable(変更不可):新規のインスタンス
低速のデプロイ。常に新しいアプリケーションバージョンを新しいインスタンスにデプロイ。失敗しても迅速に安全にロールバック可能。(Blue/Greenは新しく環境を立てるが、Immutableは既存環境に新規インスタンスを構築・デプロイ
Traffic splitting残りのトラフィックを古いアプリケーションバージョンで処理され続けるようにする。(※Canaryリリース形式)
Blue/Green(Swap Environment Deployment)
新バージョンのアプリケーションを公開するにあたり、現バージョン(ブルー)と新バージョン(グリーン)の両方を並行して稼働させ、切り替えにより公開する。仕組みとして、個別の環境に新しいバージョンをデプロイして、2つの環境のCNAMEを入れ替え、すぐに新しいVerにトラフィックをリダイレクト。

・切り替えは一瞬でできるため、稼働停止時間なしに公開できるのがメリット。
・1つの環境で2つの異なる環境層をサポートすることはできない。
・ワーカー環境層とウェブサーバー環境層はそれぞれAuto Scalingグループを必要とする。
・ElasticBeanstalk は環境ごとに一つのAuto Scalingグループしかサポートしていない。
●環境URLのスワップ
新旧環境間でCNAMEレコードを交換する機能を提供する。これにより、新しい環境にデプロイされたアプリケーションにユーザーのトラフィックを素早くかつ無停止でリダイレクトすることができる。
アプリケーションバージョンライフサイクル

Elastic Beanstalk コンソールまたは EB CLI を使用してアプリケーションの新しいバージョンをアップロードするたびに、アプリケーションバージョンが作成される。使用しなくなったバージョンを削除しないとAWSクォータ(制限)に到達し、アプリケーションの新しいバージョンを作成できなくなる。

[領域管理]
ライフサイクルポリシーを使って、古いバージョンを削除するか、アプリケーションの合計数が指定した数を超えた場合にバージョンを削除すること。デフォルトでは、データの損失を防ぐために、バージョンのソースバンドルを Amazon S3 に残す。ソースバンドルを削除すると、領域を節約できる。
[参考]

●ソースバンドル

ソースのパッケージとして機能する。アップロードされたソースバンドルはElasticBeanstalk内で管理され、以前のバージョンに戻すことができる。

ウェブアプリケーションを Docker コンテナからデプロイ

Elastic Beanstalkを使えば、Dockerの柔軟性とAWSの運用自動化を組み合わせて、効率的にアプリケーションを展開できる。

Dockerコンテナの利点・独自のランタイム環境を定義可能
・他プラットフォームでサポートされない言語やツールも使用可能
・必要なソフトウェアや設定情報をすべて含む自己完結型
Elastic Beanstalkの機能・コンソールで定義した環境変数をコンテナに渡せる
・容量のプロビジョニング、負荷分散、スケーリング、状態監視など自動化

[参考公式サイト]

  • オプション:Swap Environment URLs
    既存のアプリケーション環境(ブルー環境)と新しい環境(グリーン環境)のURLが交換される。これにより、トラフィックは新しい環境にシームレスに移行され、古い環境はスタンバイ状態になる。

[container_commandsキー]
デプロイ時のタイミングに応じて適切に処理が実行されるように構成できるという内容。
アプリケーションのソースコードに影響を与えるコマンドを記述できる。アプリケーションおよびウェブサーバーの設定後アプリケーションバージョンアーカイブが展開された後に実行される。アプリケーションのバージョンがデプロイされる直前にコマンドが走る。その他のカスタマイズ操作は、アプリケーションのソースコードが展開される前に実行される。

[Dockerコンテナの活用]

  • Dockerを使うことで、独自のランタイム環境を構築できる。
  • 他のプラットフォームでサポートされていない言語やツール・パッケージマネージャも使用可能。
  • コンテナは自己完結型で、必要な設定やソフトウェアをすべて含む。

[環境変数の扱い]

  • Elastic Beanstalk コンソールで定義されたすべての環境変数はコンテナに渡される

[インフラの管理自動化]

  • Dockerコンテナを用いた Elastic Beanstalk では、以下のようなインフラ管理が自動化される
  • 容量のプロビジョニング
  • 負荷分散
  • スケーリング
  • アプリケーションの状態監視

[他のAWSサービスとの統合]

  • VPC、RDS、IAM などの AWS サービスとも柔軟に統合可能

全体として、Elastic Beanstalk × Docker の組み合わせにより、高い柔軟性と自動化された管理の両立が可能になることを示している。

[引用元サイト]

連携サービス

【併用:外部の Amazon RDS for MySQL】
アプリケーションのスケーリングとデータベースの持続性を別々に管理できる。Elastic Beanstalk 環境が再構築されても、外部 RDS インスタンスは影響を受けずにデータを保持できる。これは、データベースに保存されたデータが重要で、アプリケーションスタックの状態に関係なく保持される必要があるという要件に直接対応できる。

【Amazon SNSとの連携】
環境の作成時や後からでも、通知先のメールアドレスを指定することで、エラーやヘルス状態の変化をメールで受け取れます。Elastic Beanstalkは、Amazon SNS (Simple Notification Service) を使って、環境に影響する重要なイベントを通知します。

Ops Works

【ミドルウェアの自動化
Chef や Puppet(構成定義ファイル)に基づいて、サーバーのさまざまな設定を自動的に行うソフトウェア、設定管理サービス。

・ソフトウェアの設定
・パッケージのインストール
・データベースのセットアップ
・サーバーのスケーリング
・コードのデプロイが自動的

・サポート範囲は、EC2、EBS ボリューム、Elastic IP、CloudWatch メトリクスなど、アプリケーション志向のリソースに限られる

●自動ヒーリング

インスタンスが Amazon EC2 ヘルスチェックに合格した場合でも、スタック内にある異常なインスタンスまたは失敗したインスタンスを再起動する。スタックのレイヤー設定では、自動ヒーリングがデフォルトで有効化されている。

スタック

【管理枠】
OpsWorksの管理対象をまとめたコンポーネントで、属する全員インスタンスの構成を管理する。
※スタック(大枠)の中にレイヤー。レイヤー内に各インスタンス(インスタンスにOpsWorksのエージェント必須)
⇒別のリージョンにコピーできる(DR環境対策)

スタックインスタンス【スタックのリンク】
・スタックインスタンスはひとつのスタックセットのみ関連付けられる。
・リージョン内のターゲットアカウントのスタックへのリファレンス(参考)。
・スタックなしで存在できる。
・スタックの作成失敗理由を保持する。
レイヤー1つ以上の Layer を追加することにより、スタックのコンポーネントを定義する。

Chef(シェフ)

【注文ファイル】
ファイルに記述した設定内容に応じて自動的にユーザーの作成やパッケージのインストール、設定ファイルの編集などを行うツール。「Cookbook(クックブック)」や「Recipe(レシピ)」と呼ばれる設定ファイルの再利用がしやすい構造になっている点が特徴。Ruby と Erlang で記述。

●Chef ログ
特にレシピをデバッグする際の主要なトラブルシューティングリソースの 1 つ。レシピが失敗した場合、ログには Chef スタックトレースが含まれる。Chefログを使用して失敗したレシピをデバッグ。実行はデバッグモードであり、ログには Chef 実行の詳細(stdout や stderror に送信されたテキストなど) が含まれる。OpsWorksスタックは各コマンドの Chef ログをキャプチャし、各インスタンスの最新 30 個のコマンドのログを保持可能。

カスタムクックブック

Chefを使って、サーバーにどんな設定をするかを細かく指定することができる。
[カスタムクックブックの有効化]
Use custom Chef cookbooks」オプションを有効にすると、カスタムクックブックの使用が可能になる。

[リポジトリ情報の設定]
クックブックの保存先(Gitリポジトリなど)のURLや**認証情報(パスワードなど)**を設定する必要がある。

[自動インストール]
スタック設定後、新しく起動するすべてのインスタンスには、カスタムクックブックが自動でインストールされる。

[更新コマンドの利用]
すでに存在するインスタンスには、Update Custom Cookbooks コマンドを実行することで、新しいクックブックや更新されたクックブックを適用できる。

[バージョン互換性の確認]
使用するカスタム/コミュニティクックブックが、スタックで採用されているChefのバージョンと互換性があることを事前に確認する必要がある。

Configureイベント

OpsWorks スタック内で以下のような変更が起きたとき、すべてのインスタンスで Configure イベント がトリガーされる。

  • インスタンスがオンライン状態になった/オンライン状態から外れた
  • Elastic IPアドレスの関連付け/解除
  • ELB(Elastic Load Balancing)の Layer へのアタッチ/デタッチ
  • configure stack command を使えば、手動でも Configure イベントを起こすことができる。

[イベント発生例]
・インスタンス A・B・C が稼働中に、新しいインスタンス D を追加すると、A~Dすべてで Configure イベントが発生。
・D のセットアップ完了後に A を停止すると、残りの B・C・D に再び Configure イベントが発生。

[Configureレシピの役割]

レイヤーごとに定義された Configure レシピが実行され、最新のオンライン構成に基づいて設定ファイルを再生成。

ベストプラクティス: アクセス権限の管理

・リソースやアクションの制限により、不要なアクセスを防止
・ユーザーごとに個別のIAMユーザーを作成
・必要な操作だけを許可する最小権限のポリシーをアタッチ

[引用元サイト]

APP Runner

【自動デプロイ】
・ソースコードがコードリポジトリにプッシュされる
・新しいコンテナイメージバージョンがイメージリポジトリにプッシュされる

ソースコードまたはコンテナイメージから、ウェブアプリケーションをスケーラブルかつセキュアにデプロイ可能。
・ユーザーはインフラの知識や構成不要で、迅速・簡単・コスト効率の高いアプリケーション実行環境を利用できる。
フルマネージドな運用、高パフォーマンス、オートスケーリング、セキュリティが提供される。

下記イベントに対し、イメージリポジトリに直接接続して、プッシュされたコードを自動的にデプロイまたは配信する。

[インテグレーションとCI/CD]

コードまたはイメージリポジトリ(例:GitHub、ECRなど)に直接接続可能。
・自動的に統合と配信のパイプライン(CI/CD)を構築。

Batch

【バッチ自動化】
開発者、科学者、エンジニアは、数十万件のバッチコンピューティングジョブをAWSで簡単かつ効率的に実行。コンピューティングリソース(CPUやメモリ最適化インスタンスなど)を自動的にプロビジョニングし、ワークロードの量と規模に基づいてワークロードのディストリビューションを最適化する。

・ジョブを実行するためのバッチコンピューティングソフトウェアやサーバークラスターを扱う必要がなくなる。
※Lambda関数をトリガーにすることはできない

Back up

【リソースのバックアップ】
組織内の Backup ジョブを管理(バックアップ保護)およびモニタリングできるサービス。(Organizationsの管理アカウントから実施可能)

大規模なデータセットのバックアップには不向き。オンプレミスのデータを直接同期する仕組みを持っていない。
・オンプレミスのVMのバックアップを作成するためには、BackUpゲートウェイが必要

[バックアップ]

・バックアップポリシーを設定することでサービス全体のアプリケーションのデータをバックアップ。
・復元されたインスタンスは、すべてのインスタンスメタデータを含め元のインスタンスと同じ
・デフォルトの動作は「再起動なし:no-reboot」でEC2バックアップを取得する。

  • クロスアカウント管理機能
    バックアップポリシーを一元管理できるだけでなく、AWS Organizations の AWS アカウント間で、バックアップと復元、コピージョブをモニタリングできる。
Back Up プラン

どのリソースをいつどのようにバックアップするかを定義する。JSON でポリシーのように設定することもできれば、GUI で設定することもできる。

[リソース割り当て]
どのリソースに対してバックアップを実行するかは、リソースの割り当て(Resource assignment)によって定義する。バックアップ対象となる「リソースの指定」、対象リソースのバックアップの「スケジュール」を指定する。
一つのバックアッププラン内で複数のリソースの割り当てを設定できる。

●Backupボールト

バックアップを整理するために、EC2 のバックアップである AMI 、RDS のバックアップであるスナップショットなどをまとめて管理する。
※S3 バケットの継続的バックアップと定期的バックアップは、どちらも同じバックアップボールト

  • 復旧ポイント
    個々のバックアップは復旧ポイントという単位で管理される。復旧ポイントは、各サービスのバックアップと 1 対 1 で紐づけられる。
  • アクセスポリシー
    復旧ポイントに対するアクセス制御を行う。特定のリソースタイプのバックアップのみ参照を許可したり、特定のユーザーに対してのみリストアを許可するといったことが可能となります。
Back Up vs Data sync

Backup は「AWSリソースの保護」向け、DataSync は「ファイルベースの転送・バックアップ」向け

  • Backup:EC2やRDSなど、AWSサービスの状態を丸ごとバックアップ・復元したいときに最適。
    【例】EFS を毎晩自動でスナップショット取得 → 障害時に復元
  • DataSync:オンプレミスや他リージョンのストレージから、ファイル単位で柔軟にバックアップ・同期したいときに便利。
    【例】DataSync:社内NASのログを毎晩 S3 にコピー → 分析や保管用
項目AWS BackupAWS DataSync
目的AWSリソースのバックアップと復元ストレージ間のデータ転送・同期
対象EBS, RDS, DynamoDB, EFS, FSx などオンプレ/NFS/SMB → S3/EFS/FSx など
スケジュールポリシーで自動化(毎日◯時など)cron式で柔軟に設定可能
復元機能バックアップから直接復元可能コピー先から手動で復元
クロスリージョン対応一部対応(EFSなど)柔軟に対応(S3→S3など)
ユースケースAWS内のリソース保護オンプレ→AWS、AWS間の転送・バックアップ

Control Tower

【安全なマルチアカウントのセットアップ】
マルチアカウント環境におけるガバナンス、コンプライアンス、セキュリティのベストプラクティスを自動化し、中央管理を容易にする。(検出処理が主)必要なサービスとネットワークを備えたアカウントを作成できる。

安全なマルチアカウント AWS 環境のセットアップと管理。新規または既存のアカウント設定の統制できる。 組織のセキュリティとコンプライアンスのニーズを維持しながら、ユーザーに代わって複数の AWS サービスをオーケストレーションすることで、 AWS エクスペリエンスを簡素化する。

・適切に設計されたマルチアカウント環境を 30 分以内にセットアップ。
・組み込みのガバナンスで AWS アカウントの作成を自動化。
・事前に構成されたコントロールを使用して、ベストプラクティス、標準、規制要件を適用。
・サードパーティーソフトウェアを大規模にシームレスに統合して、AWS 環境を強化。

[画像引用元]

機能性

●Landing Zone

【最適なマルチアカウント作成】
Well-Architected によるAWSのベストプラクティスに基づいたセキュアなマルチアカウント AWS 環境を提供する仕組みの総称。 ID、フェデレーティッドアクセス、アカウント構造のためのベストプラクティスのブループリント(テンプレートと同等)を使用して、新しい ランディングゾーンのセットアップを自動化。ランディングゾーンを展開することで環境内のAWSアカウントのリソースに対して一元的に 管理/監視が可能になる。

●Account Factory

【組織垢自動配置】
組織内の新しいAWSアカウントを自動的に作成・設定・管理するための仕組み。設定可能なアカウントテンプレートとして、Control Tower の事前承認済み アカウントブループリントとデフォルトのリソース、設定、または VPC 設定を使用して、新しいアカウントのプロビジョニングを標準化するのに役立つ。

機能説明
アカウントの自動作成AWS Organizations配下に新しいメンバーアカウントを作成可能
ガードレールの自動適用CloudTrailやAWS Configなどの監査・ログ機能を自動設定
OU(組織単位)への配置作成したアカウントを指定したOUに割り当て可能
SSOユーザーの設定AWS IAM Identity Center(旧SSO)と連携してユーザーを発行
VPC構成の選択必要に応じてVPCを自動作成(無効化も可能)
カスタマイズ対応Account Factory Customization (AFC) により、独自のCloudFormationテンプレートを適用可能

[主な機能と特徴]
・事前に承認されたアカウント設定に加えて、独自のカスタムアカウントリソースと要件を定義して実装もできる。
・事前に承認されたネットワーク設定と AWS リージョンの選択を使用して Account Factory を設定することで、ビルダーが新しいアカウントを 設定してプロビジョニングするためのセルフサービスを有効にする。

●About Account Factory for Terraform (AFT)

Terraform 用 Account Factory などの Control Tower ソリューションを 利用して、Terraform の Control Tower が管理するビジネスポリシーとセキュリティポリシーを満たすアカウントのプロビジョニングとカスタマイズを 自動化してからエンドユーザーに配信できる。

[Account Factory for Terraform (AFT)との違い]

AFTTerraformを使ってコードベースでアカウント作成・管理が可能。CI/CDパイプラインとの統合にも向いている。
Account FactoryGUIベースで操作。Control Towerコンソールから利用。

●CfCT(Customize Control Tower)

新しいアカウント作成時に、カスタムリソースや設定を自動的に適用できる仕組み。AWS CodeCommit リポジトリに保存された CloudFormation テンプレートや SCP(Service Control Policies)JSON ドキュメントを使って、カスタムセットアップを実行。

[動作の流れ]

  1. ユーザーが新しいアカウントを作成。
  2. OU(組織単位)やアカウントに対して、CloudFormation テンプレートや SCP を自動適用
  3. アカウント作成後に、自動でカスタムリソースがデプロイされる。

[適用可能なカスタマイズ例]
・CloudFormation によるリソース作成(例:VPC、IAM ロール、ログ設定など)
・SCP によるアクセス制御ポリシーの適用
・AWS Config や CloudTrail の設定強化

●包括的なコントロール管理

最小特権の適用、ネットワークアクセスの制限、データ暗号化の適用など、最も一般的な制御目的を果たすために必要な制御の定義、 マッピング、管理にかかる時間を短縮するのに役立つ。

[コントロール(ガードレール)のカテゴリ]
必須のガードレールControl Tower が作成する重要なリソースの整合性とセキュリティを守るために存在する。無効化できない。 Control Tower の運用に不可欠な保護機能で、特に「Security OU」に適用される。
・ログアーカイブ用の S3 バケットの暗号化設定の変更を禁止
バケットポリシーやライフサイクル設定の変更を禁止
・ログバケットの削除を禁止
・パブリックアクセスの検出
強く推奨されるガードレールセキュリティ違反の兆候を早期に検出し、対応を促すためのもの。デフォルトでは無効だが、有効化を推奨ベストプラクティスに基づいたセキュリティ・運用管理の強化を目的としている。
ルートユーザーの使用を検出
暗号化されていないリソースの検出(例:S3バケット、EBSボリューム)
パブリックアクセスが有効なリソースの検出
・CloudTrail の無効化を検出

[コントロール(ガードレール)種類]
予防ポリシー違反につながるアクションを禁止するため、アカウントはコンプライアンスを維持する。
予防コントロールのステータスは適用または無効である。
検出ポリシー違反など、アカウント内のリソースの非準拠を検出し、ダッシュボードを通じてアラートを提供する。
検出コントロールのステータスは、クリア、違反、無効
プロアクティブプロビジョニング前にリソースをスキャンし、リソースがそのコントロールに準拠していることを確認する。準拠していない場合はプロビジョニングされない
CloudFormation フックによって実装され、CloudFormationによってプロビジョニングされるリソースに適用される。
ステータスは、PASS(合格)、FAIL(不合格)、SKIP(スキップ)

ワークフロー

SWF

※SWF: Simple Workflow Service

クラウド内の完全マネージド型の状態トラッカーおよびワークフローシステム。
商品の発注/請求処理のワークフロー(処理の流れ)のような、重複が許されない厳密に一回限り順序性が求められる処理を定義する。

タスクの保管、実行可能になったタスクのワーカーへの割り当て(1回のみで重複しない)、およびタスクの進行状況の監視も行う。

ワーカーSWFと相互作用してタスクを受け取り、そのタスクを処理して結果を返すプログラム。
ディザスター複数のタスクの連携を制御するプログラム。

※EC2インスタンスを利用したサーバーベースの機能であるためサーバーレスオーケストレーションを提供しない

Step Functions

複雑な処理の流れを“見える化”しながら、確実に実行管理できるツール。グラフィカルなコンソールを使って、複数のAWSサービスや機能を連携させるサーバーレスワークフローを作成・管理して、プロセス処理を実行するアプリケーションを構築できる。 ワークフローは一連のステップで構成され、ステップの出力が次ステップへの入力になる。

※SWFと違い、可視化できる
※ストリームデータのリアルタイム処理に不要な複雑性を追加するため、不適切

・各ステップは自動的にトリガー、追跡される。
・ステップの状態が記録されるため、問題の診断やデバッグが容易。
・エラーがあれば再試行されるため、アプリケーションが意図したとおりの順序で実行される。
・失敗したステップのみを再処理することが可能。

※人間による操作を必要とするような長時間実行される、半自動化されたワークフローを作成することもできる。したがって、ワークフローに手動アクションを必要とするいくつかのタスクが存在する可能性がある

Express WorkFlow

短時間で大量のイベントを処理するユースケースに最適なワークフロータイプ。
冪等性(同じ処理を複数回しても結果が変わらない)が担保できる処理
リアルタイム性が求められる処理
高頻度で繰り返されるイベント処理
短時間で完了するタスクのオーケストレーション

[Standard Workflow との違い]

比較項目Standard WorkflowExpress Workflow
実行時間最大 1 年最大 5 分
実行セマンティクスExactly-onceAt-least-once / At-most-once
課金状態遷移数ベース実行回数・時間・メモリベース
スループット数千件/秒未満数万件/秒以上
ユースケース長期処理、監査が必要な処理短期・高頻度処理
エラーメッセージ
“ErrorEquals”:[“States.ALL”]実行中に発生するすべてのエラータイプをCatchする。
※States.ALL:あらゆる既知のエラー名に一致するワイルドカード
“ErrorEquals”:[“States.Runtime”]実行中の特定のエラータイプだけをCatchする。

連携サービス

【併用:Lambda】
ワークフローの個々のステップにビジネスロジックを持つ Lambda 関数 を実装しワークフローを構成する一連のステップのビジネスプロセスを構築する。
[引用サイト]

Resource Groups

【リソース整理】多数のリソース上のタスクを一度に管理および自動化できるサービス。
AWS リソースのグループに対して、セキュリティパッチや更新の適用などのタスクを同時に自動化する。

環境移行支援サービス

基礎知識

●Change Data Capture (CDC)

データベースにある情報が変わるたびにその変更を見つけて追跡し、複数のシステムをすべてのデータ変更と同期させる。
(データの完全ロードおよび変更データキャプチャ)

[AWSへの移行を加速させる]
ポートフォリオ評価は最初のステップ。AWSのツールは、ビジネスや技術に関する情報を迅速に評価し、意思決定することを支援する。AWSのツールを利用してポートフォリオを評価することは、利益を定義し、インサイトを提供し、進捗状況を追跡するのに役立つ、クラウドジャーニーの重要な最初のステップ。
「Migration Evaluator」「Migration Hub」「Application Discovery Service」を利用する。

引用元:AWSへの移行を加速させる

AWS 6つの移行戦略

プラットフォーム再編はアプリケーションのコアアーキテクチャを変更することなく具体的な利点を実現するための、クラウド最適化によりクラウドへの移行を支援する。選択肢として、以下がある。

リホスト
(リフトとシフト)
現在の環境をそのまま移行し、徐々に最適化する
プラットフォーム再編
(リフト、ティンカー、シフト)
コアの部分を変えず部分的に最適化した上で移行する
再購入
(ドロップアンドショップ)
現在のシステムやアプリケーションの使用を廃止し、新しいシステムやアプリケーションに移行する
リファクタリング/再設計現在のシステムやアプリケーションを見直し再設計した上で移行する
使用停止不要なシステム・アプリケーションの使用を停止する
保持移行しない

[公式詳細サイト]

MAP

※MAP:Migration Acceleration Program

クラウド移行を支援するための確立された方法論。AWSに申請後、審査が通れば移行プロジェクトに対してAWSが資金面、技術面で支援してくれる。

・実績のある 3 段階のフレームワーク (Assess、Mobilize、Migrate and Modernize) を使用して、移行目標の達成を支援。
※Assess(評価)、Mobilise(移行計画・立案)、Migrate and Modernise(移行とモダン化)

・MAP を通じて、強固な AWS クラウドの基盤を構築し、リスクを加速、軽減し、移行の初期コストを相殺。

ただし、移行コンピテンシー認定パートナー(MCP)を持っているパートナーのみが対象。

[公式まとめ]

CART

【クラウド移行準備評価】※AWS 導入準備ツール:CART(Cloud Adoption Readiness Tool)
クラウドの準備状況を簡易的にチェックできる。

お客様の組織のクラウド移行の準備状況を CAF(Cloud Adoption Framework)というフレームワークに基づいた 複数の設問 (日本語) で構成されたオンライン調査から、結果をまとめて評価レポート(日本語) を作成する。連絡先を提供して、準備状況と改善点を示すカスタマイズされたクラウド移行評価をダウンロードできる。

●CAF(Cloud Adoption Framework)

AWSへのクラウド導入にあたり、組織が持つスキルとプロセスにどのような変革が必要かを示すフレームワーク。非技術領域と技術領域に分かれている。
・非技術領域:ビジネス、人材、ガバナンス、
・技術領域:セキュリティ、プラットフォーム、オペレーション
上記、6 つのパースペクティブを示したヒートマップレーダーチャートに加えて、詳細なスコアリング情報とリソースが含まれる。

MRA

【CARTの上位】MRA:Migration Readiness Assessment

CAFに基づくCARTよりも多い詳細な質問により、移行準備の評価を実施する。データ収集やTCOレポート、ユーザーの課題を可視化を実施。
質問を5段階の成熟度で回答すると、レポートが作成される。

・クラウド移行に関する課題を明確化
・クラウドに移行する際に必要となるタスクの抜け漏れを洗い出し
・その後の移行計画のインプットとして利用されることを目的としている。

Application Discovery Service

【オンプレ使用状況】
アプリケーションの依存関係を特定し、移行のためにオンプレミスサーバーVM使用状況構成データを収集して適切なサイズのEC2インスタンスを生成し、Migration Hub での移行を計画するソフトウェア。

・収集されたデータは Application Discovery Serviceのデータストアに暗号化された形式で保持される。
※検出と移行の対象となるオンプレミスサーバーと VM にインストールすることで使える

[Migration Hub統合]

Migration Hubと統合されている。Migration Hubに移行ステータス情報を情報集約することで、移行の追跡を簡素化する。
※移行アクティビティを実行する前に、Migration Hub コンソールまたはCLIコマンドでホームリージョンを設定する必要がある

①ホームリージョンのMigration Hubコンソールから各アプリケーションの移行ステータスを追跡できる。
②移行ステータスなど発見されたすべての情報をMigration Hubホームリージョンに集約する
③情報から、発見されたサーバーを表示し、アプリケーションにグループ化

検出機能

・オンプレミスサーバーインベントリを検出
サーバーのホスト名、IP アドレスと MAC アドレス、主要なリソース割り当ての詳細を収集し、インベントリの検出を実施して移行を加速。

・ネットワーク通信パターンをマッピング
アプリケーションとサーバー間の接続を調べて、不明なサーバーを検出し、依存関係をより良く理解し、移動グループを確立する。

Application Discovery Agent

【構成データ収集】
使用状況などの構成データを収集する機能。サーバーのホスト名、IPアドレス、MACアドレス、CPU割り当て、リソース使用率、ネットワークスループット、メモリ割り当て、ディスクリソース割り当て、DNSサーバーといった静的設定内容を含む様々なデータを収集する。

・システム間のネットワーク接続を特定することで、サーバーのワークロードとネットワークのリレーショップの判定にも役立つ。
・システム設定、システムパフォーマンス、実行中のプロセス、およびシステム間のネットワーク接続の詳細をキャプチャする。

※Linux および Windows オペレーティングシステムの大半をサポートし、物理的なオンプレミスサーバー、Amazon EC2 インスタンス、および仮想マシンにデプロイできる

[エージェントベース検出]

各VMおよび物理サーバーに Application Discovery Agent をデプロイすることで実行できる。
静的構成データ、詳細な時系列システムパフォーマンス情報、インバウンドおよびアウトバウンド根とワーク接続、および実行中のプロセスを収集する。

Agentless Discovery Connector

【VM情報収集】詳細なアプリケーション依存関係は収集できない
VMware 仮想マシン (VM) に関する情報のみを収集できる VMware アプライアンス。

Open Virtualization Archive (OVA) ファイルを使用して VMware vCenter Server 環境に VM として本機能をインストールする。

[エージェントレス検出]

VMware Vcenterを介してApplication Discovery Service Agentless Collector(OVAファイル)をデプロイすることで実行。
オペレーティングシステムの種類を問わず、VMware メタデータに基づいてサーバー情報を収集するため、オンプレミスインフラストラクチャの初回評価の所要時間を最小限に抑える。
(サーバーホスト名。IPアドレス、MACアドレス、ディスクのソース割り当て、VMの利用状況データ、CPU、RAMなど)

Migration Evaluator

【移行後のコスト予測】
オンプレミス環境のインベントリを収集し、AWS への移行に伴う TCO を自動算出。AWS クラウドで会社のCMDBエクスポートを使用することで、現在のIT環境のコストを評価・オンプレミス環境の詳細な現状分析し、AWSへの移行後の予測コスト見積もりと節約を含む評価したビジネスケースを速やかに受け取れる。

※インフラストラクチャ、ソフトウェアライセンスごとのコスト内訳も示す

  • エージェントレスで既存環境のデータを収集
  • ライセンス再利用やリザーブドインスタンスの最適化も考慮
  • AWS ソリューションアーキテクトと連携してビジネスケースを作成
  • 用途:大規模な移行プロジェクトや経営層向けのレポート作成に最適

Migration Evaluator Agentless Collector

移行先情報収集】
移行先でのリソース要件やパフォーマンス予測、コストの見積もりなどを評価する。リソースの適切な割り当てや設計、移行に必要な手順やリスクの特定が可能になる。

以下のような情報を評価のために収集する。

リソース使用状況サーバー、ストレージ、ネットワークなどのリソースの使用状況や負荷
トラフィック分析ネットワークトラフィックのパターンや負荷を分析し、移行後のネットワークの設計や帯域幅要件を評価
アプリケーションの依存関係システム内のアプリケーションやサービスの依存関係を調査し、移行計画に必要な情報を提供
セキュリティ評価セキュリティポリシーやアクセス制御などのセキュリティ関連の要件を評価

MPA

【移行計画の評価】※移行ポートフォリオ評価:MPA(Migration Portfolio Assessment)
AWS への移行にあたり、移行に必要な実現可能性、コスト、ツール、利用リソースなどを見積もるための支援ツール。

・MPA ツール (ログインが必要) は、すべての人に無料で利用できる AWS コンサルタントと APN パートナーコンサルタント。
Webベースのデータ取り込みプロセスを使用して、さまざまな形式の構成管理データベース(CMDB)およびアプリケーションポートフォリオデータをMPAにインポートできる。

詳細なポートフォリオ評価サーバーの適切なサイジング、価格設定、TCO 比較、移行コスト分析。
移行プランアプリケーションデータの分析とデータ収集、アプリケーションのグループ化、移行の優先順位付け、およびウェーブプランニングを提供。

Migration Hub

【移行計画ダッシュボード】
サーバーとアプリケーションのインベントリデータを収集する一元的な環境を提供する。MAPで定義されている移行プロセスに沿って、移行の進行状況を1つのダッシュボードで追跡管理。

・既存のサーバーを検出し「移行を計画」、「各アプリケーションの移行状況」を追跡する
・推奨されるインスタンスタイプと関連コストを生成する
・移行する各アプリケーションを構成するサーバーとデータベースのステータスを確認する
・移行するアプリケーション別にサーバーをグループ分けする
※グループ分けのタイミングを「移行中・検出時」で選択できる

ネットワーク接続を表示することで、サーバーの依存を関係視覚化できる。各アプリケーションをAWSに正常に移行するために必要なすべてのリソースを確認できる。

Migration Hub Strategy Recommendations

【レポート作成】
Migration Hubの機能で、移行の計画や実施を最適化するための推奨戦略やレポートを提供する。既存のアプリケーションやシステムをクラウドに移行するために、アプリケーションの現在の状態や要件に基づいて、移行の手順やツールを選定するためのガイダンスを提供する。

[大まかな流れ]
データ収集 現在のシステムやアプリケーションに関する情報を収集。
※サーバーの設定、アプリケーションの構成、使用しているソフトウェアなどが含まれる
分析集めたデータを分析し、クラウドへの移行に適した戦略を特定する。
※アプリケーションの依存関係やパフォーマンス要件なども考慮される。
推奨事項の提供最終的に、最適な移行戦略を提案します。
例えば、「リフト&シフト」(現在のシステムをそのままクラウドに移行する方法)や、「リファクタリング」(システムを最適化してから移行する方法)などがある。

MGN

【クラウドへの移行実施】Application Migration Service
数千のオンプレミスワークロードを従来よりも簡単に、かつ短時間でAWSに移行できるエージェントレスサービス。オンプレミスおよびクラウドベースのアプリケーションの移行とモダナイゼーションを簡素化、迅速化し、そのコストを削減。(仮想マシンレベルでの以降に焦点を当てている)

ディザスタリカバリ、オペレーティングシステムやライセンスの変換などのオプションにより、移行中にアプリケーションをモダナイズ(刷新)できる。

・アプリケーションレプリケーションプロセスの間もビジネスオペレーションを継続できる。
・サポートされているオペレーティングシステムを実行するどんな移行元インフラストラクチャからでもアプリケーションを移行できる。
・1 つのツールで様々なアプリケーションに対応でき、アプリケーション固有のスキルに投資する必要がなく、コストを削減できる。

Server Migration Service

【仮想マシンの移行】SMS:Server Migration Service

VMware、Hyper-V、Azure上の仮想サーバをAMIとしてAWSにダウンタイムを最小限に抑えて移行することができるエージェントレスサービス。ライブサーバーボリュームの増分レプリケーションの自動化、スケジュール設定、および追跡が可能なため、大規模なサーバーの移行作業を簡単に調整できる。
物理サーバの移行はできない

ダウンタイムの最小化増分SMSレプリケーションは最終カットオーバー時のアプリケーション。ダウンタイムによる障害を最小限に抑える。
クラウドへの移行プロセスの簡素化数回クリックするだけで、サーバーのグループの意向を開始できる。移行が開始すると、ライブサーバーボリュームを自動的にAWSにレプリケートしたり、新しいAMIを定期的に作成したりするなど、移行のプロセスの全ての複雑性を管理する。コンソールのAMIからEC2インスタンスを素早く起動できる。
マルチサーバー移行のオーケストレーションSMSレプリケーションをスケジュールし、コンソールを使用して最初のレプリケーションのスケジュール、レプリケーション間隔の設定、各サーバーの進行状況の追跡ができる。
サーバーの移行を段階的にテスト増分レプリケーションのサポートにより、SMS移行されたサーバの高速でスケーラブルなテストを可能にする。SMSはオンプレミスのサーバーに増分変更を複製し、デルタのみをクラウドに転送する。小さな変更を反復的にテストし、ネットワーク帯域幅を節約できる。

Data Sync

【ストレージデータ移行】
オンプレミスストレージとストレージサービス間でデータを迅速かつ簡単に移動させる。大規模なデータ向けのサービス。

・完全な初期コピーと変更の増分転送をサポート。
・スケジュール可能なタスクを作成でき、継続的なデータ転送、転送されるデータを暗号化、整合性チェックを行う。
・フィルター機能を使用して特定のデータセットのみを選択してバックアップできる。
・1時間未満ごとの頻繁なタスクスケジュールは対応できない。

DMS

【オンプレDBの移行サポート】DMS:Database Migration Service
オンプレミスにあるデータベースを短期間で安全に AWS に移行できる。データベースを短期間で安全に AWS に移行することが可能、データベース移行ツール。これを利用してデータベース間の移行作業を実施することができる。

※継続的レプリケーションの実現
小規模なリレーショナルワークロード (<10 TB) の移行に使用。

SCT

【DB間スキーマー移行・変換】SCTSchema  Conversion Tool

データベースエンジン間で既存のデータベーススキーマを変換でき、データ移行を効率的に行ってくれる。Microsoft SQL Server や My SQL、Oracle、PostgreSQL などのデータベースエンジンが対象となっており、異なるデータベースエンジン間でも変換できる。

移行の事前準備として、SCTを移行元のサーバーにインストールして、移行先と互換性のあるデータスキーマ―に変換する。
ソースデータベーススキーマ、およびビュー、ストアドプロシージャ、関数といったデータベースコードに対して、オブジェクトの大部分を自動的に ターゲットデータベース互換フォーマットへと変換。

主に大規模なデータウェアハウスワークロードの移行に使用。

スキーマーデータの種類や大きさ、他のデータとの関連など、定義した仕様や設計
変換レポート(データベース移行評価レポート)を作成。自動的に変換できないスキーマ要素を修正。

Babelfish for Aurora PostgreSQL

【コードを変更しない】
コードをほとんどまたはまったく変更せずに、PostgreSQL で Microsoft SQL Server アプリケーションを実行できる。

仕組み

Babelfish は、Aurora PostgreSQL は、Microsoft SQL Server 独自の SQL ダイアレクトである T-SQL のサポート実装。それにより、同じ通信プロトコルをサポートするようになった。

SQL Serverのクラウドリフトの際に移行先のDBが Microsoft SQL Server であれば、コードの書き換えを発生させず移行させることができる。

※SQL Server のレガシーデータベースからの移行は、時間がかかり、リソースを大量に使用する可能性があります。データベースを移行する場合、AWS Database Migration Service (DMS) を使用してデータベーススキーマとデータの移行を自動化することができますが、多くの場合、データベースとやり取りするアプリケーションコードの書き直しなど、アプリケーション自体を移行するために行うべき作業が増えます。

Workload Discovery on AWS

AWS環境の構成図を自動生成する可視化ツール。AWSクラウド上のリソースやサービスの関係性を視覚化し、アーキテクチャ図として表示・共有する。

・AWSリソースを自動検出して構成図を作成
・複数アカウント・リージョンに対応
・コスト情報も構成図に表示可能(Athena + CUR連携)
・Draw.io や CSV 形式で構成図をエクスポート可能

[導入方法]
CloudFormationテンプレートで30分ほどでデプロイ可能

[主な用途]
・システム構成の把握
・運用・保守の効率化
・新メンバーへのシステム説明
・コスト最適化の検討

Windows Web Application Migration Assistant

オンプレミスの IIS 上で動作する ASP.NET / ASP.NET Core アプリケーションを、AWS の Elastic Beanstalk に簡単に移行できる PowerShell ベースのツール

★IIS
Microsoft社が開発したWebサーバーソフトウェアであるInternet Information Servicesの略称
主なポイント

“リフト&シフト”型の移行をサポート
アプリケーションのコードを大きく変更せずに、そのままクラウドへ移行可能。

IIS の構成やアプリ設定も含めて移行
Web サイト全体(アプリ本体+設定)を Elastic Beanstalk にパッケージングしてデプロイする。

Elastic Beanstalk による自動管理
移行後は、スケーリング・パッチ適用・モニタリングなどを Elastic Beanstalk が自動で処理する。

[使いどころ]
スケーラブルで高可用な構成にしたいとき
・オンプレミスの ASP.NET アプリを クラウドにそのまま持っていきたいとき
Elastic Beanstalk のマネージド環境で運用負荷を軽減したいとき

監視・通知サービス

基礎知識

[リソース=サービス]
AWSが所有する資産(リソース)を指している(?)AWS自体、AWS社の資産をレンタルすることで、ユーザーがサービスを展開することができる、クラウドサービス。

[インシデント理念]
AWSにおけるインシデント対応では、以下2つの考え方がある。

予防的統制想定されるリスクが発現することを事前に予防。
発見的統制想定外のリスクの発現を検知して即座に対応する
アクセスログ
リクエストを受け取った時刻、クライアントのIP、レイテンシー、リクエストのパスなどの情報を提供。

通知サービス

SES

SES(Simple Email Service)
Eメールサービス※SMS配信はできない

SNS

SNS(Simple Notification Service)
メッセージ通知サービス。Lamda , SQS , HTTP/S , Email , SMS、を対象とする。

※GuardDutyの検出結果を直接受け取ることはできない。

トピック(Pub/Subシステム)メッセージを送信し、受信するためのアクセスポイント。情報を管理する単位
メッセージの配信(パブリッシュ)SNSをサブスクライバへ配信する。
購読者(サブスクライバ)メッセージの購読者。

[処理方法]

メッセージキューイングバッチのような非同期かつ並列な分散処理が可能になる。
パイプラインDBからデータを取り出し、順次処理する。
ストリーミングリアルタイムに流れてくるものを処理する。

Pin Point

【カスタマー向け通知】
顧客とのエンゲージメントを管理するサービスであり、テキストメッセージによりアンケートの送信に適している。Eメール、音声、プッシュ通知、SMSといった様々な媒体が使用できる。

Service Quotas

【クォータ使用率管理】
多くの AWS のサービスクォータの使用率などを 1 か所から確認、管理できるようにする。クォータ値を確認できるだけでなく、Service Quotas コンソールからクォータの引き上げをリクエストすることもできる。

●クォータ

適用できるサービスリソースまたはオペレーションの最大数。リージョンごとに作れるサブネットの数だったり、VPCごとのサブネットに制限がある
[クォータの緩和リクエスト]


※今までサポートセンターに連絡し、緩和申請をしていたが、ダッシュボードから現在の適応状況や申請履歴などを確認できる。

[リソースの現在の使用率を表示]
アカウントが一定期間アクティブになったら、リソース使用率のグラフを表示できる。

[クォータ引き上げの効果]
  • インスタンス数やvCPUの上限が増える
    例えば「オンデマンドインスタンスのvCPU数上限」を引き上げれば、より多くのインスタンスを同時に起動可能になる。
  • スケーリングの柔軟性が向上
    オートスケーリングや大規模な負荷試験を行う際に、制限に引っかからずにリソースを増やせる。
  • 業務継続性の確保
    制限を超えるとリクエストが失敗するが、事前にクォータを上げておけばサービス停止リスクを減らせる。

Service Health Dashboard

【災害規模】
AWSサービス全般のステータス(リージョン規模の障害など)を表示するサービス。

Personal Health Dashboard

【メンテナンス・イベント】
AWSによって予定されたメンテナンスを確認することができる。また、それによるユーザーへの影響を確認できる。

・Cloud Watch Eventsと統合が可能

●AWS Health API

【基盤サービス】Healthデータや通知を既存の運用ダッシュボードと統合できる。すべてのユーザーは AWS Health API による Personal Health Dashboard を使用できる。

EC2関係

モニタリング

基本
モニタリング
メトリクスはすべて 5 分間隔で利用できる。料金は発生しない。ただし、ステータスチェックメトリクスに限り 1 分間隔で利用。
詳細
モニタリング
ステータスチェックメトリクスを含むすべてのメトリクスは、1 分間隔で利用できる。
※このレベルのデータを取得するには、インスタンスのデータ取得を明確に有効にすること。

・単一のリージョン内のすべてのEC2の統計を集計することもできる。
・料金は、CloudWatch に送信されるメトリクスごとに発生。
※データストレージに対しては料金が発生しな

インスタンスコンソール出力

【トラブルシューティング】
カーネルの問題サービス設定の問題のトラブルシューティングを行うなど問題を診断する。

※問題が発生すると、SSH デーモンの開始前にインスタンスが停止したり、インスタンスに到達不能になる可能性がある。

インスタンスを選択してから、
[アクション]→[モニタリングとトラブルシューティング]→[システムログを取得] を選択。

VPCフローログ

【トラフィック】
VPC のネットワークインターフェイスとの間で行き来する IP トラフィックログ情報を取得する。(※送信元・送信先アドレスとポート、プロトコル番号など)

・VPCフローログレコードはデフォルトでは最大の集約間隔が10分に設定されており、その期間内に集約される。

※AutoScalling で増減したインスタンスの情報取に対応はできない
既存のフローログは修正できない

●Apache Parquet形式

列指向のストレージ形式により、高い圧縮率と高速なクエリ性能を実現。Amazon Athenaなどで使用することで、I/Oコスト削減やクエリ時間の短縮に寄与。

[データパーティショニング]

データにパーティションを設定することで、クエリ実行時のスキャン範囲を限定。必要なデータだけを読み込むため、クエリ応答時間を短縮。
→ クエリ実行時に不要なデータを読み込まずに済むため、パフォーマンス向上 & コスト削減

[VPCネットワークトラフィックのログはファイルサイズが大きくなりがち]
Parquetを使用することで:
・クエリ実行の高速化とスキャンデータ量の最小化を実現
・S3ストレージコストを最大25%削減
・Athenaなどの分析で、不要なデータをスキップ

収集できる情報
versionフローログのバージョン(例:2)
account-tdAWSアカウントID
Interface-idネットワークインターフェイスID(eni-で始まる)
srcaddr / dstaddr送信元 / 宛先 IP アドレス
srcport / dstport送信元 / 宛先 ポート番号
protocol使用されたプロトコル(TCP: 6, UDP: 17など)
packets / bytesパケット数 / バイト数
start / end通信の開始 / 終了時間(UNIXエポック形式)
action通信の許可/拒否(ACCEPT / REJECT)
log-statusログ記録のステータス(OK / NODATA / SKIPDATA)

Cloud Trail

【APIの履歴】
AWSインフラストラクチャ全体のアカウントアクティビティが出力される。AWS アカウントのガバナンス、コンプライアンス、運用監査、リスク監査を行うサービス。(※いつ、どのユーザーが、何に、何をしたか

AWS APIで実行されたアクション(使用履歴)を「管理イベント/操作イベント」に記録する。
・Cloud Watch Eventsと統合されており、分析用途には使えない。
・IPアドレスはログに出力されない。

[ファイル整合性機能]
CroudTrailファイルが改変されていないか、「ダイジェストファイル」を作成して、整合性をチェックできる。

ログの保存

APIの呼び出し記録を証跡として作成(ログの保存)する。証跡を管理アカウントに設定することで他アカウントの証跡を一元的に管理できる。

[保存先]
自動的に「S3バケット」、「Cloud Watch logs」に配信する。デフォルトで過去90日分の情報を残す(集中管理することが可能)。

・ログを出力する際、宛名テーブルを使用するとS3Athenaと連携できる。
・ログが改変されていないか、検証・確認できる
※デフォルトではデータのイベントロギングは無効になっているため、設定が必要

CloudTrail Lake

【SQL ベースのクエリ】
イベントに対して SQL ベースのクエリを実行することができる。イベントはイベントデータストアに集約される。コンプライアンススタックを補完し、ほぼリアルタイムのトラブルシューティングを支援する監査ソリューション。

・ORC は、データをすばやく取得できるように最適化された列指向ストレージ形式。

イベントデータストア高度なイベントセレクターを適用することによって選択する条件に基いたイベントのイミュータブルなコレクション。
イベントデータイベントデータストアに以下の通り保持できる。
最大 3,653 日 (約 10 年):[1 年間の延長可能な保存料金] オプションを選択した場合
最大 2,557 日 (約 7 年間):[7 年間の保存料金] オプションを選択した場合

[管理イベント/データ(操作)イベント]

●管理イベント

デフォルトの設定。証跡は AWS のサービス全体で管理イベントをログに記録し、無料で利用できる。

●データイベント

【リソースに対して】
AWS アカウントのリソースで、またはリソース内で実行されたリソースオペレーションを示す。データイベントログ記録を有効にするには、サポートされているリソースまたはリソースタイプを証跡に明示的に追加する必要がある。

下記、S3 のバケットおよびオブジェクトレベルのリクエストに関する情報を取得できる。
・呼び出し元のAWSアカウント
・呼び出し元のIAMユーザーロール
・API呼び出しの時間
・APIのIPアドレスの追跡…etc

[CloudTrailログファイルの保護ポイント]

S3 Server Side Encryption(SSE): CloudTrailログはデフォルトでS3内で暗号化される。
IAM/S3ポリシー: アクセス権限を細かく制御可能。
MFA Delete(多要素認証削除): 削除操作に追加の認証ステップを導入し、誤操作や悪意ある削除を防止。

CloudWatch

【リソース状況の監視】
AWS上で稼働するシステム全体のリソース使用率アプリケーションパフォーマンス、およびオペレーションの状態について収集・監視・可視化。Billingの設定から、CloudWatchでアラームを設定することで、Cloud Watchのアラートを受け取れるようになる

機能性

●基本モニタリング

データは自動的に 5 分間隔で取得される。料金は発生しない。

●詳細モニタリング

データは 1 分間隔で取得される。このレベルのデータを取得するには、インスタンスのデータ取得を明確に有効にする必要がある。詳細モニタリングを有効にしたインスタンスでは、同様のインスタンスグループの集約データを取得もできる。料金はCloudWatch に送信されるメトリックスごとに発生します。データストレージに対しては料金が発生しない。

・詳細度が1分のデータを含む、標準の解像度
・詳細度が1秒のデータを含む、高解像度

●メトリクスフィルター

CloudWatch Logsに送信されるログデータからパターンを検出し、それらをCloud Watchメトリクスとしてカウントできる。

●Metric Math

複数のメトリクスを組み合わせて新しく情報を生成するためのツール。CloudWatch メトリクスに対して数式を使って新しい時系列データを作成・分析できる機能です。複数のメトリクスを組み合わせて、より意味のある指標を導き出すのに役立つ。CloudWatch メトリクスに対して 四則演算や統計関数を適用可能。結果は グラフ表示やアラーム条件に利用できる。複数メトリクスの合成や、カスタム指標の作成が可能

  • procstat プラグイン
    個別のプロセスからメトリクスを収集できる。Linux サーバーと、Windows Server 2012 以降を実行するサーバーでサポートされる。

●クロスアカウントオブザーバビリティ(Cross-Account Observability)

複数の AWS アカウントにまたがる監視データ(メトリクス・ログ・トレースなど)を一元的に可視化・分析できる CloudWatch の機能

  • 複数アカウントの CloudWatch データを1つのアカウントで集中管理できる。
  • 監視用の「モニタリングアカウント」と、データを提供する「ソースアカウント」をリンクする。
  • AWS Organizations を使えば自動連携も可能

[共有できるデータの種類]
・CloudWatch Internet Monitor のデータ
・CloudWatch メトリクス
・CloudWatch Logs(ロググループ)
・AWS X-Ray のトレース
・Application Insights のアプリケーション情報

●Cloud Watch Agent Server Policy

EC2のIAMインスタンスプロファイルにアタッチすることで、CloudWatchへのメトリクス送信を許可する。

メトリクス

●メトリクスエクスプローラー

タグおよびリソースプロパティ別にメトリクスをフィルタリング、集計、および可視化できるタグベースのツール。

●AWS/Usage メトリクス名前空間

AWSリソースの使用状況とサービスクォータを追跡する。

●aws:autoscaling:groupName タグ

Auto Scaling グループに属するすべてのEC2のCPUメトリクスを一元的に管理できる。

標準メトリクスEC2を立ち上げた時に標準的に設定してくれるメトリクス。CPU使用率、インスタンスのステータスチェックなど。
NetworkInおよび
NetworkOut
これらのメトリックは、インスタンスによってすべてのネットワークインターフェースで転送されたバイトの量を追跡する。
・請求アラームはバージニア北部でなら確実に作れる
・アラームを実行するデータポイント:何回通知するか
PutMetricDataメトリクスデータポイントをCloudWatchに発行する。CloudWatchはデータポイントを指定されたメトリクスに関連付ける。指定されたメトリクスが存在しない場合、CloudWatchはメトリクスを作成する。(ListMetricsの呼び出しに表示されるまで最大15分かかる)
埋め込みメトリクス
フォーマット
CloudWatch Logs に書き込まれるログの形式と同様の、カスタムメトリクスを非同期的に生成できる。
JSON 形式。
抽出されたメトリクス値のアラームをグラフ化および作成できる。
また、CloudWatch Logs Insights(分析) を使用すると、抽出されたメトリクスに関連付けられた詳細なログイベントを照会できる。
収集されるメトリクスにカスタムディメンションを追加するメトリクスを収集するため、Cloudwatchエージェント構成ファイル内にappend_dimensionsフィールドを作成する。

[メトリクス詳細]

NamespacesCloudWatch メトリクスのコンテナ。異なる名前空間のメトリクスは相互に切り離されて、異なるアプリケーションのメトリクスが誤って同じ統計に集約されないようにする。
MetricsCloudWatch に発行された時系列のデータポイントのセットを表す。
Dimensionsメトリクスのアイデンティティの一部である名前と値のペア
(統計に使用するメトリクスを絞ることが出来る)
Resolution・詳細度が 1 分のデータを含む、標準の解像度
・詳細度が 1 秒のデータを含む高解像度
Statistics指定した期間のメトリクスデータの集計(統計)
UnitsBytes、Seconds、Count、Percent などの単位
Periods集計期間は1秒単位の算出となる(デフォルト:1分)(6分=360秒)(MAX:1日)
Aggregation統計の取得時に指定した期間の長さに従って、Amazon CloudWatch は統計を集約
Percentilesデータセットにおける値の相対的な位置を示す。たとえば、95 パーセンタイルは、95 パーセントのデータがこの値を下回っており、5 パーセントのデータがこの値を上回っていることを意味します。

[メトリクスの保存期間について]

期間使用時間
60秒未満のデータポイント3時間使用できる(カスタムメトリクス
60秒(1分)のデータポイント15日間使用できる
300秒(5分)のデータポイント63日間使用できる
3600秒(1時間)のデータポイント455日(15か月)間使用できる

[ログデータの検索およびフィルタリング]
1つまたは複数のメトリクスフィルターを作成することで、CloudWatch Logsで受信するログデータを検索およびフィルタリングできる。メトリクスフィルタはCloudWatch Logsに送信されたログデータを検索するための語句とパターンを定義する。CloudWatch Logsは、これらのメトリクスフィルタを使用して、ログデータを数値のCloudWatchメトリクスに変換し、グラフを作成したり、アラームを設定したりできる。

エージェント

●CloudWatch エージェント(統合型)

CloudWatch Logsで収集データを一元化するために、EC2インスタンスにインストールすることができる。ローカルログのイベントサーバー内部のメトリクスを収集、またカスタムメトリクスをCloudWatch Logs に送信。

・ログデータはデフォルトで5秒の頻度で送信される。
・オンプレミスにもインストール可能。

※CloudWatch Logs エージェントではEC2インスタンス単位でパラメータを管理していたが、統合 CloudWatch エージェントではパラメータストアで管理することも可能。

項目CloudWatch Logs AgentCloudWatch Agent(統合型)
主な用途ログファイルを CloudWatch Logs に送信メトリクスとログの両方を CloudWatch に送信
収集対象ローカルログファイルメモリ使用率、ディスク使用率、カスタムメトリクス、ログなど
対応サービスEC2(旧方式)EC2、オンプレミス、Systems Manager 経由で管理可能
設定方法awslogs.conf ファイルJSON形式の設定ファイル(SSM Parameter Storeでも管理可能)
現在の推奨廃止予定(古い方式)推奨(統合型エージェント)
アラーム

指定した期間の単一のメトリクスを監視。一定期間におけるしきい値とメトリクスの値の関係性に基づいて、1 つ以上の指定されたアクションを実行。

OKメトリクスや式は、定義されているしきい値の範囲内です。
ALARMメトリクスまたは式が、定義されているしきい値を超えています。
INSUFFICIENT_DATAアラームが開始直後であるか、メトリクスが利用できないか、メトリクス用のデータが不足しているため、アラームの状態を判定できません。
作成方法(アラーム名には ASCII 文字のみを使用)
・CloudWatch コンソール:PutMetricAlarm API アクション から
・AWS CLI の put-metric-alarm コマンド から
一覧表示・CloudWatch コンソール:DescribeAlarms API アクション から
・AWS CLI の describe-alarms コマンド から
有効・無効・CloudWatch コンソール、DisableAlarmActions および EnableAlarmActions API アクション
・WS CLI の disable-alarm-actions および enable-alarm-actions コマンド
動作テスト・SetAlarmState API アクション
・AWS CLI の set-alarm-state コマンドを使用

●Cloud Watchアラーム

【単体】監視項目が一定の値になった際にアラームとアクションを起動。
EC2を自動的に停止、終了、再起動、または復旧するアラームを作成できる。

請求アラーム請求額を監視し、一定額(しきい値)を超えた場合に、SNS(メッセージ通知サービス)を使用して、通知。
全体のコストを監視するだけであり、特定の項目にスポットを当てることはできない
異常検知過去のメトリクスデータが分析され、予想される値のモデルを作成。予想される値は、メトリクスの一般的な時間単位、日単位、週単位のパターンを考慮。
複合アラーム複数のメトリクスがしきい値が超えた場合、アラームの状態を監視してそれらの状態を判別する。複数のメトリクスを組み合わせて評価する。
静的しきい値指定した評価期間数の中で、監視するメトリクスがしきい値を超えると、アラーム状態になる。
Auto Recoveryインスタンスの復旧
AWSシステム側で問題が生じ、EC2インスタンスが起動できなくなった時、自動復旧するサービス。復旧されたインスタンスは、インスタンス ID、プライベート IP アドレス、Elastic IP アドレス、すべてのインスタンスメタデータを含め、元のインスタンスと同じになる。

●予算請求額アラート

CloudWatchを使って、AWSの予想請求額(Estimated Charges)をモニタリングできる。請求に関するメトリクスは「米国東部(バージニア北部)」リージョンに格納される。

メトリクスには以下が含まれる:
・AWS全体の予想請求額
・サービスごとの予想請求額
・指定した金額のしきい値を超えると、アラームがトリガーされる。
(これはすでに超えた時点の実際の請求額によって判断され、予測値は使われない)
・しきい値を超えている状態でアラームを作成すると、すぐに ALARM 状態になる。

●クロスアカウントアラーム【統合】

さまざまなAWSアカウント横断でメトリックに基づいたアラートを提供する。既存のクロスアカウントダッシュボードと組み合わせて使うことで、運用を一元的に可視化できる。さらに、メトリック計算を使用して異なるアカウントのメトリックを組み合わせることができる。

GUI画面

[グラフについて]

  • [Absolute]タブ
    グラフ確認で日時および開始・終了時間を指定できる。[何年何月何日の何時何分]という形式。

[ダッシュボードについて]

  • クロスアカウントクロスリージョンダッシュボード
    複数の AWS アカウントおよび複数のリージョンの CloudWatch データを 1 つのダッシュボードにまとめることができる。この全体的なダッシュボードから、アプリケーション全体のビューを取得することができる。

    ・アカウントのサインインやログアウトをしなくてもより具体的なダッシュボードにドリルダウンすることもできる。

Cloud Watch Logs

【ログ監視】
使用中の「すべてのシステム・アプリケーション」、「AWS サービスからの各種ログファイルをモニタリング・保存・アクセス」を一元管理する。

・使用時、対象のサーバーにエージェントのインストールが必要。
・送信元のインスタンスにはCloud WatchのIAM権限として、IAMロールの付与が必要。

フィルタ

●サブスクリプションフィルター

指定された送信先にリアルタイムでログデータをストリーミングする。

●(CloudWatchlogs)メトリクスフィルター

※機能を有効にしてからのログしか読み込めない
ログから定期的にメトリクスを抽出し、CloudWatch メトリクスとして保存。ログデータを CloudWatch メトリクスに変換し、CloudWatchに出力する。フィルターを通してログデータから直接パターンを抽出し、それに基づいてメトリクスを生成、記録。CloudWatch ログに入るログデータを検索及びフィルタリングできる。
ログデータをグラフ化またはアラームを設定できる数値、CloudWatch メトリクスに変換する。

・ログデータの送信時にログデータで探す用語とパターンを定義する
・ユーザー名とクライアント名をディメンションとしてメトリクスに追加することで、日次、週次、月次のユニークユーザー数を効率的に追跡できる。

[参考サイト]

ログについて

エージェントから監視ログが送られてくる頻度はデフォルトで5秒。データベースのログは加えられた変更を順番に記録している(詳細ではない)

以下の内容を表示できる。
・簡単な表示
・特定のエラーコードまたはパターンの検索
・特定のフィールドに基づくフィルター処理
・将来の分析のための安全なアーカイブ

●ロググループ

保持、モニタリング、アクセス制御について同じ設定を共有するログストリームのグループ。ロググループを定義して、各グループに入れるストリームを指定。1 つのロググループに属することができるログストリーミングの数に制限はない。

  • ログストリーム
    【ルールセット?】同じソースを共有する一連のログイベント。
    CloudWatch Logs のログの各ソースは、個別のログストリームを構成。

[RDSから取得できるログはエンジンごとに異なる]

DBエンジン取得できるログの種類
Amazon Aurora
MySQL
MariaDB
監査ログ
エラーログ
一般ログ
スロークエリログ
メモリ使用量
PostgreSQLPostgresql log
Upgrade log
Oracle
Microsoft SQL Server
アラートログ
監査ログ
リスナーログ
トレースログ

[ログイベントのバッチ条件]
下記の条件が満たされた場合、バッチがフルになると発行される。

・最初のイベントが追加されてから[buffer_duration]の時間が経過した
・累積されたログイベントの[batch_size]未満だが、新しいログイベントを追加すると[batch_size]を超過する
・ログイベント数は[batch_count]に達した
・バッチのログイベントは24時間以上にならないが、新しいログイベントを追加し24時間の制約を超過する

連携サービス
Cloudwatch Logsのサブスクリプション機能Kinesis Stream、 Data Firehose StreamやLambdaへログを直接連携できる。

【外形監視】
エンドポイントやAPIを監視するためのCanary(スケジュールで実行される設定可能なスクリプト)を作成するのに有効。

・外形監視(ユーザー目線)、生死監視(システム目線)ができる。
・利用ユーザーと同じアクション(APIなど)を実行して、パフォーマンスや可用性をモニタリング。

問題が発生した場合、アラートを出せる

●Canary

スケジュールにそってウェブサイトやAPIを監視し、実行するスクリプト。
・監視したい対象のURLを指定。
・IAMロールを割り当てる。結果の格納先はS3。

Event Bridge

【イベントリアルトラッキング】(※旧:Cloud Watch Events

AWSのリソース状態をリアルタイムに監視し、イベントをトリガーにアクションを実行する。

(サービスのトリガーとして利用される)ルールに一致したイベントを 1 つ以上のターゲット関数またはストリームを実行して、「応答メッセージを環境に送り」、「機能をアクティブ化」し、変更を行い、「状態情報を収集する」ことによって、是正措置を実行する。

SNSへの直接連携はできない ※EFSのイベントをトリガーにできない
※直接、Event Bridge からStep Function を起動できる

入力トランスフォーマー

EventBridgeの機能の一つで、イベントデータをターゲットに送信する前に、必要な情報だけを抽出・整形するためのツール。

イベントソース【独自のトリガー】種類:スケジュール/イベント。トリガーであって、アラーム機能はない
ターゲット後続のアクション。
Event Bridge DLQターゲットに正常に配信できなかったイベントを保存するために、EventBridgeが使用する標準的な SQS キュー。
・DLQを使用するかどうかは、ルールを作成してターゲットを追加するときに選択できる。
・DLQを設定すると、正常に配信されなかったイベントを保持でき、イベント配信の原因となった問題を解決、イベント処理できる。
連携サービス
Trusted AdvisorEventBridge を使用して、Trusted Advisor のチェックがステータスを変更するときに検出できる。その後、ルールに指定した値のステータスが変更されたときに、EventBridge は、1 つ以上のターゲットアクションを呼び出せる。
・EventBridgeイベントバス
イベントを受信するパイプライン。特定のイベントバスに関連付けられたルールによって条件の一致をチェックし、受信したイベントを評価する。

X-Ray

【サービス監視】
マイクロサービスで構築されたAWSサービスの実行状況を可視化する。レスポンスタイムやレスポンスステータス、アプリやアプリ基盤を分析し、アプリケーションに対するリクエストに関するデータを収集し、サービスの実行状況を把握、パフォーマンスの問題やエラーの根本原因を特定して、トラブルシューティングを行える。分散トレース。

コンソール上で表示したり分析することで問題を特定することができる。

機能性
X-Ray SDK【アプリケーション】
モニタリングを実行するために、X-Rayデーモンを必要とする。
セグメントデータを作成をX-Rayデーモンに送信する。
X-Ray エージェントデータがログファイルから収集され、X-Ray サービスに送信される。その後、データは X-Ray サービスで集計、分析、保存される。このエージェントにより、API を使って直接送信するよりも簡単にデータを X-Rayサービスに送信することができる。
※要はログファイルからX-Rayにデータを送るもの
X-Rayデーモンアプリケーションから受け取ったセグメントデータをバッファリングしX-Ray APIに定期的に転送。
X-Rayコンソールトレースをコンソールで可視化分析・デバッグを行う。
X-Ray サービスマップサービスやリソースの関係性をリアルタイムで表示できるので高いレイテンシーが発生している場所を簡単に検出できる。AWSの他のサービス「EC2、ECS、Lambda,Elastic Beanstalkと連携することが出来る。Lambda は、X-Ray デーモンおよびは、関数の呼び出しと実行に関する詳細でセグメントを記録する。

●セグメント

Lambdaなどの各AWSサービスの動作に関するデータ。リソース名、リクエストの詳細、行った作業の詳細などの情報。

●トレース

このリクエストに何秒かかってるのか、またステータスコードなどリクエスト毎に一覧で確認できる。1 つのリクエストで生成されたセグメントをすべて収集する。IDが割り振られていて、詳細はIDをクリックすると確認することができる。トレース ID はアプリケーションを経由するリクエストのパスを追跡する。

●スクリプト・ツール

AWS SDK、AWS CLIを利用することでX-Ray SDKを使わずに直接X-Ray APIとデータのやり取りが可能。

[CloudWatchとの違い]
X-Ray【サービス監視】サービスマップと呼ばれるグラフから全体のパフォーマンスを確認することができ、リソースのレイテンシーの検出や障害の発生率特定などを診断することが出来る。
CloudWatch【サーバー監視】AWS サービスのログの管理メトリクス監視を通じて、アプリの動きを個々の単位で監視できる。

リソースの評価

Config

【リソースの履歴・評価・構成変更管理】
AWSリソースの設定を「いつ」、「だれが」、「どのように」変更したのか、リソースの設定を評価、監査、審査できるサービス。

[リソース管理]
ルールを使用して、AWSリソースへの設定を評価できる。ルールの条件に違反しているリソースが検出されると、そのリソースに非準拠のフラグが付けられ、通知が送信される。

[修正機能]
リソースの設定を記憶し、ルール非準拠の場合は修復アクションを利用して権限等、自動削除できる。ただし、コンプライアンス基準までは対応できないため、注意なお、修正は Systems Manager Automation と連携して実行されている。

[スナップショット]
※ダウンロード不可能
AWSリソースの設定から、AWSリソースの構成情報のスナップショットを取得し、管理できる。この構成情報を元に、現状のAWSリソースの設定が利用者によって定義された正しい状態になっているか評価。

[変更履歴の記録]
AWSリソースの設定変更を継続的にモニタリングおよび記録・追跡する。望まれる設定として記録された設定の評価を自動的に実行。6時間ごとにチェックし、更新された設定の詳細を指定したS3バケットに変更履歴を送信する。システム変更など、リソースが変更された場合などのタイミングで、Amazon SNSと連携、通知する。問題がある場合はメール通知や修正対応を随時できる。

機能性

●Config アグリゲータ

AWS Configで収集しているリソースや、Configルールのチェック結果を収集することができる。組織に所属していないAWSアカウントや、組織に所属していたとしても、特定のAWSアカウント(複数)に対して、一括管理ができる。
以下の3パターンを対象とする。
①複数のアカウントと複数のリージョン。
②単一のアカウントと複数のリージョン。
③AWS Organizations 内の組織と、AWS Config が有効になっている組織内のすべてのアカウント。

●カスタムルール

AWSリソースへの変更を定期的に監査し、コンプライアンスを監視する。

作成方法Lambda 関数(AWS Lambda デベロッパーガイドを使用)
Guard(AWS Config のポリシー言語。GitHub リポジトリで提供)
用語の整理・Lambda で作成したルールAWS Config カスタムルール
Guard で作成したルールAWS Config カスタムポリシールール

●コンフォーマンスパック

Config のルールと修復アクションをまとめた構成管理テンプレート。アカウント単位、リージョン単位、または Organizations 全体に一括デプロイ可能。この仕組みにより、セキュリティやコンプライアンスの自動化・標準化が容易になる。

[作成・デプロイ方法]

  • YAML テンプレートで構成(マネージドルール/カスタムルール+修復アクション)
  • Systems Manager ドキュメント(SSM ドキュメント)に保存し、SSM 経由でデプロイ可能
  • AWS Config コンソールまたは AWS CLIを使用して展開
  • サンプルテンプレートを使えばすぐに評価を開始できる
  • ゼロからカスタムテンプレート作成も可能

●設定レコーダー

リソースの構成変更・設定変更を追跡するための中心的なコンポーネント。

  1. 設定レコーダーを有効化
    → どのリソースタイプを記録するか指定できます(すべて or 一部)
  2. 記録開始
    → AWS Configが対象リソースの設定を定期的にスキャンし、変更を検出
  3. 履歴保存
    → 構成履歴や変更イベントをS3に保存。CloudTrailと連携すると、誰が変更したかも追跡可能
  4. コンプライアンス評価
    → AWS Configルールと組み合わせることで、設定がポリシーに準拠しているかを自動評価できます
項目説明
役割AWSリソースの設定変更を検出・記録する
対象EC2, S3, IAM, VPCなど多くのAWSサービス
出力先記録はS3バケットに保存され、CloudWatch Logsにも送信可能
トリガー定期的(スナップショット)またはイベントベース(変更時)
マネージドルール
approved-amis-by-id実行中のインスタンスで指定された AMI が使用されているかどうかを確認する。承認済み AMI ID のリストを指定する。実行中のインスタンスで使用されている AMI が、このリストにない場合は NON_COMPLIANT と返ってくる。
required-tags指定したタグがリソースにあるかどうか確認し、評価できる。これにより、準拠していないリソースを簡単に特定できる。

Trusted Advisor

【アドバイス・トリガー】※Trusted Advisor は Configに統合(2023)
AWSで利用している EC2 や RDS などのサービスを「コスト」「セキュリティ」「パフォーマンス」「耐障害性」「サービスの制限」について、ベストプラクティスに基づいた、リアルタイムのアドバイスを検査結果レポートとして提供。

Amazon SNS に直接連携する機能はない

例えとして、セキュリティグループの設定をスキャンして、特定のポートのアクセス許可状態を識別することができる。または、サービスの使用料が制限に達しないか監視してくれる。
※使用率の高い全てのEC2インスタンスを検出することができる

[注意点]
特定のリソース使用パターンを基にした具体的な推奨事項提案は非対応。リソース使用の詳細なモニタリングデータが含まれないため、正確な最適化として不十分である。

[参考公式サイト]

[自動修正機能]

[参考公式サイト]

[CloudWatchがTrusted Advisorを参照する]
※Trusted Adviserは監視ではないCloudWatchが参照しに来る

[参考公式サイト]

その他関連サービス機能

ALB アクセスログ

ELB はロードバランサーに送信されるリクエストについて詳細情報をキャプチャしたアクセスログを提供。
各ログには、
・リクエストを受け取った時刻
・クライアントのIPアドレス
・接続タイプ
・レイテンシー
・リクエストのパス
・サーバーレスポンス
・ユーザーエージェントに関する情報

取得後、ログをキャプチャし、圧縮ファイルとして指定したS3バケット内に保存する。

IAMアクセスアドバイザー

IAMアイデンティティ(ユーザー、グループ、ロール)にアクセスを許可されているサービスと過去のアクセス履歴を表示。

S3アクセスロギング

アクセス元のIPアドレスを含んだ各種ログ情報を取得できる。ログの保存先は、ログ取得元バケットと同リージョン、かつ同AWSアカウントに存在するS3バケット。

●S3サーバーアクセスログ

  • 記録内容:
    バケットに対する各リクエストの情報(日時、IPアドレス、操作内容、レスポンスコードなど)
  • 用途
    ・セキュリティ監査(誰がいつ何をしたか)
    ・アクセスパターンの分析
    ・請求の最適化(不要なアクセスの特定など)

S3 イベント通知

【S3発報】「新しいオブジェクトの作成イベント」,「オブジェクト削除イベント」,「オブジェクト復元イベント」,「低冗長化ストレージ (RRS)。 オブジェクト消失イベント」,「レプリケーションイベント」発生時、イベントを通知発行する。

[S3のイベント発行トリガー]

①Amazon SNSトピック:S3をトリガーとしてメールなどを通知できる。
②Amazon SQSキュー:S3をトリガーとしてStandardキューを配信できる。
③AWS Lambda
Lambda関数を作成時、カスタムコードをパッケージ化してLambdaにアップロード。S3をトリガーにLambda関数を実行できる。

[トリガーになる操作]

これらのイベントは、バケットの設定で通知先(SNS/SQS/Lambda/EventBridge)を指定することで、リアルタイムに処理や通知を行うことが可能

操作内容説明
新しいオブジェクトの作成PutObjectCopyObject などでファイルがアップロードされたとき
オブジェクトの削除DeleteObjectDeleteObjects による削除
オブジェクトの復元Glacier などからの復元操作
RRS(低冗長化ストレージ)オブジェクトの紛失RRS 利用時にオブジェクトが失われた場合
レプリケーションイベントバケット間でオブジェクトがレプリケートされたとき
ライフサイクルによる有効期限切れライフサイクルポリシーでオブジェクトが期限切れになったとき
ライフサイクルによるストレージ移行例:Standard → Glacier への移行
Intelligent-Tiering による自動アーカイブ使用頻度に応じたストレージ階層の変更
オブジェクトのタグ付けPutObjectTagging などによるタグの追加・変更
オブジェクト ACL の変更PutObjectAcl によるアクセス制御の変更

RDS イベント通知

【RDSの機能】
RDS のイベントが発生したときに、Amazon SNS を使用して通知を送信できる。AWS リージョンの Amazon SNS でサポートされているすべての通知の形式が使用可能。
(E メール、テキストメッセージ、HTTP エンドポイントの呼び出しなど)

DynamoDB Streams

直近24時間の追加・更新削除の変更履歴を保持する機能。アプリケーションの利用履歴を把握でき、データの更新タイミング検知、変更内容に応じた処理をリアルタイムにストリームを提供。DynamoDB テーブルに保存された項目の変更をキャプチャすることができる。

※DynamoDB は AWS Lambda と統合されているため、DYNEストリームをトリガーとした連携機能を作成できる
※複数のLamda関数とは相性が悪い

拡張VPCルーティングの有効

インターネットを介さず、VPCを介してAWSサービスにアクセスすることができる。