AWS ParallelCluster クラスター単位でコスト配分タグを付与するコンフィグ設定

2023.03.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS ParallelCluster のクラスター単位でコスト配分タグを設定できるか検証する機会がありました。タグを付与するためのクラスターのコンフィグを設定を紹介します。

検証環境

ParallelCluster 3.5.0 を用いて検証しています。

やってみた

ParalLeclCluster のコンフィグからタグ設定の箇所を抜粋しました。設定は以下の様になります。

  • Tags:セクション内にKeyValueを記述する
  • 配列で定義するためKey:の前には-(ハイフン)が必要ですけどValue:の前には不要です
  • Tags section - AWS ParallelCluster

test-tag-cluster.yaml抜粋

Region: ap-northeast-1
Image:
  Os: ubuntu2004
Tags:
  - Key: Name
    Value: TestTagCluster
  - Key: "CostAllocation"
    Value: "Project-A"

コンフィグ全文は長いため折りたたみしています。

折りたたみ

test-tag-cluster.yaml

Region: ap-northeast-1
Image:
  Os: ubuntu2004
Tags:
  - Key: Name
    Value: TestTagCluster
  - Key: "CostAllocation"
    Value: "Project-A"
# ----------------------------------------------------------------
# Head Node Settings
# ----------------------------------------------------------------
HeadNode:
  InstanceType: t3.micro
  Networking:
    ElasticIp: false
    SubnetId: subnet-035be95eeaa091603
  Ssh:
    KeyName: sandbox-key
  LocalStorage:
    RootVolume:
      Size: 35
      Encrypted: true
      VolumeType: gp3
      Iops: 3000
      Throughput: 125
  Iam:
    AdditionalIamPolicies:
      - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
    S3Access:
      - BucketName: hpc-dev-postinstall-files
        EnableWriteAccess: false
# ----------------------------------------------------------------
# Compute Node Settings
# ----------------------------------------------------------------
Scheduling:
  Scheduler: slurm
  SlurmSettings:
    ScaledownIdletime: 5
  SlurmQueues:
    # ------ Compute 1 ------
    - Name: queue-1
      ComputeResources:
        - Name: multiaz-queue
          Instances:
            - InstanceType: c6i.large
          MinCount: 0
          MaxCount: 10
          DisableSimultaneousMultithreading: true
      ComputeSettings:
        LocalStorage:
          RootVolume:
            Size: 35
            Encrypted: true
            VolumeType: gp3
            Iops: 3000
            Throughput: 125
      CapacityType: SPOT
      AllocationStrategy: lowest-price
      Networking:
        SubnetIds:
          - subnet-035be95eeaa091603
        PlacementGroup:
          Enabled: true
          Id: my-partition-placement-groups
      # CustomActions:
      #   OnNodeConfigured:
      #     Script: s3://hpc-dev-postinstall-files/sample-ubuntu-docker/postinstall.sh
      Iam:
        AdditionalIamPolicies:
          - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
        S3Access:
          - BucketName: hpc-dev-postinstall-files
            EnableWriteAccess: false

# ----------------------------------------------------------------
# Shared Storage Settings
# ----------------------------------------------------------------
SharedStorage:
  - MountDir: /mnt/efs-1zone
    Name: efs-1zone
    StorageType: Efs
    EfsSettings:
      FileSystemId: fs-0f1158ade79354809
# ----------------------------------------------------------------
#  Other Settings
# ----------------------------------------------------------------
Monitoring:
  Logs:
    CloudWatch:
      Enabled: true
      RetentionInDays: 30
      DeletionPolicy: "Delete"
  Dashboards:
    CloudWatch:
      Enabled: false

クラスターを作成します。

$ pcluster create-cluster -n test-tag-cluster -c test-tag-cluster.yaml

クラスターに付与されたタグを確認してみる

ヘッドノード、コンピュートノードはもちろん、クラスターを構成するすべてのリソースにタグが付与されます。

ParallelCluster を利用するうえでは余り意識しませんが、コンピュートノードのステータスを管理している DynamoDB や、コストは発生しないセキュリティグループなどのさまざまなリソースがクラスター作成時に生成されています。

一部リソースのタグ付与状況を確認してみます。

Head Node

ヘッドノードのインスタンスからタグを確認できます。

Compute Node

ParallelCluster の利用費の大半がコンピュートノードの利用費(計算コスト)ではないでしょうか?タグが付与されていることを確認できました。

CloudWatch Logs

ヘッドノード、コンピュートノードのログは CloudWatch Logs へ保存されています。こちらもタグを確認できました。

DynamoDB

DyanamoDB ではコンピュートノードのステータスを管理されています。通常は DyanamoDB のテーブルを直接参照することはありませんがpclsuterコマンド経由で参照することはあります。こちらもタグを確認できました。

おわりに

Name タグは普段からご利用いただいているのではないかと思います。クラスター単位でコスト管理したい場合はTags:セクションに少し書き足すだけでお手軽に実現できます。

リセラー経由でお使いの AWS アカウント場合はコスト配分タグのKeyの値はリセラー側で指定されていることがあります。ご契約いただいているリセラーにご確認いただければよろしいかと思います。

弊社クラスメソッドメンバーズの AWS アカウント場合は以下のリンクをご確認ください。(要ポータルサイトログイン)

コスト配分タグを利用して、タグ毎の課金状況を確認する方法はありますか? – クラスメソッド株式会社