AWS ParallelCluster のクラスター単位でコスト配分タグを設定できるか検証する機会がありました。タグを付与するためのクラスターのコンフィグを設定を紹介します。
検証環境
ParallelCluster 3.5.0 を用いて検証しています。
やってみた
ParalLeclCluster のコンフィグからタグ設定の箇所を抜粋しました。設定は以下の様になります。
Tags:
セクション内にKey
とValue
を記述する- 配列で定義するため
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 アカウント場合は以下のリンクをご確認ください。(要ポータルサイトログイン)