商品情報にスキップ
1 0
  • 発売日:20250212
  • 出版社:技術評論社
  • ISBN/JAN:9784297147242

読み込み中…

[詳解]AWS Infrastructure as Code――使って比べるTerraform&AWS CDK

[詳解]AWS Infrastructure as Code――使って比べるTerraform&AWS CDK

原 旅人(著)

通常価格 3,740 円(税込)
通常価格 セール価格 3,400 円
セール 売り切れ
店舗受け取り(My店舗)
最大5店舗までご登録いただけます。
  • My店舗を登録いただくと、店舗お受け取りの在庫状況を確認することができます。 (受け取り可能店舗のみ)

各店在庫状況
商品説明
本書は、Amazon Web Services(AWS)のリソースを対象とした、コードによるインフラ管理――Infrastructure as Code(IaC)をテーマにした実践的な解説書です。IaCツールの中でも、幅広いシステムに対応できる「Terraform」と、抽象的なリソース記述が可能な「AWS CDK」を取り上げます。それぞれのツールの基本的な使い方や仕組みを解説するとともに、VPCやECSの構築といった具体例を通じてこれら2つのツールを横断的に比較・理解します。両ツールの「宣言的なコード記述」という共通点や、コード記述法や差分抽出プロセスの違いを掘り下げながら、AWSにおけるIaCの汎用的なスキルを習得できる内容となっています。IaCをこれから始めるユーザーに加え、Terraformユーザー、AWS CDKユーザーのどちらにも、新たな視点とスキルを提供します。
目次
第1章 クラウドとInfrastructure as Code
 1.1 クラウドとその利点
 1.2 AWSサービスとリソース
  1.2.1 リソースの属性
  1.2.2 アクションによるリソースの操作や参照
 1.3 Infrastructure as Code(IaC)
  1.3.1 Web画面からリソースを構築するときの問題点
  1.3.2 IaCとそのコンセプト
 1.4 AWSのIaCのためのツール
  1.4.1 Terraform
  1.4.2 AWS CloudFormation
  1.4.3 AWS CDK
 1.5 CloudTrailを活用したアクションの実行ログの追跡
  1.5.1 IaCを活用するときのアクション実行ログの必要性
  1.5.2 CloudTrail
  1.5.3 CloudTrailのイベントの表示
  1.5.4 CloudTrailイベントの効率的な検索方法
 1.6 本書の構成

第2章 IaC環境の構築
 2.1 AWS CLIのインストール
 2.2 AWS IAM Identity Centerとその設定
  2.2.1 IaCの利用で必要となる管理者権限を持つユーザーの作成
  2.2.2 IAM Identity Centerのアクセスポータル
  2.2.3 IAM Identity Centerの構成要素
  2.2.4 IAM Identity Centerの設定手順
  2.2.5 IAM Identity Centerが使えない場合
 2.3 Terraformのインストール
  2.3.1 tenvのインストール
  2.3.2 tenvによるTerraformのインストール
 2.4 CDKのインストールとブートストラップ
  2.4.1 CDKのインストール
  2.4.2 ブートストラップの実行
 2.5 開発環境・ツール
  2.5.1 エディタ
  2.5.2 その他のツール
 2.6 まとめ

第3章 [体験]IaCによるリソースのデプロイ
 3.1 題材
 3.2 AWSマネジメントコンソールによるリソースのデプロイ
 3.3 Terraformによるリソースのデプロイ
  3.3.1 Terraformのコンフィグファイルを作成する
  3.3.2 terraform initでルートモジュールを初期化する
  3.3.3 terraform planで実行計画を確認する
  3.3.4 terraform applyでリソースをデプロイする
  3.3.5 tfstateファイル
 3.4 CloudFormationによるリソースのデプロイ
  3.4.1 SQSキューを記述するテンプレートを作成する
  3.4.2 テンプレートからスタックを作成してSQSキューをデプロイする
 3.5 CDKによるリソースのデプロイ
  3.5.1 CDKプロジェクトを作成する
  3.5.2 SQSキューのリソースをコードに記述する
  3.5.3 cdk synthコマンドでCloudFormationのテンプレートを確認する
  3.5.4 cdk deployコマンドでリソースをデプロイする
 3.6 リソースの属性を変更する
  3.6.1 Terraform
  3.6.2 CloudFormation
  3.6.3 CDK
 3.7 IaCで構築したリソースの削除
  3.7.1 Terraform
  3.7.2 CloudFormation
  3.7.3 CDK
 3.8 まとめ

