-
Notifications
You must be signed in to change notification settings - Fork 597
/
api_op_CreateVpc.go
223 lines (197 loc) · 7.92 KB
/
api_op_CreateVpc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
// Code generated by smithy-go-codegen DO NOT EDIT.
package ec2
import (
"context"
"fmt"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/service/ec2/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Creates a VPC with the specified CIDR blocks. For more information, see [IP addressing for your VPCs and subnets] in the
// Amazon VPC User Guide.
//
// You can optionally request an IPv6 CIDR block for the VPC. You can request an
// Amazon-provided IPv6 CIDR block from Amazon's pool of IPv6 addresses or an IPv6
// CIDR block from an IPv6 address pool that you provisioned through bring your own
// IP addresses ([BYOIP] ).
//
// By default, each instance that you launch in the VPC has the default DHCP
// options, which include only a default DNS server that we provide
// (AmazonProvidedDNS). For more information, see [DHCP option sets]in the Amazon VPC User Guide.
//
// You can specify the instance tenancy value for the VPC when you create it. You
// can't change this value for the VPC after you create it. For more information,
// see [Dedicated Instances]in the Amazon EC2 User Guide.
//
// [BYOIP]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html
// [Dedicated Instances]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html
// [DHCP option sets]: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html
// [IP addressing for your VPCs and subnets]: https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html
func (c *Client) CreateVpc(ctx context.Context, params *CreateVpcInput, optFns ...func(*Options)) (*CreateVpcOutput, error) {
if params == nil {
params = &CreateVpcInput{}
}
result, metadata, err := c.invokeOperation(ctx, "CreateVpc", params, optFns, c.addOperationCreateVpcMiddlewares)
if err != nil {
return nil, err
}
out := result.(*CreateVpcOutput)
out.ResultMetadata = metadata
return out, nil
}
type CreateVpcInput struct {
// Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the
// VPC. You cannot specify the range of IP addresses, or the size of the CIDR
// block.
AmazonProvidedIpv6CidrBlock *bool
// The IPv4 network range for the VPC, in CIDR notation. For example, 10.0.0.0/16 .
// We modify the specified CIDR block to its canonical form; for example, if you
// specify 100.68.0.18/18 , we modify it to 100.68.0.0/18 .
CidrBlock *string
// Checks whether you have the required permissions for the action, without
// actually making the request, and provides an error response. If you have the
// required permissions, the error response is DryRunOperation . Otherwise, it is
// UnauthorizedOperation .
DryRun *bool
// The tenancy options for instances launched into the VPC. For default , instances
// are launched with shared tenancy by default. You can launch instances with any
// tenancy into a shared tenancy VPC. For dedicated , instances are launched as
// dedicated tenancy instances by default. You can only launch instances with a
// tenancy of dedicated or host into a dedicated tenancy VPC.
//
// Important: The host value cannot be used with this parameter. Use the default
// or dedicated values only.
//
// Default: default
InstanceTenancy types.Tenancy
// The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For
// more information, see [What is IPAM?]in the Amazon VPC IPAM User Guide.
//
// [What is IPAM?]: https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html
Ipv4IpamPoolId *string
// The netmask length of the IPv4 CIDR you want to allocate to this VPC from an
// Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see [What is IPAM?]
// in the Amazon VPC IPAM User Guide.
//
// [What is IPAM?]: https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html
Ipv4NetmaskLength *int32
// The IPv6 CIDR block from the IPv6 address pool. You must also specify Ipv6Pool
// in the request.
//
// To let Amazon choose the IPv6 CIDR block for you, omit this parameter.
Ipv6CidrBlock *string
// The name of the location from which we advertise the IPV6 CIDR block. Use this
// parameter to limit the address to this location.
//
// You must set AmazonProvidedIpv6CidrBlock to true to use this parameter.
Ipv6CidrBlockNetworkBorderGroup *string
// The ID of an IPv6 IPAM pool which will be used to allocate this VPC an IPv6
// CIDR. IPAM is a VPC feature that you can use to automate your IP address
// management workflows including assigning, tracking, troubleshooting, and
// auditing IP addresses across Amazon Web Services Regions and accounts throughout
// your Amazon Web Services Organization. For more information, see [What is IPAM?]in the Amazon
// VPC IPAM User Guide.
//
// [What is IPAM?]: https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html
Ipv6IpamPoolId *string
// The netmask length of the IPv6 CIDR you want to allocate to this VPC from an
// Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see [What is IPAM?]
// in the Amazon VPC IPAM User Guide.
//
// [What is IPAM?]: https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html
Ipv6NetmaskLength *int32
// The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.
Ipv6Pool *string
// The tags to assign to the VPC.
TagSpecifications []types.TagSpecification
noSmithyDocumentSerde
}
type CreateVpcOutput struct {
// Information about the VPC.
Vpc *types.Vpc
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationCreateVpcMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsEc2query_serializeOpCreateVpc{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsEc2query_deserializeOpCreateVpc{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateVpc"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = addClientRequestID(stack); err != nil {
return err
}
if err = addComputeContentLength(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = addComputePayloadSHA256(stack); err != nil {
return err
}
if err = addRetry(stack, options); err != nil {
return err
}
if err = addRawResponseToMetadata(stack); err != nil {
return err
}
if err = addRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack, options); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateVpc(options.Region), middleware.Before); err != nil {
return err
}
if err = addRecursionDetection(stack); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opCreateVpc(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "CreateVpc",
}
}