createProtection method

Future<CreateProtectionResponse> createProtection({
  1. required String name,
  2. required String resourceArn,
  3. List<Tag>? tags,
})

Enables Shield Advanced for a specific Amazon Web Services resource. The resource can be an Amazon CloudFront distribution, Amazon Route 53 hosted zone, Global Accelerator standard accelerator, Elastic IP Address, Application Load Balancer, or a Classic Load Balancer. You can protect Amazon EC2 instances and Network Load Balancers by association with protected Amazon EC2 Elastic IP addresses.

You can add protection to only a single resource with each CreateProtection request. You can add protection to multiple resources at once through the Shield Advanced console at https://console.aws.amazon.com/wafv2/shieldv2#/. For more information see Getting Started with Shield Advanced and Adding Shield Advanced protection to Amazon Web Services resources.

May throw InternalErrorException. May throw InvalidOperationException. May throw InvalidParameterException. May throw InvalidResourceException. May throw LimitsExceededException. May throw OptimisticLockException. May throw ResourceAlreadyExistsException. May throw ResourceNotFoundException.

Parameter name : Friendly name for the Protection you are creating.

Parameter resourceArn : The ARN (Amazon Resource Name) of the resource to be protected.

The ARN should be in one of the following formats:

  • For an Application Load Balancer: arn:aws:elasticloadbalancing:region:account-id:loadbalancer/app/load-balancer-name/load-balancer-id
  • For an Elastic Load Balancer (Classic Load Balancer): arn:aws:elasticloadbalancing:region:account-id:loadbalancer/load-balancer-name
  • For an Amazon CloudFront distribution: arn:aws:cloudfront::account-id:distribution/distribution-id
  • For an Global Accelerator standard accelerator: arn:aws:globalaccelerator::account-id:accelerator/accelerator-id
  • For Amazon Route 53: arn:aws:route53:::hostedzone/hosted-zone-id
  • For an Elastic IP address: arn:aws:ec2:region:account-id:eip-allocation/allocation-id

Parameter tags : One or more tag key-value pairs for the Protection object that is created.

Implementation

Future<CreateProtectionResponse> createProtection({
  required String name,
  required String resourceArn,
  List<Tag>? tags,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSShield_20160616.CreateProtection'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'Name': name,
      'ResourceArn': resourceArn,
      if (tags != null) 'Tags': tags,
    },
  );

  return CreateProtectionResponse.fromJson(jsonResponse.body);
}