第4章 Terraform詳細解説
 4.1 Terraformによるリソースのデプロイの基本的な流れ
 4.2 Terraformのコンフィグファイルの記述
  4.2.1 ブロック
  4.2.2 引数などに使われる値の型
  4.2.3 コメントアウト
  4.2.4 resourceブロックとそのリファレンス
  4.2.5 dataブロックとそのリファレンス
 4.3 Terraformのコードの構成単位
  4.3.1 ルートモジュールと子モジュール
 4.4 ルートモジュールの記述
  4.4.1 Terraformのバージョン指定と使用するプロバイダの情報の設定
  4.4.2 プロバイダの設定
  4.4.3 tfstateファイルの格納先(バックエンド)の設定
 4.5 子モジュールの記述
  4.5.1 入力パラメータの記述
  4.5.2 子モジュールの出力の記述
  4.5.3 子モジュールのその他の記述
 4.6 子モジュールとその呼び出し
  4.6.1 題材
  4.6.2 子モジュールのファイルの記述
  4.6.3 子モジュールを呼び出すルートモジュールの記述
  4.6.4 子モジュールの中で複数のプロバイダ設定を使いたい場合
 4.7 コンフィグファイルの記述に便利なその他の機能
  4.7.1 localsブロック
  4.7.2 繰り返し処理の記述
 4.8 Terraformのモジュールの配置
  4.8.1 モジュール配置が満たす要件
  4.8.2 要件を満たすモジュール配置の1つの例
  4.8.3 モジュール内でのファイルの構成
  4.8.4 モジュール内の初期ファイルを作成するスクリプト
 4.9 Terraformのコマンド
  4.9.1 terraform init
  4.9.2 terraform plan
  4.9.3 terraform apply
  4.9.4 Terraformのコマンド実行に必要な許可ポリシー
 4.10 利用するTerraformやプロバイダのバージョン更新
  4.10.1 利用するTerraformのバージョンの更新
  4.10.2 プロバイダのバージョンアップ
  4.10.3 バージョンを更新したときの動作確認
  4.10.4 CIによるバージョンアップの自動化
 4.11 まとめ

第5章 AWS CDK詳細解説
 5.1 CDKによるリソースのデプロイの基本的な流れ
 5.2 CDK最初の一歩:CDKプロジェクトの作成
 5.3 初期のディレクトリ構成
 5.4 Node.jsアプリとしてのCDK
 5.5 リソースの記述とデプロイ
  5.5.1 スタックを記述するファイルの初期状態
  5.5.2 リソースのコンストラクタの呼び出しによるリソースの記述
  5.5.3 スタックのコンストラクタの呼び出し
  5.5.4 cdk synth:生成されるCloudFormationのテンプレートの確認
  5.5.5 CloudFormationのテンプレート
  5.5.6 cdk diff:差分の表示
  5.5.7 cdk deploy:リソースのデプロイ
  5.5.8 CDKコマンドの実行に必要な許可ポリシー
 5.6 CDKのコンストラクタとツリー構造
  5.6.1 コンストラクタツリー
  5.6.2 コンストラクタの引数
  5.6.3 L1コンストラクタとL2コンストラクタ
  5.6.4 コンストラクタツリーの把握
 5.7 スタックのコンストラクタ
  5.7.1 複数のスタックの作成
  5.7.2 デプロイ先のAWSアカウントIDとリージョンの指定
  5.7.3 スタックの分割の際に考慮すること
 5.8 複数の環境へのデプロイ
  5.8.1 題材
  5.8.2 環境に依存するパラメータのコードへの記述
  5.8.3 環境とスタック
  5.8.4 Stageコンストラクタ
 5.9 cdk.context.json
 5.10 タグ
  5.10.1 タグの付与とコンストラクタツリー
  5.10.2 スタック全体に一律にタグを付与する
  5.10.3 複数スタックに一律にタグを付与する
 5.11 エスケープハッチとrawオーバーライド
 5.12 スタック間の参照
  5.12.1 CloudFormationのテンプレートにおけるエクスポートの記述
  5.12.2 CDKにおけるエクスポート
  5.12.3 CfnOutputのコンストラクタを使う方法
  5.12.4 スタックのクラスのインスタンス変数を用いる方法
  5.12.5 スタック間の依存関係とデプロイされるスタック
  5.12.6 エクスポート・インポートを使うときの留意点
 5.13 CDKのスナップショットテスト
  5.13.1 CDKのテストとスナップショットテストのメリット
  5.13.2 スナップショットテストの作成
  5.13.3 スナップショットテストの実行
  5.13.4 CDKのコードのリソースの記述を変更したとき
  5.13.5 環境やスタックが複数ある場合
 5.14 ブートストラップの役割
  5.14.1 ブートストラップによって作成されるスタック
  5.14.2 ブートストラップによって作成されるIAMロール
  5.14.3 CDKを実行するための最小の許可ポリシー
 5.15 CloudFormationのスタックの操作に失敗したとき
  5.15.1 スタックの削除の中でリソースの削除に失敗したとき
  5.15.2 スタックの更新の中でリソースの削除に失敗したとき
  5.15.3 スタックの更新に失敗してロールバックにも失敗した場合
 5.16 まとめ

