こんにちは。デジタルイノベーション推進室の戦闘員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を活用してみてください!


