1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package fms 4 5import ( 6 "context" 7 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 8 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" 9 "github.com/aws/aws-sdk-go-v2/service/fms/types" 10 "github.com/aws/smithy-go/middleware" 11 smithyhttp "github.com/aws/smithy-go/transport/http" 12) 13 14// Creates an AWS Firewall Manager policy. Firewall Manager provides the following 15// types of policies: 16// 17// * An AWS WAF policy (type WAFV2), which defines rule groups 18// to run first in the corresponding AWS WAF web ACL and rule groups to run last in 19// the web ACL. 20// 21// * An AWS WAF Classic policy (type WAF), which defines a rule 22// group. 23// 24// * A Shield Advanced policy, which applies Shield Advanced protection to 25// specified accounts and resources. 26// 27// * A security group policy, which manages VPC 28// security groups across your AWS organization. 29// 30// * An AWS Network Firewall policy, 31// which provides firewall rules to filter network traffic in specified Amazon 32// VPCs. 33// 34// Each policy is specific to one of the types. If you want to enforce more 35// than one policy type across accounts, create multiple policies. You can create 36// multiple policies for each type. You must be subscribed to Shield Advanced to 37// create a Shield Advanced policy. For more information about subscribing to 38// Shield Advanced, see CreateSubscription 39// (https://docs.aws.amazon.com/waf/latest/DDOSAPIReference/API_CreateSubscription.html). 40func (c *Client) PutPolicy(ctx context.Context, params *PutPolicyInput, optFns ...func(*Options)) (*PutPolicyOutput, error) { 41 if params == nil { 42 params = &PutPolicyInput{} 43 } 44 45 result, metadata, err := c.invokeOperation(ctx, "PutPolicy", params, optFns, addOperationPutPolicyMiddlewares) 46 if err != nil { 47 return nil, err 48 } 49 50 out := result.(*PutPolicyOutput) 51 out.ResultMetadata = metadata 52 return out, nil 53} 54 55type PutPolicyInput struct { 56 57 // The details of the AWS Firewall Manager policy to be created. 58 // 59 // This member is required. 60 Policy *types.Policy 61 62 // The tags to add to the AWS resource. 63 TagList []types.Tag 64} 65 66type PutPolicyOutput struct { 67 68 // The details of the AWS Firewall Manager policy. 69 Policy *types.Policy 70 71 // The Amazon Resource Name (ARN) of the policy. 72 PolicyArn *string 73 74 // Metadata pertaining to the operation's result. 75 ResultMetadata middleware.Metadata 76} 77 78func addOperationPutPolicyMiddlewares(stack *middleware.Stack, options Options) (err error) { 79 err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutPolicy{}, middleware.After) 80 if err != nil { 81 return err 82 } 83 err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutPolicy{}, middleware.After) 84 if err != nil { 85 return err 86 } 87 if err = addSetLoggerMiddleware(stack, options); err != nil { 88 return err 89 } 90 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 91 return err 92 } 93 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 94 return err 95 } 96 if err = addResolveEndpointMiddleware(stack, options); err != nil { 97 return err 98 } 99 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 100 return err 101 } 102 if err = addRetryMiddlewares(stack, options); err != nil { 103 return err 104 } 105 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 106 return err 107 } 108 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 109 return err 110 } 111 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 112 return err 113 } 114 if err = addClientUserAgent(stack); err != nil { 115 return err 116 } 117 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 118 return err 119 } 120 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 121 return err 122 } 123 if err = addOpPutPolicyValidationMiddleware(stack); err != nil { 124 return err 125 } 126 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutPolicy(options.Region), middleware.Before); err != nil { 127 return err 128 } 129 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 130 return err 131 } 132 if err = addResponseErrorMiddleware(stack); err != nil { 133 return err 134 } 135 if err = addRequestResponseLogging(stack, options); err != nil { 136 return err 137 } 138 return nil 139} 140 141func newServiceMetadataMiddleware_opPutPolicy(region string) *awsmiddleware.RegisterServiceMetadata { 142 return &awsmiddleware.RegisterServiceMetadata{ 143 Region: region, 144 ServiceID: ServiceID, 145 SigningName: "fms", 146 OperationName: "PutPolicy", 147 } 148} 149