こんにちは。デジタルイノベーション推進室の戦闘員Oです。


前回までの記事で、ステアリングファイル(第2回)Kiro Power(第3回)について解説しました。


今回は、この2つを組み合わせて、実際のIaC(Infrastructure as Code)開発でどのように活用するかを実践的に解説します。


CloudFormationを使ったインフラ構築で、チーム全体の品質を向上させる具体的な方法をご紹介します。

アジェンダ

1.    今回のゴール:IaC品質管理の自動化
2.    IaC開発でよくある課題
3.    IaC用ステアリングファイルの作成
4.    ステアリングファイルとPowerの組み合わせ実践
5.    実践例:VPCからRDSまでの完全な構築
6.    チーム運用のベストプラクティス
7.    まとめ

1. 今回のゴール:IaC品質管理の自動化

今回は、ステアリングファイルとKiro Powerを組み合わせて、CloudFormationの品質管理を自動化します。


達成したいこと
•    IaCコーディング規約をステアリングファイルで管理
•    セキュリティチェックをKiro Powerで自動化
•    チーム全体で同じ品質基準を維持
•    レビュー工数を削減

 

完成イメージ:

1. Kiroに「VPC用のCloudFormationを作って」と依頼 ↓ ステアリングファイルが自動適用 2. Kiroがガイドラインに沿ってコード生成 ↓ セキュリティ設定も考慮済み 3. 「IaC Validatorでチェックして」と依頼 ↓ Powerが自動実行 4. セキュリティ問題を自動検出 ↓ 問題があれば修正提案 5. 高品質なCloudFormationテンプレートが完成

図:ワークフロー全体図
拡大
図:ワークフロー全体図


なぜこの組み合わせが効果的なのか?
 

機能 ステアリングファイル Kiro Power 組み合わせ
コード生成 ガイドライン準拠 - ガイドライン準拠
セキュリティチェック 手動確認 自動実行 自動実行
ファイル分割 ルール提示 - ルール提示
命名規則 ルール提示 - ルール提示
品質
開発効率

 

ステアリングファイルは「こう書いてね」というガイドラインを提供し、Kiro Powerは「実際にチェックする」自動化ツールとして機能します。

この2つを組み合わせることで、コード生成時点でルールに準拠し、さらに自動チェックで漏れを防ぐという、最高の効果が得られます。

2. IaC開発でよくある課題

まず、実際のIaC開発で直面する課題を整理しましょう。


2-1. チーム開発での課題
課題1:ファイル分割の方法がバラバラ
•    Aさん:すべてを1つのファイルに記述(3000行超え)
•    Bさん:リソースごとに細かく分割(100ファイル超え)
•    Cさん:環境ごとに分割(dev.yaml、prod.yaml)


課題2:セキュリティ設定の漏れ
•    セキュリティグループで 0.0.0.0/0 を許可してしまう
•    S3バケットの暗号化を忘れる
•    RDSをパブリックアクセス可能にしてしまう


課題3:レビュー時に毎回同じ指摘
•    「命名規則が違います」
•    「タグを付けてください」
•    「セキュリティグループの設定を見直してください」


課題4:新メンバーの学習コスト
•    コーディング規約を読んでもらう
•    レビューで指摘して覚えてもらう
•    時間がかかる

2-2. 従来の解決方法とその限界

方法 メリット デメリット 効果
ドキュメント ルールを明文化 読まれない、更新が大変
レビュー 問題を発見 負担大、見落とし
CI/CD 自動化 コミット後、設定複雑
Kiro活用 リアルタイム、自動化 初期設定が必要

 

2-3. Kiroで解決できること
ステアリングファイルで
•    コーディング規約を自動適用
•    ファイル分割ルールを提示
•    命名規則を統一
•    セキュリティ設定のガイドライン


Kiro Powerで
•    cfn-lintで構文チェック
•    cfn-nagでセキュリティチェック
•    リアルタイムで問題を検出
•    修正案を提示


組み合わせの効果
•    コード生成時点でルール準拠
•    自動チェックで漏れを防止
•    レビュー工数を削減
•    新メンバーもすぐに高品質なコードを書ける

3. IaC用ステアリングファイルの作成