第6章 VPCのIaCによる記述
 6.1 VPCを構成するリソース
 6.2 構築するVPCの仕様
  6.2.1 VPCの名前とCIDRブロック
  6.2.2 VPCに配置するサブネット
  6.2.3 NATゲートウェイの配置
  6.2.4 その他
 6.3 TerraformによるVPCの記述
  6.3.1 Terraform Registry
  6.3.2 Terraform Registryに公開されているドキュメントの読み方
  6.3.3 VPCモジュールを呼び出す子モジュールの作成
  6.3.4 ルートモジュールからの呼び出し
 6.4 CDKによるVPCの記述
  6.4.1 Vpcコンストラクタのデフォルト設定で構築されるリソース
  6.4.2 スタックのコンストラクタの記述
  6.4.3 環境に依存するパラメータの記述
  6.4.4 スタックのコンストラクタの呼び出し
  6.4.5 作成されるサブネットとそのカスタマイズ
 6.5 まとめ

第7章 ECSサービスのIaCによる記述
 7.1 構築するECSサービスの仕様
  7.1.1 ECSとは
  7.1.2 構築するECSサービスの仕様
  7.1.3 ECSサービスの構築手順
 7.2 デプロイするアプリの仕様とコード
  7.2.1 APIサーバアプリの仕様
  7.2.2 APIサーバアプリのコード
  7.2.3 APIサーバアプリのコンテナイメージを作成
  7.2.4 ローカルでのAPIサーバの挙動の確認
 7.3 Terraformによるリソースの記述
  7.3.1 ECRのリポジトリとSSMパラメータストアの記述
  7.3.2 ECS関連リソースの記述
  7.3.3 リソースのデプロイ
  7.3.4 リソースの削除
  7.3.5 Terraform Registryのモジュールの利用
 7.4 CDKによるリソースの記述
  7.4.1 ECRリポジトリとSecrets Managerの記述
  7.4.2 ECS関連リソースの記述
  7.4.3 リソースのデプロイ
  7.4.4 コンストラクタツリー
  7.4.5 リソースの削除
  7.4.6 IAMロールやセキュリティグループのカスタマイズ
  7.4.7 自動的に作成されるECSタスクロールへの許可アクションの追加
 7.5 まとめ

第8章 Terraform & AWS CDK注意すべき相違点
 8.1 手動で変更されたリソースの差分検出
  8.1.1 SQSキューの作成
  8.1.2 Terraformのコンフィグに記述がある属性を手動で変更
  8.1.3 CDKのコードに記述がある属性を手動で変更
  8.1.4 Terraformのコンフィグに記述がない属性の値を手動で変更
  8.1.5 CDKのコードに記述がない属性の値を手動で変更
 8.2 実行計画(差分)作成プロセス
  8.2.1 題材
  8.2.2 Terraformの場合
  8.2.3 CloudFormation(CDK)の場合
 8.3 差分表示のプロセス
  8.3.1 Terraformにおける実行計画の確認
  8.3.2 cdk diffによる差分の出力
  8.3.3 変更セットでリソースの操作計画を確認する
 8.4 既存のリソースの参照
  8.4.1 Terraformにおける既存のリソースの参照
  8.4.2 CDKにおける既存のリソースの参照
 8.5 IaCの管理下からリソースを除外する
  8.5.1 題材
  8.5.2 リソースの一部をIaCの管理から除外:Terraform
  8.5.3 リソースの一部をIaCの管理から除外:CDK
 8.6 リソースの置換と処理順序
  8.6.1 リソースの置換の発生
  8.6.2 リソースの置換に伴うリソースの削除と新規作成の処理順序
 8.7 まとめ

第9章 既存リソースのインポート
 9.1 既存のリソースのインポートの必要性
 9.2 題材
 9.3 Terraformにおけるインポート
  9.3.1 インポートの流れ
  9.3.2 terraform importコマンドによるインポート
  9.3.3 importブロックによるインポート
  9.3.4 インポートしたリソースの複数の環境へのデプロイ
 9.4 CDKにおけるインポート
  9.4.1 IaCジェネレーターによる既存リソースのテンプレートの作成
  9.4.2 cdk migrateによる既存リソースのスタックへのインポート
  9.4.3 既存のリソースをインポートする手順のまとめ
 9.5 CloudFormationからCDKへの移行
 9.6 まとめ

