putPolicy method

Future<PutPolicyResponse> putPolicy({
  1. required Policy policy,
  2. List<Tag>? tagList,
})

Creates an AWS Firewall Manager policy.

Firewall Manager provides the following types of policies:

  • An AWS WAF policy (type WAFV2), which defines rule groups to run first in the corresponding AWS WAF web ACL and rule groups to run last in the web ACL.
  • An AWS WAF Classic policy (type WAF), which defines a rule group.
  • A Shield Advanced policy, which applies Shield Advanced protection to specified accounts and resources.
  • A security group policy, which manages VPC security groups across your AWS organization.
  • An AWS Network Firewall policy, which provides firewall rules to filter network traffic in specified Amazon VPCs.
Each policy is specific to one of the types. If you want to enforce more than one policy type across accounts, create multiple policies. You can create multiple policies for each type.

You must be subscribed to Shield Advanced to create a Shield Advanced policy. For more information about subscribing to Shield Advanced, see CreateSubscription.

May throw ResourceNotFoundException. May throw InvalidOperationException. May throw InvalidInputException. May throw LimitExceededException. May throw InternalErrorException. May throw InvalidTypeException.

Parameter policy : The details of the AWS Firewall Manager policy to be created.

Parameter tagList : The tags to add to the AWS resource.

Implementation

Future<PutPolicyResponse> putPolicy({
  required Policy policy,
  List<Tag>? tagList,
}) async {
  ArgumentError.checkNotNull(policy, 'policy');
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSFMS_20180101.PutPolicy'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'Policy': policy,
      if (tagList != null) 'TagList': tagList,
    },
  );

  return PutPolicyResponse.fromJson(jsonResponse.body);
}