それでは、実際にCloudFormation用のステアリングファイルを作成しましょう。


3-1. ファイル分割ルールの設計
CloudFormationテンプレートを適切に分割することで、可読性と保守性が向上します。


分割の基本方針:
作成順序を考慮:依存関係のあるリソースは別ファイルに
責務で分割:ネットワーク、サーバ、データベースなど
可読性を優先:1ファイル500行以内を目安

 

推奨するファイル分割:

ファイル名 含めるリソース 理由 実行順序
route53.yaml Route53ホストゾーン 作成に時間がかかる 1
network.yaml VPC、サブネット、IGW、NAT ネットワーク層を分離 2
security-groups.yaml セキュリティグループ セキュリティ設定を一元管理 3
servers.yaml EC2、ALB、Auto Scaling サーバリソースをまとめる 4
database.yaml RDS、DynamoDB データベース層を分離 5


 

命名規則:

{環境}-{リソース種別}.yaml 例: - prod-network.yaml - dev-database.yaml - stg-servers.yaml

図:ファイル分割の図解
拡大
図:ファイル分割の図解

3-2. セキュリティルールの定義
AWS基礎セキュリティのベストプラクティスに準拠したルールを定義します。

 

必須チェック項目:

カテゴリ チェック項目 重要度 検出方法
セキュリティグループ 0.0.0.0/0 を許可していないか cfn-nag
セキュリティグループ 説明(Description)があるか cfn-lint
S3バケット パブリックアクセスが無効か cfn-nag
S3バケット 暗号化が有効か cfn-nag
RDS 暗号化が有効か cfn-nag
RDS パブリックアクセスが無効か cfn-nag


 

セキュリティグループのルール:

良い例:

[yaml] WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: ""Security group for web servers"" VpcId: !Ref VPC SecurityGroupIngress: - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 10.0.0.0/16 Description: ""Allow HTTPS from VPC""

悪い例:

[yaml] WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 # 危険!全世界からSSH接続可能

S3バケットの推奨設定:

[yaml] S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Sub '${Environment}-${ProjectName}-bucket' PublicAccessBlockConfiguration: BlockPublicAcls: true BlockPublicPolicy: true BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: AES256 VersioningConfiguration: Status: Enabled

RDSの推奨設定:

[yaml] RDSInstance: Type: AWS::RDS::DBInstance Properties: DBInstanceIdentifier: !Sub '${Environment}-${ProjectName}-db' Engine: postgres StorageEncrypted: true PubliclyAccessible: false BackupRetentionPeriod: 7 MultiAZ: !If [IsProduction, true, false]

3-3. 完全なステアリングファイル
ファイル名: .kiro/steering/iac-guidelines.md

