Skip to content

ComputeNodeGroup ​

The ComputeNodeGroup resource allows you to manage AWS PCS ComputeNodeGroups for your computing needs, enabling you to configure clusters of compute nodes effectively.

Minimal Example ​

Create a basic ComputeNodeGroup with the required properties and a couple of optional settings.

ts
import AWS from "alchemy/aws/control";

const computeNodeGroup = await AWS.PCS.ComputeNodeGroup("basicComputeNodeGroup", {
  ClusterId: "pcs-cluster-abc123",
  ScalingConfiguration: {
    DesiredSize: 2,
    MinSize: 1,
    MaxSize: 5
  },
  InstanceConfigs: [
    {
      InstanceType: "c5.large",
      ImageId: "ami-0abcd1234efgh5678"
    }
  ],
  SubnetIds: ["10.0.1.0/24", "10.0.2.0/24"],
  IamInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyInstanceProfile"
});

Advanced Configuration ​

Configure a ComputeNodeGroup with additional settings such as spot options and custom launch template.

ts
const advancedComputeNodeGroup = await AWS.PCS.ComputeNodeGroup("advancedComputeNodeGroup", {
  ClusterId: "pcs-cluster-xyz789",
  SpotOptions: {
    AllocationStrategy: "lowest-price",
    MaxPrice: "0.05"
  },
  ScalingConfiguration: {
    DesiredSize: 3,
    MinSize: 2,
    MaxSize: 6
  },
  InstanceConfigs: [
    {
      InstanceType: "c5.2xlarge",
      ImageId: "ami-0abcd1234efgh5678"
    }
  ],
  CustomLaunchTemplate: {
    LaunchTemplateId: "lt-0abcdef1234567890",
    Version: "$Latest"
  },
  SubnetIds: ["10.0.3.0/24", "10.0.4.0/24"],
  IamInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyInstanceProfile"
});

Tagging and Resource Management ​

Create a ComputeNodeGroup with tags for better resource management and identification.

ts
const taggedComputeNodeGroup = await AWS.PCS.ComputeNodeGroup("taggedComputeNodeGroup", {
  ClusterId: "pcs-cluster-tagged123",
  ScalingConfiguration: {
    DesiredSize: 4,
    MinSize: 2,
    MaxSize: 8
  },
  InstanceConfigs: [
    {
      InstanceType: "m5.large",
      ImageId: "ami-0abcd1234efgh5678"
    }
  ],
  SubnetIds: ["10.0.5.0/24", "10.0.6.0/24"],
  IamInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyInstanceProfile",
  Tags: {
    Environment: "Production",
    Team: "DataScience"
  }
});

Adoption of Existing Resources ​

Adopt an existing ComputeNodeGroup resource instead of failing if it already exists.

ts
const existingComputeNodeGroup = await AWS.PCS.ComputeNodeGroup("existingComputeNodeGroup", {
  ClusterId: "pcs-cluster-exists123",
  ScalingConfiguration: {
    DesiredSize: 2,
    MinSize: 1,
    MaxSize: 4
  },
  InstanceConfigs: [
    {
      InstanceType: "t3.medium",
      ImageId: "ami-0abcd1234efgh5678"
    }
  ],
  SubnetIds: ["10.0.7.0/24"],
  IamInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyInstanceProfile",
  adopt: true
});