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
|
// Code generated by smithy-go-codegen DO NOT EDIT.
package networkfirewall
import (
"context"
"fmt"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/service/networkfirewall/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Creates an Network Firewall Firewall and accompanying FirewallStatus for a VPC.
// The firewall defines the configuration settings for an Network Firewall
// firewall. The settings that you can define at creation include the firewall
// policy, the subnets in your VPC to use for the firewall endpoints, and any tags
// that are attached to the firewall Amazon Web Services resource. After you create
// a firewall, you can provide additional settings, like the logging configuration.
// To update the settings for a firewall, you use the operations that apply to the
// settings themselves, for example UpdateLoggingConfiguration , AssociateSubnets ,
// and UpdateFirewallDeleteProtection . To manage a firewall's tags, use the
// standard Amazon Web Services resource tagging operations, ListTagsForResource ,
// TagResource , and UntagResource . To retrieve information about firewalls, use
// ListFirewalls and DescribeFirewall .
func (c *Client) CreateFirewall(ctx context.Context, params *CreateFirewallInput, optFns ...func(*Options)) (*CreateFirewallOutput, error) {
if params == nil {
params = &CreateFirewallInput{}
}
result, metadata, err := c.invokeOperation(ctx, "CreateFirewall", params, optFns, c.addOperationCreateFirewallMiddlewares)
if err != nil {
return nil, err
}
out := result.(*CreateFirewallOutput)
out.ResultMetadata = metadata
return out, nil
}
type CreateFirewallInput struct {
// The descriptive name of the firewall. You can't change the name of a firewall
// after you create it.
//
// This member is required.
FirewallName *string
// The Amazon Resource Name (ARN) of the FirewallPolicy that you want to use for
// the firewall.
//
// This member is required.
FirewallPolicyArn *string
// The public subnets to use for your Network Firewall firewalls. Each subnet must
// belong to a different Availability Zone in the VPC. Network Firewall creates a
// firewall endpoint in each subnet.
//
// This member is required.
SubnetMappings []types.SubnetMapping
// The unique identifier of the VPC where Network Firewall should create the
// firewall. You can't change this setting after you create the firewall.
//
// This member is required.
VpcId *string
// A flag indicating whether it is possible to delete the firewall. A setting of
// TRUE indicates that the firewall is protected against deletion. Use this setting
// to protect against accidentally deleting a firewall that is in use. When you
// create a firewall, the operation initializes this flag to TRUE .
DeleteProtection bool
// A description of the firewall.
Description *string
// A complex type that contains settings for encryption of your firewall resources.
EncryptionConfiguration *types.EncryptionConfiguration
// A setting indicating whether the firewall is protected against a change to the
// firewall policy association. Use this setting to protect against accidentally
// modifying the firewall policy for a firewall that is in use. When you create a
// firewall, the operation initializes this setting to TRUE .
FirewallPolicyChangeProtection bool
// A setting indicating whether the firewall is protected against changes to the
// subnet associations. Use this setting to protect against accidentally modifying
// the subnet associations for a firewall that is in use. When you create a
// firewall, the operation initializes this setting to TRUE .
SubnetChangeProtection bool
// The key:value pairs to associate with the resource.
Tags []types.Tag
noSmithyDocumentSerde
}
type CreateFirewallOutput struct {
// The configuration settings for the firewall. These settings include the
// firewall policy and the subnets in your VPC to use for the firewall endpoints.
Firewall *types.Firewall
// Detailed information about the current status of a Firewall . You can retrieve
// this for a firewall by calling DescribeFirewall and providing the firewall name
// and ARN.
FirewallStatus *types.FirewallStatus
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationCreateFirewallMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsAwsjson10_serializeOpCreateFirewall{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsAwsjson10_deserializeOpCreateFirewall{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateFirewall"); 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 = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
return err
}
if err = addRetryMiddlewares(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
return err
}
if err = awsmiddleware.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 = addOpCreateFirewallValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateFirewall(options.Region), middleware.Before); err != nil {
return err
}
if err = awsmiddleware.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_opCreateFirewall(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "CreateFirewall",
}
}
|