Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CLI skeletonのススメ / An Encouragement of CLI skel...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
miztch
June 12, 2025
Programming
2
94
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
CSC307 Lecture 01
javiergs
PRO
0
690
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
220
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
210
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
140
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
CSC307 Lecture 04
javiergs
PRO
0
660
Data-Centric Kaggle
isax1015
2
780
2026年 エンジニアリング自己学習法
yumechi
0
140
AI & Enginnering
codelynx
0
120
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
Featured
See All Featured
Side Projects
sachag
455
43k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.6k
Between Models and Reality
mayunak
1
190
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
120
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
ラッコキーワード サービス紹介資料
rakko
1
2.3M
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
GitHub's CSS Performance
jonrohan
1032
470k
Design in an AI World
tapps
0
140
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Accessibility Awareness
sabderemane
0
55
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
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!