EC店舗がBicepテンプレートをClaude Codeで読む: 小さな会社のIaC安全確認
EC店舗向けにBicepのscope、secret、what-if、公開設定、rollbackを確認します。
EC店舗のセール前に、AzureのBicepテンプレートをそのまま本番へ流すのは怖い作業です。main.bicep にはStorage Account、App Service、Key Vault、接続文字列、公開設定、SKUが並んでいる。担当者は「去年のファイルを少し直しただけ」と思っていても、scopeがsubscriptionのまま、secretがplain text、what-ifの結果がないと、セール初日に公開ミスやコストの手戻りが起きます。今日まず見るのは、Bicepファイル、parameters、what-if出力、rollbackメモです。
この記事では、小さなEC運営会社がBicepを始める前に、Claude Codeで安全確認表を作る流れを書きます。狙いは、AIのAzure deployではありません。テンプレートを読み、危ない値、公開設定、secret、scope、削除差分、承認者を表にして、人が止められる状態へ持っていきます。
この記事の要点
- EC店舗のIaCは、セール前にscope、parameter、secret、公開設定、コスト、rollbackを見てから始める。
- BicepはAzureリソースを宣言的に書く言語だが、ファイルが短くても本番影響は小さくない。
- what-ifは、deploy前に変わるリソースを確認する入口になる。結果を読まずに本番へ流さない。
- Claude Codeには、Bicepファイル、parameters、what-if出力、運用メモを読ませ、確認候補を表にさせる。
- 人が見る範囲は、本番deploy、secret、決済、公開URL、削除差分、SKU、rollback、承認です。
現場で起きる失敗シーン
EC店舗のAzure運用では、セール用LP、在庫API、画像配信、管理画面、決済連携、メール通知が短期間で変わります。最初はポータルで作ったStorage AccountやApp Serviceを、あとからBicepへ移すこともあります。ここで「動いている設定をそのままコード化しただけ」と思うと、public access、SKU、region、secret、diagnostic settingsが混ざったままになります。
失敗しやすいのは、Bicepを読まずに「差分が小さいはず」と思い込む流れです。たとえば、storage accountが作り直される、App ServiceのHTTPS設定が抜ける、secret parameterがログに残る、SKUが上がる、productionとstagingの名前が似ている。こうしたミスは、PVより売上に近いところで痛みます。セール日の注文エラー、画像表示不安定、決済API key漏れ、対応時間の増加につながります。
参考にした一次情報は、What is Bicep?、Bicep file structure、best practices for Bicep、Bicep what-if、secure parameters and secrets、Bicep modules、deploy Bicep with Azure CLIです。公式情報でも、ファイル構造、secret、what-if、module、deploy scopeは分かれているため、記事でも分けて見ます。
業務フロー: Bicepをdeploy前の確認表にする
EC店舗の担当者が最初に見る具体物は、main.bicep、main.parameters.json、環境名、resource group、what-if出力、rollbackメモです。ここから、作られるリソース、変更されるリソース、消える可能性があるリソース、secret、公開URL、コスト影響を1枚の表へ落とします。
Claude Codeへ渡す前に、決済キー、接続文字列、顧客情報、production URLのtokenは消します。Bicepの構造と、匿名化したparameter名、what-ifの要約だけを渡します。AIに本番deployコマンドを実行させるのではなく、人が判断するためのレビュー表を作らせます。
| 見る場所 | 例 | Claude Codeに任せる点 | 人が見る点 |
|---|---|---|---|
| scope | resource group / subscription | 影響範囲の表 | 本番対象か |
| parameters | location、sku、appName | 未設定、環境名、secret候補 | 決済、契約、コスト |
| resources | storage、web app、key vault | 公開設定、HTTPS、identity | 顧客影響 |
| what-if | Create、Modify、Delete | 削除差分、SKU変更 | deploy承認 |
| rollback | 戻し方、停止条件 | 足りないメモの指摘 | セール中の判断 |
この表があると、Bicepの知識が薄い担当者でも「何が変わるのか」を会議に出せます。Claude Codeには、resource名を説明させるより、変更差分と止める条件を優先して出させます。
Claude Codeに任せる範囲と人が見る範囲
Claude Codeに任せる範囲は、Bicep構文の読み取り、resource一覧、parameter一覧、secret候補、what-if差分の要約、危ない公開設定、rollbackメモの不足、確認文面の下書きです。特に初心者には、param、resource、module、output の役割を表に直すだけでも効果があります。
人が見る範囲は、本番deploy、SKU変更、削除差分、決済キー、顧客データ、公開URL、firewall、private endpoint、コスト、rollbackです。Claude Codeが「問題ありません」と書いても、what-ifにDeleteが出ているなら止めます。AIの役割は、安心させることではなく、見落としを表に出すことです。
Bicepのsecretは、@secure() decoratorやKey Vault連携を検討します。Microsoft Learnではsecure parameterの扱いが説明されています。EC店舗では、決済API key、メール送信key、管理画面passwordをBicepやparameterファイルに平文で置かない運用が先です。
3つのUse case
Use case 1: Bicepファイルの影響範囲を読む
- 入力: main.bicep、resource group名、subscription、環境名、既存リソース一覧。
- 出力: 作成、変更、削除の候補、scope、resource type、ECへの影響表。
- 人の確認: 本番環境、SKU、region、公開URL、削除差分、決済関連を見る。
最初に見るのは、コードの美しさではなく影響範囲です。Claude Codeには、targetScope、resource名、既存resource参照、module scopeを抜き出させます。人は、productionに触るか、セール中に変えてよいかを判断します。
Use case 2: secretとparameterの危ない値を探す
- 入力: Bicep parameters、parameter file、Key Vault利用有無、接続文字列名。
- 出力: @secure() が必要なparameter、平文secret候補、Key Vaultへ寄せる候補。
- 人の確認: 決済キー、メール送信キー、DB接続文字列、顧客情報、管理者passwordを見る。
parameter名にkey、secret、password、tokenが入るなら、まず疑います。Claude Codeには、値ではなく名前と型だけを見せてもレビューできます。人は、実際のsecretの扱いと、誰が見られるかを確認します。
Use case 3: what-if結果を読んでdeployを止める
- 入力: az deployment group what-if の出力、変更理由、deploy予定日、rollbackメモ。
- 出力: Create/Modify/Deleteの表、止める条件、承認者、セール前チェック。
- 人の確認: Delete、Replace、SKU変更、公開設定、コスト、セール中の影響を見る。
what-ifは変更を予測する入口です。結果を貼って終わりではなく、DeleteやReplace、SKU変更、public access変更を優先して読みます。Claude Codeには、止める条件を表にさせます。人は、deploy可否を決めます。
コピペで使えるプロンプト
あなたは小さなEC運営会社のAzure Bicepレビュー担当です。
目的は、Bicepテンプレートを本番deployする前に、scope、secret、公開設定、what-if差分、rollbackを人が判断できる表へ落とすことです。
入力:
- main.bicep
- parametersファイルからsecret値を消したもの
- targetScopeとresource group名
- az deployment what-if の要約
- セール日、rollbackメモ、承認者
確認してほしいこと:
1. targetScopeが本番影響に合っているか
2. key、secret、password、tokenを含むparameterが@secure()やKey Vault扱いか
3. public access、HTTPS、managed identity、diagnostic settingsの抜け
4. what-ifにDelete、Replace、SKU変更、公開設定変更があるか
5. セール中に触ってはいけないresourceが含まれていないか
6. rollbackメモと停止条件があるか
7. 人が承認しないと進めてはいけない操作
制約:
- 実secret、顧客情報、production tokenは読ませない
- deployコマンドは実行しない
- 問題なしと言い切らず、確認表と止める条件を出す
- 最後に、今日見るべき5行だけを優先順で出す
動く確認コード
次のコードは、Bicepレビュー表の危ない項目を見つける小さな確認コードです。実際のBicep parserではなく、レビュー表にした後の項目を検査します。実行すると、what-if不足、平文secret、公開設定、HTTPSなし、ownerなし、rollbackなしを表で出します。
// verify-bicep-safety-notes.mjs
// No dependencies. Run with: node verify-bicep-safety-notes.mjs
const bicepReview = {
template: "main.bicep",
environment: "prod",
scope: "subscription",
resources: [
{ type: "Microsoft.Storage/storageAccounts", name: "ecprodstore", publicNetworkAccess: "Enabled", sku: "Standard_LRS" },
{ type: "Microsoft.Web/sites", name: "ec-sale-app", httpsOnly: false, managedIdentity: false },
{ type: "Microsoft.KeyVault/vaults/secrets", name: "payment-api-key", valueFromParameter: "plainTextPaymentKey" }
],
parameters: [
{ name: "location", secure: false, valueExample: "japaneast" },
{ name: "plainTextPaymentKey", secure: false, valueExample: "sk_live_example" }
],
whatIfAttached: false,
owner: "",
rollbackNote: ""
};
const problems = [];
if (bicepReview.environment === "prod" && !bicepReview.whatIfAttached) {
problems.push({ item: "what-if", fix: "attach az deployment what-if output before production deployment" });
}
if (!bicepReview.owner) {
problems.push({ item: "owner", fix: "assign a human owner for cost, rollback, and approval" });
}
if (!bicepReview.rollbackNote) {
problems.push({ item: "rollback", fix: "write a rollback or stop-the-line note before sale season" });
}
for (const parameter of bicepReview.parameters) {
if (/key|secret|password|token/i.test(parameter.name) && !parameter.secure) {
problems.push({ item: `parameter: ${parameter.name}`, fix: "mark secrets with @secure() or fetch from Key Vault" });
}
}
for (const resource of bicepReview.resources) {
if (resource.publicNetworkAccess === "Enabled") {
problems.push({ item: `public network: ${resource.name}`, fix: "review public access, firewall, private endpoint, or business reason" });
}
if (resource.httpsOnly === false) {
problems.push({ item: `httpsOnly: ${resource.name}`, fix: "enable HTTPS-only before customer traffic" });
}
if (resource.type === "Microsoft.Web/sites" && resource.managedIdentity === false) {
problems.push({ item: `identity: ${resource.name}`, fix: "use managed identity instead of app secrets when possible" });
}
}
if (problems.length > 0) {
console.table(problems);
process.exitCode = 1;
} else {
console.log("Bicep safety review passed.");
}
このコードで見ているのは、what-if、owner、rollback、secure parameter、public network、HTTPS、managed identityです。実運用では、Azure CLI、Bicep build、what-if、resource group、Key Vault、App Service設定、監査ログを合わせて確認します。まずはBicepをこのレビュー表へ写してください。
Pitfall: よくある落とし穴
Bicep導入で一番多い落とし穴は、短いファイルだから安全だと思う流れです。原因は、Bicepが読みやすい文法なので、本番resourceへの影響が軽く見える点です。直し方は、resource数ではなく、scope、what-if、secret、公開設定、rollbackを表にして見ることです。
二つ目は、parameterファイルにsecretを置くことです。原因は、動作確認を急いで、決済keyや接続文字列を一時的に入れてしまう点です。直し方は、値を消した状態でAIレビューし、secretは@secure()やKey Vaultの扱いへ寄せます。
三つ目は、what-ifを実行しても読まないことです。原因は、出力が長く、どこを見ればよいか分からない点です。直し方は、Delete、Replace、SKU、public access、identity、diagnostic settingsだけ先に読む表を作ります。
四つ目は、rollbackがないままセール前にdeployしてしまう点です。原因は、Bicepを「戻せるコード」と誤解する点です。戻し方、止める条件、担当者、連絡先を先に書きます。
よくある質問
Q. 小さなEC店舗でもBicepは必要ですか。
A. いきなり全リソースをBicep化する必要はありません。セール用LP、画像配信、管理画面、staging環境のように、変更が繰り返される場所から始めます。
Q. Claude CodeにBicepファイルを読ませても大丈夫ですか。
A. secret、顧客情報、production token、契約情報を消した上で、構造、parameter名、resource名、what-if要約を読ませます。deploy権限は渡しません。
Q. what-ifだけ見れば安全ですか。
A. what-ifは強い入口ですが、完全な承認ではありません。Delete、Replace、SKU変更、公開設定、secret、rollbackを人が確認します。
Q. 今日まず何を見ればよいですか。
A. targetScope、secretっぽいparameter、public access、what-ifのDelete/Modify、rollbackメモの5つです。この5つだけでも、本番事故の入口がかなり見えます。
研修・相談につなげるなら何を見るか
EC店舗のBicep記事から相談へ進めるなら、PVだけでは判断しません。what-ifで止めた件数、平文secret候補、公開設定の確認件数、rollback未記入の件数、deploy前レビュー時間、面談問い合わせ率を見ます。ここが見えると、Azure IaC、セール前deploy、権限、監査、rollbackをまとめて相談する理由があります。
Bicepテンプレート、what-if、Key Vault、App Service、Storage、公開設定、rollbackを社内運用に落としたい場合は、ClaudeCodeLabの研修・相談で相談できます。まずはmain.bicepを匿名化し、この記事の確認コードで止める条件を5つ洗い出してください。
実際に試した結果
この記事では、Microsoft LearnのBicep overview、file structure、best practices、what-if、secure parameters、modules、deploy CLIを確認しました。さらに、slug、frontmatter、内部リンク、外部リンク、CTA、コードブロック、10言語ファイル、記事キューの削除対象を確認しています。今日まずやる1手は、Bicepレビュー表で、targetScope、secret parameter、public access、what-if、rollbackメモをチェックする作業です。
次に読む記事
EC店舗のService Bus設計をClaude Codeで整理する: 注文、在庫、再送の分け方
EC店舗向けにAzure Service Busのqueue、topic、DLQ、重複検知を注文と在庫で分けます。
Azure DevOpsパイプラインをClaude Codeで点検する: 制作会社の承認付き公開フロー
制作会社向けにAzure DevOpsのPR、ManualValidation、本番承認、戻し方を分けます。
士業事務所のAzure Functions小さな自動化をClaude Codeで作る: 相談フォーム通知から始める
士業向けにAzure Functionsで相談フォーム通知を作る前の個人情報、secret、失敗通知を点検します。
無料PDF: Claude Code はじめてのチートシート
まずは無料PDFで基本コマンドと最初の使い方をまとめて確認してください。登録後はそのままテンプレート集や導入相談にも進めます。
スパムは送りません。登録情報は厳重に管理します。
Claude Codeを仕事で使える形にしませんか?
まず無料PDFで基本を固め、繰り返し使う作業はGumroad教材へ、チーム導入や権限設計は導入相談へ進めます。
この記事を書いた人
Masa
Claude Codeの実務活用、導入設計、収益導線改善を検証しているエンジニア。10言語の技術メディアを運営中。
関連書籍・参考図書
この記事のテーマに関連する書籍を楽天ブックスで探せます。
※ 当サイトは楽天市場のアフィリエイトプログラムに参加しています。上記リンクから商品をご購入いただくと、運営者に紹介料が支払われる場合があります。