Skip to content

Layer ​

The Layer resource lets you manage AWS OpsWorks Layers and their configuration settings for deploying and managing applications.

Minimal Example ​

Create a basic OpsWorks Layer with required properties and some common optional settings.

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

const opsWorksLayer = await AWS.OpsWorks.Layer("myAppLayer", {
  Name: "MyAppLayer",
  Shortname: "app-layer",
  StackId: "arn:aws:opsworks:us-east-1:123456789012:stack/1a2b3c4d-5678-90ab-cdef-EXAMPLE11111",
  AutoAssignElasticIps: true,
  AutoAssignPublicIps: false,
  EnableAutoHealing: true
});

Advanced Configuration ​

Configure an OpsWorks Layer with additional options like custom recipes and lifecycle event configurations.

ts
const advancedOpsWorksLayer = await AWS.OpsWorks.Layer("advancedAppLayer", {
  Name: "AdvancedAppLayer",
  Shortname: "adv-layer",
  StackId: "arn:aws:opsworks:us-east-1:123456789012:stack/1a2b3c4d-5678-90ab-cdef-EXAMPLE11111",
  AutoAssignElasticIps: true,
  AutoAssignPublicIps: true,
  EnableAutoHealing: true,
  CustomRecipes: {
    Setup: ["myCookbook::setup"],
    Deploy: ["myCookbook::deploy"],
    Shutdown: ["myCookbook::shutdown"]
  },
  LifecycleEventConfiguration: {
    Shutdown: {
      DelayUntilElbTargetsInService: false,
      ExecutionTimeout: 300,
      FailureTimeout: 300
    }
  }
});

Custom Instance Profile ​

Create a Layer that uses a custom instance profile for enhanced permissions.

ts
const customInstanceProfileLayer = await AWS.OpsWorks.Layer("customInstanceProfileLayer", {
  Name: "CustomInstanceProfileLayer",
  Shortname: "custom-ip-layer",
  StackId: "arn:aws:opsworks:us-east-1:123456789012:stack/1a2b3c4d-5678-90ab-cdef-EXAMPLE11111",
  AutoAssignElasticIps: false,
  AutoAssignPublicIps: true,
  EnableAutoHealing: true,
  CustomInstanceProfileArn: "arn:aws:iam::123456789012:instance-profile/MyCustomInstanceProfile"
});

Load-Based Auto Scaling ​

Implement load-based auto-scaling for your OpsWorks Layer to handle varying workloads.

ts
const loadBasedScalingLayer = await AWS.OpsWorks.Layer("scalableLayer", {
  Name: "ScalableLayer",
  Shortname: "scale-layer",
  StackId: "arn:aws:opsworks:us-east-1:123456789012:stack/1a2b3c4d-5678-90ab-cdef-EXAMPLE11111",
  AutoAssignElasticIps: true,
  EnableAutoHealing: true,
  LoadBasedAutoScaling: {
    DownScaling: {
      InstanceCount: 1,
      Thresholds: {
        CpuUtilization: 20,
        LoadAverage: 1.0
      }
    },
    UpScaling: {
      InstanceCount: 5,
      Thresholds: {
        CpuUtilization: 80,
        LoadAverage: 5.0
      }
    }
  }
});

These examples demonstrate how to utilize the AWS OpsWorks Layer resource effectively, showcasing minimal setups, advanced configurations, and tailored use cases for various application deployment needs.