Skip to content
GitHubXDiscord

Volume

The Volume resource allows you to create and manage AWS EC2 Volumes for your instances. These volumes provide persistent storage for your AWS EC2 instances.

Create a basic EC2 volume in a specified availability zone with a size and type.

import AWS from "alchemy/aws/control";
const ec2Volume = await AWS.EC2.Volume("myVolume", {
AvailabilityZone: "us-east-1a",
Size: 20, // Size in GiB
VolumeType: "gp2" // General Purpose SSD
});

Configure an EC2 volume with encryption, multi-attach enabled, and a specific snapshot ID.

const secureEc2Volume = await AWS.EC2.Volume("secureVolume", {
AvailabilityZone: "us-west-2b",
Size: 50,
VolumeType: "io1", // Provisioned IOPS SSD
Iops: 1000, // IOPS for the volume
Encrypted: true,
KmsKeyId: "arn:aws:kms:us-west-2:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef",
MultiAttachEnabled: true,
SnapshotId: "snap-0abcd1234efgh5678" // Example snapshot ID
});

Create an EC2 volume that resides in an AWS Outpost.

const outpostVolume = await AWS.EC2.Volume("outpostVolume", {
AvailabilityZone: "us-east-1a",
Size: 100,
VolumeType: "st1", // Throughput Optimized HDD
OutpostArn: "arn:aws:outposts:us-east-1:123456789012:outpost/op-0abcde1234567890"
});

Create an EC2 volume and assign tags for better resource management.

const taggedEc2Volume = await AWS.EC2.Volume("taggedVolume", {
AvailabilityZone: "us-east-1a",
Size: 80,
VolumeType: "gp2",
Tags: [
{ Key: "Environment", Value: "Production" },
{ Key: "Project", Value: "MyApp" }
]
});

Create an EC2 volume with automatic I/O enabled.

const autoIoVolume = await AWS.EC2.Volume("autoIoVolume", {
AvailabilityZone: "us-east-1a",
Size: 30,
VolumeType: "gp3",
AutoEnableIO: true
});