1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package guardduty 4 5import ( 6 "context" 7 "fmt" 8 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 9 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" 10 "github.com/aws/aws-sdk-go-v2/service/guardduty/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// Creates a filter using the specified finding criteria. 16func (c *Client) CreateFilter(ctx context.Context, params *CreateFilterInput, optFns ...func(*Options)) (*CreateFilterOutput, error) { 17 if params == nil { 18 params = &CreateFilterInput{} 19 } 20 21 result, metadata, err := c.invokeOperation(ctx, "CreateFilter", params, optFns, addOperationCreateFilterMiddlewares) 22 if err != nil { 23 return nil, err 24 } 25 26 out := result.(*CreateFilterOutput) 27 out.ResultMetadata = metadata 28 return out, nil 29} 30 31type CreateFilterInput struct { 32 33 // The ID of the detector belonging to the GuardDuty account that you want to 34 // create a filter for. 35 // 36 // This member is required. 37 DetectorId *string 38 39 // Represents the criteria to be used in the filter for querying findings. You can 40 // only use the following attributes to query findings: 41 // 42 // * accountId 43 // 44 // * region 45 // 46 // * 47 // confidence 48 // 49 // * id 50 // 51 // * resource.accessKeyDetails.accessKeyId 52 // 53 // * 54 // resource.accessKeyDetails.principalId 55 // 56 // * resource.accessKeyDetails.userName 57 // 58 // * 59 // resource.accessKeyDetails.userType 60 // 61 // * 62 // resource.instanceDetails.iamInstanceProfile.id 63 // 64 // * 65 // resource.instanceDetails.imageId 66 // 67 // * resource.instanceDetails.instanceId 68 // 69 // * 70 // resource.instanceDetails.outpostArn 71 // 72 // * 73 // resource.instanceDetails.networkInterfaces.ipv6Addresses 74 // 75 // * 76 // resource.instanceDetails.networkInterfaces.privateIpAddresses.privateIpAddress 77 // 78 // * 79 // resource.instanceDetails.networkInterfaces.publicDnsName 80 // 81 // * 82 // resource.instanceDetails.networkInterfaces.publicIp 83 // 84 // * 85 // resource.instanceDetails.networkInterfaces.securityGroups.groupId 86 // 87 // * 88 // resource.instanceDetails.networkInterfaces.securityGroups.groupName 89 // 90 // * 91 // resource.instanceDetails.networkInterfaces.subnetId 92 // 93 // * 94 // resource.instanceDetails.networkInterfaces.vpcId 95 // 96 // * 97 // resource.instanceDetails.tags.key 98 // 99 // * resource.instanceDetails.tags.value 100 // 101 // * 102 // resource.resourceType 103 // 104 // * service.action.actionType 105 // 106 // * 107 // service.action.awsApiCallAction.api 108 // 109 // * 110 // service.action.awsApiCallAction.callerType 111 // 112 // * 113 // service.action.awsApiCallAction.errorCode 114 // 115 // * 116 // service.action.awsApiCallAction.remoteIpDetails.city.cityName 117 // 118 // * 119 // service.action.awsApiCallAction.remoteIpDetails.country.countryName 120 // 121 // * 122 // service.action.awsApiCallAction.remoteIpDetails.ipAddressV4 123 // 124 // * 125 // service.action.awsApiCallAction.remoteIpDetails.organization.asn 126 // 127 // * 128 // service.action.awsApiCallAction.remoteIpDetails.organization.asnOrg 129 // 130 // * 131 // service.action.awsApiCallAction.serviceName 132 // 133 // * 134 // service.action.dnsRequestAction.domain 135 // 136 // * 137 // service.action.networkConnectionAction.blocked 138 // 139 // * 140 // service.action.networkConnectionAction.connectionDirection 141 // 142 // * 143 // service.action.networkConnectionAction.localPortDetails.port 144 // 145 // * 146 // service.action.networkConnectionAction.protocol 147 // 148 // * 149 // service.action.networkConnectionAction.localIpDetails.ipAddressV4 150 // 151 // * 152 // service.action.networkConnectionAction.remoteIpDetails.city.cityName 153 // 154 // * 155 // service.action.networkConnectionAction.remoteIpDetails.country.countryName 156 // 157 // * 158 // service.action.networkConnectionAction.remoteIpDetails.ipAddressV4 159 // 160 // * 161 // service.action.networkConnectionAction.remoteIpDetails.organization.asn 162 // 163 // * 164 // service.action.networkConnectionAction.remoteIpDetails.organization.asnOrg 165 // 166 // * 167 // service.action.networkConnectionAction.remotePortDetails.port 168 // 169 // * 170 // service.additionalInfo.threatListName 171 // 172 // * service.archived When this attribute is 173 // set to TRUE, only archived findings are listed. When it's set to FALSE, only 174 // unarchived findings are listed. When this attribute is not set, all existing 175 // findings are listed. 176 // 177 // * service.resourceRole 178 // 179 // * severity 180 // 181 // * type 182 // 183 // * updatedAt 184 // Type: ISO 8601 string format: YYYY-MM-DDTHH:MM:SS.SSSZ or YYYY-MM-DDTHH:MM:SSZ 185 // depending on whether the value contains milliseconds. 186 // 187 // This member is required. 188 FindingCriteria *types.FindingCriteria 189 190 // The name of the filter. Minimum length of 3. Maximum length of 64. Valid 191 // characters include alphanumeric characters, dot (.), underscore (_), and dash 192 // (-). Spaces are not allowed. 193 // 194 // This member is required. 195 Name *string 196 197 // Specifies the action that is to be applied to the findings that match the 198 // filter. 199 Action types.FilterAction 200 201 // The idempotency token for the create request. 202 ClientToken *string 203 204 // The description of the filter. 205 Description *string 206 207 // Specifies the position of the filter in the list of current filters. Also 208 // specifies the order in which this filter is applied to the findings. 209 Rank int32 210 211 // The tags to be added to a new filter resource. 212 Tags map[string]string 213} 214 215type CreateFilterOutput struct { 216 217 // The name of the successfully created filter. 218 // 219 // This member is required. 220 Name *string 221 222 // Metadata pertaining to the operation's result. 223 ResultMetadata middleware.Metadata 224} 225 226func addOperationCreateFilterMiddlewares(stack *middleware.Stack, options Options) (err error) { 227 err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateFilter{}, middleware.After) 228 if err != nil { 229 return err 230 } 231 err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateFilter{}, middleware.After) 232 if err != nil { 233 return err 234 } 235 if err = addSetLoggerMiddleware(stack, options); err != nil { 236 return err 237 } 238 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 239 return err 240 } 241 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 242 return err 243 } 244 if err = addResolveEndpointMiddleware(stack, options); err != nil { 245 return err 246 } 247 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 248 return err 249 } 250 if err = addRetryMiddlewares(stack, options); err != nil { 251 return err 252 } 253 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 254 return err 255 } 256 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 257 return err 258 } 259 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 260 return err 261 } 262 if err = addClientUserAgent(stack); err != nil { 263 return err 264 } 265 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 266 return err 267 } 268 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 269 return err 270 } 271 if err = addIdempotencyToken_opCreateFilterMiddleware(stack, options); err != nil { 272 return err 273 } 274 if err = addOpCreateFilterValidationMiddleware(stack); err != nil { 275 return err 276 } 277 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateFilter(options.Region), middleware.Before); err != nil { 278 return err 279 } 280 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 281 return err 282 } 283 if err = addResponseErrorMiddleware(stack); err != nil { 284 return err 285 } 286 if err = addRequestResponseLogging(stack, options); err != nil { 287 return err 288 } 289 return nil 290} 291 292type idempotencyToken_initializeOpCreateFilter struct { 293 tokenProvider IdempotencyTokenProvider 294} 295 296func (*idempotencyToken_initializeOpCreateFilter) ID() string { 297 return "OperationIdempotencyTokenAutoFill" 298} 299 300func (m *idempotencyToken_initializeOpCreateFilter) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 301 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 302) { 303 if m.tokenProvider == nil { 304 return next.HandleInitialize(ctx, in) 305 } 306 307 input, ok := in.Parameters.(*CreateFilterInput) 308 if !ok { 309 return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateFilterInput ") 310 } 311 312 if input.ClientToken == nil { 313 t, err := m.tokenProvider.GetIdempotencyToken() 314 if err != nil { 315 return out, metadata, err 316 } 317 input.ClientToken = &t 318 } 319 return next.HandleInitialize(ctx, in) 320} 321func addIdempotencyToken_opCreateFilterMiddleware(stack *middleware.Stack, cfg Options) error { 322 return stack.Initialize.Add(&idempotencyToken_initializeOpCreateFilter{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) 323} 324 325func newServiceMetadataMiddleware_opCreateFilter(region string) *awsmiddleware.RegisterServiceMetadata { 326 return &awsmiddleware.RegisterServiceMetadata{ 327 Region: region, 328 ServiceID: ServiceID, 329 SigningName: "guardduty", 330 OperationName: "CreateFilter", 331 } 332} 333