この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWS ParallelCluster のクラスターのコンフィグで複数の IAM ポリシーをアタッチの設定する記述例を紹介します。
困っていた内容
ヘッドノード、コンピュートノードに任意の IAM ポリシーを複数設定したい場合、ParallelCluster のコンフィグにはどのように記述すればよいのでしょうか?
ユーザーガイドを確認しても IAM ポリシーを複数指定する記述方法がよくわかりません。
確認結果
AdditionalIamPolicies:
配下に同じインデントで- Policy:
を追記すれば問題ありません。
AWS マネージドポリシー、カスタマー管理(自作の IAM ポリシー)ともに同じ記述で指定できます。
Iam:
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
- Policy: arn:aws:iam::123456789012:policy/cost-tracking-policy-for-pcluster
クラスター作成時に生成された IAM ロールの内容から、クラスターのコンフィグして指定した IAM ポリシーがアタッチされていることを確認できます。
検証環境
AWS ParallelCluster のバージョンは3.5.1
を使用しています。
やってみた
複数の IAM ポリシーをヘッドノードと、コンピュートノードにアタッチする ParallelCluster のクラスターのコンフィグを作成しました。
- AWS マネージドポリシーのアタッチのサンプルとして
AmazonSSMManagedInstanceCore
を指定 - 自作の IAM ポリシーのアタッチサンプルとして
cost-tracking-policy-for-pcluster
を指定
sample.yaml
Region: ap-northeast-1
Image:
Os: ubuntu2004
Tags:
- Key: Name
Value: cost-tracking-cluster-with-slurm-accounting
# ----------------------------------------------------------------
# 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
- Policy: arn:aws:iam::123456789012:policy/cost-tracking-policy-for-pcluster
S3Access:
- BucketName: hpc-dev-postinstall-files
EnableWriteAccess: false
# ----------------------------------------------------------------
# Compute Node Settings
# ----------------------------------------------------------------
Scheduling:
Scheduler: slurm
SlurmSettings:
ScaledownIdletime: 5
SlurmQueues:
# ------ Compute 1 ------
- Name: queue1
ComputeResources:
- Name: queue1
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
Iam:
AdditionalIamPolicies:
- Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
- Policy: arn:aws:iam::123456789012:policy/cost-tracking-policy-for-pcluster
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
IAM ロールを確認してみる
クラスターのコンフィグから ParallelCluster のクラスター環境をデプロイしました。作成された IAM ロールの設定値を確認してみます。
ヘッドノードの IAM ロール確認
クラスターのコンフィグで指定した IAM ポリシーがアタッチされていることが確認できました。
AmazonSSMManagedInstanceCore
ポリシーがアタッチcost-tracking-policy-for-pcluster
ポリシーがアタッチ
コンピュートノードの IAM ロール確認
コンピュートノードの IAM ロールもヘッドノードの IAM ロールと同様に指定したポリシーがアタッチされています。
AmazonSSMManagedInstanceCore
ポリシーがアタッチcost-tracking-policy-for-pcluster
ポリシーがアタッチ
おわりに
過去に複数の IAM ポリシーをアタッチしてあるクラスターのコンフィグがすぐに見つからなく、ドキュメントを確認してみたのですが書式がいまいちわかりませんでした。設定方法のサンプルとして紹介しました。