$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CLI skeletonのススメ / An Encouragement of CLI skel...
Search
miztch
June 12, 2025
Programming
2
92
CLI skeletonのススメ / An Encouragement of CLI skeleton
20250612 JAWS-UG CLI専門支部 #433 LT
miztch
June 12, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
TestingOsaka6_Ozono
o3
0
170
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
4
570
JETLS.jl ─ A New Language Server for Julia
abap34
1
420
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
250
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
750
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
130
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
120
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
140
愛される翻訳の秘訣
kishikawakatsumi
3
330
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.4k
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
410
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
110
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
61
Navigating Weather and Climate Data
rabernat
0
42
Believing is Seeing
oripsolob
0
8
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
47k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Design in an AI World
tapps
0
89
Are puppies a ranking factor?
jonoalderson
0
2.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
GitHub's CSS Performance
jonrohan
1032
470k
My Coaching Mixtape
mlcsv
0
6
Transcript
CLI skeletons のススメ 2025/06/12 JAWS-UG CLI専門支部 #433 miztch
🏢 kaonavi, inc. 👷 Infrastructure Engineer 💕 Lambda, EventBridge (Input
Transformer) 🖼 Museum / 🎹 DTM / 📚 Tsundoku / 🐱 Cats miztch @miztch @m1ztch
🤯 aws autoscaling create-auto-scaling-group $ aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name
"my-asg" \ --launch-template LaunchTemplateId="lt-12345678901234567",Version='$Latest' \ --min-size 2 --max-size 10 --desired-capacity 4 \ --default-cooldown 300 \ --health-check-type "ELB" --health-check-grace-period 300 \ --vpc-zone-identifier "subnet-12345678,subnet-87654321,subnet-11111111" \ --target-group-arns "arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/m y-targets/1234567890123456" \
• 指定可能なパラメータがこれでもかというぐらいに豊富 • 特に Create 系の Action は、必須のパラメータが多い ◦ 結果的にコマンドがとても長くなる
CLIあるある
• 宣言型な IaC tools でリソースを作成・管理することは今や一般的 ◦ Terraform, CDK, CloudFormation, Pulumi
• しかし、すべてを完全に管理しきれない状況は必ず起きる ◦ 宣言された状態と実リソースに Drift が発生する ▪ アプリケーションデプロイ → ECSのタスク定義変更 ▪ CodeDeploy の B/G deploy → AutoScaling グループ複製 ◦ Lifecycle が異なると Ignore するか別の仕組みで管理したい ▪ このリソースだけは CloudFormation で / CLI で 時は2025年
• Batch コンピューティング環境で利用する AMI を更新する ◦ ECS on EC2 /
ECS 最適化 AMIを利用 • Batch コンピューティング環境の配分戦略 (Allocation Strategy) ◦ オンデマンドインスタンスの場合、以下の2種類から選択 ▪ BEST_FIT ▪ BEST_FIT_PROGRESSIVE ◦ 更新対象環境の配分戦略はデフォルト値の BEST_FIT 事例 : Batch コンピューティング環境 Update
• 配分戦略によってコンピューティング環境の更新方法が異なる ◦ BEST_FIT : ▪ 起動テンプレートの新バージョンを作成 (AMI を変更) ▪
新規コンピューティング環境を作成 ▪ ジョブキューに登録して入れ替え ◦ BEST_FIT_PROGRESSIVE : ▪ 起動テンプレートの新バージョンを作成 (AMI を変更) ▪ 既存コンピューティング環境を更新 事例 : Batch コンピューティング環境 Update
• コンピューティング環境の入れ替えに create / delete が必要 ◦ 起動テンプレートの新バージョンを作成 ◦ 起動テンプレートを利用したコンピューティング環境を作成
◦ 作成したコンピューティング環境をジョブキューに関連付け ◦ 既存のコンピューティング環境をジョブキューから切り離し ◦ 切り離したコンピューティング環境を削除 • さらに、更新対象環境は諸事情で IaC で管理されていない 🤯 事例 : Batch コンピューティング環境 Update
• コンピューティング環境の入れ替えに create / delete が必要 ◦ aws ec2 create-launch-template-version
◦ aws batch create-compute-environment ◦ aws batch update-job-queue ◦ aws batch update-job-queue ◦ aws batch delete-compute-environment • IaC で管理されていないので、CLI でやるしかない 😰 ◦ create のアクションと向き合うことに 事例 : Batch コンピューティング環境 Update
• JSON 形式のファイルを生成するパラメータ ◦ 編集および入力できるすべてのパラメータが含まれている • 加工して --cli-input-json | --cli-input-yaml
の入力ファ イルとして利用する --generate-cli-skeleton https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/create-compute-environment.html
--generate-cli-skeleton & --cli-input-json # skeleton を出力 $ aws batch create-compute-environment
--generate-cli-skeleton > input.json $ cat input.json { "computeEnvironmentName": "", "type": "MANAGED", "state": "ENABLED", "unmanagedvCpus": 0, "computeResources": { "type": "EC2", "allocationStrategy": "BEST_FIT", … } # skeletonに必要なパラメータを埋めて、--cli-input-json で入力値として利用する $ aws batch create-compute-environment --cli-input-json file://input_filled.json
• --generate-cli-skeleton yaml-input ◦ skeleton を yaml 形式で出力 ◦ 実行時には
--cli-input-yaml でファイルを指定する ◦ コメントにパラメータの説明があり、編集しやすい 😃 --cli-input-yaml がオススメ
• バージョン管理しておくことで再利用しやすい • レビューがしやすい • (YAMLなら)コメントも付けられ、パラメータの意図が分かりやすい チームにもオススメ
• AWS CLI の公式ドキュメント を読むと面白い ◦ https://docs.aws.amazon.com/cli/latest/userguide ◦ skeleton 以外の便利機能
/ 面白機能?もあるぞ ▪ alias • .gitconfig ライクにエイリアスを設定可能 ▪ wizard • 対話的にリソースを作成(一部リソースのみサポート) ◦ DynamoDB, Lambda, IAM Role, Events Rule appendix : Official Docs
Thank you!