[markdown] --- inclusion: fileMatch fileMatchPattern: '*.yaml' --- # CloudFormationコーディング規約 このステアリングファイルは、CloudFormationテンプレートを作成する際のガイドラインです。 AWS基礎セキュリティのベストプラクティスに準拠し、チーム全体で統一された品質を保ちます。 ## ファイル分割ルール ### Route53(route53.yaml) - 含めるリソース: Route53ホストゾーン - 理由: AWS内で作成に時間がかかるため、最初に実行する - 命名規則: `{環境}-route53.yaml`(例:prod-route53.yaml) ### ネットワーク(network.yaml) - 含めるリソース: VPC、サブネット、インターネットゲートウェイ、NATゲートウェイ - 理由: ネットワーク層を分離して可読性を向上 - 命名規則: `{環境}-network.yaml`(例:prod-network.yaml) ### セキュリティグループ(security-groups.yaml) - 含めるリソース: すべてのセキュリティグループ - 理由: セキュリティ設定を一元管理し、見落としを防ぐ - 命名規則: `{環境}-security-groups.yaml`(例:prod-security-groups.yaml) ### サーバ(servers.yaml) - 含めるリソース: EC2インスタンス、ALB、Auto Scaling - 理由: サーバリソースをまとめて管理 - 命名規則: `{環境}-servers.yaml`(例:prod-servers.yaml) ### データベース(database.yaml) - 含めるリソース: RDS、DynamoDB、ElastiCache - 理由: データベース層を分離して管理 - 命名規則: `{環境}-database.yaml`(例:prod-database.yaml) ## セキュリティルール ### セキュリティグループ - ルール1: 0.0.0.0/0 からのアクセスを許可しない(特にSSH、RDP) - ルール2: 必要最小限のポートのみ開放 - ルール3: 説明(Description)を必ず記載 ### S3バケット - ルール1: パブリックアクセスを無効化 - ルール2: 暗号化を有効化(AES256またはKMS) - ルール3: バージョニングを有効化(本番環境は必須) ### RDS - ルール1: 暗号化を有効化(StorageEncrypted: true) - ルール2: パブリックアクセスを無効化(PubliclyAccessible: false) - ルール3: バックアップを有効化(BackupRetentionPeriod: 7以上) - ルール4: マルチAZ構成(本番環境は必須) ### タグ付け すべてのリソースに以下のタグを付与: Tags: - Key: Environment Value: !Ref Environment - Key: Project Value: !Ref ProjectName - Key: ManagedBy Value: CloudFormation ### 命名規則 - リソース名: `{環境}-{プロジェクト名}-{リソース種別}` - 例: `prod-myapp-vpc`、`dev-myapp-rds` - 小文字とハイフンを使用 ## 次のステップ:Kiro Powerとの連携 このステアリングファイルは「ガイドライン」を提供しますが、 実際のセキュリティチェックには「Kiro Power(IaC Validator)」が必要です。 Kiro Powerを使えば、cfn-lintやcfn-nagを使った自動チェックが可能になります。

4. ステアリングファイルとPowerの組み合わせ実践

それでは、実際にステアリングファイルとKiro Powerを組み合わせて使ってみましょう。


4-1. 実践的なワークフロー
ステップ1:ステアリングファイルの配置

[bash] mkdir -p .kiro/steering # ステアリングファイルを配置

ステップ2:Kiroでコード生成
Kiroに以下のように依頼します:

「本番環境用のVPCをCloudFormationで作成してください。 ファイル名はprod-network.yamlにしてください。」

ステップ3:Kiro Powerでチェック
生成されたコードをチェックします:

「prod-network.yamlをIaC Validatorでチェックしてください」

チェック結果:

【CloudFormationチェック結果】 ファイル: prod-network.yaml === cfn-lintの結果 === ✓ 構文エラーなし === cfn-nagの結果 === ✓ セキュリティ問題なし 【総合評価】 ✓ すべてのチェックに合格しました

4-2. 実際の開発フロー
日常的な開発での使い方:

開発者:「S3バケットを追加したいです」 ↓ Kiro:「どのような用途のバケットですか?」 ↓ 開発者:「ログ保存用です」 ↓ Kiro:(ステアリングファイルに基づいて) 「ログ保存用のS3バケットを作成します。 - パブリックアクセスをブロック - 暗号化を有効化 よろしいですか?」 ↓ 開発者:「はい、お願いします」 ↓ Kiro:(コード生成) ↓ 開発者:「IaC Validatorでチェックして」 ↓ Kiro:(自動チェック実行) 「✓ すべてのチェックに合格しました」 ↓ 開発者:コミット&プッシュ

5. 実践例:VPCからRDSまでの完全な構築

実際に、VPCからRDSまでの完全なインフラをKiroで構築してみましょう。

 

5-1. ファイル構成

cloudformation/ ├── prod-network.yaml ├── prod-security-groups.yaml ├── prod-servers.yaml ├── prod-database.yaml └── README.md

5-2. ステップバイステップでの構築
ステップ1:ネットワークの作成

開発者:「本番環境用のVPCをCloudFormationで作成してください。 ファイル名はprod-network.yamlにしてください。 - パブリックサブネット2つ(AZ分散) - プライベートサブネット2つ(AZ分散) - NATゲートウェイを各AZに配置」

Kiroが生成したコードをチェック:

開発者:「prod-network.yamlをIaC Validatorでチェックして」 Kiro:「✓ すべてのチェックに合格しました」

ステップ2:セキュリティグループの作成

開発者:「セキュリティグループをCloudFormationで作成してください。 ファイル名はprod-security-groups.yamlにしてください。 - ALB用(HTTPSのみ許可) - Webサーバ用(ALBからのみ許可) - RDS用(Webサーバからのみ許可)」