第10章 Lambda関数のデプロイ
 10.1 Lambda関数のデプロイ
  10.1.1 Lambda関数とは
  10.1.2 Lambda関数のデプロイに必要な2つのプロセス
  10.1.3 Lambda関数のデプロイの戦略
  10.1.4 Lambda関数をデプロイするトリガー
  10.1.5 ZIPファイルのアセットが満たす要件
 10.2 題材
  10.2.1 本章で用いるLambda関数のコード
  10.3 アセット分離戦略におけるアセット
  10.3.1 アセットの配置
 10.4 Terraformを用いたアセット分離戦略によるLambda関数のデプロイ
  10.4.1 子モジュールへのリソースの記述
  10.4.2 ルートモジュールの作成とリソースのデプロイ
  10.4.3 Lambda関数のコードを更新したときのデプロイ
 10.5 CDKを用いたアセット分離戦略によるLambda関数のデプロイ
  10.5.1 CDKプロジェクトの作成とAWS SDKパッケージのインストール
  10.5.2 AWS SDKを用いたSSMパラメータストアの値の取得
  10.5.3 リソースのスタックへの記述
  10.5.4 環境に依存するパラメータの記述
  10.5.5 SSMパラメータストアの値の取得とスタックの呼び出し
  10.5.6 Lambda関数のデプロイ
 10.6 アセット統合戦略によるLambda関数のデプロイ
 10.7 CDKを用いたアセット統合戦略によるLambda関数のデプロイ
  10.7.1 codeに指定するインスタンスを作成する静的メソッドの選択
  10.7.2 ビルドをするためのDockerfileの作成
  10.7.3 スタックへのリソースの記述
  10.7.4 環境に依存するパラメータの記述
  10.7.5 スタックコンストラクタの呼び出し
  10.7.6 CDKの合成処理を実行したときの挙動
  10.7.7 cdk deployを実行したときのアセットの扱い
  10.7.8 Node.jsをランライムに使うLambda関数のデプロイ
 10.8 Terraformを用いたアセット統合戦略によるLambda関数のデプロイ
  10.8.1 ビルドの実行とアセットの作成
  10.8.2 子モジュールの作成と設定
  10.8.3 リソースの記述
  10.8.4 ルートモジュールの作成
 10.9 まとめ

第11章 IaCにおけるLambda関数の活用
 11.1 CloudFormation(CDK)でLambda関数を活用する仕組み
  11.1.1 カスタムリソースの使用例
  11.2 CloudFormationのカスタムリソースの記述方法
  11.2.1 CloudFormationのテンプレートによるカスタムリソースの記述
  11.2.2 CDKのコードによるカスタムリソースの記述
 11.3 カスタムリソースの最初の実践:Lambdaに渡されるイベントの記録
  11.3.1 カスタムリソースから起動されるLambda関数のコード
  11.3.2 カスタムリソースを記述するCDKのコード
  11.3.3 カスタムリソースの操作時にLambda関数に渡されるイベント
 11.4 カスタムリソースの更新と物理ID
  11.4.1 カスタムリソースの更新と物理IDの変化に伴う処理
  11.4.2 カスタムリソースの作成が失敗した場合
  11.4.3 カスタムリソースの更新が失敗した場合
 11.5 イベントタイプによって挙動が異なるLambda関数の例
  11.5.1 仕様
  11.5.2 Lambda関数の実装
  11.5.3 カスタムリソースを記述するCDKのコード
  11.5.4 スタックの作成、更新、削除に伴うS3オブジェクトの挙動
 11.6 カスタムリソースプロバイダの活用
  11.6.1 カスタムリソースプロバイダの実体
  11.6.2 カスタムリソースプロバイダを使う場合のユーザーのLambda関数
  11.6.3 カスタムリソースプロバイダを使う場合のCDKのコード
  11.6.4 カスタムリソースプロバイダを使う場合の制約事項
 11.7 TerraformにおけるLambda関数の活用
  11.7.1 lambda_invocationの使い方
  11.7.2 Lambda関数に入力されるイベント
  11.7.3 aws_lambda_invocationで実行するLambda関数の例
  11.7.4 Lambda関数がエラーになったとき
 11.8 まとめ
  • 発売日:20250212
  • 出版社:技術評論社
  • ISBN/JAN:9784297147242
詳細を表示する

最近チェックした商品