こんにちは!DirbatoのBackbeatに所属している柴田です!
最近、社内でも「ClaudeCode使ってみた!」という声が増えてきましたね。そんなみなさんが大好き(なはず!)のClaudeCode、私もAWSインフラの実務でバリバリ使い始めて数ヶ月が経ちました。
使ってみてわかったんですが、ClaudeCodeって 「とりあえず動かせる」のと「業務で責任を持って使える」のは全然違う んですよね。特にSIer界隈(公共・金融・製造系)は、「便利だからって何でもやっていいわけじゃない」文化が染み付いているので、その視点でまとめてみました。
「AWS実務 × ClaudeCode」の記事がまだほとんどないので、ちょっと気合い入れて書きます。長いです、ごめんなさい。
🎯 こんな人に読んでほしい
- ClaudeCodeを「なんとなく」使っていて、業務適用に踏み出せていない人
- AWSインフラを触るエンジニアで、AI活用の判断基準が欲しい人
- SIer出身でガバナンス・セキュリティを気にしがちな人(仲間!)
- 「AIに本番触らせていいの?」と上司に聞かれて困っている人
💡 要点サマリー(忙しい人向け)
- ✅ ClaudeCodeが得意なのは「読んで・整理して・たたき台を出す」
- ✅ AWS CLIコマンドの生成・IaCのレビュー・ドキュメント整備は爆速になる
- ❌ 本番へのaws cliコマンド直実行は絶対に任せてはいけない
- ❌ アクセスキーや秘密情報をコンテキストに含めてはいけない
- 🔑 「提案させて人間がレビューして実行」の三段構えが最強
- 🔑 プロンプトの設計がそのまま品質に直結する
1. ClaudeCodeとAWS、何が嬉しいのか
正直に言いますね。ClaudeCodeを初めてAWS業務で使ったとき、私は 「CLIコマンドを教えてもらう便利なGoogle」 くらいにしか思っていませんでした。
それが甘かったです。
ClaudeCodeはAWS関連作業において、以下の役割を同時にこなせます。
| 役割 | 具体的な仕事 | 活用度 |
|---|---|---|
| コマンド生成係 |
aws ec2 describe-instances --filters ... を正確に出してくれる |
⭐⭐⭐⭐⭐ |
| IaCレビュアー | TerraformやCFnのセキュリティ・命名規則チェック | ⭐⭐⭐⭐⭐ |
| ドキュメント職人 | アーキテクチャ図の説明文・Runbook草稿 | ⭐⭐⭐⭐ |
| トラブル整理屋 | CloudWatchログの読解と原因候補の列挙 | ⭐⭐⭐⭐ |
| コスト分析助手 | Cost Explorerの数字を読んで削減案を提案 | ⭐⭐⭐ |
| 自動化スクリプト作家 | Python/Bashでのリソース棚卸スクリプト | ⭐⭐⭐⭐ |
「調べる・整理する・たたき台を出す」ところが異様に強いです。ここを理解するだけで使い方が変わります。
2. やっていいこと:ここは積極的に任せよう
2-1. AWS CLIコマンドの生成
「あ〜このフィルタオプション何だっけ」が瞬殺されます。
# ✅ こういうプロンプトを投げると...
# 「ap-northeast-1の、タグにEnv=productionがついている、
# 停止中のEC2インスタンス一覧をIDとNameタグ付きで取得したい」
aws ec2 describe-instances \
--region ap-northeast-1 \
--filters \
"Name=tag:Env,Values=production" \
"Name=instance-state-name,Values=stopped" \
--query 'Reservations[*].Instances[*].{ID:InstanceId,Name:Tags[?Key==`Name`]|[0].Value,State:State.Name}' \
--output table
※実行環境: AWS CLI v2、適切なIAM権限(ec2:DescribeInstances)が必要
こういうクエリ構文、毎回ドキュメント引いてたんですよね……。ClaudeCodeなら日本語の要件から一発で出ます。ただし実行前に必ず自分の目でレビューすること。これは絶対。お兄さんとの約束だぞ!
2-2. Terraformコードのレビューと修正提案
# ❌ こんなセキュリティグループ、レビューしてもらうと...
resource "aws_security_group" "bad_example" {
name = "web-sg"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"] # ← ClaudeCodeが即指摘してくれる
}
}
プロンプト例:
以下のTerraformコードをAWSセキュリティのベストプラクティス視点でレビューしてください。
問題点を重要度(Critical/High/Medium/Low)付きで列挙し、修正案のコードも示してください。
[コードをここに貼る]
このように、CloudeCodeでのレビューをチーム内のPRレビューの前工程として使うとレビュー品質が底上げされます。SIerあるあるの「レビューが形骸化してる」問題に効きます。
2-3. CloudWatchログの読解
長大なエラーログをそのまま貼り付けて「このエラーの原因候補と調査手順を教えて」は普通に使えます。
# ✅ プロンプトパターン
以下はECSタスクのCloudWatchログです(本番環境のため、IPアドレスはマスクしています)。
エラーの根本原因の候補を3つ、それぞれの確認方法と合わせて教えてください。
[ログをここに貼る(※機密情報は必ず除去・マスク!)]
ログを貼る前の機密情報マスク、絶対に忘れずに。
2-4. リソース棚卸スクリプトの生成
# ✅ ClaudeCodeに生成させたスクリプト(実行環境: Python 3.11, boto3)
# 「全リージョンのEC2インスタンスをCSVで出力するスクリプト」
import boto3
import csv
import sys
def get_all_regions():
ec2 = boto3.client('ec2', region_name='us-east-1')
response = ec2.describe_regions(AllRegions=False)
return [r['RegionName'] for r in response['Regions']]
def get_instances(region):
ec2 = boto3.client('ec2', region_name=region)
instances = []
paginator = ec2.get_paginator('describe_instances')
for page in paginator.paginate():
for reservation in page['Reservations']:
for instance in reservation['Instances']:
name = next(
(tag['Value'] for tag in instance.get('Tags', []) if tag['Key'] == 'Name'),
'N/A'
)
instances.append({
'Region': region,
'InstanceId': instance['InstanceId'],
'Name': name,
'Type': instance['InstanceType'],
'State': instance['State']['Name'],
'LaunchTime': str(instance['LaunchTime']),
})
return instances
def main():
writer = csv.DictWriter(
sys.stdout,
fieldnames=['Region', 'InstanceId', 'Name', 'Type', 'State', 'LaunchTime']
)
writer.writeheader()
for region in get_all_regions():
for instance in get_instances(region):
writer.writerow(instance)
if __name__ == '__main__':
main()
# 実行方法(読み取り権限のIAMロール/プロファイルで)
pip install boto3
python ec2_inventory.py > ec2_list.csv
こういうボイラープレート、ClaudeCodeに「こんな感じのスクリプト作って」で出してもらって、レビューして使うことも可能です。これだけで棚卸作業の工数が体感3分の1になりました。
3. やっていけないこと:ここだけは死守する
さて、ここが本番。SIer出身の本領発揮です。
3-1. 🚫 本番環境への直接操作を任せる
ClaudeCode(特にエージェントモード)は、設定次第でAWS CLIを自律実行できてしまいます。
❌ 絶対にやってはいけないプロンプト例
「本番のRDSのスナップショットを全部削除して、古いものから20個まで残して整理して」
→ ClaudeCodeが aws rds delete-db-snapshot を連打する可能性があります
「提案させる」と「実行させる」は別物です。本番環境への変更操作は、ClaudeCodeにコマンドを生成させて、人間が内容を確認してから実行する、というフローを必ず守ってください。
金融・公共系の現場では特に、変更管理台帳への記録や承認フローが求められます。AIが自律実行した変更はそのプロセスをすっ飛ばすことになるので、ガバナンス的にアウトです。
3-2. 🚫 秘密情報をコンテキストに含める
# ❌ 絶対やってはいけない例
# こんな内容をClaudeCodeのチャットに貼らない!
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# DBの接続情報をプロンプトに含めない
# DATABASE_URL=postgresql://admin:P@ssw0rd!@prod-db.xxxx.ap-northeast-1.rds.amazonaws.com/mydb
これ、やりがちなんですよね。「エラーの原因調べてほしくて、接続文字列ごと貼っちゃった」みたいな。
ClaudeCodeに投げるコンテキストは、Anthropicのサーバーに送信されるという認識を常に持ってください。機密情報は仮の値に置き換えるか、変数名だけ見せて中身は伏せる。
3-3. 🚫 生成されたIAMポリシーをノーレビューで使う
// ❌ ClaudeCodeが出したポリシーをそのまま適用しない
// 「S3にアクセスしたい」と言ったら、こういうの出してくる可能性がある
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*", // ← ワイルドカード!
"Resource": "*" // ← 全バケット!
}
]
}
ClaudeCodeは「動くポリシー」は出してくれますが、「最小権限のポリシー」を自動で考慮してくれるとは限りません。プロンプトで明示的に「最小権限原則に従って」と指定しても、レビューは必須です。
3-4. 🚫 出力結果を「正しい」と思い込む
これが一番問題となる部分です。ClaudeCodeは自信満々に間違えます。
私がやらかしかけた例:
私:「この CloudFormation テンプレートの Fn::GetAtt の書き方合ってる?」
ClaudeCode:「はい、問題ありません!` Fn::GetAtt: [MyBucket, WebsiteURL]` は正しい構文です」
実際:そのリソースタイプではWebsiteURLというAttributeは存在しない
(S3バケットのWebsiteURL取得はバケットのプロパティ設定が別途必要)
※このやりとりは説明用のフィクションです。類似の事象は業界全体でよく報告されています
AWSのリソース仕様は細かいので、公式ドキュメントと照合する習慣は崩さないでください。ClaudeCodeはたたき台を出す係、最終確認は人間です。
特に、AWS公式のMCPサーバと連携させたとしても、極力実機(テスト環境等)で実際に試すことを推奨します。
4. SIer視点で考える「導入判断フレームワーク」
「うちの現場でClaudeCode使っていいの?」を判断するための簡易フレームワークを作りました。
ClaudeCode適用可否チェックリスト
【前提条件】
□ 利用規約・データ取扱いポリシーを確認済み
□ 社内のAI利用ガイドラインに抵触しない
□ 顧客との契約上、ツール利用の制限がない
【用途判定】
□ 操作対象は本番環境か?
→ YES: コマンド生成のみ。実行は人間が行う
→ NO: 開発・検証環境であればより自由に使える
□ コンテキストに機密情報は含まれるか?
→ YES: マスク・除去してから使用。含められないなら用途を変える
→ NO: 問題なし
□ 生成物を無確認で本番適用するか?
→ YES: NG。必ずレビューフローを挟む
→ NO: 問題なし
これをチーム内のAI活用ガイドラインに組み込む形で使っています。
5. 実際の業務フロー:「提案 → レビュー → 実行」の三段構え
私が今使っているフローを図解(テキスト版)すると、こんな感じです:
[要件・課題]
↓
[ClaudeCode に「提案させる」]
- コマンド生成
- コードのたたき台
- 調査候補の列挙
↓
[人間がレビュー]
- 公式ドキュメントと照合
- セキュリティチェック
- ビジネスロジックの妥当性確認
↓
[人間が実行 or 承認フローへ]
- 変更管理記録
- 本番適用
このフローを守れば、ClaudeCodeは「作業を爆速にする道具」として機能します。守らないと、 「責任の所在が不明なまま本番に謎の変更が入る道具」 になります。
どっちで使うかは、エンジニアの判断次第です。
まとめ
- ✅ コマンド生成・IaCレビュー・ログ読解・スクリプト生成 は積極的に活用する
- ✅ プロンプトに「最小権限で」「セキュリティベストプラクティス視点で」を明示すると品質が上がる
- ❌ 本番環境への自律実行・秘密情報の入力・生成物のノーレビュー適用は絶対NG
- 🔑 「提案させて・人間がレビューして・人間が実行する」三段構えが業務適用の基本
- 🔑 SIer現場はガバナンス・変更管理との整合性が必須。AIが変更管理をすっ飛ばさない設計を
ClaudeCodeは魔法ではなく、使い方次第で業務を変えられる道具です。SIer出身の慎重さ(時に過剰な慎重さ)は、AI活用においては強みになります。「本当に大丈夫?」と確認する習慣、大事にしていきましょう。
次回は「ClaudeCode × Terraform ― IaCレビューを自動化してPRレビューの品質を3倍にした話」を書く予定です。お楽しみに!
参考リンク
- Claude Code 公式ドキュメント
- AWS CLI コマンドリファレンス
- AWS IAM ベストプラクティス
- Terraform AWS Provider ドキュメント
- AWS セキュリティのベストプラクティス
最後まで読んでいただきありがとうございます!「保存しておきたい」「参考になった」と思ったらLGTMとストックをお願いします!
コメントでの質問や「うちの現場ではこう使ってる」という情報共有も大歓迎です。SIer × AIの実践知を一緒に積み上げていきましょう 🙌