自動化サービス

·

·

基礎知識

●データストア

コンピュータシステムに情報を格納して保護するデジタルリポジトリ。
情報テーブルなどの構造化データと、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 リソースのグループに対して、セキュリティパッチや更新の適用などのタスクを同時に自動化する。



ABOUT DIRECTOR
Yumi Suto

人生最初のダッツは抹茶

【取得資格】
・2020/07:ITパスポート
・2021/02:ITIL ver.3
・2021/09:AWS SAA-C02
・2022/06:AWS DVA-C01
・2024/04:AWS SOA-C02
・2025/07:AWS SAP-C02
・2025/08:PL-900
・2025/09:AWS DOP-C02
・2025/11:MLA-C01

error: Content is protected !!