Skip to content

VolumeAttachment ​

The VolumeAttachment resource lets you manage the attachment of Amazon EC2 volumes to instances. For more detailed information, you can refer to the AWS EC2 VolumeAttachments documentation.

Minimal Example ​

Create a basic volume attachment by specifying the required properties: VolumeId and InstanceId. Optionally, you can also specify the Device to be used.

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

const volumeAttachment = await AWS.EC2.VolumeAttachment("myVolumeAttachment", {
  VolumeId: "vol-0abcd1234efgh5678", // Replace with your actual volume ID
  InstanceId: "i-0abcd1234efgh5678", // Replace with your actual instance ID
  Device: "/dev/sdf" // Optional device name
});

Advanced Configuration ​

In addition to the basic properties, you can enable the adoption of an existing resource by setting the adopt property to true. This is useful when you want to attach a volume that already exists.

ts
const adoptedVolumeAttachment = await AWS.EC2.VolumeAttachment("adoptedVolumeAttachment", {
  VolumeId: "vol-0abcd1234efgh5678",
  InstanceId: "i-0abcd1234efgh5678",
  Device: "/dev/sdg", // Optional device name
  adopt: true // Enable adoption of existing resource
});

Error Handling Example ​

Handle potential errors by wrapping the resource creation in a try-catch block to manage exceptions gracefully.

ts
try {
  const errorHandledVolumeAttachment = await AWS.EC2.VolumeAttachment("errorHandledVolumeAttachment", {
    VolumeId: "vol-0abcd1234efgh5678",
    InstanceId: "i-0abcd1234efgh5678",
    Device: "/dev/sdh"
  });
} catch (error) {
  console.error("Failed to attach volume:", error);
}

Multiple Attachments Example ​

You can create multiple volume attachments for different instances by repeating the resource creation process with different parameters.

ts
const volumeAttachment1 = await AWS.EC2.VolumeAttachment("volumeAttachment1", {
  VolumeId: "vol-0abcd1234efgh5678",
  InstanceId: "i-0abcd1234efgh5678",
  Device: "/dev/sdi"
});

const volumeAttachment2 = await AWS.EC2.VolumeAttachment("volumeAttachment2", {
  VolumeId: "vol-0abcd1234efgh5678",
  InstanceId: "i-1abcd2345efgh6789",
  Device: "/dev/sdj"
});