導入
第2章で「インフラをコードで書く(IaC)」という方法を紹介しました。ここでは、実際にどんなサービスでそれを行うのかを見ていきます。
説明
AWS CloudFormationは、AWSリソースの構成をテンプレート(YAMLまたはJSON)で書き、その通りの環境をまとめて作成・更新・削除できるサービスです。まとまりをスタックと呼び、スタックごと削除すれば作ったリソースも一括で片付きます。
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-example-bucket
同じ構成を何度でも再現でき、変更の履歴もコードとして残せるのがIaCの価値です。関連サービスも押さえておきましょう。
| サービス | 役割 |
|---|---|
| AWS CDK(Cloud Development Kit) | TypeScriptやPythonなどプログラミング言語でインフラを書き、CloudFormationテンプレートを生成する |
| AWS SAM(Serverless Application Model) | サーバーレス構成(Lambda・API Gateway・DynamoDB)を短く書くためのCloudFormationの拡張 |
| AWS Amplify | Web・モバイルアプリのフロントエンドと、その裏側(認証・API・ホスティング)をまとめて構築・公開する |
| AWS Cloud9 | ブラウザ上で使える統合開発環境(IDE)。環境構築なしにコードを書ける |
| AWS Systems Manager | 稼働中のサーバーへのパッチ適用・コマンド実行・設定値の保管(パラメータストア)などの運用作業を自動化(第8章) |
flowchart LR
Code["CDK(好きな言語で記述)"] --> Tmpl["CloudFormationテンプレート"]
SAM["SAM(サーバーレス向けの短い記法)"] --> Tmpl
Tmpl --> Stack["スタックとして環境を構築"]
Stack --> R["VPC / EC2 / RDS / S3 …"]
手作業(マネジメントコンソール)との違いは「再現性」です。人が画面をクリックして作った環境は、同じものをもう一度作れる保証がありません。コードにしておけば、開発・検証・本番で寸分違わぬ環境を作れます。
読んでみよう
「AWS標準のIaC=CloudFormation」「プログラミング言語で書く=CDK」「サーバーレス特化=SAM」。IaCの利点は「再現性・自動化・変更履歴」の3点セットで問われます。