AWS ParallelCluster ヘッドノードとコンピュートノードの IAM ロールに複数の IAM ポリシーをアタッチするコンフィグの記述方法

AdditionalIamPoliciesセクションに記述するIAMポリシーの指定方法を紹介します。
2023.04.11

この記事は公開されてから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 ポリシーをアタッチしてあるクラスターのコンフィグがすぐに見つからなく、ドキュメントを確認してみたのですが書式がいまいちわかりませんでした。設定方法のサンプルとして紹介しました。