Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CLI skeletonのススメ / An Encouragement of CLI skel...

CLI skeletonのススメ / An Encouragement of CLI skeleton

20250612 JAWS-UG CLI専門支部 #433 LT

Avatar for miztch

miztch

June 12, 2025
Tweet

Other Decks in Programming

Transcript

  1. 🏢 kaonavi, inc. 👷 Infrastructure Engineer 💕 Lambda, EventBridge (Input

    Transformer) 🖼 Museum / 🎹 DTM / 📚 Tsundoku / 🐱 Cats miztch @miztch @m1ztch
  2. 🤯 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" \
  3. • 宣言型な IaC tools でリソースを作成・管理することは今や一般的 ◦ Terraform, CDK, CloudFormation, Pulumi

    • しかし、すべてを完全に管理しきれない状況は必ず起きる ◦ 宣言された状態と実リソースに Drift が発生する ▪ アプリケーションデプロイ → ECSのタスク定義変更 ▪ CodeDeploy の B/G deploy → AutoScaling グループ複製 ◦ Lifecycle が異なると Ignore するか別の仕組みで管理したい ▪ このリソースだけは CloudFormation で / CLI で 時は2025年
  4. • Batch コンピューティング環境で利用する AMI を更新する ◦ ECS on EC2 /

    ECS 最適化 AMIを利用 • Batch コンピューティング環境の配分戦略 (Allocation Strategy) ◦ オンデマンドインスタンスの場合、以下の2種類から選択 ▪ BEST_FIT ▪ BEST_FIT_PROGRESSIVE ◦ 更新対象環境の配分戦略はデフォルト値の BEST_FIT 事例 : Batch コンピューティング環境 Update
  5. • 配分戦略によってコンピューティング環境の更新方法が異なる ◦ BEST_FIT : ▪ 起動テンプレートの新バージョンを作成 (AMI を変更) ▪

    新規コンピューティング環境を作成 ▪ ジョブキューに登録して入れ替え ◦ BEST_FIT_PROGRESSIVE : ▪ 起動テンプレートの新バージョンを作成 (AMI を変更) ▪ 既存コンピューティング環境を更新 事例 : Batch コンピューティング環境 Update
  6. • コンピューティング環境の入れ替えに create / delete が必要 ◦ 起動テンプレートの新バージョンを作成 ◦ 起動テンプレートを利用したコンピューティング環境を作成

    ◦ 作成したコンピューティング環境をジョブキューに関連付け ◦ 既存のコンピューティング環境をジョブキューから切り離し ◦ 切り離したコンピューティング環境を削除 • さらに、更新対象環境は諸事情で IaC で管理されていない 🤯 事例 : Batch コンピューティング環境 Update
  7. • コンピューティング環境の入れ替えに 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
  8. • JSON 形式のファイルを生成するパラメータ ◦ 編集および入力できるすべてのパラメータが含まれている • 加工して --cli-input-json | --cli-input-yaml

    の入力ファ イルとして利用する --generate-cli-skeleton https://awscli.amazonaws.com/v2/documentation/api/latest/reference/batch/create-compute-environment.html
  9. --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
  10. • --generate-cli-skeleton yaml-input ◦ skeleton を yaml 形式で出力 ◦ 実行時には

    --cli-input-yaml でファイルを指定する ◦ コメントにパラメータの説明があり、編集しやすい 😃 --cli-input-yaml がオススメ
  11. • AWS CLI の公式ドキュメント を読むと面白い ◦ https://docs.aws.amazon.com/cli/latest/userguide ◦ skeleton 以外の便利機能

    / 面白機能?もあるぞ ▪ alias • .gitconfig ライクにエイリアスを設定可能 ▪ wizard • 対話的にリソースを作成(一部リソースのみサポート) ◦ DynamoDB, Lambda, IAM Role, Events Rule appendix : Official Docs