Skip to content

Stack ​

The Stack resource lets you manage AWS OpsWorks Stacks for deploying and managing applications in a flexible and scalable way.

Minimal Example ​

Create a basic OpsWorks stack with required properties and a few common optional configurations.

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

const basicOpsWorksStack = await AWS.OpsWorks.Stack("myBasicStack", {
  name: "MyFirstOpsWorksStack",
  serviceRoleArn: "arn:aws:iam::123456789012:role/MyOpsWorksServiceRole",
  defaultInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyOpsWorksInstanceProfile",
  defaultOs: "Amazon Linux 2",
  useCustomCookbooks: false
});

Advanced Configuration ​

Configure an OpsWorks stack with a custom VPC and enhanced settings.

ts
const advancedOpsWorksStack = await AWS.OpsWorks.Stack("myAdvancedStack", {
  name: "MyAdvancedOpsWorksStack",
  serviceRoleArn: "arn:aws:iam::123456789012:role/MyOpsWorksServiceRole",
  defaultInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyOpsWorksInstanceProfile",
  defaultOs: "Ubuntu 20.04",
  vpcId: "vpc-0abcd1234efgh5678",
  defaultAvailabilityZone: "us-west-2a",
  useOpsworksSecurityGroups: true,
  elasticIps: [{
    ip: "203.0.113.0"
  }],
  tags: [{
    key: "Environment",
    value: "Production"
  }]
});

Custom Chef Configuration ​

Set up a stack with custom Chef configuration for better control over deployment.

ts
const chefConfiguredStack = await AWS.OpsWorks.Stack("myChefConfiguredStack", {
  name: "MyChefConfiguredStack",
  serviceRoleArn: "arn:aws:iam::123456789012:role/MyOpsWorksServiceRole",
  defaultInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyOpsWorksInstanceProfile",
  chefConfiguration: {
    berkshelfVersion: "3.2.3",
    manageBerkshelf: true
  },
  customCookbooksSource: {
    type: "git",
    url: "https://github.com/my-org/my-cookbooks.git",
    revision: "main"
  }
});

Cloning an Existing Stack ​

Clone an existing OpsWorks stack with specific attributes and permissions.

ts
const clonedOpsWorksStack = await AWS.OpsWorks.Stack("myClonedStack", {
  name: "MyClonedOpsWorksStack",
  serviceRoleArn: "arn:aws:iam::123456789012:role/MyOpsWorksServiceRole",
  defaultInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyOpsWorksInstanceProfile",
  cloneAppIds: ["myExistingAppId"],
  clonePermissions: true,
  sourceStackId: "mySourceStackId"
});