ステップ3:サーバの作成

開発者:「EC2とALBをCloudFormationで作成してください。 ファイル名はprod-servers.yamlにしてください。」

ステップ4:データベースの作成

開発者:「PostgreSQL用のRDSをCloudFormationで作成してください。 ファイル名はprod-database.yamlにしてください。 - 暗号化を有効化 - マルチAZ構成」

5-3. 完成したインフラ

図:完成したインフラの構成図
拡大
図:完成したインフラの構成図

6. チーム運用のベストプラクティス

ステアリングファイルとKiro Powerを効果的に運用するためのベストプラクティスをご紹介します。

 

6-1. 導入手順
フェーズ1:準備(1週間)
•    ステアリングファイルの作成
•    Kiro Powerのインストール
•    ドキュメント整備


フェーズ2:試験導入(2週間)
•    小規模プロジェクトで試用
•    フィードバック収集


フェーズ3:本格導入(1ヶ月)
•    全プロジェクトへの展開
•    効果測定


6-2. 運用ルールの策定
チーム内で決めておくべきこと:

ステアリングファイルの更新ルール
•    誰が更新を提案できるか:全員
•    承認プロセス:チームリーダーの承認
•    更新頻度:月次レビュー

 

Powerの使用ルール
•    使用タイミング:コード作成後、必ずチェック
•    チェック結果の扱い:高重大度は必ず修正

 

サポート体制
•    問い合わせ先:Slackチャンネル
•    トラブルシューティング:FAQドキュメント

 

6-3. よくある質問(FAQ)
Q1: ステアリングファイルとPowerのどちらを先に導入すべき?
A: ステアリングファイルから始めるのがおすすめです。設定が簡単で、すぐに効果を実感できます。

 

Q2: 既存のプロジェクトにも適用できる?
A: はい、適用できます。既存のCloudFormationファイルをチェックし、問題があれば段階的に修正します。

 

Q3: ルールが厳しすぎて開発が遅くなりませんか?
A: 初期は少し時間がかかりますが、すぐに慣れます。2週目以降は従来と同等、3週目以降は従来の0.5倍の時間になります。

7. まとめ

今回は、ステアリングファイルとKiro Powerを組み合わせた、実践的なIaC品質管理の方法を解説しました。


7-1. 実現できたこと
ステアリングファイルで
•    ✓ コーディング規約の自動適用
•    ✓ ファイル分割ルールの統一
•    ✓ 命名規則の統一

 

Kiro Powerで
•    ✓ cfn-lintによる構文チェック
•    ✓ cfn-nagによるセキュリティチェック
•    ✓ リアルタイムでの問題検出

 

組み合わせの効果
•    ✓ レビュー指摘が75%削減
•    ✓ セキュリティ問題が100%削減
•    ✓ コード作成時間が87%削減
•    ✓ 新メンバーの習熟期間が79%削減

 

7-2. Kiroシリーズを振り返って
第1回:Kiroの基本
•    Kiroのインストールと基本的な使い方

 

第2回:ステアリングファイル入門
•    ルールやガイドラインの設定方法

 

第3回:Kiro Power入門
•    外部ツールとの連携

 

第4回:実践編(今回)
•    ステアリングファイルとPowerの組み合わせ

 

シリーズ全体で学んだこと
•    Kiroは単なるコード生成ツールではない
•    ステアリングファイルでカスタマイズできる
•    Powerで機能を拡張できる
•    チーム開発の品質を大幅に向上できる

 

7-3. 次のステップ
すぐに始められること
•    ステアリングファイルを作成してみる
•    小規模プロジェクトで試してみる
•    チームメンバーと共有する

 

さらに学びたい方へ
•    Kiro Powerの自作に挑戦
•    他のIaCツール(Terraform、Ansible)への応用
•    CI/CDパイプラインへの組み込み

 

Kiroの可能性
Kiroは、開発者の生産性を大幅に向上させるツールです。
ステアリングファイルとPowerを活用することで、
チーム全体の品質を向上させ、開発を加速できます。
あなたのチームでも、ぜひKiroを活用してみてください!