Skip to content

Commit 0a3b2ac

Browse files
author
awstools
committed
feat(client-ec2): This release adds support for EBS local snapshots in AWS Dedicated Local Zones, which allows you to store snapshots of EBS volumes locally in Dedicated Local Zones.
1 parent 8ea87b4 commit 0a3b2ac

17 files changed

+396
-248
lines changed

clients/client-ec2/src/commands/CreateSnapshotCommand.ts

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,21 @@ export interface CreateSnapshotCommandOutput extends Snapshot, __MetadataBearer
3131
* <p>Creates a snapshot of an EBS volume and stores it in Amazon S3. You can use snapshots for
3232
* backups, to make copies of EBS volumes, and to save data before shutting down an
3333
* instance.</p>
34-
* <p>You can create snapshots of volumes in a Region and volumes on an Outpost. If you
35-
* create a snapshot of a volume in a Region, the snapshot must be stored in the same
36-
* Region as the volume. If you create a snapshot of a volume on an Outpost, the snapshot
37-
* can be stored on the same Outpost as the volume, or in the Region for that Outpost.</p>
34+
* <p>The location of the source EBS volume determines where you can create the snapshot.</p>
35+
* <ul>
36+
* <li>
37+
* <p>If the source volume is in a Region, you must create the snapshot in the same
38+
* Region as the volume.</p>
39+
* </li>
40+
* <li>
41+
* <p>If the source volume is in a Local Zone, you can create the snapshot in the same
42+
* Local Zone or in parent Amazon Web Services Region.</p>
43+
* </li>
44+
* <li>
45+
* <p>If the source volume is on an Outpost, you can create the snapshot on the same
46+
* Outpost or in its parent Amazon Web Services Region.</p>
47+
* </li>
48+
* </ul>
3849
* <p>When a snapshot is created, any Amazon Web Services Marketplace product codes that are associated with the
3950
* source volume are propagated to the snapshot.</p>
4051
* <p>You can take a snapshot of an attached volume that is in use. However, snapshots only
@@ -49,10 +60,9 @@ export interface CreateSnapshotCommandOutput extends Snapshot, __MetadataBearer
4960
* that you stop the instance before taking the snapshot.</p>
5061
* <p>Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that
5162
* are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes
52-
* and any associated snapshots always remain protected.</p>
53-
* <p>You can tag your snapshots during creation. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html">Tag your Amazon EC2
54-
* resources</a> in the <i>Amazon EC2 User Guide</i>.</p>
55-
* <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html">Amazon EBS</a> and <a href="https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html">Amazon EBS encryption</a> in the <i>Amazon EBS User Guide</i>.</p>
63+
* and any associated snapshots always remain protected. For more information,
64+
* <a href="https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html">Amazon EBS encryption</a>
65+
* in the <i>Amazon EBS User Guide</i>.</p>
5666
* @example
5767
* Use a bare-bones client and the command you need to make an API call.
5868
* ```javascript
@@ -74,6 +84,7 @@ export interface CreateSnapshotCommandOutput extends Snapshot, __MetadataBearer
7484
* ],
7585
* },
7686
* ],
87+
* Location: "regional" || "local",
7788
* DryRun: true || false,
7889
* };
7990
* const command = new CreateSnapshotCommand(input);
@@ -90,6 +101,7 @@ export interface CreateSnapshotCommandOutput extends Snapshot, __MetadataBearer
90101
* // StorageTier: "archive" || "standard",
91102
* // RestoreExpiryTime: new Date("TIMESTAMP"),
92103
* // SseType: "sse-ebs" || "sse-kms" || "none",
104+
* // AvailabilityZone: "STRING_VALUE",
93105
* // TransferType: "time-based" || "standard",
94106
* // CompletionDurationMinutes: Number("int"),
95107
* // CompletionTime: new Date("TIMESTAMP"),

clients/client-ec2/src/commands/CreateSnapshotsCommand.ts

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,26 @@ export interface CreateSnapshotsCommandInput extends CreateSnapshotsRequest {}
2828
export interface CreateSnapshotsCommandOutput extends CreateSnapshotsResult, __MetadataBearer {}
2929

3030
/**
31-
* <p>Creates crash-consistent snapshots of multiple EBS volumes and stores the data in S3.
32-
* Volumes are chosen by specifying an instance. Any attached volumes will produce one snapshot
33-
* each that is crash-consistent across the instance.</p>
34-
* <p>You can include all of the volumes currently attached to the instance, or you can exclude
35-
* the root volume or specific data (non-root) volumes from the multi-volume snapshot set.</p>
36-
* <p>You can create multi-volume snapshots of instances in a Region and instances on an
37-
* Outpost. If you create snapshots from an instance in a Region, the snapshots must be stored
38-
* in the same Region as the instance. If you create snapshots from an instance on an Outpost,
39-
* the snapshots can be stored on the same Outpost as the instance, or in the Region for that
40-
* Outpost.</p>
31+
* <p>Creates crash-consistent snapshots of multiple EBS volumes attached to an Amazon EC2 instance.
32+
* Volumes are chosen by specifying an instance. Each volume attached to the specified instance
33+
* will produce one snapshot that is crash-consistent across the instance. You can include all of
34+
* the volumes currently attached to the instance, or you can exclude the root volume or specific
35+
* data (non-root) volumes from the multi-volume snapshot set.</p>
36+
* <p>The location of the source instance determines where you can create the snapshots.</p>
37+
* <ul>
38+
* <li>
39+
* <p>If the source instance is in a Region, you must create the snapshots in the same
40+
* Region as the instance.</p>
41+
* </li>
42+
* <li>
43+
* <p>If the source instance is in a Local Zone, you can create the snapshots in the same
44+
* Local Zone or in parent Amazon Web Services Region.</p>
45+
* </li>
46+
* <li>
47+
* <p>If the source instance is on an Outpost, you can create the snapshots on the same
48+
* Outpost or in its parent Amazon Web Services Region.</p>
49+
* </li>
50+
* </ul>
4151
* @example
4252
* Use a bare-bones client and the command you need to make an API call.
4353
* ```javascript
@@ -67,6 +77,7 @@ export interface CreateSnapshotsCommandOutput extends CreateSnapshotsResult, __M
6777
* ],
6878
* DryRun: true || false,
6979
* CopyTagsFromSource: "volume",
80+
* Location: "regional" || "local",
7081
* };
7182
* const command = new CreateSnapshotsCommand(input);
7283
* const response = await client.send(command);
@@ -90,6 +101,7 @@ export interface CreateSnapshotsCommandOutput extends CreateSnapshotsResult, __M
90101
* // SnapshotId: "STRING_VALUE",
91102
* // OutpostArn: "STRING_VALUE",
92103
* // SseType: "sse-ebs" || "sse-kms" || "none",
104+
* // AvailabilityZone: "STRING_VALUE",
93105
* // },
94106
* // ],
95107
* // };

