Skip to content

NotebookInstanceLifecycleConfig ​

The NotebookInstanceLifecycleConfig resource allows you to manage the lifecycle configuration for AWS SageMaker Notebook Instances. This includes specifying scripts that run on instance creation and start. For more information, refer to the AWS SageMaker NotebookInstanceLifecycleConfigs documentation.

Minimal Example ​

Create a basic NotebookInstanceLifecycleConfig with a startup script that installs a package.

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

const lifecycleConfig = await AWS.SageMaker.NotebookInstanceLifecycleConfig("MyLifecycleConfig", {
  NotebookInstanceLifecycleConfigName: "MyNotebookLifecycleConfig",
  OnCreate: [{
    Content: Buffer.from(`
      #!/bin/bash
      sudo -u ec2-user -i <<'EOF'
      pip install numpy
      EOF
    `).toString('base64')
  }],
  OnStart: [{
    Content: Buffer.from(`
      #!/bin/bash
      sudo -u ec2-user -i <<'EOF'
      echo "Notebook started"
      EOF
    `).toString('base64')
  }]
});

Advanced Configuration ​

Configure a lifecycle with scripts that run on both creation and start, including custom logging.

ts
const advancedLifecycleConfig = await AWS.SageMaker.NotebookInstanceLifecycleConfig("AdvancedLifecycleConfig", {
  NotebookInstanceLifecycleConfigName: "AdvancedNotebookLifecycleConfig",
  OnCreate: [{
    Content: Buffer.from(`
      #!/bin/bash
      sudo -u ec2-user -i <<'EOF'
      pip install pandas
      echo "Installation complete" >> /home/ec2-user/lifecycle.log
      EOF
    `).toString('base64')
  }],
  OnStart: [{
    Content: Buffer.from(`
      #!/bin/bash
      sudo -u ec2-user -i <<'EOF'
      echo "Notebook instance has started" >> /home/ec2-user/lifecycle.log
      EOF
    `).toString('base64')
  }]
});

Custom Script for Instance Management ​

Create a lifecycle configuration that runs a custom script to manage instance resources.

ts
const resourceManagementConfig = await AWS.SageMaker.NotebookInstanceLifecycleConfig("ResourceManagementConfig", {
  NotebookInstanceLifecycleConfigName: "ResourceManagementLifecycleConfig",
  OnCreate: [{
    Content: Buffer.from(`
      #!/bin/bash
      sudo -u ec2-user -i <<'EOF'
      echo "Starting resource management tasks" >> /home/ec2-user/resource_management.log
      # Custom commands to manage resources
      EOF
    `).toString('base64')
  }],
  OnStart: [{
    Content: Buffer.from(`
      #!/bin/bash
      sudo -u ec2-user -i <<'EOF'
      echo "Resource checks initiated" >> /home/ec2-user/resource_management.log
      # Additional resource checks
      EOF
    `).toString('base64')
  }]
});