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
miztch
June 12, 2025
Programming
98
2
Share
CLI skeletonのススメ / An Encouragement of CLI skeleton
20250612 JAWS-UG CLI専門支部 #433 LT
miztch
June 12, 2025
Other Decks in Programming
See All in Programming
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
240
実践CRDT
tamadeveloper
0
440
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
230
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
320
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
170
3分でわかるatama plusのQA/about atama plus QA
atamaplus
0
130
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
580
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
220
How Swift's Type System Guides AI Agents
koher
0
210
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
3
520
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
9
5.5k
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
570
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
5.9k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
260
Docker and Python
trallard
47
3.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Darren the Foodie - Storyboard
khoart
PRO
3
3.2k
BBQ
matthewcrist
89
10k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
720
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.6k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
430
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
690
The Spectacular Lies of Maps
axbom
PRO
1
690
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
260
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!