clients/client-ec2/src/commands/DeleteClientVpnRouteCommand.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { EC2ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../EC2Client";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { DeleteClientVpnRouteRequest } from "../models/models_2";
10-
import { DeleteClientVpnRouteResult } from "../models/models_3";
9+
import { DeleteClientVpnRouteRequest, DeleteClientVpnRouteResult } from "../models/models_3";
1110
import { de_DeleteClientVpnRouteCommand, se_DeleteClientVpnRouteCommand } from "../protocols/Aws_ec2";
1211

1312
/**

clients/client-ec2/src/commands/DescribeFleetHistoryCommand.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { EC2ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../EC2Client";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { DescribeFleetHistoryRequest, DescribeFleetHistoryResult } from "../models/models_3";
9+
import { DescribeFleetHistoryRequest } from "../models/models_3";
10+
import { DescribeFleetHistoryResult } from "../models/models_4";
1011
import { de_DescribeFleetHistoryCommand, se_DescribeFleetHistoryCommand } from "../protocols/Aws_ec2";
1112

1213
/**

clients/client-ec2/src/commands/DescribeSnapshotsCommand.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ export interface DescribeSnapshotsCommandOutput extends DescribeSnapshotsResult,
120120
* // StorageTier: "archive" || "standard",
121121
* // RestoreExpiryTime: new Date("TIMESTAMP"),
122122
* // SseType: "sse-ebs" || "sse-kms" || "none",
123+
* // AvailabilityZone: "STRING_VALUE",
123124
* // TransferType: "time-based" || "standard",
124125
* // CompletionDurationMinutes: Number("int"),
125126
* // CompletionTime: new Date("TIMESTAMP"),

clients/client-ec2/src/commands/EnableAddressTransferCommand.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { EC2ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../EC2Client";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { EnableAddressTransferRequest, EnableAddressTransferResult } from "../models/models_5";
9+
import { EnableAddressTransferRequest } from "../models/models_5";
10+
import { EnableAddressTransferResult } from "../models/models_6";
1011
import { de_EnableAddressTransferCommand, se_EnableAddressTransferCommand } from "../protocols/Aws_ec2";
1112

1213
/**

clients/client-ec2/src/commands/ModifyInstanceEventWindowCommand.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { EC2ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../EC2Client";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { ModifyInstanceEventWindowRequest } from "../models/models_6";
10-
import { ModifyInstanceEventWindowResult } from "../models/models_7";
9+
import { ModifyInstanceEventWindowRequest, ModifyInstanceEventWindowResult } from "../models/models_7";
1110
import { de_ModifyInstanceEventWindowCommand, se_ModifyInstanceEventWindowCommand } from "../protocols/Aws_ec2";
1211

1312
/**

clients/client-ec2/src/commands/UnlockSnapshotCommand.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { EC2ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../EC2Client";
88
import { commonParams } from "../endpoint/EndpointParameters";
9-
import { UnlockSnapshotRequest } from "../models/models_7";
10-
import { UnlockSnapshotResult } from "../models/models_8";
9+
import { UnlockSnapshotRequest, UnlockSnapshotResult } from "../models/models_8";
1110
import { de_UnlockSnapshotCommand, se_UnlockSnapshotCommand } from "../protocols/Aws_ec2";
1211

1312
/**

clients/client-ec2/src/models/models_2.ts

Lines changed: 86 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3012,6 +3012,20 @@ export interface CreateSecurityGroupResult {
30123012
SecurityGroupArn?: string | undefined;
30133013
}
30143014

3015+
/**
3016+
* @public
3017+
* @enum
3018+
*/
3019+
export const SnapshotLocationEnum = {
3020+
LOCAL: "local",
3021+
REGIONAL: "regional",
3022+
} as const;
3023+
3024+
/**
3025+
* @public
3026+
*/
3027+
export type SnapshotLocationEnum = (typeof SnapshotLocationEnum)[keyof typeof SnapshotLocationEnum];
3028+
30153029
/**
30163030
* @public
30173031
*/
@@ -3023,22 +3037,17 @@ export interface CreateSnapshotRequest {
30233037
Description?: string | undefined;
30243038

30253039
/**
3026-
* <p>The Amazon Resource Name (ARN) of the Outpost on which to create a local
3027-
* snapshot.</p>
3040+
* <note>
3041+
* <p>Only supported for volumes on Outposts. If the source volume is not on an Outpost,
3042+
* omit this parameter.</p>
3043+
* </note>
30283044
* <ul>
30293045
* <li>
3030-
* <p>To create a snapshot of a volume in a Region, omit this parameter. The snapshot
3031-
* is created in the same Region as the volume.</p>
3046+
* <p>To create the snapshot on the same Outpost as the source volume, specify the
3047+
* ARN of that Outpost. The snapshot must be created on the same Outpost as the volume.</p>
30323048
* </li>
30333049
* <li>
3034-
* <p>To create a snapshot of a volume on an Outpost and store the snapshot in the
3035-
* Region, omit this parameter. The snapshot is created in the Region for the
3036-
* Outpost.</p>
3037-
* </li>
3038-
* <li>
3039-
* <p>To create a snapshot of a volume on an Outpost and store the snapshot on an
3040-
* Outpost, specify the ARN of the destination Outpost. The snapshot must be created on
3041-
* the same Outpost as the volume.</p>
3050+
* <p>To create the snapshot in the parent Region of the Outpost, omit this parameter.</p>
30423051
* </li>
30433052
* </ul>
30443053
* <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-outposts.html#create-snapshot">Create local snapshots from volumes on an Outpost</a> in the <i>Amazon EBS User Guide</i>.</p>
@@ -3058,6 +3067,27 @@ export interface CreateSnapshotRequest {
30583067
*/
30593068
TagSpecifications?: TagSpecification[] | undefined;
30603069

3070+
/**
3071+
* <note>
3072+
* <p>Only supported for volumes in Local Zones. If the source volume is not in a Local Zone,
3073+
* omit this parameter.</p>
3074+
* </note>
3075+
* <ul>
3076+
* <li>
3077+
* <p>To create a local snapshot in the same Local Zone as the source volume, specify
3078+
* <code>local</code>.</p>
3079+
* </li>
3080+
* <li>
3081+
* <p>To create a regional snapshot in the parent Region of the Local Zone, specify
3082+
* <code>regional</code> or omit this parameter.</p>
3083+
* </li>
3084+
* </ul>
3085+
* <p>Default value: <code>regional</code>
3086+
* </p>
3087+
* @public
3088+
*/
3089+
Location?: SnapshotLocationEnum | undefined;
3090+
30613091
/**
30623092
* <p>Checks whether you have the required permissions for the action, without actually making the request,
30633093
* and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>.
@@ -3174,6 +3204,13 @@ export interface Snapshot {
31743204
*/
31753205
SseType?: SSEType | undefined;
31763206

3207+
/**
3208+
* <p>The Availability Zone or Local Zone of the snapshot. For example, <code>us-west-1a</code>
3209+
* (Availability Zone) or <code>us-west-2-lax-1a</code> (Local Zone).</p>
3210+
* @public
3211+
*/
3212+
AvailabilityZone?: string | undefined;
3213+
31773214
/**
31783215
* <note>
31793216
* <p>Only for snapshot copies.</p>
@@ -3353,27 +3390,21 @@ export interface CreateSnapshotsRequest {
33533390
InstanceSpecification: InstanceSpecification | undefined;
33543391

33553392
/**
3356-
* <p>The Amazon Resource Name (ARN) of the Outpost on which to create the local
3357-
* snapshots.</p>
3393+
* <note>
3394+
* <p>Only supported for instances on Outposts. If the source instance is not on an Outpost,
3395+
* omit this parameter.</p>
3396+
* </note>
33583397
* <ul>
33593398
* <li>
3360-
* <p>To create snapshots from an instance in a Region, omit this parameter. The
3361-
* snapshots are created in the same Region as the instance.</p>
3362-
* </li>
3363-
* <li>
3364-
* <p>To create snapshots from an instance on an Outpost and store the snapshots
3365-
* in the Region, omit this parameter. The snapshots are created in the Region
3366-
* for the Outpost.</p>
3399+
* <p>To create the snapshots on the same Outpost as the source instance, specify the
3400+
* ARN of that Outpost. The snapshots must be created on the same Outpost as the instance.</p>
33673401
* </li>
33683402
* <li>
3369-
* <p>To create snapshots from an instance on an Outpost and store the snapshots
3370-
* on an Outpost, specify the ARN of the destination Outpost. The snapshots must
3371-
* be created on the same Outpost as the instance.</p>
3403+
* <p>To create the snapshots in the parent Region of the Outpost, omit this parameter.</p>
33723404
* </li>
33733405
* </ul>
3374-
* <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-outposts.html#create-multivol-snapshot">
3375-
* Create multi-volume local snapshots from instances on an Outpost</a> in the
3376-
* <i>Amazon EBS User Guide</i>.</p>
3406+
* <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-outposts.html#create-snapshot">
3407+
* Create local snapshots from volumes on an Outpost</a> in the <i>Amazon EBS User Guide</i>.</p>
33773408
* @public
33783409
*/
33793410
OutpostArn?: string | undefined;
@@ -3397,6 +3428,27 @@ export interface CreateSnapshotsRequest {
33973428
* @public
33983429
*/
33993430
CopyTagsFromSource?: CopyTagsFromSource | undefined;
3431+
3432+
/**
3433+
* <note>
3434+
* <p>Only supported for instances in Local Zones. If the source instance is not in a Local Zone,
3435+
* omit this parameter.</p>
3436+
* </note>
3437+
* <ul>
3438+
* <li>
3439+
* <p>To create local snapshots in the same Local Zone as the source instance, specify
3440+
* <code>local</code>.</p>
3441+
* </li>
3442+
* <li>
3443+
* <p>To create a regional snapshots in the parent Region of the Local Zone, specify
3444+
* <code>regional</code> or omit this parameter.</p>
3445+
* </li>
3446+
* </ul>
3447+
* <p>Default value: <code>regional</code>
3448+
* </p>
3449+
* @public
3450+
*/
3451+
Location?: SnapshotLocationEnum | undefined;
34003452
}
34013453

34023454
/**
@@ -3478,6 +3530,13 @@ export interface SnapshotInfo {
34783530
* @public
34793531
*/
34803532
SseType?: SSEType | undefined;
3533+
3534+
/**
3535+
* <p>The Availability Zone or Local Zone of the snapshots. For example, <code>us-west-1a</code>
3536+
* (Availability Zone) or <code>us-west-2-lax-1a</code> (Local Zone).</p>
3537+
* @public
3538+
*/
3539+
AvailabilityZone?: string | undefined;
34813540
}
34823541

34833542
/**
@@ -10286,35 +10345,6 @@ export interface DeleteClientVpnEndpointResult {
1028610345
Status?: ClientVpnEndpointStatus | undefined;
1028710346
}
1028810347

10289-
/**
10290-
* @public
10291-
*/
10292-
export interface DeleteClientVpnRouteRequest {
10293-
/**
10294-
* <p>The ID of the Client VPN endpoint from which the route is to be deleted.</p>
10295-
* @public
10296-
*/
10297-
ClientVpnEndpointId: string | undefined;
10298-
10299-
/**
10300-
* <p>The ID of the target subnet used by the route.</p>
10301-
* @public
10302-
*/
10303-
TargetVpcSubnetId?: string | undefined;
10304-
10305-
/**
10306-
* <p>The IPv4 address range, in CIDR notation, of the route to be deleted.</p>
10307-
* @public
10308-
*/
10309-
DestinationCidrBlock: string | undefined;
10310-
10311-
/**
10312-
* <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
10313-
* @public
10314-
*/
10315-
DryRun?: boolean | undefined;
10316-
}
10317-
1031810348
/**
1031910349
* @internal
1032010350
*/

0 commit comments

Comments
 (0)