aws_lite_rs/types/ec2.rs
1//! Types for the Amazon EC2 API (v1).
2//!
3//! Auto-generated from the AWS Botocore Model.
4//! **Do not edit manually** — modify the manifest and re-run codegen.
5
6use serde::{Deserialize, Serialize};
7
8///
9/// **AWS API**: `ec2.v1.DescribeInstancesResult`
10/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeInstancesResult>
11#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12pub struct DescribeInstancesResponse {
13 /// Information about the reservations.
14 #[serde(rename(serialize = "ReservationSet", deserialize = "reservationSet"))]
15 #[serde(default)]
16 #[serde(skip_serializing_if = "Vec::is_empty")]
17 pub reservations: Vec<Reservation>,
18
19 /// The token to include in another request to get the next page of items. This value is
20 /// null when there are no more items to return.
21 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub next_token: Option<String>,
24}
25
26impl DescribeInstancesResponse {
27 #[cfg(any(test, feature = "test-support"))]
28 /// Create a fixture instance for testing.
29 pub fn fixture() -> Self {
30 Self {
31 reservations: vec![],
32 next_token: Some("test-next_token".into()),
33 }
34 }
35}
36
37/// Describes a launch request for one or more instances, and includes owner, requester, and
38/// security group information that applies to all instances in the launch request.
39///
40/// **AWS API**: `ec2.v1.Reservation`
41/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Reservation>
42///
43/// ## Coverage
44/// 2 of 5 fields included.
45/// Omitted fields:
46/// - `OwnerId` — not selected in manifest
47/// - `RequesterId` — not selected in manifest
48/// - `Groups` — not selected in manifest
49#[derive(Debug, Clone, Default, Serialize, Deserialize)]
50pub struct Reservation {
51 /// The ID of the reservation.
52 #[serde(rename(serialize = "ReservationId", deserialize = "reservationId"))]
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub reservation_id: Option<String>,
55
56 /// The instances.
57 #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
58 #[serde(default)]
59 #[serde(skip_serializing_if = "Vec::is_empty")]
60 pub instances: Vec<Instance>,
61}
62
63impl Reservation {
64 #[cfg(any(test, feature = "test-support"))]
65 /// Create a fixture instance for testing.
66 pub fn fixture() -> Self {
67 Self {
68 reservation_id: Some("test-reservation_id".into()),
69 instances: vec![],
70 }
71 }
72}
73
74/// Describes an instance.
75///
76/// **AWS API**: `ec2.v1.Instance`
77/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Instance>
78///
79/// ## Coverage
80/// 18 of 61 fields included.
81/// Omitted fields:
82/// - `Architecture` — not selected in manifest
83/// - `ClientToken` — not selected in manifest
84/// - `EnaSupport` — not selected in manifest
85/// - `Hypervisor` — not selected in manifest
86/// - `InstanceLifecycle` — not selected in manifest
87/// - `ElasticGpuAssociations` — not selected in manifest
88/// - `ElasticInferenceAcceleratorAssociations` — not selected in manifest
89/// - `OutpostArn` — not selected in manifest
90/// - `RootDeviceName` — not selected in manifest
91/// - `RootDeviceType` — not selected in manifest
92/// - `SourceDestCheck` — not selected in manifest
93/// - `SpotInstanceRequestId` — not selected in manifest
94/// - `SriovNetSupport` — not selected in manifest
95/// - `StateReason` — not selected in manifest
96/// - `CpuOptions` — not selected in manifest
97/// - `CapacityBlockId` — not selected in manifest
98/// - `CapacityReservationId` — not selected in manifest
99/// - `CapacityReservationSpecification` — not selected in manifest
100/// - `HibernationOptions` — not selected in manifest
101/// - `Licenses` — not selected in manifest
102/// - `EnclaveOptions` — not selected in manifest
103/// - `BootMode` — not selected in manifest
104/// - `PlatformDetails` — not selected in manifest
105/// - `UsageOperation` — not selected in manifest
106/// - `UsageOperationUpdateTime` — not selected in manifest
107/// - `PrivateDnsNameOptions` — not selected in manifest
108/// - `Ipv6Address` — not selected in manifest
109/// - `TpmSupport` — not selected in manifest
110/// - `MaintenanceOptions` — not selected in manifest
111/// - `CurrentInstanceBootMode` — not selected in manifest
112/// - `NetworkPerformanceOptions` — not selected in manifest
113/// - `Operator` — not selected in manifest
114/// - `SecondaryInterfaces` — not selected in manifest
115/// - `PrivateDnsName` — not selected in manifest
116/// - `PublicDnsName` — not selected in manifest
117/// - `StateTransitionReason` — not selected in manifest
118/// - `KeyName` — not selected in manifest
119/// - `AmiLaunchIndex` — not selected in manifest
120/// - `ProductCodes` — not selected in manifest
121/// - `KernelId` — not selected in manifest
122/// - `RamdiskId` — not selected in manifest
123/// - `Platform` — not selected in manifest
124/// - `PrivateIpAddress` — not selected in manifest
125#[derive(Debug, Clone, Default, Serialize, Deserialize)]
126pub struct Instance {
127 /// The ID of the instance.
128 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
129 #[serde(skip_serializing_if = "Option::is_none")]
130 pub instance_id: Option<String>,
131
132 /// The instance type.
133 #[serde(rename(serialize = "InstanceType", deserialize = "instanceType"))]
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub instance_type: Option<String>,
136
137 /// The current state of the instance.
138 #[serde(rename(serialize = "InstanceState", deserialize = "instanceState"))]
139 #[serde(skip_serializing_if = "Option::is_none")]
140 pub state: Option<InstanceState>,
141
142 /// The location where the instance launched, if applicable.
143 #[serde(rename(serialize = "Placement", deserialize = "placement"))]
144 #[serde(skip_serializing_if = "Option::is_none")]
145 pub placement: Option<Placement>,
146
147 /// The ID of the subnet in which the instance is running.
148 #[serde(rename(serialize = "SubnetId", deserialize = "subnetId"))]
149 #[serde(skip_serializing_if = "Option::is_none")]
150 pub subnet_id: Option<String>,
151
152 /// The ID of the VPC in which the instance is running.
153 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
154 #[serde(skip_serializing_if = "Option::is_none")]
155 pub vpc_id: Option<String>,
156
157 /// The public IPv4 address, or the Carrier IP address assigned to the instance, if
158 /// applicable. A Carrier IP address only applies to an instance launched in a subnet
159 /// associated with a Wavelength Zone.
160 #[serde(rename(serialize = "IpAddress", deserialize = "ipAddress"))]
161 #[serde(skip_serializing_if = "Option::is_none")]
162 pub public_ip_address: Option<String>,
163
164 /// Any block device mapping entries for the instance.
165 #[serde(rename(serialize = "BlockDeviceMapping", deserialize = "blockDeviceMapping"))]
166 #[serde(default)]
167 #[serde(skip_serializing_if = "Vec::is_empty")]
168 pub block_device_mappings: Vec<InstanceBlockDeviceMapping>,
169
170 /// The security groups for the instance.
171 #[serde(rename(serialize = "GroupSet", deserialize = "groupSet"))]
172 #[serde(default)]
173 #[serde(skip_serializing_if = "Vec::is_empty")]
174 pub security_groups: Vec<GroupIdentifier>,
175
176 /// The time that the instance was last launched. To determine the time that instance was
177 /// first launched, see the attachment time for the primary network interface.
178 #[serde(rename(serialize = "LaunchTime", deserialize = "launchTime"))]
179 #[serde(skip_serializing_if = "Option::is_none")]
180 pub launch_time: Option<String>,
181
182 /// The ID of the AMI used to launch the instance.
183 #[serde(rename(serialize = "ImageId", deserialize = "imageId"))]
184 #[serde(skip_serializing_if = "Option::is_none")]
185 pub image_id: Option<String>,
186
187 /// The IAM instance profile associated with the instance, if applicable.
188 #[serde(rename(serialize = "IamInstanceProfile", deserialize = "iamInstanceProfile"))]
189 #[serde(skip_serializing_if = "Option::is_none")]
190 pub iam_instance_profile: Option<IamInstanceProfile>,
191
192 /// The monitoring for the instance.
193 #[serde(rename(serialize = "Monitoring", deserialize = "monitoring"))]
194 #[serde(skip_serializing_if = "Option::is_none")]
195 pub monitoring: Option<Monitoring>,
196
197 /// The metadata options for the instance.
198 #[serde(rename(serialize = "MetadataOptions", deserialize = "metadataOptions"))]
199 #[serde(skip_serializing_if = "Option::is_none")]
200 pub metadata_options: Option<InstanceMetadataOptionsResponse>,
201
202 /// Indicates whether the instance is optimized for Amazon EBS I/O. This optimization
203 /// provides dedicated throughput to Amazon EBS and an optimized configuration stack to
204 /// provide optimal I/O performance. This optimization isn't available with all instance
205 /// types. Additional usage charges apply when using an EBS Optimized instance.
206 #[serde(rename(serialize = "EbsOptimized", deserialize = "ebsOptimized"))]
207 #[serde(skip_serializing_if = "Option::is_none")]
208 pub ebs_optimized: Option<bool>,
209
210 /// The virtualization type of the instance.
211 #[serde(rename(serialize = "VirtualizationType", deserialize = "virtualizationType"))]
212 #[serde(skip_serializing_if = "Option::is_none")]
213 pub virtualization_type: Option<String>,
214
215 /// The network interfaces for the instance.
216 #[serde(rename(serialize = "NetworkInterfaceSet", deserialize = "networkInterfaceSet"))]
217 #[serde(default)]
218 #[serde(skip_serializing_if = "Vec::is_empty")]
219 pub network_interfaces: Vec<InstanceNetworkInterface>,
220
221 /// Any tags assigned to the instance.
222 #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
223 #[serde(default)]
224 #[serde(skip_serializing_if = "Vec::is_empty")]
225 pub tags: Vec<Tag>,
226}
227
228impl Instance {
229 #[cfg(any(test, feature = "test-support"))]
230 /// Create a fixture instance for testing.
231 pub fn fixture() -> Self {
232 Self {
233 instance_id: Some("test-instance_id".into()),
234 instance_type: Some("test-instance_type".into()),
235 state: Some(InstanceState::fixture()),
236 placement: Some(Placement::fixture()),
237 subnet_id: Some("test-subnet_id".into()),
238 vpc_id: Some("test-vpc_id".into()),
239 public_ip_address: Some("test-public_ip_address".into()),
240 block_device_mappings: vec![],
241 security_groups: vec![],
242 launch_time: Some("test-launch_time".into()),
243 image_id: Some("test-image_id".into()),
244 iam_instance_profile: Some(IamInstanceProfile::fixture()),
245 monitoring: Some(Monitoring::fixture()),
246 metadata_options: Some(InstanceMetadataOptionsResponse::fixture()),
247 ebs_optimized: Some(false),
248 virtualization_type: Some("test-virtualization_type".into()),
249 network_interfaces: vec![],
250 tags: vec![],
251 }
252 }
253}
254
255/// Describes the current state of an instance.
256///
257/// **AWS API**: `ec2.v1.InstanceState`
258/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceState>
259#[derive(Debug, Clone, Default, Serialize, Deserialize)]
260pub struct InstanceState {
261 /// The state of the instance as a 16-bit unsigned integer. The high byte is all of the bits
262 /// between 2^8 and (2^16)-1, which equals decimal values between 256 and 65,535. These
263 /// numerical values are used for internal purposes and should be ignored. The low byte is
264 /// all of the bits between 2^0 and (2^8)-1, which equals decimal values between 0 and 255.
265 /// The valid values for instance-state-code will all be in the range of the low byte and
266 /// they are: 0 : pending 16 : running 32 : shutting-down 48 : terminated 64 : stopping 80 :
267 /// stopped You can ignore the high byte value by zeroing out all of the bits above 2^8 or
268 /// 256 in decimal.
269 #[serde(rename(serialize = "Code", deserialize = "code"))]
270 #[serde(skip_serializing_if = "Option::is_none")]
271 pub code: Option<i32>,
272
273 /// The current state of the instance.
274 #[serde(rename(serialize = "Name", deserialize = "name"))]
275 #[serde(skip_serializing_if = "Option::is_none")]
276 pub name: Option<String>,
277}
278
279impl InstanceState {
280 #[cfg(any(test, feature = "test-support"))]
281 /// Create a fixture instance for testing.
282 pub fn fixture() -> Self {
283 Self {
284 code: Some(100),
285 name: Some("test-name".into()),
286 }
287 }
288}
289
290/// Describes the placement of an instance.
291///
292/// **AWS API**: `ec2.v1.Placement`
293/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Placement>
294///
295/// ## Coverage
296/// 1 of 10 fields included.
297/// Omitted fields:
298/// - `AvailabilityZoneId` — not selected in manifest
299/// - `Affinity` — not selected in manifest
300/// - `GroupName` — not selected in manifest
301/// - `PartitionNumber` — not selected in manifest
302/// - `HostId` — not selected in manifest
303/// - `Tenancy` — not selected in manifest
304/// - `SpreadDomain` — not selected in manifest
305/// - `HostResourceGroupArn` — not selected in manifest
306/// - `GroupId` — not selected in manifest
307#[derive(Debug, Clone, Default, Serialize, Deserialize)]
308pub struct Placement {
309 /// The Availability Zone of the instance. On input, you can specify AvailabilityZone or
310 /// AvailabilityZoneId, but not both. If you specify neither one, Amazon EC2 automatically
311 /// selects an Availability Zone for you. This parameter is not supported for CreateFleet.
312 #[serde(rename(serialize = "AvailabilityZone", deserialize = "availabilityZone"))]
313 #[serde(skip_serializing_if = "Option::is_none")]
314 pub availability_zone: Option<String>,
315}
316
317impl Placement {
318 #[cfg(any(test, feature = "test-support"))]
319 /// Create a fixture instance for testing.
320 pub fn fixture() -> Self {
321 Self {
322 availability_zone: Some("test-availability_zone".into()),
323 }
324 }
325}
326
327/// Describes a block device mapping.
328///
329/// **AWS API**: `ec2.v1.InstanceBlockDeviceMapping`
330/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceBlockDeviceMapping>
331#[derive(Debug, Clone, Default, Serialize, Deserialize)]
332pub struct InstanceBlockDeviceMapping {
333 /// The device name.
334 #[serde(rename(serialize = "DeviceName", deserialize = "deviceName"))]
335 #[serde(skip_serializing_if = "Option::is_none")]
336 pub device_name: Option<String>,
337
338 /// Parameters used to automatically set up EBS volumes when the instance is launched.
339 #[serde(rename(serialize = "Ebs", deserialize = "ebs"))]
340 #[serde(skip_serializing_if = "Option::is_none")]
341 pub ebs: Option<EbsInstanceBlockDevice>,
342}
343
344impl InstanceBlockDeviceMapping {
345 #[cfg(any(test, feature = "test-support"))]
346 /// Create a fixture instance for testing.
347 pub fn fixture() -> Self {
348 Self {
349 device_name: Some("test-device_name".into()),
350 ebs: Some(EbsInstanceBlockDevice::fixture()),
351 }
352 }
353}
354
355/// Describes a parameter used to set up an EBS volume in a block device mapping.
356///
357/// **AWS API**: `ec2.v1.EbsInstanceBlockDevice`
358/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EbsInstanceBlockDevice>
359///
360/// ## Coverage
361/// 2 of 8 fields included.
362/// Omitted fields:
363/// - `AttachTime` — not selected in manifest
364/// - `DeleteOnTermination` — not selected in manifest
365/// - `AssociatedResource` — not selected in manifest
366/// - `VolumeOwnerId` — not selected in manifest
367/// - `Operator` — not selected in manifest
368/// - `EbsCardIndex` — not selected in manifest
369#[derive(Debug, Clone, Default, Serialize, Deserialize)]
370pub struct EbsInstanceBlockDevice {
371 /// The ID of the EBS volume.
372 #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
373 #[serde(skip_serializing_if = "Option::is_none")]
374 pub volume_id: Option<String>,
375
376 /// The attachment state.
377 #[serde(rename(serialize = "Status", deserialize = "status"))]
378 #[serde(skip_serializing_if = "Option::is_none")]
379 pub status: Option<String>,
380}
381
382impl EbsInstanceBlockDevice {
383 #[cfg(any(test, feature = "test-support"))]
384 /// Create a fixture instance for testing.
385 pub fn fixture() -> Self {
386 Self {
387 volume_id: Some("test-volume_id".into()),
388 status: Some("test-status".into()),
389 }
390 }
391}
392
393/// Describes an IAM instance profile.
394///
395/// **AWS API**: `ec2.v1.IamInstanceProfile`
396/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IamInstanceProfile>
397#[derive(Debug, Clone, Default, Serialize, Deserialize)]
398pub struct IamInstanceProfile {
399 /// The Amazon Resource Name (ARN) of the instance profile.
400 #[serde(rename(serialize = "Arn", deserialize = "arn"))]
401 #[serde(skip_serializing_if = "Option::is_none")]
402 pub arn: Option<String>,
403
404 /// The ID of the instance profile.
405 #[serde(rename(serialize = "Id", deserialize = "id"))]
406 #[serde(skip_serializing_if = "Option::is_none")]
407 pub id: Option<String>,
408}
409
410impl IamInstanceProfile {
411 #[cfg(any(test, feature = "test-support"))]
412 /// Create a fixture instance for testing.
413 pub fn fixture() -> Self {
414 Self {
415 arn: Some("test-arn".into()),
416 id: Some("test-id".into()),
417 }
418 }
419}
420
421/// Describes the monitoring of an instance.
422///
423/// **AWS API**: `ec2.v1.Monitoring`
424/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Monitoring>
425#[derive(Debug, Clone, Default, Serialize, Deserialize)]
426pub struct Monitoring {
427 /// Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring is
428 /// enabled.
429 #[serde(rename(serialize = "State", deserialize = "state"))]
430 #[serde(skip_serializing_if = "Option::is_none")]
431 pub state: Option<String>,
432}
433
434impl Monitoring {
435 #[cfg(any(test, feature = "test-support"))]
436 /// Create a fixture instance for testing.
437 pub fn fixture() -> Self {
438 Self {
439 state: Some("test-state".into()),
440 }
441 }
442}
443
444/// The metadata options for the instance.
445///
446/// **AWS API**: `ec2.v1.InstanceMetadataOptionsResponse`
447/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceMetadataOptionsResponse>
448///
449/// ## Coverage
450/// 2 of 6 fields included.
451/// Omitted fields:
452/// - `State` — not selected in manifest
453/// - `HttpPutResponseHopLimit` — not selected in manifest
454/// - `HttpProtocolIpv6` — not selected in manifest
455/// - `InstanceMetadataTags` — not selected in manifest
456#[derive(Debug, Clone, Default, Serialize, Deserialize)]
457pub struct InstanceMetadataOptionsResponse {
458 /// Indicates whether IMDSv2 is required. optional
459 /// - IMDSv2 is optional, which means that you can use either IMDSv2 or IMDSv1. required
460 /// - IMDSv2 is required, which means that IMDSv1 is disabled, and you must use IMDSv2.
461 #[serde(rename(serialize = "HttpTokens", deserialize = "httpTokens"))]
462 #[serde(skip_serializing_if = "Option::is_none")]
463 pub http_tokens: Option<String>,
464
465 /// Indicates whether the HTTP metadata endpoint on your instances is enabled or disabled.
466 /// If the value is disabled, you cannot access your instance metadata.
467 #[serde(rename(serialize = "HttpEndpoint", deserialize = "httpEndpoint"))]
468 #[serde(skip_serializing_if = "Option::is_none")]
469 pub http_endpoint: Option<String>,
470}
471
472impl InstanceMetadataOptionsResponse {
473 #[cfg(any(test, feature = "test-support"))]
474 /// Create a fixture instance for testing.
475 pub fn fixture() -> Self {
476 Self {
477 http_tokens: Some("test-http_tokens".into()),
478 http_endpoint: Some("test-http_endpoint".into()),
479 }
480 }
481}
482
483/// Describes a network interface.
484///
485/// **AWS API**: `ec2.v1.InstanceNetworkInterface`
486/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceNetworkInterface>
487///
488/// ## Coverage
489/// 1 of 20 fields included.
490/// Omitted fields:
491/// - `Association` — not selected in manifest
492/// - `Attachment` — not selected in manifest
493/// - `Description` — not selected in manifest
494/// - `Groups` — not selected in manifest
495/// - `Ipv6Addresses` — not selected in manifest
496/// - `MacAddress` — not selected in manifest
497/// - `OwnerId` — not selected in manifest
498/// - `PrivateDnsName` — not selected in manifest
499/// - `PrivateIpAddress` — not selected in manifest
500/// - `PrivateIpAddresses` — not selected in manifest
501/// - `SourceDestCheck` — not selected in manifest
502/// - `Status` — not selected in manifest
503/// - `SubnetId` — not selected in manifest
504/// - `VpcId` — not selected in manifest
505/// - `InterfaceType` — not selected in manifest
506/// - `Ipv4Prefixes` — not selected in manifest
507/// - `Ipv6Prefixes` — not selected in manifest
508/// - `ConnectionTrackingConfiguration` — not selected in manifest
509/// - `Operator` — not selected in manifest
510#[derive(Debug, Clone, Default, Serialize, Deserialize)]
511pub struct InstanceNetworkInterface {
512 /// The ID of the network interface.
513 #[serde(rename(serialize = "NetworkInterfaceId", deserialize = "networkInterfaceId"))]
514 #[serde(skip_serializing_if = "Option::is_none")]
515 pub network_interface_id: Option<String>,
516}
517
518impl InstanceNetworkInterface {
519 #[cfg(any(test, feature = "test-support"))]
520 /// Create a fixture instance for testing.
521 pub fn fixture() -> Self {
522 Self {
523 network_interface_id: Some("test-network_interface_id".into()),
524 }
525 }
526}
527
528/// Describes a security group.
529///
530/// **AWS API**: `ec2.v1.GroupIdentifier`
531/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//GroupIdentifier>
532#[derive(Debug, Clone, Default, Serialize, Deserialize)]
533pub struct GroupIdentifier {
534 /// The ID of the security group.
535 #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
536 #[serde(skip_serializing_if = "Option::is_none")]
537 pub group_id: Option<String>,
538
539 /// The name of the security group.
540 #[serde(rename(serialize = "GroupName", deserialize = "groupName"))]
541 #[serde(skip_serializing_if = "Option::is_none")]
542 pub group_name: Option<String>,
543}
544
545impl GroupIdentifier {
546 #[cfg(any(test, feature = "test-support"))]
547 /// Create a fixture instance for testing.
548 pub fn fixture() -> Self {
549 Self {
550 group_id: Some("test-group_id".into()),
551 group_name: Some("test-group_name".into()),
552 }
553 }
554}
555
556/// Describes a tag.
557///
558/// **AWS API**: `ec2.v1.Tag`
559/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Tag>
560#[derive(Debug, Clone, Default, Serialize, Deserialize)]
561pub struct Tag {
562 /// The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127
563 /// Unicode characters. May not begin with aws:.
564 #[serde(rename(serialize = "Key", deserialize = "key"))]
565 #[serde(skip_serializing_if = "Option::is_none")]
566 pub key: Option<String>,
567
568 /// The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of
569 /// 256 Unicode characters.
570 #[serde(rename(serialize = "Value", deserialize = "value"))]
571 #[serde(skip_serializing_if = "Option::is_none")]
572 pub value: Option<String>,
573}
574
575impl Tag {
576 #[cfg(any(test, feature = "test-support"))]
577 /// Create a fixture instance for testing.
578 pub fn fixture() -> Self {
579 Self {
580 key: Some("test-key".into()),
581 value: Some("test-value".into()),
582 }
583 }
584}
585
586///
587/// **AWS API**: `ec2.v1.DescribeVolumesResult`
588/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVolumesResult>
589#[derive(Debug, Clone, Default, Serialize, Deserialize)]
590pub struct DescribeVolumesResponse {
591 /// Information about the volumes.
592 #[serde(rename(serialize = "VolumeSet", deserialize = "volumeSet"))]
593 #[serde(default)]
594 #[serde(skip_serializing_if = "Vec::is_empty")]
595 pub volumes: Vec<Volume>,
596
597 /// The token to include in another request to get the next page of items. This value is
598 /// null when there are no more items to return.
599 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
600 #[serde(skip_serializing_if = "Option::is_none")]
601 pub next_token: Option<String>,
602}
603
604impl DescribeVolumesResponse {
605 #[cfg(any(test, feature = "test-support"))]
606 /// Create a fixture instance for testing.
607 pub fn fixture() -> Self {
608 Self {
609 volumes: vec![],
610 next_token: Some("test-next_token".into()),
611 }
612 }
613}
614
615/// Describes a volume.
616///
617/// **AWS API**: `ec2.v1.Volume`
618/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Volume>
619///
620/// ## Coverage
621/// 12 of 21 fields included.
622/// Omitted fields:
623/// - `AvailabilityZoneId` — not selected in manifest
624/// - `OutpostArn` — not selected in manifest
625/// - `SourceVolumeId` — not selected in manifest
626/// - `FastRestored` — not selected in manifest
627/// - `MultiAttachEnabled` — not selected in manifest
628/// - `SseType` — not selected in manifest
629/// - `Operator` — not selected in manifest
630/// - `VolumeInitializationRate` — not selected in manifest
631/// - `SnapshotId` — not selected in manifest
632#[derive(Debug, Clone, Default, Serialize, Deserialize)]
633pub struct Volume {
634 /// The ID of the volume.
635 #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
636 #[serde(skip_serializing_if = "Option::is_none")]
637 pub volume_id: Option<String>,
638
639 /// The Availability Zone for the volume.
640 #[serde(rename(serialize = "AvailabilityZone", deserialize = "availabilityZone"))]
641 #[serde(skip_serializing_if = "Option::is_none")]
642 pub availability_zone: Option<String>,
643
644 /// The size of the volume, in GiBs.
645 #[serde(rename(serialize = "Size", deserialize = "size"))]
646 #[serde(skip_serializing_if = "Option::is_none")]
647 pub size: Option<i32>,
648
649 /// The volume state.
650 #[serde(rename(serialize = "Status", deserialize = "status"))]
651 #[serde(skip_serializing_if = "Option::is_none")]
652 pub state: Option<String>,
653
654 /// The volume type.
655 #[serde(rename(serialize = "VolumeType", deserialize = "volumeType"))]
656 #[serde(skip_serializing_if = "Option::is_none")]
657 pub volume_type: Option<String>,
658
659 /// Indicates whether the volume is encrypted.
660 #[serde(rename(serialize = "Encrypted", deserialize = "encrypted"))]
661 #[serde(skip_serializing_if = "Option::is_none")]
662 pub encrypted: Option<bool>,
663
664 /// The Amazon Resource Name (ARN) of the KMS key that was used to protect the volume
665 /// encryption key for the volume.
666 #[serde(rename(serialize = "KmsKeyId", deserialize = "kmsKeyId"))]
667 #[serde(skip_serializing_if = "Option::is_none")]
668 pub kms_key_id: Option<String>,
669
670 /// The time stamp when volume creation was initiated.
671 #[serde(rename(serialize = "CreateTime", deserialize = "createTime"))]
672 #[serde(skip_serializing_if = "Option::is_none")]
673 pub create_time: Option<String>,
674
675 /// The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this
676 /// represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this
677 /// represents the baseline performance of the volume and the rate at which the volume
678 /// accumulates I/O credits for bursting.
679 #[serde(rename(serialize = "Iops", deserialize = "iops"))]
680 #[serde(skip_serializing_if = "Option::is_none")]
681 pub iops: Option<i32>,
682
683 /// The throughput that the volume supports, in MiB/s.
684 #[serde(rename(serialize = "Throughput", deserialize = "throughput"))]
685 #[serde(skip_serializing_if = "Option::is_none")]
686 pub throughput: Option<i32>,
687
688 /// This parameter is not returned by CreateVolume. Information about the volume
689 /// attachments.
690 #[serde(rename(serialize = "AttachmentSet", deserialize = "attachmentSet"))]
691 #[serde(default)]
692 #[serde(skip_serializing_if = "Vec::is_empty")]
693 pub attachments: Vec<VolumeAttachment>,
694
695 /// Any tags assigned to the volume.
696 #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
697 #[serde(default)]
698 #[serde(skip_serializing_if = "Vec::is_empty")]
699 pub tags: Vec<Tag>,
700}
701
702impl Volume {
703 #[cfg(any(test, feature = "test-support"))]
704 /// Create a fixture instance for testing.
705 pub fn fixture() -> Self {
706 Self {
707 volume_id: Some("test-volume_id".into()),
708 availability_zone: Some("test-availability_zone".into()),
709 size: Some(100),
710 state: Some("test-state".into()),
711 volume_type: Some("test-volume_type".into()),
712 encrypted: Some(false),
713 kms_key_id: Some("test-kms_key_id".into()),
714 create_time: Some("test-create_time".into()),
715 iops: Some(100),
716 throughput: Some(100),
717 attachments: vec![],
718 tags: vec![],
719 }
720 }
721}
722
723/// Describes volume attachment details.
724///
725/// **AWS API**: `ec2.v1.VolumeAttachment`
726/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VolumeAttachment>
727///
728/// ## Coverage
729/// 4 of 9 fields included.
730/// Omitted fields:
731/// - `DeleteOnTermination` — not selected in manifest
732/// - `AssociatedResource` — not selected in manifest
733/// - `InstanceOwningService` — not selected in manifest
734/// - `EbsCardIndex` — not selected in manifest
735/// - `AttachTime` — not selected in manifest
736#[derive(Debug, Clone, Default, Serialize, Deserialize)]
737pub struct VolumeAttachment {
738 /// The ID of the instance. If the volume is attached to an Amazon Web Services-managed
739 /// resource, this parameter returns null.
740 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
741 #[serde(skip_serializing_if = "Option::is_none")]
742 pub instance_id: Option<String>,
743
744 /// The attachment state of the volume.
745 #[serde(rename(serialize = "Status", deserialize = "status"))]
746 #[serde(skip_serializing_if = "Option::is_none")]
747 pub state: Option<String>,
748
749 /// The device name. If the volume is attached to an Amazon Web Services-managed resource,
750 /// this parameter returns null.
751 #[serde(rename(serialize = "Device", deserialize = "device"))]
752 #[serde(skip_serializing_if = "Option::is_none")]
753 pub device: Option<String>,
754
755 /// The ID of the volume.
756 #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
757 #[serde(skip_serializing_if = "Option::is_none")]
758 pub volume_id: Option<String>,
759}
760
761impl VolumeAttachment {
762 #[cfg(any(test, feature = "test-support"))]
763 /// Create a fixture instance for testing.
764 pub fn fixture() -> Self {
765 Self {
766 instance_id: Some("test-instance_id".into()),
767 state: Some("test-state".into()),
768 device: Some("test-device".into()),
769 volume_id: Some("test-volume_id".into()),
770 }
771 }
772}
773
774///
775/// **AWS API**: `ec2.v1.DescribeSnapshotsResult`
776/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotsResult>
777#[derive(Debug, Clone, Default, Serialize, Deserialize)]
778pub struct DescribeSnapshotsResponse {
779 /// Information about the snapshots.
780 #[serde(rename(serialize = "SnapshotSet", deserialize = "snapshotSet"))]
781 #[serde(default)]
782 #[serde(skip_serializing_if = "Vec::is_empty")]
783 pub snapshots: Vec<Snapshot>,
784
785 /// The token to include in another request to get the next page of items. This value is
786 /// null when there are no more items to return.
787 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
788 #[serde(skip_serializing_if = "Option::is_none")]
789 pub next_token: Option<String>,
790}
791
792impl DescribeSnapshotsResponse {
793 #[cfg(any(test, feature = "test-support"))]
794 /// Create a fixture instance for testing.
795 pub fn fixture() -> Self {
796 Self {
797 snapshots: vec![],
798 next_token: Some("test-next_token".into()),
799 }
800 }
801}
802
803/// Describes a snapshot.
804///
805/// **AWS API**: `ec2.v1.Snapshot`
806/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Snapshot>
807///
808/// ## Coverage
809/// 8 of 23 fields included.
810/// Omitted fields:
811/// - `OwnerAlias` — not selected in manifest
812/// - `OutpostArn` — not selected in manifest
813/// - `StorageTier` — not selected in manifest
814/// - `RestoreExpiryTime` — not selected in manifest
815/// - `SseType` — not selected in manifest
816/// - `AvailabilityZone` — not selected in manifest
817/// - `TransferType` — not selected in manifest
818/// - `CompletionDurationMinutes` — not selected in manifest
819/// - `CompletionTime` — not selected in manifest
820/// - `FullSnapshotSizeInBytes` — not selected in manifest
821/// - `StateMessage` — not selected in manifest
822/// - `Progress` — not selected in manifest
823/// - `OwnerId` — not selected in manifest
824/// - `KmsKeyId` — not selected in manifest
825/// - `DataEncryptionKeyId` — not selected in manifest
826#[derive(Debug, Clone, Default, Serialize, Deserialize)]
827pub struct Snapshot {
828 /// The ID of the snapshot. Each snapshot receives a unique identifier when it is created.
829 #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
830 #[serde(skip_serializing_if = "Option::is_none")]
831 pub snapshot_id: Option<String>,
832
833 /// The ID of the volume that was used to create the snapshot. Snapshots created by a copy
834 /// snapshot operation have an arbitrary volume ID that you should not use for any purpose.
835 #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
836 #[serde(skip_serializing_if = "Option::is_none")]
837 pub volume_id: Option<String>,
838
839 /// The size of the volume, in GiB.
840 #[serde(rename(serialize = "VolumeSize", deserialize = "volumeSize"))]
841 #[serde(skip_serializing_if = "Option::is_none")]
842 pub volume_size: Option<i32>,
843
844 /// The snapshot state.
845 #[serde(rename(serialize = "Status", deserialize = "status"))]
846 #[serde(skip_serializing_if = "Option::is_none")]
847 pub state: Option<String>,
848
849 /// The time stamp when the snapshot was initiated.
850 #[serde(rename(serialize = "StartTime", deserialize = "startTime"))]
851 #[serde(skip_serializing_if = "Option::is_none")]
852 pub start_time: Option<String>,
853
854 /// The description for the snapshot.
855 #[serde(rename(serialize = "Description", deserialize = "description"))]
856 #[serde(skip_serializing_if = "Option::is_none")]
857 pub description: Option<String>,
858
859 /// Indicates whether the snapshot is encrypted.
860 #[serde(rename(serialize = "Encrypted", deserialize = "encrypted"))]
861 #[serde(skip_serializing_if = "Option::is_none")]
862 pub encrypted: Option<bool>,
863
864 /// Any tags assigned to the snapshot.
865 #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
866 #[serde(default)]
867 #[serde(skip_serializing_if = "Vec::is_empty")]
868 pub tags: Vec<Tag>,
869}
870
871impl Snapshot {
872 #[cfg(any(test, feature = "test-support"))]
873 /// Create a fixture instance for testing.
874 pub fn fixture() -> Self {
875 Self {
876 snapshot_id: Some("test-snapshot_id".into()),
877 volume_id: Some("test-volume_id".into()),
878 volume_size: Some(100),
879 state: Some("test-state".into()),
880 start_time: Some("test-start_time".into()),
881 description: Some("test-description".into()),
882 encrypted: Some(false),
883 tags: vec![],
884 }
885 }
886}
887
888///
889/// **AWS API**: `ec2.v1.DescribeSnapshotAttributeResult`
890/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotAttributeResult>
891///
892/// ## Coverage
893/// 2 of 3 fields included.
894/// Omitted fields:
895/// - `ProductCodes` — not selected in manifest
896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
897pub struct DescribeSnapshotAttributeResponse {
898 /// The ID of the EBS snapshot.
899 #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
900 #[serde(skip_serializing_if = "Option::is_none")]
901 pub snapshot_id: Option<String>,
902
903 /// The users and groups that have the permissions for creating volumes from the snapshot.
904 #[serde(rename(
905 serialize = "CreateVolumePermission",
906 deserialize = "createVolumePermission"
907 ))]
908 #[serde(default)]
909 #[serde(skip_serializing_if = "Vec::is_empty")]
910 pub create_volume_permissions: Vec<CreateVolumePermission>,
911}
912
913impl DescribeSnapshotAttributeResponse {
914 #[cfg(any(test, feature = "test-support"))]
915 /// Create a fixture instance for testing.
916 pub fn fixture() -> Self {
917 Self {
918 snapshot_id: Some("test-snapshot_id".into()),
919 create_volume_permissions: vec![],
920 }
921 }
922}
923
924/// Describes the user or group to be added or removed from the list of create volume
925/// permissions for a volume.
926///
927/// **AWS API**: `ec2.v1.CreateVolumePermission`
928/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateVolumePermission>
929#[derive(Debug, Clone, Default, Serialize, Deserialize)]
930pub struct CreateVolumePermission {
931 /// The group to be added or removed. The possible value is all.
932 #[serde(rename(serialize = "Group", deserialize = "group"))]
933 #[serde(skip_serializing_if = "Option::is_none")]
934 pub group: Option<String>,
935
936 /// The ID of the Amazon Web Services account to be added or removed.
937 #[serde(rename(serialize = "UserId", deserialize = "userId"))]
938 #[serde(skip_serializing_if = "Option::is_none")]
939 pub user_id: Option<String>,
940}
941
942impl CreateVolumePermission {
943 #[cfg(any(test, feature = "test-support"))]
944 /// Create a fixture instance for testing.
945 pub fn fixture() -> Self {
946 Self {
947 group: Some("test-group".into()),
948 user_id: Some("test-user_id".into()),
949 }
950 }
951}
952
953///
954/// **AWS API**: `ec2.v1.DescribeImagesResult`
955/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeImagesResult>
956///
957/// ## Coverage
958/// 1 of 2 fields included.
959/// Omitted fields:
960/// - `NextToken` — not selected in manifest
961#[derive(Debug, Clone, Default, Serialize, Deserialize)]
962pub struct DescribeImagesResponse {
963 /// Information about the images.
964 #[serde(rename(serialize = "ImagesSet", deserialize = "imagesSet"))]
965 #[serde(default)]
966 #[serde(skip_serializing_if = "Vec::is_empty")]
967 pub images: Vec<Image>,
968}
969
970impl DescribeImagesResponse {
971 #[cfg(any(test, feature = "test-support"))]
972 /// Create a fixture instance for testing.
973 pub fn fixture() -> Self {
974 Self { images: vec![] }
975 }
976}
977
978/// Describes an image.
979///
980/// **AWS API**: `ec2.v1.Image`
981/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Image>
982///
983/// ## Coverage
984/// 10 of 37 fields included.
985/// Omitted fields:
986/// - `UsageOperation` — not selected in manifest
987/// - `EnaSupport` — not selected in manifest
988/// - `Hypervisor` — not selected in manifest
989/// - `ImageOwnerAlias` — not selected in manifest
990/// - `RootDeviceName` — not selected in manifest
991/// - `RootDeviceType` — not selected in manifest
992/// - `SriovNetSupport` — not selected in manifest
993/// - `StateReason` — not selected in manifest
994/// - `VirtualizationType` — not selected in manifest
995/// - `BootMode` — not selected in manifest
996/// - `TpmSupport` — not selected in manifest
997/// - `DeprecationTime` — not selected in manifest
998/// - `ImdsSupport` — not selected in manifest
999/// - `SourceInstanceId` — not selected in manifest
1000/// - `DeregistrationProtection` — not selected in manifest
1001/// - `LastLaunchedTime` — not selected in manifest
1002/// - `ImageAllowed` — not selected in manifest
1003/// - `SourceImageId` — not selected in manifest
1004/// - `SourceImageRegion` — not selected in manifest
1005/// - `FreeTierEligible` — not selected in manifest
1006/// - `ImageLocation` — not selected in manifest
1007/// - `OwnerId` — not selected in manifest
1008/// - `ProductCodes` — not selected in manifest
1009/// - `Architecture` — not selected in manifest
1010/// - `KernelId` — not selected in manifest
1011/// - `RamdiskId` — not selected in manifest
1012/// - `Platform` — not selected in manifest
1013#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1014pub struct Image {
1015 /// The ID of the AMI.
1016 #[serde(rename(serialize = "ImageId", deserialize = "imageId"))]
1017 #[serde(skip_serializing_if = "Option::is_none")]
1018 pub image_id: Option<String>,
1019
1020 /// The name of the AMI that was provided during image creation.
1021 #[serde(rename(serialize = "Name", deserialize = "name"))]
1022 #[serde(skip_serializing_if = "Option::is_none")]
1023 pub name: Option<String>,
1024
1025 /// The current state of the AMI. If the state is available, the image is successfully
1026 /// registered and can be used to launch an instance.
1027 #[serde(rename(serialize = "ImageState", deserialize = "imageState"))]
1028 #[serde(skip_serializing_if = "Option::is_none")]
1029 pub state: Option<String>,
1030
1031 /// Indicates whether the image has public launch permissions. The value is true if this
1032 /// image has public launch permissions or false if it has only implicit and explicit launch
1033 /// permissions.
1034 #[serde(rename(serialize = "IsPublic", deserialize = "isPublic"))]
1035 #[serde(skip_serializing_if = "Option::is_none")]
1036 pub public: Option<bool>,
1037
1038 /// The type of image.
1039 #[serde(rename(serialize = "ImageType", deserialize = "imageType"))]
1040 #[serde(skip_serializing_if = "Option::is_none")]
1041 pub image_type: Option<String>,
1042
1043 /// The platform details associated with the billing code of the AMI. For more information,
1044 /// see Understand AMI billing information in the Amazon EC2 User Guide.
1045 #[serde(rename(serialize = "PlatformDetails", deserialize = "platformDetails"))]
1046 #[serde(skip_serializing_if = "Option::is_none")]
1047 pub platform_details: Option<String>,
1048
1049 /// The date and time the image was created.
1050 #[serde(rename(serialize = "CreationDate", deserialize = "creationDate"))]
1051 #[serde(skip_serializing_if = "Option::is_none")]
1052 pub creation_date: Option<String>,
1053
1054 /// The description of the AMI that was provided during image creation.
1055 #[serde(rename(serialize = "Description", deserialize = "description"))]
1056 #[serde(skip_serializing_if = "Option::is_none")]
1057 pub description: Option<String>,
1058
1059 /// Any block device mapping entries.
1060 #[serde(rename(serialize = "BlockDeviceMapping", deserialize = "blockDeviceMapping"))]
1061 #[serde(default)]
1062 #[serde(skip_serializing_if = "Vec::is_empty")]
1063 pub block_device_mappings: Vec<BlockDeviceMapping>,
1064
1065 /// Any tags assigned to the image.
1066 #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
1067 #[serde(default)]
1068 #[serde(skip_serializing_if = "Vec::is_empty")]
1069 pub tags: Vec<Tag>,
1070}
1071
1072impl Image {
1073 #[cfg(any(test, feature = "test-support"))]
1074 /// Create a fixture instance for testing.
1075 pub fn fixture() -> Self {
1076 Self {
1077 image_id: Some("test-image_id".into()),
1078 name: Some("test-name".into()),
1079 state: Some("test-state".into()),
1080 public: Some(false),
1081 image_type: Some("test-image_type".into()),
1082 platform_details: Some("test-platform_details".into()),
1083 creation_date: Some("test-creation_date".into()),
1084 description: Some("test-description".into()),
1085 block_device_mappings: vec![],
1086 tags: vec![],
1087 }
1088 }
1089}
1090
1091/// Describes a block device mapping, which defines the EBS volumes and instance store volumes
1092/// to attach to an instance at launch.
1093///
1094/// **AWS API**: `ec2.v1.BlockDeviceMapping`
1095/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//BlockDeviceMapping>
1096///
1097/// ## Coverage
1098/// 2 of 4 fields included.
1099/// Omitted fields:
1100/// - `NoDevice` — not selected in manifest
1101/// - `VirtualName` — not selected in manifest
1102#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1103pub struct BlockDeviceMapping {
1104 /// The device name. For available device names, see Device names for volumes.
1105 #[serde(rename(serialize = "DeviceName", deserialize = "deviceName"))]
1106 #[serde(skip_serializing_if = "Option::is_none")]
1107 pub device_name: Option<String>,
1108
1109 /// Parameters used to automatically set up EBS volumes when the instance is launched.
1110 #[serde(rename(serialize = "Ebs", deserialize = "ebs"))]
1111 #[serde(skip_serializing_if = "Option::is_none")]
1112 pub ebs: Option<EbsBlockDevice>,
1113}
1114
1115impl BlockDeviceMapping {
1116 #[cfg(any(test, feature = "test-support"))]
1117 /// Create a fixture instance for testing.
1118 pub fn fixture() -> Self {
1119 Self {
1120 device_name: Some("test-device_name".into()),
1121 ebs: Some(EbsBlockDevice::fixture()),
1122 }
1123 }
1124}
1125
1126/// Describes a block device for an EBS volume.
1127///
1128/// **AWS API**: `ec2.v1.EbsBlockDevice`
1129/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EbsBlockDevice>
1130///
1131/// ## Coverage
1132/// 4 of 13 fields included.
1133/// Omitted fields:
1134/// - `DeleteOnTermination` — not selected in manifest
1135/// - `Iops` — not selected in manifest
1136/// - `KmsKeyId` — not selected in manifest
1137/// - `Throughput` — not selected in manifest
1138/// - `OutpostArn` — not selected in manifest
1139/// - `AvailabilityZone` — not selected in manifest
1140/// - `VolumeInitializationRate` — not selected in manifest
1141/// - `AvailabilityZoneId` — not selected in manifest
1142/// - `EbsCardIndex` — not selected in manifest
1143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1144pub struct EbsBlockDevice {
1145 /// The ID of the snapshot.
1146 #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
1147 #[serde(skip_serializing_if = "Option::is_none")]
1148 pub snapshot_id: Option<String>,
1149
1150 /// The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size.
1151 /// If you specify a snapshot, the default is the snapshot size. You can specify a volume
1152 /// size that is equal to or larger than the snapshot size. The following are the supported
1153 /// sizes for each volume type: gp2: 1 - 16,384 GiB gp3: 1 - 65,536 GiB io1: 4 - 16,384 GiB
1154 /// io2: 4 - 65,536 GiB st1 and sc1: 125 - 16,384 GiB standard: 1 - 1024 GiB
1155 #[serde(rename(serialize = "VolumeSize", deserialize = "volumeSize"))]
1156 #[serde(skip_serializing_if = "Option::is_none")]
1157 pub volume_size: Option<i32>,
1158
1159 /// The volume type. For more information, see Amazon EBS volume types in the Amazon EBS
1160 /// User Guide.
1161 #[serde(rename(serialize = "VolumeType", deserialize = "volumeType"))]
1162 #[serde(skip_serializing_if = "Option::is_none")]
1163 pub volume_type: Option<String>,
1164
1165 /// Indicates whether the encryption state of an EBS volume is changed while being restored
1166 /// from a backing snapshot. The effect of setting the encryption state to true depends on
1167 /// the volume origin (new or from a snapshot), starting encryption state, ownership, and
1168 /// whether encryption by default is enabled. For more information, see Amazon EBS
1169 /// encryption in the Amazon EBS User Guide. In no case can you remove encryption from an
1170 /// encrypted volume. Encrypted volumes can only be attached to instances that support
1171 /// Amazon EBS encryption. For more information, see Supported instance types. This
1172 /// parameter is not returned by DescribeImageAttribute. For CreateImage and RegisterImage,
1173 /// whether you can include this parameter, and the allowed values differ depending on the
1174 /// type of block device mapping you are creating. If you are creating a block device
1175 /// mapping for a new (empty) volume, you can include this parameter, and specify either
1176 /// true for an encrypted volume, or false for an unencrypted volume. If you omit this
1177 /// parameter, it defaults to false (unencrypted). If you are creating a block device
1178 /// mapping from an existing encrypted or unencrypted snapshot, you must omit this
1179 /// parameter. If you include this parameter, the request will fail, regardless of the value
1180 /// that you specify. If you are creating a block device mapping from an existing
1181 /// unencrypted volume, you can include this parameter, but you must specify false. If you
1182 /// specify true, the request will fail. In this case, we recommend that you omit the
1183 /// parameter. If you are creating a block device mapping from an existing encrypted volume,
1184 /// you can include this parameter, and specify either true or false. However, if you
1185 /// specify false, the parameter is ignored and the block device mapping is always
1186 /// encrypted. In this case, we recommend that you omit the parameter.
1187 #[serde(rename(serialize = "Encrypted", deserialize = "encrypted"))]
1188 #[serde(skip_serializing_if = "Option::is_none")]
1189 pub encrypted: Option<bool>,
1190}
1191
1192impl EbsBlockDevice {
1193 #[cfg(any(test, feature = "test-support"))]
1194 /// Create a fixture instance for testing.
1195 pub fn fixture() -> Self {
1196 Self {
1197 snapshot_id: Some("test-snapshot_id".into()),
1198 volume_size: Some(100),
1199 volume_type: Some("test-volume_type".into()),
1200 encrypted: Some(false),
1201 }
1202 }
1203}
1204
1205///
1206/// **AWS API**: `ec2.v1.DescribeSecurityGroupsResult`
1207/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSecurityGroupsResult>
1208#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1209pub struct DescribeSecurityGroupsResponse {
1210 /// Information about the security groups.
1211 #[serde(rename(serialize = "SecurityGroupInfo", deserialize = "securityGroupInfo"))]
1212 #[serde(default)]
1213 #[serde(skip_serializing_if = "Vec::is_empty")]
1214 pub security_groups: Vec<SecurityGroup>,
1215
1216 /// The token to include in another request to get the next page of items. This value is
1217 /// null when there are no more items to return.
1218 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1219 #[serde(skip_serializing_if = "Option::is_none")]
1220 pub next_token: Option<String>,
1221}
1222
1223impl DescribeSecurityGroupsResponse {
1224 #[cfg(any(test, feature = "test-support"))]
1225 /// Create a fixture instance for testing.
1226 pub fn fixture() -> Self {
1227 Self {
1228 security_groups: vec![],
1229 next_token: Some("test-next_token".into()),
1230 }
1231 }
1232}
1233
1234/// Describes a security group.
1235///
1236/// **AWS API**: `ec2.v1.SecurityGroup`
1237/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//SecurityGroup>
1238///
1239/// ## Coverage
1240/// 7 of 9 fields included.
1241/// Omitted fields:
1242/// - `SecurityGroupArn` — not selected in manifest
1243/// - `OwnerId` — not selected in manifest
1244#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1245pub struct SecurityGroup {
1246 /// The ID of the security group.
1247 #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
1248 #[serde(skip_serializing_if = "Option::is_none")]
1249 pub group_id: Option<String>,
1250
1251 /// The name of the security group.
1252 #[serde(rename(serialize = "GroupName", deserialize = "groupName"))]
1253 #[serde(skip_serializing_if = "Option::is_none")]
1254 pub group_name: Option<String>,
1255
1256 /// A description of the security group.
1257 #[serde(rename(serialize = "GroupDescription", deserialize = "groupDescription"))]
1258 #[serde(skip_serializing_if = "Option::is_none")]
1259 pub description: Option<String>,
1260
1261 /// The ID of the VPC for the security group.
1262 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1263 #[serde(skip_serializing_if = "Option::is_none")]
1264 pub vpc_id: Option<String>,
1265
1266 /// The inbound rules associated with the security group.
1267 #[serde(rename(serialize = "IpPermissions", deserialize = "ipPermissions"))]
1268 #[serde(default)]
1269 #[serde(skip_serializing_if = "Vec::is_empty")]
1270 pub ip_permissions: Vec<IpPermission>,
1271
1272 /// The outbound rules associated with the security group.
1273 #[serde(rename(serialize = "IpPermissionsEgress", deserialize = "ipPermissionsEgress"))]
1274 #[serde(default)]
1275 #[serde(skip_serializing_if = "Vec::is_empty")]
1276 pub ip_permissions_egress: Vec<IpPermission>,
1277
1278 /// Any tags assigned to the security group.
1279 #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
1280 #[serde(default)]
1281 #[serde(skip_serializing_if = "Vec::is_empty")]
1282 pub tags: Vec<Tag>,
1283}
1284
1285impl SecurityGroup {
1286 #[cfg(any(test, feature = "test-support"))]
1287 /// Create a fixture instance for testing.
1288 pub fn fixture() -> Self {
1289 Self {
1290 group_id: Some("test-group_id".into()),
1291 group_name: Some("test-group_name".into()),
1292 description: Some("test-description".into()),
1293 vpc_id: Some("test-vpc_id".into()),
1294 ip_permissions: vec![],
1295 ip_permissions_egress: vec![],
1296 tags: vec![],
1297 }
1298 }
1299}
1300
1301/// Describes the permissions for a security group rule.
1302///
1303/// **AWS API**: `ec2.v1.IpPermission`
1304/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IpPermission>
1305///
1306/// ## Coverage
1307/// 5 of 7 fields included.
1308/// Omitted fields:
1309/// - `UserIdGroupPairs` — not selected in manifest
1310/// - `PrefixListIds` — not selected in manifest
1311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1312pub struct IpPermission {
1313 /// The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers). Use -1
1314 /// to specify all protocols. When authorizing security group rules, specifying -1 or a
1315 /// protocol number other than tcp, udp, icmp, or icmpv6 allows traffic on all ports,
1316 /// regardless of any port range you specify. For tcp, udp, and icmp, you must specify a
1317 /// port range. For icmpv6, the port range is optional; if you omit the port range, traffic
1318 /// for all types and codes is allowed.
1319 #[serde(rename(serialize = "IpProtocol", deserialize = "ipProtocol"))]
1320 #[serde(skip_serializing_if = "Option::is_none")]
1321 pub ip_protocol: Option<String>,
1322
1323 /// If the protocol is TCP or UDP, this is the start of the port range. If the protocol is
1324 /// ICMP or ICMPv6, this is the ICMP type or -1 (all ICMP types).
1325 #[serde(rename(serialize = "FromPort", deserialize = "fromPort"))]
1326 #[serde(skip_serializing_if = "Option::is_none")]
1327 pub from_port: Option<i32>,
1328
1329 /// If the protocol is TCP or UDP, this is the end of the port range. If the protocol is
1330 /// ICMP or ICMPv6, this is the ICMP code or -1 (all ICMP codes). If the start port is -1
1331 /// (all ICMP types), then the end port must be -1 (all ICMP codes).
1332 #[serde(rename(serialize = "ToPort", deserialize = "toPort"))]
1333 #[serde(skip_serializing_if = "Option::is_none")]
1334 pub to_port: Option<i32>,
1335
1336 /// The IPv4 address ranges.
1337 #[serde(rename(serialize = "IpRanges", deserialize = "ipRanges"))]
1338 #[serde(default)]
1339 #[serde(skip_serializing_if = "Vec::is_empty")]
1340 pub ip_ranges: Vec<IpRange>,
1341
1342 /// The IPv6 address ranges.
1343 #[serde(rename(serialize = "Ipv6Ranges", deserialize = "ipv6Ranges"))]
1344 #[serde(default)]
1345 #[serde(skip_serializing_if = "Vec::is_empty")]
1346 pub ipv6_ranges: Vec<Ipv6Range>,
1347}
1348
1349impl IpPermission {
1350 #[cfg(any(test, feature = "test-support"))]
1351 /// Create a fixture instance for testing.
1352 pub fn fixture() -> Self {
1353 Self {
1354 ip_protocol: Some("test-ip_protocol".into()),
1355 from_port: Some(100),
1356 to_port: Some(100),
1357 ip_ranges: vec![],
1358 ipv6_ranges: vec![],
1359 }
1360 }
1361}
1362
1363/// Describes an IPv4 address range.
1364///
1365/// **AWS API**: `ec2.v1.IpRange`
1366/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IpRange>
1367#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1368pub struct IpRange {
1369 /// The IPv4 address range. You can either specify a CIDR block or a source security group,
1370 /// not both. To specify a single IPv4 address, use the /32 prefix length. Amazon Web
1371 /// Services canonicalizes IPv4 and IPv6 CIDRs. For example, if you specify 100.68.0.18/18
1372 /// for the CIDR block, Amazon Web Services canonicalizes the CIDR block to 100.68.0.0/18.
1373 /// Any subsequent DescribeSecurityGroups and DescribeSecurityGroupRules calls will return
1374 /// the canonicalized form of the CIDR block. Additionally, if you attempt to add another
1375 /// rule with the non-canonical form of the CIDR (such as 100.68.0.18/18) and there is
1376 /// already a rule for the canonicalized form of the CIDR block (such as 100.68.0.0/18), the
1377 /// API throws an duplicate rule error.
1378 #[serde(rename(serialize = "CidrIp", deserialize = "cidrIp"))]
1379 #[serde(skip_serializing_if = "Option::is_none")]
1380 pub cidr_ip: Option<String>,
1381
1382 /// A description for the security group rule that references this IPv4 address range.
1383 /// Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9,
1384 /// spaces, and ._-:/()#,@[]+=&;{}!$*
1385 #[serde(rename(serialize = "Description", deserialize = "description"))]
1386 #[serde(skip_serializing_if = "Option::is_none")]
1387 pub description: Option<String>,
1388}
1389
1390impl IpRange {
1391 #[cfg(any(test, feature = "test-support"))]
1392 /// Create a fixture instance for testing.
1393 pub fn fixture() -> Self {
1394 Self {
1395 cidr_ip: Some("test-cidr_ip".into()),
1396 description: Some("test-description".into()),
1397 }
1398 }
1399}
1400
1401/// Describes an IPv6 address range.
1402///
1403/// **AWS API**: `ec2.v1.Ipv6Range`
1404/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Ipv6Range>
1405#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1406pub struct Ipv6Range {
1407 /// The IPv6 address range. You can either specify a CIDR block or a source security group,
1408 /// not both. To specify a single IPv6 address, use the /128 prefix length. Amazon Web
1409 /// Services canonicalizes IPv4 and IPv6 CIDRs. For example, if you specify 100.68.0.18/18
1410 /// for the CIDR block, Amazon Web Services canonicalizes the CIDR block to 100.68.0.0/18.
1411 /// Any subsequent DescribeSecurityGroups and DescribeSecurityGroupRules calls will return
1412 /// the canonicalized form of the CIDR block. Additionally, if you attempt to add another
1413 /// rule with the non-canonical form of the CIDR (such as 100.68.0.18/18) and there is
1414 /// already a rule for the canonicalized form of the CIDR block (such as 100.68.0.0/18), the
1415 /// API throws an duplicate rule error.
1416 #[serde(rename(serialize = "CidrIpv6", deserialize = "cidrIpv6"))]
1417 #[serde(skip_serializing_if = "Option::is_none")]
1418 pub cidr_ipv6: Option<String>,
1419
1420 /// A description for the security group rule that references this IPv6 address range.
1421 /// Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9,
1422 /// spaces, and ._-:/()#,@[]+=&;{}!$*
1423 #[serde(rename(serialize = "Description", deserialize = "description"))]
1424 #[serde(skip_serializing_if = "Option::is_none")]
1425 pub description: Option<String>,
1426}
1427
1428impl Ipv6Range {
1429 #[cfg(any(test, feature = "test-support"))]
1430 /// Create a fixture instance for testing.
1431 pub fn fixture() -> Self {
1432 Self {
1433 cidr_ipv6: Some("test-cidr_ipv6".into()),
1434 description: Some("test-description".into()),
1435 }
1436 }
1437}
1438
1439///
1440/// **AWS API**: `ec2.v1.DescribeAddressesResult`
1441/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeAddressesResult>
1442#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1443pub struct DescribeAddressesResponse {
1444 /// Information about the Elastic IP addresses.
1445 #[serde(rename(serialize = "AddressesSet", deserialize = "addressesSet"))]
1446 #[serde(default)]
1447 #[serde(skip_serializing_if = "Vec::is_empty")]
1448 pub addresses: Vec<Address>,
1449}
1450
1451impl DescribeAddressesResponse {
1452 #[cfg(any(test, feature = "test-support"))]
1453 /// Create a fixture instance for testing.
1454 pub fn fixture() -> Self {
1455 Self { addresses: vec![] }
1456 }
1457}
1458
1459/// Describes an Elastic IP address, or a carrier IP address.
1460///
1461/// **AWS API**: `ec2.v1.Address`
1462/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Address>
1463///
1464/// ## Coverage
1465/// 6 of 16 fields included.
1466/// Omitted fields:
1467/// - `NetworkInterfaceOwnerId` — not selected in manifest
1468/// - `PrivateIpAddress` — not selected in manifest
1469/// - `Tags` — not selected in manifest
1470/// - `PublicIpv4Pool` — not selected in manifest
1471/// - `NetworkBorderGroup` — not selected in manifest
1472/// - `CustomerOwnedIp` — not selected in manifest
1473/// - `CustomerOwnedIpv4Pool` — not selected in manifest
1474/// - `CarrierIp` — not selected in manifest
1475/// - `SubnetId` — not selected in manifest
1476/// - `ServiceManaged` — not selected in manifest
1477#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1478pub struct Address {
1479 /// The ID representing the allocation of the address.
1480 #[serde(rename(serialize = "AllocationId", deserialize = "allocationId"))]
1481 #[serde(skip_serializing_if = "Option::is_none")]
1482 pub allocation_id: Option<String>,
1483
1484 /// The Elastic IP address.
1485 #[serde(rename(serialize = "PublicIp", deserialize = "publicIp"))]
1486 #[serde(skip_serializing_if = "Option::is_none")]
1487 pub public_ip: Option<String>,
1488
1489 /// The ID of the instance that the address is associated with (if any).
1490 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
1491 #[serde(skip_serializing_if = "Option::is_none")]
1492 pub instance_id: Option<String>,
1493
1494 /// The ID representing the association of the address with an instance.
1495 #[serde(rename(serialize = "AssociationId", deserialize = "associationId"))]
1496 #[serde(skip_serializing_if = "Option::is_none")]
1497 pub association_id: Option<String>,
1498
1499 /// The ID of the network interface.
1500 #[serde(rename(serialize = "NetworkInterfaceId", deserialize = "networkInterfaceId"))]
1501 #[serde(skip_serializing_if = "Option::is_none")]
1502 pub network_interface_id: Option<String>,
1503
1504 /// The network (vpc).
1505 #[serde(rename(serialize = "Domain", deserialize = "domain"))]
1506 #[serde(skip_serializing_if = "Option::is_none")]
1507 pub domain: Option<String>,
1508}
1509
1510impl Address {
1511 #[cfg(any(test, feature = "test-support"))]
1512 /// Create a fixture instance for testing.
1513 pub fn fixture() -> Self {
1514 Self {
1515 allocation_id: Some("test-allocation_id".into()),
1516 public_ip: Some("test-public_ip".into()),
1517 instance_id: Some("test-instance_id".into()),
1518 association_id: Some("test-association_id".into()),
1519 network_interface_id: Some("test-network_interface_id".into()),
1520 domain: Some("test-domain".into()),
1521 }
1522 }
1523}
1524
1525///
1526/// **AWS API**: `ec2.v1.DescribeNatGatewaysResult`
1527/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNatGatewaysResult>
1528#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1529pub struct DescribeNatGatewaysResponse {
1530 /// Information about the NAT gateways.
1531 #[serde(rename(serialize = "NatGatewaySet", deserialize = "natGatewaySet"))]
1532 #[serde(default)]
1533 #[serde(skip_serializing_if = "Vec::is_empty")]
1534 pub nat_gateways: Vec<NatGateway>,
1535
1536 /// The token to include in another request to get the next page of items. This value is
1537 /// null when there are no more items to return.
1538 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1539 #[serde(skip_serializing_if = "Option::is_none")]
1540 pub next_token: Option<String>,
1541}
1542
1543impl DescribeNatGatewaysResponse {
1544 #[cfg(any(test, feature = "test-support"))]
1545 /// Create a fixture instance for testing.
1546 pub fn fixture() -> Self {
1547 Self {
1548 nat_gateways: vec![],
1549 next_token: Some("test-next_token".into()),
1550 }
1551 }
1552}
1553
1554/// Describes a NAT gateway.
1555///
1556/// **AWS API**: `ec2.v1.NatGateway`
1557/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NatGateway>
1558///
1559/// ## Coverage
1560/// 6 of 17 fields included.
1561/// Omitted fields:
1562/// - `DeleteTime` — not selected in manifest
1563/// - `FailureCode` — not selected in manifest
1564/// - `FailureMessage` — not selected in manifest
1565/// - `ProvisionedBandwidth` — not selected in manifest
1566/// - `Tags` — not selected in manifest
1567/// - `ConnectivityType` — not selected in manifest
1568/// - `AvailabilityMode` — not selected in manifest
1569/// - `AutoScalingIps` — not selected in manifest
1570/// - `AutoProvisionZones` — not selected in manifest
1571/// - `AttachedAppliances` — not selected in manifest
1572/// - `RouteTableId` — not selected in manifest
1573#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1574pub struct NatGateway {
1575 /// The ID of the NAT gateway.
1576 #[serde(rename(serialize = "NatGatewayId", deserialize = "natGatewayId"))]
1577 #[serde(skip_serializing_if = "Option::is_none")]
1578 pub nat_gateway_id: Option<String>,
1579
1580 /// The state of the NAT gateway. pending: The NAT gateway is being created and is not ready
1581 /// to process traffic. failed: The NAT gateway could not be created. Check the failureCode
1582 /// and failureMessage fields for the reason. available: The NAT gateway is able to process
1583 /// traffic. This status remains until you delete the NAT gateway, and does not indicate the
1584 /// health of the NAT gateway. deleting: The NAT gateway is in the process of being
1585 /// terminated and may still be processing traffic. deleted: The NAT gateway has been
1586 /// terminated and is no longer processing traffic.
1587 #[serde(rename(serialize = "State", deserialize = "state"))]
1588 #[serde(skip_serializing_if = "Option::is_none")]
1589 pub state: Option<String>,
1590
1591 /// The ID of the subnet in which the NAT gateway is located.
1592 #[serde(rename(serialize = "SubnetId", deserialize = "subnetId"))]
1593 #[serde(skip_serializing_if = "Option::is_none")]
1594 pub subnet_id: Option<String>,
1595
1596 /// The ID of the VPC in which the NAT gateway is located.
1597 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1598 #[serde(skip_serializing_if = "Option::is_none")]
1599 pub vpc_id: Option<String>,
1600
1601 /// Information about the IP addresses and network interface associated with the NAT
1602 /// gateway.
1603 #[serde(rename(
1604 serialize = "NatGatewayAddressSet",
1605 deserialize = "natGatewayAddressSet"
1606 ))]
1607 #[serde(default)]
1608 #[serde(skip_serializing_if = "Vec::is_empty")]
1609 pub nat_gateway_addresses: Vec<NatGatewayAddress>,
1610
1611 /// The date and time the NAT gateway was created.
1612 #[serde(rename(serialize = "CreateTime", deserialize = "createTime"))]
1613 #[serde(skip_serializing_if = "Option::is_none")]
1614 pub create_time: Option<String>,
1615}
1616
1617impl NatGateway {
1618 #[cfg(any(test, feature = "test-support"))]
1619 /// Create a fixture instance for testing.
1620 pub fn fixture() -> Self {
1621 Self {
1622 nat_gateway_id: Some("test-nat_gateway_id".into()),
1623 state: Some("test-state".into()),
1624 subnet_id: Some("test-subnet_id".into()),
1625 vpc_id: Some("test-vpc_id".into()),
1626 nat_gateway_addresses: vec![],
1627 create_time: Some("test-create_time".into()),
1628 }
1629 }
1630}
1631
1632/// Describes the IP addresses and network interface associated with a NAT gateway.
1633///
1634/// **AWS API**: `ec2.v1.NatGatewayAddress`
1635/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NatGatewayAddress>
1636///
1637/// ## Coverage
1638/// 2 of 10 fields included.
1639/// Omitted fields:
1640/// - `NetworkInterfaceId` — not selected in manifest
1641/// - `PrivateIp` — not selected in manifest
1642/// - `AssociationId` — not selected in manifest
1643/// - `IsPrimary` — not selected in manifest
1644/// - `FailureMessage` — not selected in manifest
1645/// - `Status` — not selected in manifest
1646/// - `AvailabilityZone` — not selected in manifest
1647/// - `AvailabilityZoneId` — not selected in manifest
1648#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1649pub struct NatGatewayAddress {
1650 /// [Public NAT gateway only] The allocation ID of the Elastic IP address that's associated
1651 /// with the NAT gateway.
1652 #[serde(rename(serialize = "AllocationId", deserialize = "allocationId"))]
1653 #[serde(skip_serializing_if = "Option::is_none")]
1654 pub allocation_id: Option<String>,
1655
1656 /// [Public NAT gateway only] The Elastic IP address associated with the NAT gateway.
1657 #[serde(rename(serialize = "PublicIp", deserialize = "publicIp"))]
1658 #[serde(skip_serializing_if = "Option::is_none")]
1659 pub public_ip: Option<String>,
1660}
1661
1662impl NatGatewayAddress {
1663 #[cfg(any(test, feature = "test-support"))]
1664 /// Create a fixture instance for testing.
1665 pub fn fixture() -> Self {
1666 Self {
1667 allocation_id: Some("test-allocation_id".into()),
1668 public_ip: Some("test-public_ip".into()),
1669 }
1670 }
1671}
1672
1673/// Contains the output of DescribeRouteTables.
1674///
1675/// **AWS API**: `ec2.v1.DescribeRouteTablesResult`
1676/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeRouteTablesResult>
1677#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1678pub struct DescribeRouteTablesResponse {
1679 /// Information about the route tables.
1680 #[serde(rename(serialize = "RouteTableSet", deserialize = "routeTableSet"))]
1681 #[serde(default)]
1682 #[serde(skip_serializing_if = "Vec::is_empty")]
1683 pub route_tables: Vec<RouteTable>,
1684
1685 /// The token to include in another request to get the next page of items. This value is
1686 /// null when there are no more items to return.
1687 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1688 #[serde(skip_serializing_if = "Option::is_none")]
1689 pub next_token: Option<String>,
1690}
1691
1692impl DescribeRouteTablesResponse {
1693 #[cfg(any(test, feature = "test-support"))]
1694 /// Create a fixture instance for testing.
1695 pub fn fixture() -> Self {
1696 Self {
1697 route_tables: vec![],
1698 next_token: Some("test-next_token".into()),
1699 }
1700 }
1701}
1702
1703/// Describes a route table.
1704///
1705/// **AWS API**: `ec2.v1.RouteTable`
1706/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RouteTable>
1707///
1708/// ## Coverage
1709/// 4 of 7 fields included.
1710/// Omitted fields:
1711/// - `PropagatingVgws` — not selected in manifest
1712/// - `Tags` — not selected in manifest
1713/// - `OwnerId` — not selected in manifest
1714#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1715pub struct RouteTable {
1716 /// The ID of the route table.
1717 #[serde(rename(serialize = "RouteTableId", deserialize = "routeTableId"))]
1718 #[serde(skip_serializing_if = "Option::is_none")]
1719 pub route_table_id: Option<String>,
1720
1721 /// The ID of the VPC.
1722 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1723 #[serde(skip_serializing_if = "Option::is_none")]
1724 pub vpc_id: Option<String>,
1725
1726 /// The routes in the route table.
1727 #[serde(rename(serialize = "RouteSet", deserialize = "routeSet"))]
1728 #[serde(default)]
1729 #[serde(skip_serializing_if = "Vec::is_empty")]
1730 pub routes: Vec<Route>,
1731
1732 /// The associations between the route table and your subnets or gateways.
1733 #[serde(rename(serialize = "AssociationSet", deserialize = "associationSet"))]
1734 #[serde(default)]
1735 #[serde(skip_serializing_if = "Vec::is_empty")]
1736 pub associations: Vec<RouteTableAssociation>,
1737}
1738
1739impl RouteTable {
1740 #[cfg(any(test, feature = "test-support"))]
1741 /// Create a fixture instance for testing.
1742 pub fn fixture() -> Self {
1743 Self {
1744 route_table_id: Some("test-route_table_id".into()),
1745 vpc_id: Some("test-vpc_id".into()),
1746 routes: vec![],
1747 associations: vec![],
1748 }
1749 }
1750}
1751
1752/// Describes a route in a route table.
1753///
1754/// **AWS API**: `ec2.v1.Route`
1755/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Route>
1756///
1757/// ## Coverage
1758/// 4 of 18 fields included.
1759/// Omitted fields:
1760/// - `DestinationIpv6CidrBlock` — not selected in manifest
1761/// - `DestinationPrefixListId` — not selected in manifest
1762/// - `EgressOnlyInternetGatewayId` — not selected in manifest
1763/// - `InstanceId` — not selected in manifest
1764/// - `InstanceOwnerId` — not selected in manifest
1765/// - `TransitGatewayId` — not selected in manifest
1766/// - `LocalGatewayId` — not selected in manifest
1767/// - `CarrierGatewayId` — not selected in manifest
1768/// - `NetworkInterfaceId` — not selected in manifest
1769/// - `Origin` — not selected in manifest
1770/// - `VpcPeeringConnectionId` — not selected in manifest
1771/// - `CoreNetworkArn` — not selected in manifest
1772/// - `OdbNetworkArn` — not selected in manifest
1773/// - `IpAddress` — not selected in manifest
1774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1775pub struct Route {
1776 /// The IPv4 CIDR block used for the destination match.
1777 #[serde(rename(
1778 serialize = "DestinationCidrBlock",
1779 deserialize = "destinationCidrBlock"
1780 ))]
1781 #[serde(skip_serializing_if = "Option::is_none")]
1782 pub destination_cidr_block: Option<String>,
1783
1784 /// The ID of a NAT gateway.
1785 #[serde(rename(serialize = "NatGatewayId", deserialize = "natGatewayId"))]
1786 #[serde(skip_serializing_if = "Option::is_none")]
1787 pub nat_gateway_id: Option<String>,
1788
1789 /// The ID of a gateway attached to your VPC.
1790 #[serde(rename(serialize = "GatewayId", deserialize = "gatewayId"))]
1791 #[serde(skip_serializing_if = "Option::is_none")]
1792 pub gateway_id: Option<String>,
1793
1794 /// The state of the route. The blackhole state indicates that the route's target isn't
1795 /// available (for example, the specified gateway isn't attached to the VPC, or the
1796 /// specified NAT instance has been terminated).
1797 #[serde(rename(serialize = "State", deserialize = "state"))]
1798 #[serde(skip_serializing_if = "Option::is_none")]
1799 pub state: Option<String>,
1800}
1801
1802impl Route {
1803 #[cfg(any(test, feature = "test-support"))]
1804 /// Create a fixture instance for testing.
1805 pub fn fixture() -> Self {
1806 Self {
1807 destination_cidr_block: Some("test-destination_cidr_block".into()),
1808 nat_gateway_id: Some("test-nat_gateway_id".into()),
1809 gateway_id: Some("test-gateway_id".into()),
1810 state: Some("test-state".into()),
1811 }
1812 }
1813}
1814
1815/// Describes an association between a route table and a subnet or gateway.
1816///
1817/// **AWS API**: `ec2.v1.RouteTableAssociation`
1818/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RouteTableAssociation>
1819///
1820/// ## Coverage
1821/// 2 of 7 fields included.
1822/// Omitted fields:
1823/// - `RouteTableAssociationId` — not selected in manifest
1824/// - `RouteTableId` — not selected in manifest
1825/// - `GatewayId` — not selected in manifest
1826/// - `PublicIpv4Pool` — not selected in manifest
1827/// - `AssociationState` — not selected in manifest
1828#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1829pub struct RouteTableAssociation {
1830 /// The ID of the subnet. A subnet ID is not returned for an implicit association.
1831 #[serde(rename(serialize = "SubnetId", deserialize = "subnetId"))]
1832 #[serde(skip_serializing_if = "Option::is_none")]
1833 pub subnet_id: Option<String>,
1834
1835 /// Indicates whether this is the main route table.
1836 #[serde(rename(serialize = "Main", deserialize = "main"))]
1837 #[serde(skip_serializing_if = "Option::is_none")]
1838 pub main: Option<bool>,
1839}
1840
1841impl RouteTableAssociation {
1842 #[cfg(any(test, feature = "test-support"))]
1843 /// Create a fixture instance for testing.
1844 pub fn fixture() -> Self {
1845 Self {
1846 subnet_id: Some("test-subnet_id".into()),
1847 main: Some(false),
1848 }
1849 }
1850}
1851
1852///
1853/// **AWS API**: `ec2.v1.DescribeNetworkAclsResult`
1854/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNetworkAclsResult>
1855#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1856pub struct DescribeNetworkAclsResponse {
1857 /// Information about the network ACLs.
1858 #[serde(rename(serialize = "NetworkAclSet", deserialize = "networkAclSet"))]
1859 #[serde(default)]
1860 #[serde(skip_serializing_if = "Vec::is_empty")]
1861 pub network_acls: Vec<NetworkAcl>,
1862
1863 /// The token to include in another request to get the next page of items. This value is
1864 /// null when there are no more items to return.
1865 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1866 #[serde(skip_serializing_if = "Option::is_none")]
1867 pub next_token: Option<String>,
1868}
1869
1870impl DescribeNetworkAclsResponse {
1871 #[cfg(any(test, feature = "test-support"))]
1872 /// Create a fixture instance for testing.
1873 pub fn fixture() -> Self {
1874 Self {
1875 network_acls: vec![],
1876 next_token: Some("test-next_token".into()),
1877 }
1878 }
1879}
1880
1881/// Describes a network ACL.
1882///
1883/// **AWS API**: `ec2.v1.NetworkAcl`
1884/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NetworkAcl>
1885///
1886/// ## Coverage
1887/// 4 of 7 fields included.
1888/// Omitted fields:
1889/// - `Associations` — not selected in manifest
1890/// - `Tags` — not selected in manifest
1891/// - `OwnerId` — not selected in manifest
1892#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1893pub struct NetworkAcl {
1894 /// The ID of the network ACL.
1895 #[serde(rename(serialize = "NetworkAclId", deserialize = "networkAclId"))]
1896 #[serde(skip_serializing_if = "Option::is_none")]
1897 pub network_acl_id: Option<String>,
1898
1899 /// The ID of the VPC for the network ACL.
1900 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1901 #[serde(skip_serializing_if = "Option::is_none")]
1902 pub vpc_id: Option<String>,
1903
1904 /// Indicates whether this is the default network ACL for the VPC.
1905 #[serde(rename(serialize = "Default", deserialize = "default"))]
1906 #[serde(skip_serializing_if = "Option::is_none")]
1907 pub is_default: Option<bool>,
1908
1909 /// The entries (rules) in the network ACL.
1910 #[serde(rename(serialize = "EntrySet", deserialize = "entrySet"))]
1911 #[serde(default)]
1912 #[serde(skip_serializing_if = "Vec::is_empty")]
1913 pub entries: Vec<NetworkAclEntry>,
1914}
1915
1916impl NetworkAcl {
1917 #[cfg(any(test, feature = "test-support"))]
1918 /// Create a fixture instance for testing.
1919 pub fn fixture() -> Self {
1920 Self {
1921 network_acl_id: Some("test-network_acl_id".into()),
1922 vpc_id: Some("test-vpc_id".into()),
1923 is_default: Some(false),
1924 entries: vec![],
1925 }
1926 }
1927}
1928
1929/// Describes an entry in a network ACL.
1930///
1931/// **AWS API**: `ec2.v1.NetworkAclEntry`
1932/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NetworkAclEntry>
1933///
1934/// ## Coverage
1935/// 6 of 8 fields included.
1936/// Omitted fields:
1937/// - `IcmpTypeCode` — not selected in manifest
1938/// - `Ipv6CidrBlock` — not selected in manifest
1939#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1940pub struct NetworkAclEntry {
1941 /// The rule number for the entry. ACL entries are processed in ascending order by rule
1942 /// number.
1943 #[serde(rename(serialize = "RuleNumber", deserialize = "ruleNumber"))]
1944 #[serde(skip_serializing_if = "Option::is_none")]
1945 pub rule_number: Option<i32>,
1946
1947 /// The protocol number. A value of "-1" means all protocols.
1948 #[serde(rename(serialize = "Protocol", deserialize = "protocol"))]
1949 #[serde(skip_serializing_if = "Option::is_none")]
1950 pub protocol: Option<String>,
1951
1952 /// Indicates whether to allow or deny the traffic that matches the rule.
1953 #[serde(rename(serialize = "RuleAction", deserialize = "ruleAction"))]
1954 #[serde(skip_serializing_if = "Option::is_none")]
1955 pub rule_action: Option<String>,
1956
1957 /// Indicates whether the rule is an egress rule (applied to traffic leaving the subnet).
1958 #[serde(rename(serialize = "Egress", deserialize = "egress"))]
1959 #[serde(skip_serializing_if = "Option::is_none")]
1960 pub egress: Option<bool>,
1961
1962 /// The IPv4 network range to allow or deny, in CIDR notation.
1963 #[serde(rename(serialize = "CidrBlock", deserialize = "cidrBlock"))]
1964 #[serde(skip_serializing_if = "Option::is_none")]
1965 pub cidr_block: Option<String>,
1966
1967 /// TCP or UDP protocols: The range of ports the rule applies to.
1968 #[serde(rename(serialize = "PortRange", deserialize = "portRange"))]
1969 #[serde(skip_serializing_if = "Option::is_none")]
1970 pub port_range: Option<PortRange>,
1971}
1972
1973impl NetworkAclEntry {
1974 #[cfg(any(test, feature = "test-support"))]
1975 /// Create a fixture instance for testing.
1976 pub fn fixture() -> Self {
1977 Self {
1978 rule_number: Some(100),
1979 protocol: Some("test-protocol".into()),
1980 rule_action: Some("test-rule_action".into()),
1981 egress: Some(false),
1982 cidr_block: Some("test-cidr_block".into()),
1983 port_range: Some(PortRange::fixture()),
1984 }
1985 }
1986}
1987
1988/// Describes a range of ports.
1989///
1990/// **AWS API**: `ec2.v1.PortRange`
1991/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//PortRange>
1992#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1993pub struct PortRange {
1994 /// The first port in the range.
1995 #[serde(rename(serialize = "From", deserialize = "from"))]
1996 #[serde(skip_serializing_if = "Option::is_none")]
1997 pub from: Option<i32>,
1998
1999 /// The last port in the range.
2000 #[serde(rename(serialize = "To", deserialize = "to"))]
2001 #[serde(skip_serializing_if = "Option::is_none")]
2002 pub to: Option<i32>,
2003}
2004
2005impl PortRange {
2006 #[cfg(any(test, feature = "test-support"))]
2007 /// Create a fixture instance for testing.
2008 pub fn fixture() -> Self {
2009 Self {
2010 from: Some(100),
2011 to: Some(100),
2012 }
2013 }
2014}
2015
2016///
2017/// **AWS API**: `ec2.v1.DescribeFlowLogsResult`
2018/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeFlowLogsResult>
2019#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2020pub struct DescribeFlowLogsResponse {
2021 /// Information about the flow logs.
2022 #[serde(rename(serialize = "FlowLogSet", deserialize = "flowLogSet"))]
2023 #[serde(default)]
2024 #[serde(skip_serializing_if = "Vec::is_empty")]
2025 pub flow_logs: Vec<FlowLog>,
2026
2027 /// The token to request the next page of items. This value is null when there are no more
2028 /// items to return.
2029 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2030 #[serde(skip_serializing_if = "Option::is_none")]
2031 pub next_token: Option<String>,
2032}
2033
2034impl DescribeFlowLogsResponse {
2035 #[cfg(any(test, feature = "test-support"))]
2036 /// Create a fixture instance for testing.
2037 pub fn fixture() -> Self {
2038 Self {
2039 flow_logs: vec![],
2040 next_token: Some("test-next_token".into()),
2041 }
2042 }
2043}
2044
2045/// Describes a flow log.
2046///
2047/// **AWS API**: `ec2.v1.FlowLog`
2048/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//FlowLog>
2049///
2050/// ## Coverage
2051/// 5 of 16 fields included.
2052/// Omitted fields:
2053/// - `CreationTime` — not selected in manifest
2054/// - `DeliverLogsErrorMessage` — not selected in manifest
2055/// - `DeliverLogsPermissionArn` — not selected in manifest
2056/// - `DeliverCrossAccountRole` — not selected in manifest
2057/// - `DeliverLogsStatus` — not selected in manifest
2058/// - `LogDestinationType` — not selected in manifest
2059/// - `LogDestination` — not selected in manifest
2060/// - `LogFormat` — not selected in manifest
2061/// - `Tags` — not selected in manifest
2062/// - `MaxAggregationInterval` — not selected in manifest
2063/// - `DestinationOptions` — not selected in manifest
2064#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2065pub struct FlowLog {
2066 /// The ID of the flow log.
2067 #[serde(rename(serialize = "FlowLogId", deserialize = "flowLogId"))]
2068 #[serde(skip_serializing_if = "Option::is_none")]
2069 pub flow_log_id: Option<String>,
2070
2071 /// The ID of the resource being monitored.
2072 #[serde(rename(serialize = "ResourceId", deserialize = "resourceId"))]
2073 #[serde(skip_serializing_if = "Option::is_none")]
2074 pub resource_id: Option<String>,
2075
2076 /// The type of traffic captured for the flow log.
2077 #[serde(rename(serialize = "TrafficType", deserialize = "trafficType"))]
2078 #[serde(skip_serializing_if = "Option::is_none")]
2079 pub traffic_type: Option<String>,
2080
2081 /// The name of the flow log group.
2082 #[serde(rename(serialize = "LogGroupName", deserialize = "logGroupName"))]
2083 #[serde(skip_serializing_if = "Option::is_none")]
2084 pub log_group_name: Option<String>,
2085
2086 /// The status of the flow log (ACTIVE).
2087 #[serde(rename(serialize = "FlowLogStatus", deserialize = "flowLogStatus"))]
2088 #[serde(skip_serializing_if = "Option::is_none")]
2089 pub flow_log_status: Option<String>,
2090}
2091
2092impl FlowLog {
2093 #[cfg(any(test, feature = "test-support"))]
2094 /// Create a fixture instance for testing.
2095 pub fn fixture() -> Self {
2096 Self {
2097 flow_log_id: Some("test-flow_log_id".into()),
2098 resource_id: Some("test-resource_id".into()),
2099 traffic_type: Some("test-traffic_type".into()),
2100 log_group_name: Some("test-log_group_name".into()),
2101 flow_log_status: Some("test-flow_log_status".into()),
2102 }
2103 }
2104}
2105
2106///
2107/// **AWS API**: `ec2.v1.DescribeVpcsResult`
2108/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcsResult>
2109#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2110pub struct DescribeVpcsResponse {
2111 /// Information about the VPCs.
2112 #[serde(rename(serialize = "VpcSet", deserialize = "vpcSet"))]
2113 #[serde(default)]
2114 #[serde(skip_serializing_if = "Vec::is_empty")]
2115 pub vpcs: Vec<Vpc>,
2116
2117 /// The token to include in another request to get the next page of items. This value is
2118 /// null when there are no more items to return.
2119 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2120 #[serde(skip_serializing_if = "Option::is_none")]
2121 pub next_token: Option<String>,
2122}
2123
2124impl DescribeVpcsResponse {
2125 #[cfg(any(test, feature = "test-support"))]
2126 /// Create a fixture instance for testing.
2127 pub fn fixture() -> Self {
2128 Self {
2129 vpcs: vec![],
2130 next_token: Some("test-next_token".into()),
2131 }
2132 }
2133}
2134
2135/// Describes a VPC.
2136///
2137/// **AWS API**: `ec2.v1.Vpc`
2138/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Vpc>
2139///
2140/// ## Coverage
2141/// 4 of 12 fields included.
2142/// Omitted fields:
2143/// - `OwnerId` — not selected in manifest
2144/// - `InstanceTenancy` — not selected in manifest
2145/// - `Ipv6CidrBlockAssociationSet` — not selected in manifest
2146/// - `CidrBlockAssociationSet` — not selected in manifest
2147/// - `EncryptionControl` — not selected in manifest
2148/// - `Tags` — not selected in manifest
2149/// - `BlockPublicAccessStates` — not selected in manifest
2150/// - `DhcpOptionsId` — not selected in manifest
2151#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2152pub struct Vpc {
2153 /// The ID of the VPC.
2154 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
2155 #[serde(skip_serializing_if = "Option::is_none")]
2156 pub vpc_id: Option<String>,
2157
2158 /// The primary IPv4 CIDR block for the VPC.
2159 #[serde(rename(serialize = "CidrBlock", deserialize = "cidrBlock"))]
2160 #[serde(skip_serializing_if = "Option::is_none")]
2161 pub cidr_block: Option<String>,
2162
2163 /// The current state of the VPC.
2164 #[serde(rename(serialize = "State", deserialize = "state"))]
2165 #[serde(skip_serializing_if = "Option::is_none")]
2166 pub state: Option<String>,
2167
2168 /// Indicates whether the VPC is the default VPC.
2169 #[serde(rename(serialize = "IsDefault", deserialize = "isDefault"))]
2170 #[serde(skip_serializing_if = "Option::is_none")]
2171 pub is_default: Option<bool>,
2172}
2173
2174impl Vpc {
2175 #[cfg(any(test, feature = "test-support"))]
2176 /// Create a fixture instance for testing.
2177 pub fn fixture() -> Self {
2178 Self {
2179 vpc_id: Some("test-vpc_id".into()),
2180 cidr_block: Some("test-cidr_block".into()),
2181 state: Some("test-state".into()),
2182 is_default: Some(false),
2183 }
2184 }
2185}
2186
2187///
2188/// **AWS API**: `ec2.v1.DescribeVpcEndpointsResult`
2189/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcEndpointsResult>
2190#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2191pub struct DescribeVpcEndpointsResponse {
2192 /// Information about the VPC endpoints.
2193 #[serde(rename(serialize = "VpcEndpointSet", deserialize = "vpcEndpointSet"))]
2194 #[serde(default)]
2195 #[serde(skip_serializing_if = "Vec::is_empty")]
2196 pub vpc_endpoints: Vec<VpcEndpoint>,
2197
2198 /// The token to use when requesting the next set of items. If there are no additional items
2199 /// to return, the string is empty.
2200 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2201 #[serde(skip_serializing_if = "Option::is_none")]
2202 pub next_token: Option<String>,
2203}
2204
2205impl DescribeVpcEndpointsResponse {
2206 #[cfg(any(test, feature = "test-support"))]
2207 /// Create a fixture instance for testing.
2208 pub fn fixture() -> Self {
2209 Self {
2210 vpc_endpoints: vec![],
2211 next_token: Some("test-next_token".into()),
2212 }
2213 }
2214}
2215
2216/// Describes a VPC endpoint.
2217///
2218/// **AWS API**: `ec2.v1.VpcEndpoint`
2219/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcEndpoint>
2220///
2221/// ## Coverage
2222/// 6 of 25 fields included.
2223/// Omitted fields:
2224/// - `VpcEndpointType` — not selected in manifest
2225/// - `PolicyDocument` — not selected in manifest
2226/// - `Groups` — not selected in manifest
2227/// - `IpAddressType` — not selected in manifest
2228/// - `DnsOptions` — not selected in manifest
2229/// - `PrivateDnsEnabled` — not selected in manifest
2230/// - `RequesterManaged` — not selected in manifest
2231/// - `NetworkInterfaceIds` — not selected in manifest
2232/// - `DnsEntries` — not selected in manifest
2233/// - `CreationTimestamp` — not selected in manifest
2234/// - `Tags` — not selected in manifest
2235/// - `OwnerId` — not selected in manifest
2236/// - `LastError` — not selected in manifest
2237/// - `Ipv4Prefixes` — not selected in manifest
2238/// - `Ipv6Prefixes` — not selected in manifest
2239/// - `FailureReason` — not selected in manifest
2240/// - `ServiceNetworkArn` — not selected in manifest
2241/// - `ResourceConfigurationArn` — not selected in manifest
2242/// - `ServiceRegion` — not selected in manifest
2243#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2244pub struct VpcEndpoint {
2245 /// The ID of the endpoint.
2246 #[serde(rename(serialize = "VpcEndpointId", deserialize = "vpcEndpointId"))]
2247 #[serde(skip_serializing_if = "Option::is_none")]
2248 pub vpc_endpoint_id: Option<String>,
2249
2250 /// The ID of the VPC to which the endpoint is associated.
2251 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
2252 #[serde(skip_serializing_if = "Option::is_none")]
2253 pub vpc_id: Option<String>,
2254
2255 /// The name of the service to which the endpoint is associated.
2256 #[serde(rename(serialize = "ServiceName", deserialize = "serviceName"))]
2257 #[serde(skip_serializing_if = "Option::is_none")]
2258 pub service_name: Option<String>,
2259
2260 /// The state of the endpoint.
2261 #[serde(rename(serialize = "State", deserialize = "state"))]
2262 #[serde(skip_serializing_if = "Option::is_none")]
2263 pub state: Option<String>,
2264
2265 /// (Gateway endpoint) The IDs of the route tables associated with the endpoint.
2266 #[serde(rename(serialize = "RouteTableIdSet", deserialize = "routeTableIdSet"))]
2267 #[serde(default)]
2268 #[serde(skip_serializing_if = "Vec::is_empty")]
2269 pub route_table_ids: Vec<String>,
2270
2271 /// (Interface endpoint) The subnets for the endpoint.
2272 #[serde(rename(serialize = "SubnetIdSet", deserialize = "subnetIdSet"))]
2273 #[serde(default)]
2274 #[serde(skip_serializing_if = "Vec::is_empty")]
2275 pub subnet_ids: Vec<String>,
2276}
2277
2278impl VpcEndpoint {
2279 #[cfg(any(test, feature = "test-support"))]
2280 /// Create a fixture instance for testing.
2281 pub fn fixture() -> Self {
2282 Self {
2283 vpc_endpoint_id: Some("test-vpc_endpoint_id".into()),
2284 vpc_id: Some("test-vpc_id".into()),
2285 service_name: Some("test-service_name".into()),
2286 state: Some("test-state".into()),
2287 route_table_ids: vec![],
2288 subnet_ids: vec![],
2289 }
2290 }
2291}
2292
2293///
2294/// **AWS API**: `ec2.v1.DescribeVpcPeeringConnectionsResult`
2295/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcPeeringConnectionsResult>
2296#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2297pub struct DescribeVpcPeeringConnectionsResponse {
2298 /// Information about the VPC peering connections.
2299 #[serde(rename(
2300 serialize = "VpcPeeringConnectionSet",
2301 deserialize = "vpcPeeringConnectionSet"
2302 ))]
2303 #[serde(default)]
2304 #[serde(skip_serializing_if = "Vec::is_empty")]
2305 pub vpc_peering_connections: Vec<VpcPeeringConnection>,
2306
2307 /// The token to include in another request to get the next page of items. This value is
2308 /// null when there are no more items to return.
2309 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2310 #[serde(skip_serializing_if = "Option::is_none")]
2311 pub next_token: Option<String>,
2312}
2313
2314impl DescribeVpcPeeringConnectionsResponse {
2315 #[cfg(any(test, feature = "test-support"))]
2316 /// Create a fixture instance for testing.
2317 pub fn fixture() -> Self {
2318 Self {
2319 vpc_peering_connections: vec![],
2320 next_token: Some("test-next_token".into()),
2321 }
2322 }
2323}
2324
2325/// Describes a VPC peering connection.
2326///
2327/// **AWS API**: `ec2.v1.VpcPeeringConnection`
2328/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcPeeringConnection>
2329///
2330/// ## Coverage
2331/// 4 of 6 fields included.
2332/// Omitted fields:
2333/// - `ExpirationTime` — not selected in manifest
2334/// - `Tags` — not selected in manifest
2335#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2336pub struct VpcPeeringConnection {
2337 /// The ID of the VPC peering connection.
2338 #[serde(rename(
2339 serialize = "VpcPeeringConnectionId",
2340 deserialize = "vpcPeeringConnectionId"
2341 ))]
2342 #[serde(skip_serializing_if = "Option::is_none")]
2343 pub vpc_peering_connection_id: Option<String>,
2344
2345 /// The status of the VPC peering connection.
2346 #[serde(rename(serialize = "Status", deserialize = "status"))]
2347 #[serde(skip_serializing_if = "Option::is_none")]
2348 pub status: Option<VpcPeeringConnectionStateReason>,
2349
2350 /// Information about the accepter VPC. CIDR block information is only returned when
2351 /// describing an active VPC peering connection.
2352 #[serde(rename(serialize = "AccepterVpcInfo", deserialize = "accepterVpcInfo"))]
2353 #[serde(skip_serializing_if = "Option::is_none")]
2354 pub accepter_vpc_info: Option<VpcPeeringConnectionVpcInfo>,
2355
2356 /// Information about the requester VPC. CIDR block information is only returned when
2357 /// describing an active VPC peering connection.
2358 #[serde(rename(serialize = "RequesterVpcInfo", deserialize = "requesterVpcInfo"))]
2359 #[serde(skip_serializing_if = "Option::is_none")]
2360 pub requester_vpc_info: Option<VpcPeeringConnectionVpcInfo>,
2361}
2362
2363impl VpcPeeringConnection {
2364 #[cfg(any(test, feature = "test-support"))]
2365 /// Create a fixture instance for testing.
2366 pub fn fixture() -> Self {
2367 Self {
2368 vpc_peering_connection_id: Some("test-vpc_peering_connection_id".into()),
2369 status: Some(VpcPeeringConnectionStateReason::fixture()),
2370 accepter_vpc_info: Some(VpcPeeringConnectionVpcInfo::fixture()),
2371 requester_vpc_info: Some(VpcPeeringConnectionVpcInfo::fixture()),
2372 }
2373 }
2374}
2375
2376/// Describes the status of a VPC peering connection.
2377///
2378/// **AWS API**: `ec2.v1.VpcPeeringConnectionStateReason`
2379/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcPeeringConnectionStateReason>
2380#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2381pub struct VpcPeeringConnectionStateReason {
2382 /// The status of the VPC peering connection.
2383 #[serde(rename(serialize = "Code", deserialize = "code"))]
2384 #[serde(skip_serializing_if = "Option::is_none")]
2385 pub code: Option<String>,
2386
2387 /// A message that provides more information about the status, if applicable.
2388 #[serde(rename(serialize = "Message", deserialize = "message"))]
2389 #[serde(skip_serializing_if = "Option::is_none")]
2390 pub message: Option<String>,
2391}
2392
2393impl VpcPeeringConnectionStateReason {
2394 #[cfg(any(test, feature = "test-support"))]
2395 /// Create a fixture instance for testing.
2396 pub fn fixture() -> Self {
2397 Self {
2398 code: Some("test-code".into()),
2399 message: Some("test-message".into()),
2400 }
2401 }
2402}
2403
2404/// Describes a VPC in a VPC peering connection.
2405///
2406/// **AWS API**: `ec2.v1.VpcPeeringConnectionVpcInfo`
2407/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcPeeringConnectionVpcInfo>
2408///
2409/// ## Coverage
2410/// 4 of 7 fields included.
2411/// Omitted fields:
2412/// - `Ipv6CidrBlockSet` — not selected in manifest
2413/// - `CidrBlockSet` — not selected in manifest
2414/// - `PeeringOptions` — not selected in manifest
2415#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2416pub struct VpcPeeringConnectionVpcInfo {
2417 /// The ID of the VPC.
2418 #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
2419 #[serde(skip_serializing_if = "Option::is_none")]
2420 pub vpc_id: Option<String>,
2421
2422 /// The ID of the Amazon Web Services account that owns the VPC.
2423 #[serde(rename(serialize = "OwnerId", deserialize = "ownerId"))]
2424 #[serde(skip_serializing_if = "Option::is_none")]
2425 pub owner_id: Option<String>,
2426
2427 /// The IPv4 CIDR block for the VPC.
2428 #[serde(rename(serialize = "CidrBlock", deserialize = "cidrBlock"))]
2429 #[serde(skip_serializing_if = "Option::is_none")]
2430 pub cidr_block: Option<String>,
2431
2432 /// The Region in which the VPC is located.
2433 #[serde(rename(serialize = "Region", deserialize = "region"))]
2434 #[serde(skip_serializing_if = "Option::is_none")]
2435 pub region: Option<String>,
2436}
2437
2438impl VpcPeeringConnectionVpcInfo {
2439 #[cfg(any(test, feature = "test-support"))]
2440 /// Create a fixture instance for testing.
2441 pub fn fixture() -> Self {
2442 Self {
2443 vpc_id: Some("test-vpc_id".into()),
2444 owner_id: Some("test-owner_id".into()),
2445 cidr_block: Some("test-cidr_block".into()),
2446 region: Some("test-region".into()),
2447 }
2448 }
2449}
2450
2451///
2452/// **AWS API**: `ec2.v1.DescribeLaunchTemplatesResult`
2453/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplatesResult>
2454#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2455pub struct DescribeLaunchTemplatesResponse {
2456 /// Information about the launch templates.
2457 #[serde(rename(serialize = "LaunchTemplates", deserialize = "launchTemplates"))]
2458 #[serde(default)]
2459 #[serde(skip_serializing_if = "Vec::is_empty")]
2460 pub launch_templates: Vec<LaunchTemplate>,
2461
2462 /// The token to use to retrieve the next page of results. This value is null when there are
2463 /// no more results to return.
2464 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2465 #[serde(skip_serializing_if = "Option::is_none")]
2466 pub next_token: Option<String>,
2467}
2468
2469impl DescribeLaunchTemplatesResponse {
2470 #[cfg(any(test, feature = "test-support"))]
2471 /// Create a fixture instance for testing.
2472 pub fn fixture() -> Self {
2473 Self {
2474 launch_templates: vec![],
2475 next_token: Some("test-next_token".into()),
2476 }
2477 }
2478}
2479
2480/// Describes a launch template.
2481///
2482/// **AWS API**: `ec2.v1.LaunchTemplate`
2483/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplate>
2484///
2485/// ## Coverage
2486/// 2 of 8 fields included.
2487/// Omitted fields:
2488/// - `CreateTime` — not selected in manifest
2489/// - `CreatedBy` — not selected in manifest
2490/// - `DefaultVersionNumber` — not selected in manifest
2491/// - `LatestVersionNumber` — not selected in manifest
2492/// - `Tags` — not selected in manifest
2493/// - `Operator` — not selected in manifest
2494#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2495pub struct LaunchTemplate {
2496 /// The ID of the launch template.
2497 #[serde(rename(serialize = "LaunchTemplateId", deserialize = "launchTemplateId"))]
2498 #[serde(skip_serializing_if = "Option::is_none")]
2499 pub launch_template_id: Option<String>,
2500
2501 /// The name of the launch template.
2502 #[serde(rename(serialize = "LaunchTemplateName", deserialize = "launchTemplateName"))]
2503 #[serde(skip_serializing_if = "Option::is_none")]
2504 pub launch_template_name: Option<String>,
2505}
2506
2507impl LaunchTemplate {
2508 #[cfg(any(test, feature = "test-support"))]
2509 /// Create a fixture instance for testing.
2510 pub fn fixture() -> Self {
2511 Self {
2512 launch_template_id: Some("test-launch_template_id".into()),
2513 launch_template_name: Some("test-launch_template_name".into()),
2514 }
2515 }
2516}
2517
2518///
2519/// **AWS API**: `ec2.v1.DescribeLaunchTemplateVersionsResult`
2520/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplateVersionsResult>
2521#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2522pub struct DescribeLaunchTemplateVersionsResponse {
2523 /// Information about the launch template versions.
2524 #[serde(rename(
2525 serialize = "LaunchTemplateVersionSet",
2526 deserialize = "launchTemplateVersionSet"
2527 ))]
2528 #[serde(default)]
2529 #[serde(skip_serializing_if = "Vec::is_empty")]
2530 pub launch_template_versions: Vec<LaunchTemplateVersion>,
2531
2532 /// The token to use to retrieve the next page of results. This value is null when there are
2533 /// no more results to return.
2534 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2535 #[serde(skip_serializing_if = "Option::is_none")]
2536 pub next_token: Option<String>,
2537}
2538
2539impl DescribeLaunchTemplateVersionsResponse {
2540 #[cfg(any(test, feature = "test-support"))]
2541 /// Create a fixture instance for testing.
2542 pub fn fixture() -> Self {
2543 Self {
2544 launch_template_versions: vec![],
2545 next_token: Some("test-next_token".into()),
2546 }
2547 }
2548}
2549
2550/// Describes a launch template version.
2551///
2552/// **AWS API**: `ec2.v1.LaunchTemplateVersion`
2553/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplateVersion>
2554///
2555/// ## Coverage
2556/// 4 of 9 fields included.
2557/// Omitted fields:
2558/// - `VersionDescription` — not selected in manifest
2559/// - `CreateTime` — not selected in manifest
2560/// - `CreatedBy` — not selected in manifest
2561/// - `DefaultVersion` — not selected in manifest
2562/// - `Operator` — not selected in manifest
2563#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2564pub struct LaunchTemplateVersion {
2565 /// The ID of the launch template.
2566 #[serde(rename(serialize = "LaunchTemplateId", deserialize = "launchTemplateId"))]
2567 #[serde(skip_serializing_if = "Option::is_none")]
2568 pub launch_template_id: Option<String>,
2569
2570 /// The name of the launch template.
2571 #[serde(rename(serialize = "LaunchTemplateName", deserialize = "launchTemplateName"))]
2572 #[serde(skip_serializing_if = "Option::is_none")]
2573 pub launch_template_name: Option<String>,
2574
2575 /// The version number.
2576 #[serde(rename(serialize = "VersionNumber", deserialize = "versionNumber"))]
2577 #[serde(skip_serializing_if = "Option::is_none")]
2578 pub version_number: Option<i64>,
2579
2580 /// Information about the launch template.
2581 #[serde(rename(serialize = "LaunchTemplateData", deserialize = "launchTemplateData"))]
2582 #[serde(skip_serializing_if = "Option::is_none")]
2583 pub launch_template_data: Option<ResponseLaunchTemplateData>,
2584}
2585
2586impl LaunchTemplateVersion {
2587 #[cfg(any(test, feature = "test-support"))]
2588 /// Create a fixture instance for testing.
2589 pub fn fixture() -> Self {
2590 Self {
2591 launch_template_id: Some("test-launch_template_id".into()),
2592 launch_template_name: Some("test-launch_template_name".into()),
2593 version_number: Some(100),
2594 launch_template_data: Some(ResponseLaunchTemplateData::fixture()),
2595 }
2596 }
2597}
2598
2599/// The information for a launch template.
2600///
2601/// **AWS API**: `ec2.v1.ResponseLaunchTemplateData`
2602/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ResponseLaunchTemplateData>
2603///
2604/// ## Coverage
2605/// 4 of 34 fields included.
2606/// Omitted fields:
2607/// - `KernelId` — not selected in manifest
2608/// - `EbsOptimized` — not selected in manifest
2609/// - `IamInstanceProfile` — not selected in manifest
2610/// - `BlockDeviceMappings` — not selected in manifest
2611/// - `KeyName` — not selected in manifest
2612/// - `Monitoring` — not selected in manifest
2613/// - `Placement` — not selected in manifest
2614/// - `RamDiskId` — not selected in manifest
2615/// - `DisableApiTermination` — not selected in manifest
2616/// - `InstanceInitiatedShutdownBehavior` — not selected in manifest
2617/// - `UserData` — not selected in manifest
2618/// - `TagSpecifications` — not selected in manifest
2619/// - `ElasticGpuSpecifications` — not selected in manifest
2620/// - `ElasticInferenceAccelerators` — not selected in manifest
2621/// - `SecurityGroupIds` — not selected in manifest
2622/// - `SecurityGroups` — not selected in manifest
2623/// - `InstanceMarketOptions` — not selected in manifest
2624/// - `CreditSpecification` — not selected in manifest
2625/// - `CpuOptions` — not selected in manifest
2626/// - `CapacityReservationSpecification` — not selected in manifest
2627/// - `LicenseSpecifications` — not selected in manifest
2628/// - `HibernationOptions` — not selected in manifest
2629/// - `EnclaveOptions` — not selected in manifest
2630/// - `InstanceRequirements` — not selected in manifest
2631/// - `PrivateDnsNameOptions` — not selected in manifest
2632/// - `MaintenanceOptions` — not selected in manifest
2633/// - `DisableApiStop` — not selected in manifest
2634/// - `Operator` — not selected in manifest
2635/// - `NetworkPerformanceOptions` — not selected in manifest
2636/// - `SecondaryInterfaces` — not selected in manifest
2637#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2638pub struct ResponseLaunchTemplateData {
2639 /// The ID of the AMI or a Systems Manager parameter. The Systems Manager parameter will
2640 /// resolve to the ID of the AMI at instance launch. The value depends on what you specified
2641 /// in the request. The possible values are: If an AMI ID was specified in the request, then
2642 /// this is the AMI ID. If a Systems Manager parameter was specified in the request, and
2643 /// ResolveAlias was configured as true, then this is the AMI ID that the parameter is
2644 /// mapped to in the Parameter Store. If a Systems Manager parameter was specified in the
2645 /// request, and ResolveAlias was configured as false, then this is the parameter value. For
2646 /// more information, see Use a Systems Manager parameter instead of an AMI ID in the Amazon
2647 /// EC2 User Guide.
2648 #[serde(rename(serialize = "ImageId", deserialize = "imageId"))]
2649 #[serde(skip_serializing_if = "Option::is_none")]
2650 pub image_id: Option<String>,
2651
2652 /// The instance type.
2653 #[serde(rename(serialize = "InstanceType", deserialize = "instanceType"))]
2654 #[serde(skip_serializing_if = "Option::is_none")]
2655 pub instance_type: Option<String>,
2656
2657 /// The metadata options for the instance. For more information, see Configure the Instance
2658 /// Metadata Service options in the Amazon EC2 User Guide.
2659 #[serde(rename(serialize = "MetadataOptions", deserialize = "metadataOptions"))]
2660 #[serde(skip_serializing_if = "Option::is_none")]
2661 pub metadata_options: Option<LaunchTemplateInstanceMetadataOptions>,
2662
2663 /// The network interfaces.
2664 #[serde(rename(serialize = "NetworkInterfaceSet", deserialize = "networkInterfaceSet"))]
2665 #[serde(default)]
2666 #[serde(skip_serializing_if = "Vec::is_empty")]
2667 pub network_interfaces: Vec<LaunchTemplateInstanceNetworkInterfaceSpecification>,
2668}
2669
2670impl ResponseLaunchTemplateData {
2671 #[cfg(any(test, feature = "test-support"))]
2672 /// Create a fixture instance for testing.
2673 pub fn fixture() -> Self {
2674 Self {
2675 image_id: Some("test-image_id".into()),
2676 instance_type: Some("test-instance_type".into()),
2677 metadata_options: Some(LaunchTemplateInstanceMetadataOptions::fixture()),
2678 network_interfaces: vec![],
2679 }
2680 }
2681}
2682
2683/// The metadata options for the instance. For more information, see Use instance metadata to
2684/// manage your EC2 instance in the Amazon EC2 User Guide.
2685///
2686/// **AWS API**: `ec2.v1.LaunchTemplateInstanceMetadataOptions`
2687/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplateInstanceMetadataOptions>
2688///
2689/// ## Coverage
2690/// 1 of 6 fields included.
2691/// Omitted fields:
2692/// - `State` — not selected in manifest
2693/// - `HttpPutResponseHopLimit` — not selected in manifest
2694/// - `HttpEndpoint` — not selected in manifest
2695/// - `HttpProtocolIpv6` — not selected in manifest
2696/// - `InstanceMetadataTags` — not selected in manifest
2697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2698pub struct LaunchTemplateInstanceMetadataOptions {
2699 /// Indicates whether IMDSv2 is required. optional
2700 /// - IMDSv2 is optional. You can choose whether to send a session token in your instance
2701 /// metadata retrieval requests. If you retrieve IAM role credentials without a session
2702 /// token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials
2703 /// using a valid session token, you receive the IMDSv2 role credentials. required
2704 /// - IMDSv2 is required. You must send a session token in your instance metadata retrieval
2705 /// requests. With this option, retrieving the IAM role credentials always returns IMDSv2
2706 /// credentials; IMDSv1 credentials are not available.
2707 #[serde(rename(serialize = "HttpTokens", deserialize = "httpTokens"))]
2708 #[serde(skip_serializing_if = "Option::is_none")]
2709 pub http_tokens: Option<String>,
2710}
2711
2712impl LaunchTemplateInstanceMetadataOptions {
2713 #[cfg(any(test, feature = "test-support"))]
2714 /// Create a fixture instance for testing.
2715 pub fn fixture() -> Self {
2716 Self {
2717 http_tokens: Some("test-http_tokens".into()),
2718 }
2719 }
2720}
2721
2722/// Describes a network interface.
2723///
2724/// **AWS API**: `ec2.v1.LaunchTemplateInstanceNetworkInterfaceSpecification`
2725/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplateInstanceNetworkInterfaceSpecification>
2726///
2727/// ## Coverage
2728/// 1 of 23 fields included.
2729/// Omitted fields:
2730/// - `AssociateCarrierIpAddress` — not selected in manifest
2731/// - `DeleteOnTermination` — not selected in manifest
2732/// - `Description` — not selected in manifest
2733/// - `DeviceIndex` — not selected in manifest
2734/// - `Groups` — not selected in manifest
2735/// - `InterfaceType` — not selected in manifest
2736/// - `Ipv6AddressCount` — not selected in manifest
2737/// - `Ipv6Addresses` — not selected in manifest
2738/// - `NetworkInterfaceId` — not selected in manifest
2739/// - `PrivateIpAddress` — not selected in manifest
2740/// - `PrivateIpAddresses` — not selected in manifest
2741/// - `SecondaryPrivateIpAddressCount` — not selected in manifest
2742/// - `SubnetId` — not selected in manifest
2743/// - `NetworkCardIndex` — not selected in manifest
2744/// - `Ipv4Prefixes` — not selected in manifest
2745/// - `Ipv4PrefixCount` — not selected in manifest
2746/// - `Ipv6Prefixes` — not selected in manifest
2747/// - `Ipv6PrefixCount` — not selected in manifest
2748/// - `PrimaryIpv6` — not selected in manifest
2749/// - `EnaSrdSpecification` — not selected in manifest
2750/// - `ConnectionTrackingSpecification` — not selected in manifest
2751/// - `EnaQueueCount` — not selected in manifest
2752#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2753pub struct LaunchTemplateInstanceNetworkInterfaceSpecification {
2754 /// Indicates whether to associate a public IPv4 address with eth0 for a new network
2755 /// interface. Amazon Web Services charges for all public IPv4 addresses, including public
2756 /// IPv4 addresses associated with running instances and Elastic IP addresses. For more
2757 /// information, see the Public IPv4 Address tab on the Amazon VPC pricing page.
2758 #[serde(rename(
2759 serialize = "AssociatePublicIpAddress",
2760 deserialize = "associatePublicIpAddress"
2761 ))]
2762 #[serde(skip_serializing_if = "Option::is_none")]
2763 pub associate_public_ip_address: Option<bool>,
2764}
2765
2766impl LaunchTemplateInstanceNetworkInterfaceSpecification {
2767 #[cfg(any(test, feature = "test-support"))]
2768 /// Create a fixture instance for testing.
2769 pub fn fixture() -> Self {
2770 Self {
2771 associate_public_ip_address: Some(false),
2772 }
2773 }
2774}
2775
2776///
2777/// **AWS API**: `ec2.v1.GetEbsEncryptionByDefaultResult`
2778/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//GetEbsEncryptionByDefaultResult>
2779///
2780/// ## Coverage
2781/// 1 of 2 fields included.
2782/// Omitted fields:
2783/// - `SseType` — not selected in manifest
2784#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2785pub struct GetEbsEncryptionByDefaultResponse {
2786 /// Indicates whether encryption by default is enabled.
2787 #[serde(rename(
2788 serialize = "EbsEncryptionByDefault",
2789 deserialize = "ebsEncryptionByDefault"
2790 ))]
2791 #[serde(skip_serializing_if = "Option::is_none")]
2792 pub ebs_encryption_by_default: Option<bool>,
2793}
2794
2795impl GetEbsEncryptionByDefaultResponse {
2796 #[cfg(any(test, feature = "test-support"))]
2797 /// Create a fixture instance for testing.
2798 pub fn fixture() -> Self {
2799 Self {
2800 ebs_encryption_by_default: Some(false),
2801 }
2802 }
2803}
2804
2805///
2806/// **AWS API**: `ec2.v1.EnableEbsEncryptionByDefaultResult`
2807/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableEbsEncryptionByDefaultResult>
2808#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2809pub struct EnableEbsEncryptionByDefaultResponse {
2810 /// The updated status of encryption by default.
2811 #[serde(rename(
2812 serialize = "EbsEncryptionByDefault",
2813 deserialize = "ebsEncryptionByDefault"
2814 ))]
2815 #[serde(skip_serializing_if = "Option::is_none")]
2816 pub ebs_encryption_by_default: Option<bool>,
2817}
2818
2819impl EnableEbsEncryptionByDefaultResponse {
2820 #[cfg(any(test, feature = "test-support"))]
2821 /// Create a fixture instance for testing.
2822 pub fn fixture() -> Self {
2823 Self {
2824 ebs_encryption_by_default: Some(false),
2825 }
2826 }
2827}
2828
2829///
2830/// **AWS API**: `ec2.v1.EnableSnapshotBlockPublicAccessResult`
2831/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableSnapshotBlockPublicAccessResult>
2832#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2833pub struct EnableSnapshotBlockPublicAccessResponse {
2834 /// The state of block public access for snapshots for the account and Region. Returns
2835 /// either block-all-sharing or block-new-sharing if the request succeeds.
2836 #[serde(rename(serialize = "State", deserialize = "state"))]
2837 #[serde(skip_serializing_if = "Option::is_none")]
2838 pub state: Option<String>,
2839}
2840
2841impl EnableSnapshotBlockPublicAccessResponse {
2842 #[cfg(any(test, feature = "test-support"))]
2843 /// Create a fixture instance for testing.
2844 pub fn fixture() -> Self {
2845 Self {
2846 state: Some("test-state".into()),
2847 }
2848 }
2849}
2850
2851///
2852/// **AWS API**: `ec2.v1.EnableImageBlockPublicAccessResult`
2853/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableImageBlockPublicAccessResult>
2854#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2855pub struct EnableImageBlockPublicAccessResponse {
2856 /// Returns block-new-sharing if the request succeeds; otherwise, it returns an error.
2857 #[serde(rename(
2858 serialize = "ImageBlockPublicAccessState",
2859 deserialize = "imageBlockPublicAccessState"
2860 ))]
2861 #[serde(skip_serializing_if = "Option::is_none")]
2862 pub image_block_public_access_state: Option<String>,
2863}
2864
2865impl EnableImageBlockPublicAccessResponse {
2866 #[cfg(any(test, feature = "test-support"))]
2867 /// Create a fixture instance for testing.
2868 pub fn fixture() -> Self {
2869 Self {
2870 image_block_public_access_state: Some("test-image_block_public_access_state".into()),
2871 }
2872 }
2873}
2874
2875///
2876/// **AWS API**: `ec2.v1.TerminateInstancesResult`
2877/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//TerminateInstancesResult>
2878#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2879pub struct TerminateInstancesResponse {
2880 /// Information about the terminated instances.
2881 #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
2882 #[serde(default)]
2883 #[serde(skip_serializing_if = "Vec::is_empty")]
2884 pub terminating_instances: Vec<InstanceStateChange>,
2885}
2886
2887impl TerminateInstancesResponse {
2888 #[cfg(any(test, feature = "test-support"))]
2889 /// Create a fixture instance for testing.
2890 pub fn fixture() -> Self {
2891 Self {
2892 terminating_instances: vec![],
2893 }
2894 }
2895}
2896
2897/// Describes an instance state change.
2898///
2899/// **AWS API**: `ec2.v1.InstanceStateChange`
2900/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceStateChange>
2901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2902pub struct InstanceStateChange {
2903 /// The ID of the instance.
2904 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
2905 #[serde(skip_serializing_if = "Option::is_none")]
2906 pub instance_id: Option<String>,
2907
2908 /// The current state of the instance.
2909 #[serde(rename(serialize = "CurrentState", deserialize = "currentState"))]
2910 #[serde(skip_serializing_if = "Option::is_none")]
2911 pub current_state: Option<InstanceState>,
2912
2913 /// The previous state of the instance.
2914 #[serde(rename(serialize = "PreviousState", deserialize = "previousState"))]
2915 #[serde(skip_serializing_if = "Option::is_none")]
2916 pub previous_state: Option<InstanceState>,
2917}
2918
2919impl InstanceStateChange {
2920 #[cfg(any(test, feature = "test-support"))]
2921 /// Create a fixture instance for testing.
2922 pub fn fixture() -> Self {
2923 Self {
2924 instance_id: Some("test-instance_id".into()),
2925 current_state: Some(InstanceState::fixture()),
2926 previous_state: Some(InstanceState::fixture()),
2927 }
2928 }
2929}
2930
2931///
2932/// **AWS API**: `ec2.v1.StopInstancesResult`
2933/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StopInstancesResult>
2934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2935pub struct StopInstancesResponse {
2936 /// Information about the stopped instances.
2937 #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
2938 #[serde(default)]
2939 #[serde(skip_serializing_if = "Vec::is_empty")]
2940 pub stopping_instances: Vec<InstanceStateChange>,
2941}
2942
2943impl StopInstancesResponse {
2944 #[cfg(any(test, feature = "test-support"))]
2945 /// Create a fixture instance for testing.
2946 pub fn fixture() -> Self {
2947 Self {
2948 stopping_instances: vec![],
2949 }
2950 }
2951}
2952
2953///
2954/// **AWS API**: `ec2.v1.StartInstancesResult`
2955/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StartInstancesResult>
2956#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2957pub struct StartInstancesResponse {
2958 /// Information about the started instances.
2959 #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
2960 #[serde(default)]
2961 #[serde(skip_serializing_if = "Vec::is_empty")]
2962 pub starting_instances: Vec<InstanceStateChange>,
2963}
2964
2965impl StartInstancesResponse {
2966 #[cfg(any(test, feature = "test-support"))]
2967 /// Create a fixture instance for testing.
2968 pub fn fixture() -> Self {
2969 Self {
2970 starting_instances: vec![],
2971 }
2972 }
2973}
2974
2975///
2976/// **AWS API**: `ec2.v1.ModifyInstanceMetadataOptionsResult`
2977/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyInstanceMetadataOptionsResult>
2978#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2979pub struct ModifyInstanceMetadataOptionsResponse {
2980 /// The ID of the instance.
2981 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
2982 #[serde(skip_serializing_if = "Option::is_none")]
2983 pub instance_id: Option<String>,
2984
2985 /// The metadata options for the instance.
2986 #[serde(rename(
2987 serialize = "InstanceMetadataOptions",
2988 deserialize = "instanceMetadataOptions"
2989 ))]
2990 #[serde(skip_serializing_if = "Option::is_none")]
2991 pub instance_metadata_options: Option<InstanceMetadataOptionsResponse>,
2992}
2993
2994impl ModifyInstanceMetadataOptionsResponse {
2995 #[cfg(any(test, feature = "test-support"))]
2996 /// Create a fixture instance for testing.
2997 pub fn fixture() -> Self {
2998 Self {
2999 instance_id: Some("test-instance_id".into()),
3000 instance_metadata_options: Some(InstanceMetadataOptionsResponse::fixture()),
3001 }
3002 }
3003}
3004
3005///
3006/// **AWS API**: `ec2.v1.MonitorInstancesResult`
3007/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//MonitorInstancesResult>
3008#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3009pub struct MonitorInstancesResponse {
3010 /// The monitoring information.
3011 #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
3012 #[serde(default)]
3013 #[serde(skip_serializing_if = "Vec::is_empty")]
3014 pub instance_monitorings: Vec<InstanceMonitoring>,
3015}
3016
3017impl MonitorInstancesResponse {
3018 #[cfg(any(test, feature = "test-support"))]
3019 /// Create a fixture instance for testing.
3020 pub fn fixture() -> Self {
3021 Self {
3022 instance_monitorings: vec![],
3023 }
3024 }
3025}
3026
3027/// Describes the monitoring of an instance.
3028///
3029/// **AWS API**: `ec2.v1.InstanceMonitoring`
3030/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceMonitoring>
3031#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3032pub struct InstanceMonitoring {
3033 /// The ID of the instance.
3034 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
3035 #[serde(skip_serializing_if = "Option::is_none")]
3036 pub instance_id: Option<String>,
3037
3038 /// The monitoring for the instance.
3039 #[serde(rename(serialize = "Monitoring", deserialize = "monitoring"))]
3040 #[serde(skip_serializing_if = "Option::is_none")]
3041 pub monitoring: Option<Monitoring>,
3042}
3043
3044impl InstanceMonitoring {
3045 #[cfg(any(test, feature = "test-support"))]
3046 /// Create a fixture instance for testing.
3047 pub fn fixture() -> Self {
3048 Self {
3049 instance_id: Some("test-instance_id".into()),
3050 monitoring: Some(Monitoring::fixture()),
3051 }
3052 }
3053}
3054
3055///
3056/// **AWS API**: `ec2.v1.AssociateIamInstanceProfileResult`
3057/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AssociateIamInstanceProfileResult>
3058#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3059pub struct AssociateIamInstanceProfileResponse {
3060 /// Information about the IAM instance profile association.
3061 #[serde(rename(
3062 serialize = "IamInstanceProfileAssociation",
3063 deserialize = "iamInstanceProfileAssociation"
3064 ))]
3065 #[serde(skip_serializing_if = "Option::is_none")]
3066 pub iam_instance_profile_association: Option<IamInstanceProfileAssociation>,
3067}
3068
3069impl AssociateIamInstanceProfileResponse {
3070 #[cfg(any(test, feature = "test-support"))]
3071 /// Create a fixture instance for testing.
3072 pub fn fixture() -> Self {
3073 Self {
3074 iam_instance_profile_association: Some(IamInstanceProfileAssociation::fixture()),
3075 }
3076 }
3077}
3078
3079/// Describes an association between an IAM instance profile and an instance.
3080///
3081/// **AWS API**: `ec2.v1.IamInstanceProfileAssociation`
3082/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IamInstanceProfileAssociation>
3083///
3084/// ## Coverage
3085/// 4 of 5 fields included.
3086/// Omitted fields:
3087/// - `Timestamp` — not selected in manifest
3088#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3089pub struct IamInstanceProfileAssociation {
3090 /// The ID of the association.
3091 #[serde(rename(serialize = "AssociationId", deserialize = "associationId"))]
3092 #[serde(skip_serializing_if = "Option::is_none")]
3093 pub association_id: Option<String>,
3094
3095 /// The ID of the instance.
3096 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
3097 #[serde(skip_serializing_if = "Option::is_none")]
3098 pub instance_id: Option<String>,
3099
3100 /// The IAM instance profile.
3101 #[serde(rename(serialize = "IamInstanceProfile", deserialize = "iamInstanceProfile"))]
3102 #[serde(skip_serializing_if = "Option::is_none")]
3103 pub iam_instance_profile: Option<IamInstanceProfile>,
3104
3105 /// The state of the association.
3106 #[serde(rename(serialize = "State", deserialize = "state"))]
3107 #[serde(skip_serializing_if = "Option::is_none")]
3108 pub state: Option<String>,
3109}
3110
3111impl IamInstanceProfileAssociation {
3112 #[cfg(any(test, feature = "test-support"))]
3113 /// Create a fixture instance for testing.
3114 pub fn fixture() -> Self {
3115 Self {
3116 association_id: Some("test-association_id".into()),
3117 instance_id: Some("test-instance_id".into()),
3118 iam_instance_profile: Some(IamInstanceProfile::fixture()),
3119 state: Some("test-state".into()),
3120 }
3121 }
3122}
3123
3124///
3125/// **AWS API**: `ec2.v1.ModifyVolumeResult`
3126/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyVolumeResult>
3127#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3128pub struct ModifyVolumeResponse {
3129 /// Information about the volume modification.
3130 #[serde(rename(serialize = "VolumeModification", deserialize = "volumeModification"))]
3131 #[serde(skip_serializing_if = "Option::is_none")]
3132 pub volume_modification: Option<VolumeModification>,
3133}
3134
3135impl ModifyVolumeResponse {
3136 #[cfg(any(test, feature = "test-support"))]
3137 /// Create a fixture instance for testing.
3138 pub fn fixture() -> Self {
3139 Self {
3140 volume_modification: Some(VolumeModification::fixture()),
3141 }
3142 }
3143}
3144
3145/// Describes the modification status of an EBS volume.
3146///
3147/// **AWS API**: `ec2.v1.VolumeModification`
3148/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VolumeModification>
3149///
3150/// ## Coverage
3151/// 5 of 16 fields included.
3152/// Omitted fields:
3153/// - `StatusMessage` — not selected in manifest
3154/// - `TargetSize` — not selected in manifest
3155/// - `TargetMultiAttachEnabled` — not selected in manifest
3156/// - `OriginalSize` — not selected in manifest
3157/// - `OriginalIops` — not selected in manifest
3158/// - `OriginalVolumeType` — not selected in manifest
3159/// - `OriginalThroughput` — not selected in manifest
3160/// - `OriginalMultiAttachEnabled` — not selected in manifest
3161/// - `Progress` — not selected in manifest
3162/// - `StartTime` — not selected in manifest
3163/// - `EndTime` — not selected in manifest
3164#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3165pub struct VolumeModification {
3166 /// The ID of the volume.
3167 #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
3168 #[serde(skip_serializing_if = "Option::is_none")]
3169 pub volume_id: Option<String>,
3170
3171 /// The current modification state.
3172 #[serde(rename(serialize = "ModificationState", deserialize = "modificationState"))]
3173 #[serde(skip_serializing_if = "Option::is_none")]
3174 pub modification_state: Option<String>,
3175
3176 /// The target EBS volume type of the volume.
3177 #[serde(rename(serialize = "TargetVolumeType", deserialize = "targetVolumeType"))]
3178 #[serde(skip_serializing_if = "Option::is_none")]
3179 pub target_volume_type: Option<String>,
3180
3181 /// The target IOPS rate of the volume.
3182 #[serde(rename(serialize = "TargetIops", deserialize = "targetIops"))]
3183 #[serde(skip_serializing_if = "Option::is_none")]
3184 pub target_iops: Option<i32>,
3185
3186 /// The target throughput of the volume, in MiB/s.
3187 #[serde(rename(serialize = "TargetThroughput", deserialize = "targetThroughput"))]
3188 #[serde(skip_serializing_if = "Option::is_none")]
3189 pub target_throughput: Option<i32>,
3190}
3191
3192impl VolumeModification {
3193 #[cfg(any(test, feature = "test-support"))]
3194 /// Create a fixture instance for testing.
3195 pub fn fixture() -> Self {
3196 Self {
3197 volume_id: Some("test-volume_id".into()),
3198 modification_state: Some("test-modification_state".into()),
3199 target_volume_type: Some("test-target_volume_type".into()),
3200 target_iops: Some(100),
3201 target_throughput: Some(100),
3202 }
3203 }
3204}
3205
3206///
3207/// **AWS API**: `ec2.v1.DeleteNatGatewayResult`
3208/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteNatGatewayResult>
3209#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3210pub struct DeleteNatGatewayResponse {
3211 /// The ID of the NAT gateway.
3212 #[serde(rename(serialize = "NatGatewayId", deserialize = "natGatewayId"))]
3213 #[serde(skip_serializing_if = "Option::is_none")]
3214 pub nat_gateway_id: Option<String>,
3215}
3216
3217impl DeleteNatGatewayResponse {
3218 #[cfg(any(test, feature = "test-support"))]
3219 /// Create a fixture instance for testing.
3220 pub fn fixture() -> Self {
3221 Self {
3222 nat_gateway_id: Some("test-nat_gateway_id".into()),
3223 }
3224 }
3225}
3226
3227///
3228/// **AWS API**: `ec2.v1.DeleteVpcEndpointsResult`
3229/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteVpcEndpointsResult>
3230#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3231pub struct DeleteVpcEndpointsResponse {
3232 /// Information about the VPC endpoints that were not successfully deleted.
3233 #[serde(rename(serialize = "Unsuccessful", deserialize = "unsuccessful"))]
3234 #[serde(default)]
3235 #[serde(skip_serializing_if = "Vec::is_empty")]
3236 pub unsuccessful: Vec<UnsuccessfulItem>,
3237}
3238
3239impl DeleteVpcEndpointsResponse {
3240 #[cfg(any(test, feature = "test-support"))]
3241 /// Create a fixture instance for testing.
3242 pub fn fixture() -> Self {
3243 Self {
3244 unsuccessful: vec![],
3245 }
3246 }
3247}
3248
3249/// Information about items that were not successfully processed in a batch call.
3250///
3251/// **AWS API**: `ec2.v1.UnsuccessfulItem`
3252/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//UnsuccessfulItem>
3253#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3254pub struct UnsuccessfulItem {
3255 /// The ID of the resource.
3256 #[serde(rename(serialize = "ResourceId", deserialize = "resourceId"))]
3257 #[serde(skip_serializing_if = "Option::is_none")]
3258 pub resource_id: Option<String>,
3259
3260 /// Information about the error.
3261 #[serde(rename(serialize = "Error", deserialize = "error"))]
3262 #[serde(skip_serializing_if = "Option::is_none")]
3263 pub error: Option<UnsuccessfulItemError>,
3264}
3265
3266impl UnsuccessfulItem {
3267 #[cfg(any(test, feature = "test-support"))]
3268 /// Create a fixture instance for testing.
3269 pub fn fixture() -> Self {
3270 Self {
3271 resource_id: Some("test-resource_id".into()),
3272 error: Some(UnsuccessfulItemError::fixture()),
3273 }
3274 }
3275}
3276
3277/// Information about the error that occurred. For more information about errors, see Error
3278/// codes.
3279///
3280/// **AWS API**: `ec2.v1.UnsuccessfulItemError`
3281/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//UnsuccessfulItemError>
3282#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3283pub struct UnsuccessfulItemError {
3284 /// The error code.
3285 #[serde(rename(serialize = "Code", deserialize = "code"))]
3286 #[serde(skip_serializing_if = "Option::is_none")]
3287 pub code: Option<String>,
3288
3289 /// The error message accompanying the error code.
3290 #[serde(rename(serialize = "Message", deserialize = "message"))]
3291 #[serde(skip_serializing_if = "Option::is_none")]
3292 pub message: Option<String>,
3293}
3294
3295impl UnsuccessfulItemError {
3296 #[cfg(any(test, feature = "test-support"))]
3297 /// Create a fixture instance for testing.
3298 pub fn fixture() -> Self {
3299 Self {
3300 code: Some("test-code".into()),
3301 message: Some("test-message".into()),
3302 }
3303 }
3304}
3305
3306///
3307/// **AWS API**: `ec2.v1.CreateFlowLogsResult`
3308/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateFlowLogsResult>
3309///
3310/// ## Coverage
3311/// 2 of 3 fields included.
3312/// Omitted fields:
3313/// - `ClientToken` — not selected in manifest
3314#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3315pub struct CreateFlowLogsResponse {
3316 /// The IDs of the flow logs.
3317 #[serde(rename(serialize = "FlowLogIdSet", deserialize = "flowLogIdSet"))]
3318 #[serde(default)]
3319 #[serde(skip_serializing_if = "Vec::is_empty")]
3320 pub flow_log_ids: Vec<String>,
3321
3322 /// Information about the flow logs that could not be created successfully.
3323 #[serde(rename(serialize = "Unsuccessful", deserialize = "unsuccessful"))]
3324 #[serde(default)]
3325 #[serde(skip_serializing_if = "Vec::is_empty")]
3326 pub unsuccessful: Vec<UnsuccessfulItem>,
3327}
3328
3329impl CreateFlowLogsResponse {
3330 #[cfg(any(test, feature = "test-support"))]
3331 /// Create a fixture instance for testing.
3332 pub fn fixture() -> Self {
3333 Self {
3334 flow_log_ids: vec![],
3335 unsuccessful: vec![],
3336 }
3337 }
3338}
3339
3340///
3341/// **AWS API**: `ec2.v1.RevokeSecurityGroupIngressResult`
3342/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupIngressResult>
3343///
3344/// ## Coverage
3345/// 1 of 3 fields included.
3346/// Omitted fields:
3347/// - `Return` — not selected in manifest
3348/// - `RevokedSecurityGroupRules` — not selected in manifest
3349#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3350pub struct RevokeSecurityGroupIngressResponse {
3351 /// The inbound rules that were unknown to the service. In some cases,
3352 /// unknownIpPermissionSet might be in a different format from the request parameter.
3353 #[serde(rename(
3354 serialize = "UnknownIpPermissionSet",
3355 deserialize = "unknownIpPermissionSet"
3356 ))]
3357 #[serde(default)]
3358 #[serde(skip_serializing_if = "Vec::is_empty")]
3359 pub unknown_ip_permissions: Vec<IpPermission>,
3360}
3361
3362impl RevokeSecurityGroupIngressResponse {
3363 #[cfg(any(test, feature = "test-support"))]
3364 /// Create a fixture instance for testing.
3365 pub fn fixture() -> Self {
3366 Self {
3367 unknown_ip_permissions: vec![],
3368 }
3369 }
3370}
3371
3372///
3373/// **AWS API**: `ec2.v1.RevokeSecurityGroupEgressResult`
3374/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupEgressResult>
3375///
3376/// ## Coverage
3377/// 1 of 3 fields included.
3378/// Omitted fields:
3379/// - `Return` — not selected in manifest
3380/// - `RevokedSecurityGroupRules` — not selected in manifest
3381#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3382pub struct RevokeSecurityGroupEgressResponse {
3383 /// The outbound rules that were unknown to the service. In some cases,
3384 /// unknownIpPermissionSet might be in a different format from the request parameter.
3385 #[serde(rename(
3386 serialize = "UnknownIpPermissionSet",
3387 deserialize = "unknownIpPermissionSet"
3388 ))]
3389 #[serde(default)]
3390 #[serde(skip_serializing_if = "Vec::is_empty")]
3391 pub unknown_ip_permissions: Vec<IpPermission>,
3392}
3393
3394impl RevokeSecurityGroupEgressResponse {
3395 #[cfg(any(test, feature = "test-support"))]
3396 /// Create a fixture instance for testing.
3397 pub fn fixture() -> Self {
3398 Self {
3399 unknown_ip_permissions: vec![],
3400 }
3401 }
3402}
3403
3404///
3405/// **AWS API**: `ec2.v1.AuthorizeSecurityGroupIngressResult`
3406/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AuthorizeSecurityGroupIngressResult>
3407///
3408/// ## Coverage
3409/// 1 of 2 fields included.
3410/// Omitted fields:
3411/// - `Return` — not selected in manifest
3412#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3413pub struct AuthorizeSecurityGroupIngressResponse {
3414 /// Information about the inbound (ingress) security group rules that were added.
3415 #[serde(rename(
3416 serialize = "SecurityGroupRuleSet",
3417 deserialize = "securityGroupRuleSet"
3418 ))]
3419 #[serde(default)]
3420 #[serde(skip_serializing_if = "Vec::is_empty")]
3421 pub security_group_rules: Vec<SecurityGroupRule>,
3422}
3423
3424impl AuthorizeSecurityGroupIngressResponse {
3425 #[cfg(any(test, feature = "test-support"))]
3426 /// Create a fixture instance for testing.
3427 pub fn fixture() -> Self {
3428 Self {
3429 security_group_rules: vec![],
3430 }
3431 }
3432}
3433
3434/// Describes a security group rule.
3435///
3436/// **AWS API**: `ec2.v1.SecurityGroupRule`
3437/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//SecurityGroupRule>
3438///
3439/// ## Coverage
3440/// 6 of 14 fields included.
3441/// Omitted fields:
3442/// - `GroupOwnerId` — not selected in manifest
3443/// - `IsEgress` — not selected in manifest
3444/// - `CidrIpv6` — not selected in manifest
3445/// - `PrefixListId` — not selected in manifest
3446/// - `ReferencedGroupInfo` — not selected in manifest
3447/// - `Description` — not selected in manifest
3448/// - `Tags` — not selected in manifest
3449/// - `SecurityGroupRuleArn` — not selected in manifest
3450#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3451pub struct SecurityGroupRule {
3452 /// The ID of the security group rule.
3453 #[serde(rename(serialize = "SecurityGroupRuleId", deserialize = "securityGroupRuleId"))]
3454 #[serde(skip_serializing_if = "Option::is_none")]
3455 pub security_group_rule_id: Option<String>,
3456
3457 /// The ID of the security group.
3458 #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
3459 #[serde(skip_serializing_if = "Option::is_none")]
3460 pub group_id: Option<String>,
3461
3462 /// The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers). Use -1
3463 /// to specify all protocols.
3464 #[serde(rename(serialize = "IpProtocol", deserialize = "ipProtocol"))]
3465 #[serde(skip_serializing_if = "Option::is_none")]
3466 pub ip_protocol: Option<String>,
3467
3468 /// If the protocol is TCP or UDP, this is the start of the port range. If the protocol is
3469 /// ICMP or ICMPv6, this is the ICMP type or -1 (all ICMP types).
3470 #[serde(rename(serialize = "FromPort", deserialize = "fromPort"))]
3471 #[serde(skip_serializing_if = "Option::is_none")]
3472 pub from_port: Option<i32>,
3473
3474 /// If the protocol is TCP or UDP, this is the end of the port range. If the protocol is
3475 /// ICMP or ICMPv6, this is the ICMP code or -1 (all ICMP codes). If the start port is -1
3476 /// (all ICMP types), then the end port must be -1 (all ICMP codes).
3477 #[serde(rename(serialize = "ToPort", deserialize = "toPort"))]
3478 #[serde(skip_serializing_if = "Option::is_none")]
3479 pub to_port: Option<i32>,
3480
3481 /// The IPv4 CIDR range.
3482 #[serde(rename(serialize = "CidrIpv4", deserialize = "cidrIpv4"))]
3483 #[serde(skip_serializing_if = "Option::is_none")]
3484 pub cidr_ipv4: Option<String>,
3485}
3486
3487impl SecurityGroupRule {
3488 #[cfg(any(test, feature = "test-support"))]
3489 /// Create a fixture instance for testing.
3490 pub fn fixture() -> Self {
3491 Self {
3492 security_group_rule_id: Some("test-security_group_rule_id".into()),
3493 group_id: Some("test-group_id".into()),
3494 ip_protocol: Some("test-ip_protocol".into()),
3495 from_port: Some(100),
3496 to_port: Some(100),
3497 cidr_ipv4: Some("test-cidr_ipv4".into()),
3498 }
3499 }
3500}
3501
3502///
3503/// **AWS API**: `ec2.v1.DeleteSecurityGroupResult`
3504/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteSecurityGroupResult>
3505///
3506/// ## Coverage
3507/// 1 of 2 fields included.
3508/// Omitted fields:
3509/// - `Return` — not selected in manifest
3510#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3511pub struct DeleteSecurityGroupResponse {
3512 /// The ID of the deleted security group.
3513 #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
3514 #[serde(skip_serializing_if = "Option::is_none")]
3515 pub group_id: Option<String>,
3516}
3517
3518impl DeleteSecurityGroupResponse {
3519 #[cfg(any(test, feature = "test-support"))]
3520 /// Create a fixture instance for testing.
3521 pub fn fixture() -> Self {
3522 Self {
3523 group_id: Some("test-group_id".into()),
3524 }
3525 }
3526}
3527
3528///
3529/// **AWS API**: `ec2.v1.DeregisterImageResult`
3530/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeregisterImageResult>
3531///
3532/// ## Coverage
3533/// 1 of 2 fields included.
3534/// Omitted fields:
3535/// - `Return` — not selected in manifest
3536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3537pub struct DeregisterImageResponse {
3538 /// The deletion result for each snapshot associated with the AMI, including the snapshot ID
3539 /// and its success or error code.
3540 #[serde(rename(
3541 serialize = "DeleteSnapshotResultSet",
3542 deserialize = "deleteSnapshotResultSet"
3543 ))]
3544 #[serde(default)]
3545 #[serde(skip_serializing_if = "Vec::is_empty")]
3546 pub delete_snapshot_results: Vec<DeleteSnapshotReturnCode>,
3547}
3548
3549impl DeregisterImageResponse {
3550 #[cfg(any(test, feature = "test-support"))]
3551 /// Create a fixture instance for testing.
3552 pub fn fixture() -> Self {
3553 Self {
3554 delete_snapshot_results: vec![],
3555 }
3556 }
3557}
3558
3559///
3560/// **AWS API**: `ec2.v1.DescribeInstancesRequest`
3561/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeInstancesRequest>
3562///
3563/// ## Coverage
3564/// 3 of 5 fields included.
3565/// Omitted fields:
3566/// - `DryRun` — not selected in manifest
3567/// - `Filters` — not selected in manifest
3568#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3569pub struct DescribeInstancesRequest {
3570 /// The instance IDs. Default: Describes all your instances.
3571 #[serde(rename = "InstanceId")]
3572 #[serde(default)]
3573 #[serde(skip_serializing_if = "Vec::is_empty")]
3574 pub instance_ids: Vec<String>,
3575
3576 /// The token returned from a previous paginated request. Pagination continues from the end
3577 /// of the items returned by the previous request.
3578 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
3579 #[serde(skip_serializing_if = "Option::is_none")]
3580 pub next_token: Option<String>,
3581
3582 /// The maximum number of items to return for this request. To get the next page of items,
3583 /// make another request with the token returned in the output. For more information, see
3584 /// Pagination. You cannot specify this parameter and the instance IDs parameter in the same
3585 /// request.
3586 #[serde(rename(serialize = "MaxResults", deserialize = "maxResults"))]
3587 #[serde(skip_serializing_if = "Option::is_none")]
3588 pub max_results: Option<i32>,
3589}
3590
3591impl DescribeInstancesRequest {
3592 #[cfg(any(test, feature = "test-support"))]
3593 /// Create a fixture instance for testing.
3594 pub fn fixture() -> Self {
3595 Self {
3596 instance_ids: vec![],
3597 next_token: Some("test-next_token".into()),
3598 max_results: Some(100),
3599 }
3600 }
3601}
3602
3603///
3604/// **AWS API**: `ec2.v1.DescribeVolumesRequest`
3605/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVolumesRequest>
3606///
3607/// ## Coverage
3608/// 3 of 5 fields included.
3609/// Omitted fields:
3610/// - `DryRun` — not selected in manifest
3611/// - `Filters` — not selected in manifest
3612#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3613pub struct DescribeVolumesRequest {
3614 /// The volume IDs. If not specified, then all volumes are included in the response.
3615 #[serde(rename = "VolumeId")]
3616 #[serde(default)]
3617 #[serde(skip_serializing_if = "Vec::is_empty")]
3618 pub volume_ids: Vec<String>,
3619
3620 /// The token returned from a previous paginated request. Pagination continues from the end
3621 /// of the items returned by the previous request.
3622 #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
3623 #[serde(skip_serializing_if = "Option::is_none")]
3624 pub next_token: Option<String>,
3625
3626 /// The maximum number of items to return for this request. To get the next page of items,
3627 /// make another request with the token returned in the output. For more information, see
3628 /// Pagination.
3629 #[serde(rename(serialize = "MaxResults", deserialize = "maxResults"))]
3630 #[serde(skip_serializing_if = "Option::is_none")]
3631 pub max_results: Option<i32>,
3632}
3633
3634impl DescribeVolumesRequest {
3635 #[cfg(any(test, feature = "test-support"))]
3636 /// Create a fixture instance for testing.
3637 pub fn fixture() -> Self {
3638 Self {
3639 volume_ids: vec![],
3640 next_token: Some("test-next_token".into()),
3641 max_results: Some(100),
3642 }
3643 }
3644}
3645
3646///
3647/// **AWS API**: `ec2.v1.DescribeSnapshotsRequest`
3648/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotsRequest>
3649///
3650/// ## Coverage
3651/// 4 of 7 fields included.
3652/// Omitted fields:
3653/// - `RestorableByUserIds` — not selected in manifest
3654/// - `DryRun` — not selected in manifest
3655/// - `Filters` — not selected in manifest
3656#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3657pub struct DescribeSnapshotsRequest {
3658 /// Scopes the results to snapshots with the specified owners. You can specify a combination
3659 /// of Amazon Web Services account IDs, self, and amazon.
3660 #[serde(rename = "Owner")]
3661 #[serde(default)]
3662 #[serde(skip_serializing_if = "Vec::is_empty")]
3663 pub owner_ids: Vec<String>,
3664
3665 /// The snapshot IDs. Default: Describes the snapshots for which you have create volume
3666 /// permissions.
3667 #[serde(rename = "SnapshotId")]
3668 #[serde(default)]
3669 #[serde(skip_serializing_if = "Vec::is_empty")]
3670 pub snapshot_ids: Vec<String>,
3671
3672 /// The token returned from a previous paginated request. Pagination continues from the end
3673 /// of the items returned by the previous request.
3674 #[serde(rename = "NextToken")]
3675 #[serde(skip_serializing_if = "Option::is_none")]
3676 pub next_token: Option<String>,
3677
3678 /// The maximum number of items to return for this request. To get the next page of items,
3679 /// make another request with the token returned in the output. For more information, see
3680 /// Pagination.
3681 #[serde(rename = "MaxResults")]
3682 #[serde(skip_serializing_if = "Option::is_none")]
3683 pub max_results: Option<i32>,
3684}
3685
3686impl DescribeSnapshotsRequest {
3687 #[cfg(any(test, feature = "test-support"))]
3688 /// Create a fixture instance for testing.
3689 pub fn fixture() -> Self {
3690 Self {
3691 owner_ids: vec![],
3692 snapshot_ids: vec![],
3693 next_token: Some("test-next_token".into()),
3694 max_results: Some(100),
3695 }
3696 }
3697}
3698
3699///
3700/// **AWS API**: `ec2.v1.DescribeImagesRequest`
3701/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeImagesRequest>
3702///
3703/// ## Coverage
3704/// 2 of 9 fields included.
3705/// Omitted fields:
3706/// - `ExecutableUsers` — not selected in manifest
3707/// - `IncludeDeprecated` — not selected in manifest
3708/// - `IncludeDisabled` — not selected in manifest
3709/// - `MaxResults` — not selected in manifest
3710/// - `NextToken` — not selected in manifest
3711/// - `DryRun` — not selected in manifest
3712/// - `Filters` — not selected in manifest
3713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3714pub struct DescribeImagesRequest {
3715 /// Scopes the results to images with the specified owners. You can specify a combination of
3716 /// Amazon Web Services account IDs, self, amazon, aws-backup-vault, and aws-marketplace. If
3717 /// you omit this parameter, the results include all images for which you have launch
3718 /// permissions, regardless of ownership.
3719 #[serde(rename = "Owner")]
3720 #[serde(default)]
3721 #[serde(skip_serializing_if = "Vec::is_empty")]
3722 pub owners: Vec<String>,
3723
3724 /// The image IDs. Default: Describes all images available to you.
3725 #[serde(rename = "ImageId")]
3726 #[serde(default)]
3727 #[serde(skip_serializing_if = "Vec::is_empty")]
3728 pub image_ids: Vec<String>,
3729}
3730
3731impl DescribeImagesRequest {
3732 #[cfg(any(test, feature = "test-support"))]
3733 /// Create a fixture instance for testing.
3734 pub fn fixture() -> Self {
3735 Self {
3736 owners: vec![],
3737 image_ids: vec![],
3738 }
3739 }
3740}
3741
3742///
3743/// **AWS API**: `ec2.v1.DescribeSecurityGroupsRequest`
3744/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSecurityGroupsRequest>
3745///
3746/// ## Coverage
3747/// 3 of 6 fields included.
3748/// Omitted fields:
3749/// - `GroupNames` — not selected in manifest
3750/// - `DryRun` — not selected in manifest
3751/// - `Filters` — not selected in manifest
3752#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3753pub struct DescribeSecurityGroupsRequest {
3754 /// The IDs of the security groups. Required for security groups in a nondefault VPC.
3755 /// Default: Describes all of your security groups.
3756 #[serde(rename = "GroupId")]
3757 #[serde(default)]
3758 #[serde(skip_serializing_if = "Vec::is_empty")]
3759 pub group_ids: Vec<String>,
3760
3761 /// The token returned from a previous paginated request. Pagination continues from the end
3762 /// of the items returned by the previous request.
3763 #[serde(rename = "NextToken")]
3764 #[serde(skip_serializing_if = "Option::is_none")]
3765 pub next_token: Option<String>,
3766
3767 /// The maximum number of items to return for this request. To get the next page of items,
3768 /// make another request with the token returned in the output. This value can be between 5
3769 /// and 1000. If this parameter is not specified, then all items are returned. For more
3770 /// information, see Pagination.
3771 #[serde(rename = "MaxResults")]
3772 #[serde(skip_serializing_if = "Option::is_none")]
3773 pub max_results: Option<i32>,
3774}
3775
3776impl DescribeSecurityGroupsRequest {
3777 #[cfg(any(test, feature = "test-support"))]
3778 /// Create a fixture instance for testing.
3779 pub fn fixture() -> Self {
3780 Self {
3781 group_ids: vec![],
3782 next_token: Some("test-next_token".into()),
3783 max_results: Some(100),
3784 }
3785 }
3786}
3787
3788///
3789/// **AWS API**: `ec2.v1.DescribeAddressesRequest`
3790/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeAddressesRequest>
3791///
3792/// ## Coverage
3793/// 2 of 4 fields included.
3794/// Omitted fields:
3795/// - `DryRun` — not selected in manifest
3796/// - `Filters` — not selected in manifest
3797#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3798pub struct DescribeAddressesRequest {
3799 /// Information about the allocation IDs.
3800 #[serde(rename = "AllocationId")]
3801 #[serde(default)]
3802 #[serde(skip_serializing_if = "Vec::is_empty")]
3803 pub allocation_ids: Vec<String>,
3804
3805 /// One or more Elastic IP addresses. Default: Describes all your Elastic IP addresses.
3806 #[serde(rename = "PublicIp")]
3807 #[serde(default)]
3808 #[serde(skip_serializing_if = "Vec::is_empty")]
3809 pub public_ips: Vec<String>,
3810}
3811
3812impl DescribeAddressesRequest {
3813 #[cfg(any(test, feature = "test-support"))]
3814 /// Create a fixture instance for testing.
3815 pub fn fixture() -> Self {
3816 Self {
3817 allocation_ids: vec![],
3818 public_ips: vec![],
3819 }
3820 }
3821}
3822
3823///
3824/// **AWS API**: `ec2.v1.DescribeNatGatewaysRequest`
3825/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNatGatewaysRequest>
3826///
3827/// ## Coverage
3828/// 3 of 5 fields included.
3829/// Omitted fields:
3830/// - `DryRun` — not selected in manifest
3831/// - `Filter` — not selected in manifest
3832#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3833pub struct DescribeNatGatewaysRequest {
3834 /// The IDs of the NAT gateways.
3835 #[serde(rename = "NatGatewayId")]
3836 #[serde(default)]
3837 #[serde(skip_serializing_if = "Vec::is_empty")]
3838 pub nat_gateway_ids: Vec<String>,
3839
3840 /// The token returned from a previous paginated request. Pagination continues from the end
3841 /// of the items returned by the previous request.
3842 #[serde(rename = "NextToken")]
3843 #[serde(skip_serializing_if = "Option::is_none")]
3844 pub next_token: Option<String>,
3845
3846 /// The maximum number of items to return for this request. To get the next page of items,
3847 /// make another request with the token returned in the output. For more information, see
3848 /// Pagination.
3849 #[serde(rename = "MaxResults")]
3850 #[serde(skip_serializing_if = "Option::is_none")]
3851 pub max_results: Option<i32>,
3852}
3853
3854impl DescribeNatGatewaysRequest {
3855 #[cfg(any(test, feature = "test-support"))]
3856 /// Create a fixture instance for testing.
3857 pub fn fixture() -> Self {
3858 Self {
3859 nat_gateway_ids: vec![],
3860 next_token: Some("test-next_token".into()),
3861 max_results: Some(100),
3862 }
3863 }
3864}
3865
3866///
3867/// **AWS API**: `ec2.v1.DescribeRouteTablesRequest`
3868/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeRouteTablesRequest>
3869///
3870/// ## Coverage
3871/// 3 of 5 fields included.
3872/// Omitted fields:
3873/// - `DryRun` — not selected in manifest
3874/// - `Filters` — not selected in manifest
3875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3876pub struct DescribeRouteTablesRequest {
3877 /// The IDs of the route tables.
3878 #[serde(rename = "RouteTableId")]
3879 #[serde(default)]
3880 #[serde(skip_serializing_if = "Vec::is_empty")]
3881 pub route_table_ids: Vec<String>,
3882
3883 /// The token returned from a previous paginated request. Pagination continues from the end
3884 /// of the items returned by the previous request.
3885 #[serde(rename = "NextToken")]
3886 #[serde(skip_serializing_if = "Option::is_none")]
3887 pub next_token: Option<String>,
3888
3889 /// The maximum number of items to return for this request. To get the next page of items,
3890 /// make another request with the token returned in the output. For more information, see
3891 /// Pagination.
3892 #[serde(rename = "MaxResults")]
3893 #[serde(skip_serializing_if = "Option::is_none")]
3894 pub max_results: Option<i32>,
3895}
3896
3897impl DescribeRouteTablesRequest {
3898 #[cfg(any(test, feature = "test-support"))]
3899 /// Create a fixture instance for testing.
3900 pub fn fixture() -> Self {
3901 Self {
3902 route_table_ids: vec![],
3903 next_token: Some("test-next_token".into()),
3904 max_results: Some(100),
3905 }
3906 }
3907}
3908
3909///
3910/// **AWS API**: `ec2.v1.DescribeNetworkAclsRequest`
3911/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNetworkAclsRequest>
3912///
3913/// ## Coverage
3914/// 3 of 5 fields included.
3915/// Omitted fields:
3916/// - `DryRun` — not selected in manifest
3917/// - `Filters` — not selected in manifest
3918#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3919pub struct DescribeNetworkAclsRequest {
3920 /// The IDs of the network ACLs.
3921 #[serde(rename = "NetworkAclId")]
3922 #[serde(default)]
3923 #[serde(skip_serializing_if = "Vec::is_empty")]
3924 pub network_acl_ids: Vec<String>,
3925
3926 /// The token returned from a previous paginated request. Pagination continues from the end
3927 /// of the items returned by the previous request.
3928 #[serde(rename = "NextToken")]
3929 #[serde(skip_serializing_if = "Option::is_none")]
3930 pub next_token: Option<String>,
3931
3932 /// The maximum number of items to return for this request. To get the next page of items,
3933 /// make another request with the token returned in the output. For more information, see
3934 /// Pagination.
3935 #[serde(rename = "MaxResults")]
3936 #[serde(skip_serializing_if = "Option::is_none")]
3937 pub max_results: Option<i32>,
3938}
3939
3940impl DescribeNetworkAclsRequest {
3941 #[cfg(any(test, feature = "test-support"))]
3942 /// Create a fixture instance for testing.
3943 pub fn fixture() -> Self {
3944 Self {
3945 network_acl_ids: vec![],
3946 next_token: Some("test-next_token".into()),
3947 max_results: Some(100),
3948 }
3949 }
3950}
3951
3952///
3953/// **AWS API**: `ec2.v1.DescribeFlowLogsRequest`
3954/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeFlowLogsRequest>
3955///
3956/// ## Coverage
3957/// 3 of 5 fields included.
3958/// Omitted fields:
3959/// - `DryRun` — not selected in manifest
3960/// - `Filter` — not selected in manifest
3961#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3962pub struct DescribeFlowLogsRequest {
3963 /// One or more flow log IDs. Constraint: Maximum of 1000 flow log IDs.
3964 #[serde(rename = "FlowLogId")]
3965 #[serde(default)]
3966 #[serde(skip_serializing_if = "Vec::is_empty")]
3967 pub flow_log_ids: Vec<String>,
3968
3969 /// The token to request the next page of items. Pagination continues from the end of the
3970 /// items returned by the previous request.
3971 #[serde(rename = "NextToken")]
3972 #[serde(skip_serializing_if = "Option::is_none")]
3973 pub next_token: Option<String>,
3974
3975 /// The maximum number of items to return for this request. To get the next page of items,
3976 /// make another request with the token returned in the output. For more information, see
3977 /// Pagination.
3978 #[serde(rename = "MaxResults")]
3979 #[serde(skip_serializing_if = "Option::is_none")]
3980 pub max_results: Option<i32>,
3981}
3982
3983impl DescribeFlowLogsRequest {
3984 #[cfg(any(test, feature = "test-support"))]
3985 /// Create a fixture instance for testing.
3986 pub fn fixture() -> Self {
3987 Self {
3988 flow_log_ids: vec![],
3989 next_token: Some("test-next_token".into()),
3990 max_results: Some(100),
3991 }
3992 }
3993}
3994
3995///
3996/// **AWS API**: `ec2.v1.DescribeVpcsRequest`
3997/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcsRequest>
3998///
3999/// ## Coverage
4000/// 3 of 5 fields included.
4001/// Omitted fields:
4002/// - `Filters` — not selected in manifest
4003/// - `DryRun` — not selected in manifest
4004#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4005pub struct DescribeVpcsRequest {
4006 /// The IDs of the VPCs.
4007 #[serde(rename = "VpcId")]
4008 #[serde(default)]
4009 #[serde(skip_serializing_if = "Vec::is_empty")]
4010 pub vpc_ids: Vec<String>,
4011
4012 /// The token returned from a previous paginated request. Pagination continues from the end
4013 /// of the items returned by the previous request.
4014 #[serde(rename = "NextToken")]
4015 #[serde(skip_serializing_if = "Option::is_none")]
4016 pub next_token: Option<String>,
4017
4018 /// The maximum number of items to return for this request. To get the next page of items,
4019 /// make another request with the token returned in the output. For more information, see
4020 /// Pagination.
4021 #[serde(rename = "MaxResults")]
4022 #[serde(skip_serializing_if = "Option::is_none")]
4023 pub max_results: Option<i32>,
4024}
4025
4026impl DescribeVpcsRequest {
4027 #[cfg(any(test, feature = "test-support"))]
4028 /// Create a fixture instance for testing.
4029 pub fn fixture() -> Self {
4030 Self {
4031 vpc_ids: vec![],
4032 next_token: Some("test-next_token".into()),
4033 max_results: Some(100),
4034 }
4035 }
4036}
4037
4038///
4039/// **AWS API**: `ec2.v1.DescribeVpcEndpointsRequest`
4040/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcEndpointsRequest>
4041///
4042/// ## Coverage
4043/// 3 of 5 fields included.
4044/// Omitted fields:
4045/// - `DryRun` — not selected in manifest
4046/// - `Filters` — not selected in manifest
4047#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4048pub struct DescribeVpcEndpointsRequest {
4049 /// The IDs of the VPC endpoints.
4050 #[serde(rename = "VpcEndpointId")]
4051 #[serde(default)]
4052 #[serde(skip_serializing_if = "Vec::is_empty")]
4053 pub vpc_endpoint_ids: Vec<String>,
4054
4055 /// The token for the next set of items to return. (You received this token from a prior
4056 /// call.)
4057 #[serde(rename = "NextToken")]
4058 #[serde(skip_serializing_if = "Option::is_none")]
4059 pub next_token: Option<String>,
4060
4061 /// The maximum number of items to return for this request. The request returns a token that
4062 /// you can specify in a subsequent call to get the next set of results. Constraint: If the
4063 /// value is greater than 1,000, we return only 1,000 items.
4064 #[serde(rename = "MaxResults")]
4065 #[serde(skip_serializing_if = "Option::is_none")]
4066 pub max_results: Option<i32>,
4067}
4068
4069impl DescribeVpcEndpointsRequest {
4070 #[cfg(any(test, feature = "test-support"))]
4071 /// Create a fixture instance for testing.
4072 pub fn fixture() -> Self {
4073 Self {
4074 vpc_endpoint_ids: vec![],
4075 next_token: Some("test-next_token".into()),
4076 max_results: Some(100),
4077 }
4078 }
4079}
4080
4081///
4082/// **AWS API**: `ec2.v1.DescribeVpcPeeringConnectionsRequest`
4083/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcPeeringConnectionsRequest>
4084///
4085/// ## Coverage
4086/// 3 of 5 fields included.
4087/// Omitted fields:
4088/// - `DryRun` — not selected in manifest
4089/// - `Filters` — not selected in manifest
4090#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4091pub struct DescribeVpcPeeringConnectionsRequest {
4092 /// The IDs of the VPC peering connections. Default: Describes all your VPC peering
4093 /// connections.
4094 #[serde(rename = "VpcPeeringConnectionId")]
4095 #[serde(default)]
4096 #[serde(skip_serializing_if = "Vec::is_empty")]
4097 pub vpc_peering_connection_ids: Vec<String>,
4098
4099 /// The token returned from a previous paginated request. Pagination continues from the end
4100 /// of the items returned by the previous request.
4101 #[serde(rename = "NextToken")]
4102 #[serde(skip_serializing_if = "Option::is_none")]
4103 pub next_token: Option<String>,
4104
4105 /// The maximum number of items to return for this request. To get the next page of items,
4106 /// make another request with the token returned in the output. For more information, see
4107 /// Pagination.
4108 #[serde(rename = "MaxResults")]
4109 #[serde(skip_serializing_if = "Option::is_none")]
4110 pub max_results: Option<i32>,
4111}
4112
4113impl DescribeVpcPeeringConnectionsRequest {
4114 #[cfg(any(test, feature = "test-support"))]
4115 /// Create a fixture instance for testing.
4116 pub fn fixture() -> Self {
4117 Self {
4118 vpc_peering_connection_ids: vec![],
4119 next_token: Some("test-next_token".into()),
4120 max_results: Some(100),
4121 }
4122 }
4123}
4124
4125///
4126/// **AWS API**: `ec2.v1.DescribeLaunchTemplatesRequest`
4127/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplatesRequest>
4128///
4129/// ## Coverage
4130/// 3 of 6 fields included.
4131/// Omitted fields:
4132/// - `DryRun` — not selected in manifest
4133/// - `LaunchTemplateNames` — not selected in manifest
4134/// - `Filters` — not selected in manifest
4135#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4136pub struct DescribeLaunchTemplatesRequest {
4137 /// One or more launch template IDs.
4138 #[serde(rename = "LaunchTemplateId")]
4139 #[serde(default)]
4140 #[serde(skip_serializing_if = "Vec::is_empty")]
4141 pub launch_template_ids: Vec<String>,
4142
4143 /// The token to request the next page of results.
4144 #[serde(rename = "NextToken")]
4145 #[serde(skip_serializing_if = "Option::is_none")]
4146 pub next_token: Option<String>,
4147
4148 /// The maximum number of results to return in a single call. To retrieve the remaining
4149 /// results, make another call with the returned NextToken value. This value can be between
4150 /// 1 and 200.
4151 #[serde(rename = "MaxResults")]
4152 #[serde(skip_serializing_if = "Option::is_none")]
4153 pub max_results: Option<i32>,
4154}
4155
4156impl DescribeLaunchTemplatesRequest {
4157 #[cfg(any(test, feature = "test-support"))]
4158 /// Create a fixture instance for testing.
4159 pub fn fixture() -> Self {
4160 Self {
4161 launch_template_ids: vec![],
4162 next_token: Some("test-next_token".into()),
4163 max_results: Some(100),
4164 }
4165 }
4166}
4167
4168///
4169/// **AWS API**: `ec2.v1.DescribeLaunchTemplateVersionsRequest`
4170/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplateVersionsRequest>
4171///
4172/// ## Coverage
4173/// 4 of 10 fields included.
4174/// Omitted fields:
4175/// - `DryRun` — not selected in manifest
4176/// - `LaunchTemplateName` — not selected in manifest
4177/// - `MinVersion` — not selected in manifest
4178/// - `MaxVersion` — not selected in manifest
4179/// - `Filters` — not selected in manifest
4180/// - `ResolveAlias` — not selected in manifest
4181#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4182pub struct DescribeLaunchTemplateVersionsRequest {
4183 /// The ID of the launch template. To describe one or more versions of a specified launch
4184 /// template, you must specify either the launch template ID or the launch template name,
4185 /// but not both. To describe all the latest or default launch template versions in your
4186 /// account, you must omit this parameter.
4187 #[serde(rename = "LaunchTemplateId")]
4188 #[serde(skip_serializing_if = "Option::is_none")]
4189 pub launch_template_id: Option<String>,
4190
4191 /// One or more versions of the launch template. Valid values depend on whether you are
4192 /// describing a specified launch template (by ID or name) or all launch templates in your
4193 /// account. To describe one or more versions of a specified launch template, valid values
4194 /// are $Latest, $Default, and numbers. To describe all launch templates in your account
4195 /// that are defined as the latest version, the valid value is $Latest. To describe all
4196 /// launch templates in your account that are defined as the default version, the valid
4197 /// value is $Default. You can specify $Latest and $Default in the same request. You cannot
4198 /// specify numbers.
4199 #[serde(rename = "LaunchTemplateVersion")]
4200 #[serde(default)]
4201 #[serde(skip_serializing_if = "Vec::is_empty")]
4202 pub versions: Vec<String>,
4203
4204 /// The token to request the next page of results.
4205 #[serde(rename = "NextToken")]
4206 #[serde(skip_serializing_if = "Option::is_none")]
4207 pub next_token: Option<String>,
4208
4209 /// The maximum number of results to return in a single call. To retrieve the remaining
4210 /// results, make another call with the returned NextToken value. This value can be between
4211 /// 1 and 200.
4212 #[serde(rename = "MaxResults")]
4213 #[serde(skip_serializing_if = "Option::is_none")]
4214 pub max_results: Option<i32>,
4215}
4216
4217impl DescribeLaunchTemplateVersionsRequest {
4218 #[cfg(any(test, feature = "test-support"))]
4219 /// Create a fixture instance for testing.
4220 pub fn fixture() -> Self {
4221 Self {
4222 launch_template_id: Some("test-launch_template_id".into()),
4223 versions: vec![],
4224 next_token: Some("test-next_token".into()),
4225 max_results: Some(100),
4226 }
4227 }
4228}
4229
4230///
4231/// **AWS API**: `ec2.v1.DescribeSnapshotAttributeRequest`
4232/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotAttributeRequest>
4233///
4234/// ## Coverage
4235/// 2 of 3 fields included.
4236/// Omitted fields:
4237/// - `DryRun` — not selected in manifest
4238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4239pub struct DescribeSnapshotAttributeRequest {
4240 /// The ID of the EBS snapshot.
4241 #[serde(rename = "SnapshotId")]
4242 pub snapshot_id: String,
4243
4244 /// The snapshot attribute you would like to view.
4245 #[serde(rename = "Attribute")]
4246 pub attribute: String,
4247}
4248
4249impl DescribeSnapshotAttributeRequest {
4250 #[cfg(any(test, feature = "test-support"))]
4251 /// Create a fixture instance for testing.
4252 pub fn fixture() -> Self {
4253 Self {
4254 snapshot_id: "test-snapshot_id".into(),
4255 attribute: "test-attribute".into(),
4256 }
4257 }
4258}
4259
4260///
4261/// **AWS API**: `ec2.v1.GetEbsEncryptionByDefaultRequest`
4262/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//GetEbsEncryptionByDefaultRequest>
4263#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4264pub struct GetEbsEncryptionByDefaultRequest {
4265 /// Checks whether you have the required permissions for the action, without actually making
4266 /// the request, and provides an error response. If you have the required permissions, the
4267 /// error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.
4268 #[serde(rename = "DryRun")]
4269 #[serde(skip_serializing_if = "Option::is_none")]
4270 pub dry_run: Option<bool>,
4271}
4272
4273impl GetEbsEncryptionByDefaultRequest {
4274 #[cfg(any(test, feature = "test-support"))]
4275 /// Create a fixture instance for testing.
4276 pub fn fixture() -> Self {
4277 Self {
4278 dry_run: Some(false),
4279 }
4280 }
4281}
4282
4283///
4284/// **AWS API**: `ec2.v1.TerminateInstancesRequest`
4285/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//TerminateInstancesRequest>
4286///
4287/// ## Coverage
4288/// 1 of 4 fields included.
4289/// Omitted fields:
4290/// - `Force` — not selected in manifest
4291/// - `SkipOsShutdown` — not selected in manifest
4292/// - `DryRun` — not selected in manifest
4293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4294pub struct TerminateInstancesRequest {
4295 /// The IDs of the instances. Constraints: Up to 1000 instance IDs. We recommend breaking up
4296 /// this request into smaller batches.
4297 #[serde(rename = "InstanceId")]
4298 #[serde(default)]
4299 pub instance_ids: Vec<String>,
4300}
4301
4302impl TerminateInstancesRequest {
4303 #[cfg(any(test, feature = "test-support"))]
4304 /// Create a fixture instance for testing.
4305 pub fn fixture() -> Self {
4306 Self {
4307 instance_ids: vec![],
4308 }
4309 }
4310}
4311
4312///
4313/// **AWS API**: `ec2.v1.StopInstancesRequest`
4314/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StopInstancesRequest>
4315///
4316/// ## Coverage
4317/// 1 of 5 fields included.
4318/// Omitted fields:
4319/// - `Hibernate` — not selected in manifest
4320/// - `SkipOsShutdown` — not selected in manifest
4321/// - `DryRun` — not selected in manifest
4322/// - `Force` — not selected in manifest
4323#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4324pub struct StopInstancesRequest {
4325 /// The IDs of the instances.
4326 #[serde(rename = "InstanceId")]
4327 #[serde(default)]
4328 pub instance_ids: Vec<String>,
4329}
4330
4331impl StopInstancesRequest {
4332 #[cfg(any(test, feature = "test-support"))]
4333 /// Create a fixture instance for testing.
4334 pub fn fixture() -> Self {
4335 Self {
4336 instance_ids: vec![],
4337 }
4338 }
4339}
4340
4341///
4342/// **AWS API**: `ec2.v1.StartInstancesRequest`
4343/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StartInstancesRequest>
4344///
4345/// ## Coverage
4346/// 1 of 3 fields included.
4347/// Omitted fields:
4348/// - `AdditionalInfo` — not selected in manifest
4349/// - `DryRun` — not selected in manifest
4350#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4351pub struct StartInstancesRequest {
4352 /// The IDs of the instances.
4353 #[serde(rename = "InstanceId")]
4354 #[serde(default)]
4355 pub instance_ids: Vec<String>,
4356}
4357
4358impl StartInstancesRequest {
4359 #[cfg(any(test, feature = "test-support"))]
4360 /// Create a fixture instance for testing.
4361 pub fn fixture() -> Self {
4362 Self {
4363 instance_ids: vec![],
4364 }
4365 }
4366}
4367
4368///
4369/// **AWS API**: `ec2.v1.ModifyInstanceAttributeRequest`
4370/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyInstanceAttributeRequest>
4371///
4372/// ## Coverage
4373/// 1 of 17 fields included.
4374/// Omitted fields:
4375/// - `SourceDestCheck` — not selected in manifest
4376/// - `DisableApiStop` — not selected in manifest
4377/// - `DryRun` — not selected in manifest
4378/// - `Attribute` — not selected in manifest
4379/// - `Value` — not selected in manifest
4380/// - `BlockDeviceMappings` — not selected in manifest
4381/// - `DisableApiTermination` — not selected in manifest
4382/// - `InstanceType` — not selected in manifest
4383/// - `Kernel` — not selected in manifest
4384/// - `Ramdisk` — not selected in manifest
4385/// - `UserData` — not selected in manifest
4386/// - `InstanceInitiatedShutdownBehavior` — not selected in manifest
4387/// - `Groups` — not selected in manifest
4388/// - `EbsOptimized` — not selected in manifest
4389/// - `SriovNetSupport` — not selected in manifest
4390/// - `EnaSupport` — not selected in manifest
4391#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4392pub struct ModifyInstanceAttributeRequest {
4393 /// The ID of the instance.
4394 #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
4395 pub instance_id: String,
4396}
4397
4398impl ModifyInstanceAttributeRequest {
4399 #[cfg(any(test, feature = "test-support"))]
4400 /// Create a fixture instance for testing.
4401 pub fn fixture() -> Self {
4402 Self {
4403 instance_id: "test-instance_id".into(),
4404 }
4405 }
4406}
4407
4408///
4409/// **AWS API**: `ec2.v1.ModifyInstanceMetadataOptionsRequest`
4410/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyInstanceMetadataOptionsRequest>
4411///
4412/// ## Coverage
4413/// 3 of 7 fields included.
4414/// Omitted fields:
4415/// - `HttpPutResponseHopLimit` — not selected in manifest
4416/// - `DryRun` — not selected in manifest
4417/// - `HttpProtocolIpv6` — not selected in manifest
4418/// - `InstanceMetadataTags` — not selected in manifest
4419#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4420pub struct ModifyInstanceMetadataOptionsRequest {
4421 /// The ID of the instance.
4422 #[serde(rename = "InstanceId")]
4423 pub instance_id: String,
4424
4425 /// Indicates whether IMDSv2 is required. optional
4426 /// - IMDSv2 is optional. You can choose whether to send a session token in your instance
4427 /// metadata retrieval requests. If you retrieve IAM role credentials without a session
4428 /// token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials
4429 /// using a valid session token, you receive the IMDSv2 role credentials. required
4430 /// - IMDSv2 is required. You must send a session token in your instance metadata retrieval
4431 /// requests. With this option, retrieving the IAM role credentials always returns IMDSv2
4432 /// credentials; IMDSv1 credentials are not available. Default: If the value of
4433 /// ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0 and the
4434 /// account level default is set to no-preference, the default is required. If the value
4435 /// of ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0, but the
4436 /// account level default is set to V1 or V2, the default is optional. The default value
4437 /// can also be affected by other combinations of parameters. For more information, see
4438 /// Order of precedence for instance metadata options in the Amazon EC2 User Guide.
4439 #[serde(rename = "HttpTokens")]
4440 #[serde(skip_serializing_if = "Option::is_none")]
4441 pub http_tokens: Option<String>,
4442
4443 /// Enables or disables the HTTP metadata endpoint on your instances. If this parameter is
4444 /// not specified, the existing state is maintained. If you specify a value of disabled, you
4445 /// cannot access your instance metadata.
4446 #[serde(rename = "HttpEndpoint")]
4447 #[serde(skip_serializing_if = "Option::is_none")]
4448 pub http_endpoint: Option<String>,
4449}
4450
4451impl ModifyInstanceMetadataOptionsRequest {
4452 #[cfg(any(test, feature = "test-support"))]
4453 /// Create a fixture instance for testing.
4454 pub fn fixture() -> Self {
4455 Self {
4456 instance_id: "test-instance_id".into(),
4457 http_tokens: Some("test-http_tokens".into()),
4458 http_endpoint: Some("test-http_endpoint".into()),
4459 }
4460 }
4461}
4462
4463///
4464/// **AWS API**: `ec2.v1.MonitorInstancesRequest`
4465/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//MonitorInstancesRequest>
4466///
4467/// ## Coverage
4468/// 1 of 2 fields included.
4469/// Omitted fields:
4470/// - `DryRun` — not selected in manifest
4471#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4472pub struct MonitorInstancesRequest {
4473 /// The IDs of the instances.
4474 #[serde(rename = "InstanceId")]
4475 #[serde(default)]
4476 pub instance_ids: Vec<String>,
4477}
4478
4479impl MonitorInstancesRequest {
4480 #[cfg(any(test, feature = "test-support"))]
4481 /// Create a fixture instance for testing.
4482 pub fn fixture() -> Self {
4483 Self {
4484 instance_ids: vec![],
4485 }
4486 }
4487}
4488
4489///
4490/// **AWS API**: `ec2.v1.AssociateIamInstanceProfileRequest`
4491/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AssociateIamInstanceProfileRequest>
4492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4493pub struct AssociateIamInstanceProfileRequest {
4494 /// The IAM instance profile.
4495 #[serde(rename = "IamInstanceProfile")]
4496 pub iam_instance_profile: IamInstanceProfileSpecification,
4497
4498 /// The ID of the instance.
4499 #[serde(rename = "InstanceId")]
4500 pub instance_id: String,
4501}
4502
4503impl AssociateIamInstanceProfileRequest {
4504 #[cfg(any(test, feature = "test-support"))]
4505 /// Create a fixture instance for testing.
4506 pub fn fixture() -> Self {
4507 Self {
4508 iam_instance_profile: IamInstanceProfileSpecification::fixture(),
4509 instance_id: "test-instance_id".into(),
4510 }
4511 }
4512}
4513
4514/// Describes an IAM instance profile.
4515///
4516/// **AWS API**: `ec2.v1.IamInstanceProfileSpecification`
4517/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IamInstanceProfileSpecification>
4518#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4519pub struct IamInstanceProfileSpecification {
4520 /// The Amazon Resource Name (ARN) of the instance profile.
4521 #[serde(rename(serialize = "Arn", deserialize = "arn"))]
4522 #[serde(skip_serializing_if = "Option::is_none")]
4523 pub arn: Option<String>,
4524
4525 /// The name of the instance profile.
4526 #[serde(rename(serialize = "Name", deserialize = "name"))]
4527 #[serde(skip_serializing_if = "Option::is_none")]
4528 pub name: Option<String>,
4529}
4530
4531impl IamInstanceProfileSpecification {
4532 #[cfg(any(test, feature = "test-support"))]
4533 /// Create a fixture instance for testing.
4534 pub fn fixture() -> Self {
4535 Self {
4536 arn: Some("test-arn".into()),
4537 name: Some("test-name".into()),
4538 }
4539 }
4540}
4541
4542///
4543/// **AWS API**: `ec2.v1.DetachVolumeRequest`
4544/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DetachVolumeRequest>
4545///
4546/// ## Coverage
4547/// 2 of 5 fields included.
4548/// Omitted fields:
4549/// - `Device` — not selected in manifest
4550/// - `Force` — not selected in manifest
4551/// - `DryRun` — not selected in manifest
4552#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4553pub struct DetachVolumeRequest {
4554 /// The ID of the volume.
4555 #[serde(rename = "VolumeId")]
4556 pub volume_id: String,
4557
4558 /// The ID of the instance. If you are detaching a Multi-Attach enabled volume, you must
4559 /// specify an instance ID.
4560 #[serde(rename = "InstanceId")]
4561 #[serde(skip_serializing_if = "Option::is_none")]
4562 pub instance_id: Option<String>,
4563}
4564
4565impl DetachVolumeRequest {
4566 #[cfg(any(test, feature = "test-support"))]
4567 /// Create a fixture instance for testing.
4568 pub fn fixture() -> Self {
4569 Self {
4570 volume_id: "test-volume_id".into(),
4571 instance_id: Some("test-instance_id".into()),
4572 }
4573 }
4574}
4575
4576///
4577/// **AWS API**: `ec2.v1.DeleteVolumeRequest`
4578/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteVolumeRequest>
4579///
4580/// ## Coverage
4581/// 1 of 2 fields included.
4582/// Omitted fields:
4583/// - `DryRun` — not selected in manifest
4584#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4585pub struct DeleteVolumeRequest {
4586 /// The ID of the volume.
4587 #[serde(rename = "VolumeId")]
4588 pub volume_id: String,
4589}
4590
4591impl DeleteVolumeRequest {
4592 #[cfg(any(test, feature = "test-support"))]
4593 /// Create a fixture instance for testing.
4594 pub fn fixture() -> Self {
4595 Self {
4596 volume_id: "test-volume_id".into(),
4597 }
4598 }
4599}
4600
4601///
4602/// **AWS API**: `ec2.v1.ModifyVolumeRequest`
4603/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyVolumeRequest>
4604///
4605/// ## Coverage
4606/// 4 of 7 fields included.
4607/// Omitted fields:
4608/// - `DryRun` — not selected in manifest
4609/// - `Size` — not selected in manifest
4610/// - `MultiAttachEnabled` — not selected in manifest
4611#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4612pub struct ModifyVolumeRequest {
4613 /// The ID of the volume.
4614 #[serde(rename = "VolumeId")]
4615 pub volume_id: String,
4616
4617 /// The target EBS volume type of the volume. For more information, see Amazon EBS volume
4618 /// types in the Amazon EBS User Guide. Default: The existing type is retained.
4619 #[serde(rename = "VolumeType")]
4620 #[serde(skip_serializing_if = "Option::is_none")]
4621 pub volume_type: Option<String>,
4622
4623 /// The target IOPS rate of the volume. This parameter is valid only for gp3, io1, and io2
4624 /// volumes. The following are the supported values for each volume type: gp3: 3,000 -
4625 /// 80,000 IOPS io1: 100 - 64,000 IOPS io2: 100 - 256,000 IOPS Instances built on the Nitro
4626 /// System can support up to 256,000 IOPS. Other instances can support up to 32,000 IOPS.
4627 /// Default: The existing value is retained if you keep the same volume type. If you change
4628 /// the volume type to io1, io2, or gp3, the default is 3,000.
4629 #[serde(rename = "Iops")]
4630 #[serde(skip_serializing_if = "Option::is_none")]
4631 pub iops: Option<i32>,
4632
4633 /// The target throughput of the volume, in MiB/s. This parameter is valid only for gp3
4634 /// volumes. The maximum value is 2,000. Default: The existing value is retained if the
4635 /// source and target volume type is gp3. Otherwise, the default value is 125. Valid Range:
4636 /// Minimum value of 125. Maximum value of 2,000.
4637 #[serde(rename = "Throughput")]
4638 #[serde(skip_serializing_if = "Option::is_none")]
4639 pub throughput: Option<i32>,
4640}
4641
4642impl ModifyVolumeRequest {
4643 #[cfg(any(test, feature = "test-support"))]
4644 /// Create a fixture instance for testing.
4645 pub fn fixture() -> Self {
4646 Self {
4647 volume_id: "test-volume_id".into(),
4648 volume_type: Some("test-volume_type".into()),
4649 iops: Some(100),
4650 throughput: Some(100),
4651 }
4652 }
4653}
4654
4655///
4656/// **AWS API**: `ec2.v1.CreateSnapshotRequest`
4657/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateSnapshotRequest>
4658///
4659/// ## Coverage
4660/// 2 of 6 fields included.
4661/// Omitted fields:
4662/// - `OutpostArn` — not selected in manifest
4663/// - `TagSpecifications` — not selected in manifest
4664/// - `Location` — not selected in manifest
4665/// - `DryRun` — not selected in manifest
4666#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4667pub struct CreateSnapshotRequest {
4668 /// The ID of the Amazon EBS volume.
4669 #[serde(rename = "VolumeId")]
4670 pub volume_id: String,
4671
4672 /// A description for the snapshot.
4673 #[serde(rename = "Description")]
4674 #[serde(skip_serializing_if = "Option::is_none")]
4675 pub description: Option<String>,
4676}
4677
4678impl CreateSnapshotRequest {
4679 #[cfg(any(test, feature = "test-support"))]
4680 /// Create a fixture instance for testing.
4681 pub fn fixture() -> Self {
4682 Self {
4683 volume_id: "test-volume_id".into(),
4684 description: Some("test-description".into()),
4685 }
4686 }
4687}
4688
4689///
4690/// **AWS API**: `ec2.v1.DeleteSnapshotRequest`
4691/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteSnapshotRequest>
4692///
4693/// ## Coverage
4694/// 1 of 2 fields included.
4695/// Omitted fields:
4696/// - `DryRun` — not selected in manifest
4697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4698pub struct DeleteSnapshotRequest {
4699 /// The ID of the EBS snapshot.
4700 #[serde(rename = "SnapshotId")]
4701 pub snapshot_id: String,
4702}
4703
4704impl DeleteSnapshotRequest {
4705 #[cfg(any(test, feature = "test-support"))]
4706 /// Create a fixture instance for testing.
4707 pub fn fixture() -> Self {
4708 Self {
4709 snapshot_id: "test-snapshot_id".into(),
4710 }
4711 }
4712}
4713
4714///
4715/// **AWS API**: `ec2.v1.ModifySnapshotAttributeRequest`
4716/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifySnapshotAttributeRequest>
4717///
4718/// ## Coverage
4719/// 3 of 7 fields included.
4720/// Omitted fields:
4721/// - `GroupNames` — not selected in manifest
4722/// - `OperationType` — not selected in manifest
4723/// - `UserIds` — not selected in manifest
4724/// - `DryRun` — not selected in manifest
4725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4726pub struct ModifySnapshotAttributeRequest {
4727 /// The ID of the snapshot.
4728 #[serde(rename = "SnapshotId")]
4729 pub snapshot_id: String,
4730
4731 /// The snapshot attribute to modify. Only volume creation permissions can be modified.
4732 #[serde(rename = "Attribute")]
4733 #[serde(skip_serializing_if = "Option::is_none")]
4734 pub attribute: Option<String>,
4735
4736 /// A JSON representation of the snapshot attribute modification.
4737 #[serde(rename = "CreateVolumePermission")]
4738 #[serde(skip_serializing_if = "Option::is_none")]
4739 pub create_volume_permission: Option<CreateVolumePermissionModifications>,
4740}
4741
4742impl ModifySnapshotAttributeRequest {
4743 #[cfg(any(test, feature = "test-support"))]
4744 /// Create a fixture instance for testing.
4745 pub fn fixture() -> Self {
4746 Self {
4747 snapshot_id: "test-snapshot_id".into(),
4748 attribute: Some("test-attribute".into()),
4749 create_volume_permission: Some(CreateVolumePermissionModifications::fixture()),
4750 }
4751 }
4752}
4753
4754/// Describes modifications to the list of create volume permissions for a volume.
4755///
4756/// **AWS API**: `ec2.v1.CreateVolumePermissionModifications`
4757/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateVolumePermissionModifications>
4758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4759pub struct CreateVolumePermissionModifications {
4760 /// Adds the specified Amazon Web Services account ID or group to the list.
4761 #[serde(rename = "Add")]
4762 #[serde(default)]
4763 #[serde(skip_serializing_if = "Vec::is_empty")]
4764 pub add: Vec<CreateVolumePermission>,
4765
4766 /// Removes the specified Amazon Web Services account ID or group from the list.
4767 #[serde(rename = "Remove")]
4768 #[serde(default)]
4769 #[serde(skip_serializing_if = "Vec::is_empty")]
4770 pub remove: Vec<CreateVolumePermission>,
4771}
4772
4773impl CreateVolumePermissionModifications {
4774 #[cfg(any(test, feature = "test-support"))]
4775 /// Create a fixture instance for testing.
4776 pub fn fixture() -> Self {
4777 Self {
4778 add: vec![],
4779 remove: vec![],
4780 }
4781 }
4782}
4783
4784///
4785/// **AWS API**: `ec2.v1.EnableSnapshotBlockPublicAccessRequest`
4786/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableSnapshotBlockPublicAccessRequest>
4787///
4788/// ## Coverage
4789/// 1 of 2 fields included.
4790/// Omitted fields:
4791/// - `DryRun` — not selected in manifest
4792#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4793pub struct EnableSnapshotBlockPublicAccessRequest {
4794 /// The mode in which to enable block public access for snapshots for the Region. Specify
4795 /// one of the following values: block-all-sharing
4796 /// - Prevents all public sharing of snapshots in the Region. Users in the account will no
4797 /// longer be able to request new public sharing. Additionally, snapshots that are already
4798 /// publicly shared are treated as private and they are no longer publicly available.
4799 /// block-new-sharing
4800 /// - Prevents only new public sharing of snapshots in the Region. Users in the account will
4801 /// no longer be able to request new public sharing. However, snapshots that are already
4802 /// publicly shared, remain publicly available. unblocked is not a valid value for
4803 /// EnableSnapshotBlockPublicAccess.
4804 #[serde(rename = "State")]
4805 pub state: String,
4806}
4807
4808impl EnableSnapshotBlockPublicAccessRequest {
4809 #[cfg(any(test, feature = "test-support"))]
4810 /// Create a fixture instance for testing.
4811 pub fn fixture() -> Self {
4812 Self {
4813 state: "test-state".into(),
4814 }
4815 }
4816}
4817
4818///
4819/// **AWS API**: `ec2.v1.ReleaseAddressRequest`
4820/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ReleaseAddressRequest>
4821///
4822/// ## Coverage
4823/// 1 of 4 fields included.
4824/// Omitted fields:
4825/// - `PublicIp` — not selected in manifest
4826/// - `NetworkBorderGroup` — not selected in manifest
4827/// - `DryRun` — not selected in manifest
4828#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4829pub struct ReleaseAddressRequest {
4830 /// The allocation ID. This parameter is required.
4831 #[serde(rename = "AllocationId")]
4832 #[serde(skip_serializing_if = "Option::is_none")]
4833 pub allocation_id: Option<String>,
4834}
4835
4836impl ReleaseAddressRequest {
4837 #[cfg(any(test, feature = "test-support"))]
4838 /// Create a fixture instance for testing.
4839 pub fn fixture() -> Self {
4840 Self {
4841 allocation_id: Some("test-allocation_id".into()),
4842 }
4843 }
4844}
4845
4846/// Contains the parameters for DeregisterImage.
4847///
4848/// **AWS API**: `ec2.v1.DeregisterImageRequest`
4849/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeregisterImageRequest>
4850///
4851/// ## Coverage
4852/// 1 of 3 fields included.
4853/// Omitted fields:
4854/// - `DeleteAssociatedSnapshots` — not selected in manifest
4855/// - `DryRun` — not selected in manifest
4856#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4857pub struct DeregisterImageRequest {
4858 /// The ID of the AMI.
4859 #[serde(rename = "ImageId")]
4860 pub image_id: String,
4861}
4862
4863impl DeregisterImageRequest {
4864 #[cfg(any(test, feature = "test-support"))]
4865 /// Create a fixture instance for testing.
4866 pub fn fixture() -> Self {
4867 Self {
4868 image_id: "test-image_id".into(),
4869 }
4870 }
4871}
4872
4873/// Contains the parameters for ModifyImageAttribute.
4874///
4875/// **AWS API**: `ec2.v1.ModifyImageAttributeRequest`
4876/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyImageAttributeRequest>
4877///
4878/// ## Coverage
4879/// 2 of 13 fields included.
4880/// Omitted fields:
4881/// - `Attribute` — not selected in manifest
4882/// - `Description` — not selected in manifest
4883/// - `OperationType` — not selected in manifest
4884/// - `ProductCodes` — not selected in manifest
4885/// - `UserGroups` — not selected in manifest
4886/// - `UserIds` — not selected in manifest
4887/// - `Value` — not selected in manifest
4888/// - `OrganizationArns` — not selected in manifest
4889/// - `OrganizationalUnitArns` — not selected in manifest
4890/// - `ImdsSupport` — not selected in manifest
4891/// - `DryRun` — not selected in manifest
4892#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4893pub struct ModifyImageAttributeRequest {
4894 /// The ID of the AMI.
4895 #[serde(rename = "ImageId")]
4896 pub image_id: String,
4897
4898 /// A new launch permission for the AMI.
4899 #[serde(rename = "LaunchPermission")]
4900 #[serde(skip_serializing_if = "Option::is_none")]
4901 pub launch_permission: Option<LaunchPermissionModifications>,
4902}
4903
4904impl ModifyImageAttributeRequest {
4905 #[cfg(any(test, feature = "test-support"))]
4906 /// Create a fixture instance for testing.
4907 pub fn fixture() -> Self {
4908 Self {
4909 image_id: "test-image_id".into(),
4910 launch_permission: Some(LaunchPermissionModifications::fixture()),
4911 }
4912 }
4913}
4914
4915/// Describes a launch permission modification.
4916///
4917/// **AWS API**: `ec2.v1.LaunchPermissionModifications`
4918/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchPermissionModifications>
4919#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4920pub struct LaunchPermissionModifications {
4921 /// The Amazon Web Services account ID, organization ARN, or OU ARN to add to the list of
4922 /// launch permissions for the AMI.
4923 #[serde(rename = "Add")]
4924 #[serde(default)]
4925 #[serde(skip_serializing_if = "Vec::is_empty")]
4926 pub add: Vec<LaunchPermission>,
4927
4928 /// The Amazon Web Services account ID, organization ARN, or OU ARN to remove from the list
4929 /// of launch permissions for the AMI.
4930 #[serde(rename = "Remove")]
4931 #[serde(default)]
4932 #[serde(skip_serializing_if = "Vec::is_empty")]
4933 pub remove: Vec<LaunchPermission>,
4934}
4935
4936impl LaunchPermissionModifications {
4937 #[cfg(any(test, feature = "test-support"))]
4938 /// Create a fixture instance for testing.
4939 pub fn fixture() -> Self {
4940 Self {
4941 add: vec![],
4942 remove: vec![],
4943 }
4944 }
4945}
4946
4947/// Describes a launch permission.
4948///
4949/// **AWS API**: `ec2.v1.LaunchPermission`
4950/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchPermission>
4951///
4952/// ## Coverage
4953/// 2 of 4 fields included.
4954/// Omitted fields:
4955/// - `OrganizationArn` — not selected in manifest
4956/// - `OrganizationalUnitArn` — not selected in manifest
4957#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4958pub struct LaunchPermission {
4959 /// The name of the group.
4960 #[serde(rename(serialize = "Group", deserialize = "group"))]
4961 #[serde(skip_serializing_if = "Option::is_none")]
4962 pub group: Option<String>,
4963
4964 /// The Amazon Web Services account ID. Constraints: Up to 10 000 account IDs can be
4965 /// specified in a single request.
4966 #[serde(rename(serialize = "UserId", deserialize = "userId"))]
4967 #[serde(skip_serializing_if = "Option::is_none")]
4968 pub user_id: Option<String>,
4969}
4970
4971impl LaunchPermission {
4972 #[cfg(any(test, feature = "test-support"))]
4973 /// Create a fixture instance for testing.
4974 pub fn fixture() -> Self {
4975 Self {
4976 group: Some("test-group".into()),
4977 user_id: Some("test-user_id".into()),
4978 }
4979 }
4980}
4981
4982///
4983/// **AWS API**: `ec2.v1.EnableImageBlockPublicAccessRequest`
4984/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableImageBlockPublicAccessRequest>
4985///
4986/// ## Coverage
4987/// 1 of 2 fields included.
4988/// Omitted fields:
4989/// - `DryRun` — not selected in manifest
4990#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4991pub struct EnableImageBlockPublicAccessRequest {
4992 /// Specify block-new-sharing to enable block public access for AMIs at the account level in
4993 /// the specified Region. This will block any attempt to publicly share your AMIs in the
4994 /// specified Region.
4995 #[serde(rename = "ImageBlockPublicAccessState")]
4996 pub image_block_public_access_state: String,
4997}
4998
4999impl EnableImageBlockPublicAccessRequest {
5000 #[cfg(any(test, feature = "test-support"))]
5001 /// Create a fixture instance for testing.
5002 pub fn fixture() -> Self {
5003 Self {
5004 image_block_public_access_state: "test-image_block_public_access_state".into(),
5005 }
5006 }
5007}
5008
5009///
5010/// **AWS API**: `ec2.v1.RevokeSecurityGroupIngressRequest`
5011/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupIngressRequest>
5012///
5013/// ## Coverage
5014/// 2 of 11 fields included.
5015/// Omitted fields:
5016/// - `CidrIp` — not selected in manifest
5017/// - `FromPort` — not selected in manifest
5018/// - `GroupName` — not selected in manifest
5019/// - `IpProtocol` — not selected in manifest
5020/// - `SourceSecurityGroupName` — not selected in manifest
5021/// - `SourceSecurityGroupOwnerId` — not selected in manifest
5022/// - `ToPort` — not selected in manifest
5023/// - `SecurityGroupRuleIds` — not selected in manifest
5024/// - `DryRun` — not selected in manifest
5025#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5026pub struct RevokeSecurityGroupIngressRequest {
5027 /// The ID of the security group.
5028 #[serde(rename = "GroupId")]
5029 #[serde(skip_serializing_if = "Option::is_none")]
5030 pub group_id: Option<String>,
5031
5032 /// The sets of IP permissions. You can't specify a source security group and a CIDR IP
5033 /// address range in the same set of permissions.
5034 #[serde(rename = "IpPermissions")]
5035 #[serde(default)]
5036 #[serde(skip_serializing_if = "Vec::is_empty")]
5037 pub ip_permissions: Vec<IpPermission>,
5038}
5039
5040impl RevokeSecurityGroupIngressRequest {
5041 #[cfg(any(test, feature = "test-support"))]
5042 /// Create a fixture instance for testing.
5043 pub fn fixture() -> Self {
5044 Self {
5045 group_id: Some("test-group_id".into()),
5046 ip_permissions: vec![],
5047 }
5048 }
5049}
5050
5051///
5052/// **AWS API**: `ec2.v1.RevokeSecurityGroupEgressRequest`
5053/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupEgressRequest>
5054///
5055/// ## Coverage
5056/// 2 of 10 fields included.
5057/// Omitted fields:
5058/// - `SecurityGroupRuleIds` — not selected in manifest
5059/// - `DryRun` — not selected in manifest
5060/// - `SourceSecurityGroupName` — not selected in manifest
5061/// - `SourceSecurityGroupOwnerId` — not selected in manifest
5062/// - `IpProtocol` — not selected in manifest
5063/// - `FromPort` — not selected in manifest
5064/// - `ToPort` — not selected in manifest
5065/// - `CidrIp` — not selected in manifest
5066#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5067pub struct RevokeSecurityGroupEgressRequest {
5068 /// The ID of the security group.
5069 #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
5070 pub group_id: String,
5071
5072 /// The sets of IP permissions. You can't specify a destination security group and a CIDR IP
5073 /// address range in the same set of permissions.
5074 #[serde(rename(serialize = "IpPermissions", deserialize = "ipPermissions"))]
5075 #[serde(default)]
5076 #[serde(skip_serializing_if = "Vec::is_empty")]
5077 pub ip_permissions: Vec<IpPermission>,
5078}
5079
5080impl RevokeSecurityGroupEgressRequest {
5081 #[cfg(any(test, feature = "test-support"))]
5082 /// Create a fixture instance for testing.
5083 pub fn fixture() -> Self {
5084 Self {
5085 group_id: "test-group_id".into(),
5086 ip_permissions: vec![],
5087 }
5088 }
5089}
5090
5091///
5092/// **AWS API**: `ec2.v1.AuthorizeSecurityGroupIngressRequest`
5093/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AuthorizeSecurityGroupIngressRequest>
5094///
5095/// ## Coverage
5096/// 2 of 11 fields included.
5097/// Omitted fields:
5098/// - `CidrIp` — not selected in manifest
5099/// - `FromPort` — not selected in manifest
5100/// - `GroupName` — not selected in manifest
5101/// - `IpProtocol` — not selected in manifest
5102/// - `SourceSecurityGroupName` — not selected in manifest
5103/// - `SourceSecurityGroupOwnerId` — not selected in manifest
5104/// - `ToPort` — not selected in manifest
5105/// - `TagSpecifications` — not selected in manifest
5106/// - `DryRun` — not selected in manifest
5107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5108pub struct AuthorizeSecurityGroupIngressRequest {
5109 /// The ID of the security group.
5110 #[serde(rename = "GroupId")]
5111 #[serde(skip_serializing_if = "Option::is_none")]
5112 pub group_id: Option<String>,
5113
5114 /// The permissions for the security group rules.
5115 #[serde(rename = "IpPermissions")]
5116 #[serde(default)]
5117 #[serde(skip_serializing_if = "Vec::is_empty")]
5118 pub ip_permissions: Vec<IpPermission>,
5119}
5120
5121impl AuthorizeSecurityGroupIngressRequest {
5122 #[cfg(any(test, feature = "test-support"))]
5123 /// Create a fixture instance for testing.
5124 pub fn fixture() -> Self {
5125 Self {
5126 group_id: Some("test-group_id".into()),
5127 ip_permissions: vec![],
5128 }
5129 }
5130}
5131
5132///
5133/// **AWS API**: `ec2.v1.DeleteSecurityGroupRequest`
5134/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteSecurityGroupRequest>
5135///
5136/// ## Coverage
5137/// 1 of 3 fields included.
5138/// Omitted fields:
5139/// - `GroupName` — not selected in manifest
5140/// - `DryRun` — not selected in manifest
5141#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5142pub struct DeleteSecurityGroupRequest {
5143 /// The ID of the security group.
5144 #[serde(rename = "GroupId")]
5145 #[serde(skip_serializing_if = "Option::is_none")]
5146 pub group_id: Option<String>,
5147}
5148
5149impl DeleteSecurityGroupRequest {
5150 #[cfg(any(test, feature = "test-support"))]
5151 /// Create a fixture instance for testing.
5152 pub fn fixture() -> Self {
5153 Self {
5154 group_id: Some("test-group_id".into()),
5155 }
5156 }
5157}
5158
5159///
5160/// **AWS API**: `ec2.v1.DeleteNatGatewayRequest`
5161/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteNatGatewayRequest>
5162///
5163/// ## Coverage
5164/// 1 of 2 fields included.
5165/// Omitted fields:
5166/// - `DryRun` — not selected in manifest
5167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5168pub struct DeleteNatGatewayRequest {
5169 /// The ID of the NAT gateway.
5170 #[serde(rename = "NatGatewayId")]
5171 pub nat_gateway_id: String,
5172}
5173
5174impl DeleteNatGatewayRequest {
5175 #[cfg(any(test, feature = "test-support"))]
5176 /// Create a fixture instance for testing.
5177 pub fn fixture() -> Self {
5178 Self {
5179 nat_gateway_id: "test-nat_gateway_id".into(),
5180 }
5181 }
5182}
5183
5184///
5185/// **AWS API**: `ec2.v1.DeleteVpcEndpointsRequest`
5186/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteVpcEndpointsRequest>
5187///
5188/// ## Coverage
5189/// 1 of 2 fields included.
5190/// Omitted fields:
5191/// - `DryRun` — not selected in manifest
5192#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5193pub struct DeleteVpcEndpointsRequest {
5194 /// The IDs of the VPC endpoints.
5195 #[serde(rename = "VpcEndpointId")]
5196 #[serde(default)]
5197 pub vpc_endpoint_ids: Vec<String>,
5198}
5199
5200impl DeleteVpcEndpointsRequest {
5201 #[cfg(any(test, feature = "test-support"))]
5202 /// Create a fixture instance for testing.
5203 pub fn fixture() -> Self {
5204 Self {
5205 vpc_endpoint_ids: vec![],
5206 }
5207 }
5208}
5209
5210///
5211/// **AWS API**: `ec2.v1.CreateFlowLogsRequest`
5212/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateFlowLogsRequest>
5213///
5214/// ## Coverage
5215/// 5 of 14 fields included.
5216/// Omitted fields:
5217/// - `DryRun` — not selected in manifest
5218/// - `ClientToken` — not selected in manifest
5219/// - `DeliverCrossAccountRole` — not selected in manifest
5220/// - `LogDestinationType` — not selected in manifest
5221/// - `LogDestination` — not selected in manifest
5222/// - `LogFormat` — not selected in manifest
5223/// - `TagSpecifications` — not selected in manifest
5224/// - `MaxAggregationInterval` — not selected in manifest
5225/// - `DestinationOptions` — not selected in manifest
5226#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5227pub struct CreateFlowLogsRequest {
5228 /// The IDs of the resources to monitor. For example, if the resource type is VPC, specify
5229 /// the IDs of the VPCs. Constraints: Maximum of 25 for transit gateway resource types.
5230 /// Maximum of 1000 for the other resource types.
5231 #[serde(rename = "ResourceId")]
5232 #[serde(default)]
5233 pub resource_ids: Vec<String>,
5234
5235 /// The type of resource to monitor.
5236 #[serde(rename = "ResourceType")]
5237 pub resource_type: String,
5238
5239 /// The type of traffic to monitor (accepted traffic, rejected traffic, or all traffic).
5240 /// This parameter is not supported for transit gateway resource types. It is required for
5241 /// the other resource types.
5242 #[serde(rename = "TrafficType")]
5243 pub traffic_type: String,
5244
5245 /// The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your
5246 /// flow logs. This parameter is valid only if the destination type is cloud-watch-logs.
5247 #[serde(rename = "LogGroupName")]
5248 #[serde(skip_serializing_if = "Option::is_none")]
5249 pub log_group_name: Option<String>,
5250
5251 /// The ARN of the IAM role that allows Amazon EC2 to publish flow logs to the log
5252 /// destination. This parameter is required if the destination type is cloud-watch-logs, or
5253 /// if the destination type is kinesis-data-firehose and the delivery stream and the
5254 /// resources to monitor are in different accounts.
5255 #[serde(rename = "DeliverLogsPermissionArn")]
5256 #[serde(skip_serializing_if = "Option::is_none")]
5257 pub deliver_logs_permission_arn: Option<String>,
5258}
5259
5260impl CreateFlowLogsRequest {
5261 #[cfg(any(test, feature = "test-support"))]
5262 /// Create a fixture instance for testing.
5263 pub fn fixture() -> Self {
5264 Self {
5265 resource_ids: vec![],
5266 resource_type: "test-resource_type".into(),
5267 traffic_type: "test-traffic_type".into(),
5268 log_group_name: Some("test-log_group_name".into()),
5269 deliver_logs_permission_arn: Some("test-deliver_logs_permission_arn".into()),
5270 }
5271 }
5272}
5273
5274///
5275/// **AWS API**: `ec2.v1.CreateTagsRequest`
5276/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateTagsRequest>
5277///
5278/// ## Coverage
5279/// 2 of 3 fields included.
5280/// Omitted fields:
5281/// - `DryRun` — not selected in manifest
5282#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5283pub struct CreateTagsRequest {
5284 /// The IDs of the resources, separated by spaces. Constraints: Up to 1000 resource IDs. We
5285 /// recommend breaking up this request into smaller batches.
5286 #[serde(rename = "ResourceId")]
5287 #[serde(default)]
5288 pub resources: Vec<String>,
5289
5290 /// The tags. The value parameter is required, but if you don't want the tag to have a
5291 /// value, specify the parameter with no value, and we set the value to an empty string.
5292 #[serde(rename = "Tag")]
5293 #[serde(default)]
5294 pub tags: Vec<Tag>,
5295}
5296
5297impl CreateTagsRequest {
5298 #[cfg(any(test, feature = "test-support"))]
5299 /// Create a fixture instance for testing.
5300 pub fn fixture() -> Self {
5301 Self {
5302 resources: vec![],
5303 tags: vec![],
5304 }
5305 }
5306}
5307
5308///
5309/// **AWS API**: `ec2.v1.EnableEbsEncryptionByDefaultRequest`
5310/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableEbsEncryptionByDefaultRequest>
5311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5312pub struct EnableEbsEncryptionByDefaultRequest {
5313 /// Checks whether you have the required permissions for the action, without actually making
5314 /// the request, and provides an error response. If you have the required permissions, the
5315 /// error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.
5316 #[serde(rename = "DryRun")]
5317 #[serde(skip_serializing_if = "Option::is_none")]
5318 pub dry_run: Option<bool>,
5319}
5320
5321impl EnableEbsEncryptionByDefaultRequest {
5322 #[cfg(any(test, feature = "test-support"))]
5323 /// Create a fixture instance for testing.
5324 pub fn fixture() -> Self {
5325 Self {
5326 dry_run: Some(false),
5327 }
5328 }
5329}
5330
5331// ======================================================================
5332// Auto-generated dependency types (referenced via $ref)
5333// ======================================================================
5334
5335/// The snapshot ID and its deletion result code.
5336///
5337/// **AWS API**: `ec2.v1.DeleteSnapshotReturnCode`
5338///
5339/// *Auto-generated dependency — all fields included.*
5340#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5341pub struct DeleteSnapshotReturnCode {
5342 /// The ID of the snapshot.
5343 #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
5344 #[serde(skip_serializing_if = "Option::is_none")]
5345 pub snapshot_id: Option<String>,
5346
5347 /// The result code from the snapshot deletion attempt. Possible values: success
5348 /// - The snapshot was successfully deleted. skipped
5349 /// - The snapshot was not deleted because it's associated with other AMIs. missing-
5350 /// permissions
5351 /// - The snapshot was not deleted because the role lacks DeleteSnapshot permissions. For
5352 /// more information, see How Amazon EBS works with IAM. internal-error
5353 /// - The snapshot was not deleted due to a server error. client-error
5354 /// - The snapshot was not deleted due to a client configuration error. For details about an
5355 /// error, check the DeleteSnapshot event in the CloudTrail event history. For more
5356 /// information, see View event history in the Amazon Web Services CloudTrail User Guide.
5357 #[serde(rename(serialize = "ReturnCode", deserialize = "returnCode"))]
5358 #[serde(skip_serializing_if = "Option::is_none")]
5359 pub return_code: Option<String>,
5360}
5361
5362impl DeleteSnapshotReturnCode {
5363 #[cfg(any(test, feature = "test-support"))]
5364 /// Create a fixture instance for testing.
5365 pub fn fixture() -> Self {
5366 Self {
5367 snapshot_id: Some("test-snapshot_id".into()),
5368 return_code: Some("test-return_code".into()),
5369 }
5370 }
5371}