putResourcePolicy method

Future<PutResourcePolicyResponse> putResourcePolicy({
  1. String? policyDocument,
  2. String? policyName,
})

Creates or updates a resource policy allowing other AWS services to put log events to this account, such as Amazon Route 53. An account can have up to 10 resource policies per AWS Region.

May throw InvalidParameterException. May throw LimitExceededException. May throw ServiceUnavailableException.

Parameter policyDocument : Details of the new policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. This parameter is required.

The following example creates a resource policy enabling the Route 53 service to put DNS query logs in to the specified log group. Replace "logArn" with the ARN of your CloudWatch Logs resource, such as a log group or log stream.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Route53LogsToCloudWatchLogs", "Effect": "Allow", "Principal": { "Service": "route53.amazonaws.com" }, "Action":"logs:PutLogEvents", "Resource": "logArn" } ] }

Parameter policyName : Name of the new policy. This parameter is required.

Implementation

Future<PutResourcePolicyResponse> putResourcePolicy({
  String? policyDocument,
  String? policyName,
}) async {
  _s.validateStringLength(
    'policyDocument',
    policyDocument,
    1,
    5120,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'Logs_20140328.PutResourcePolicy'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      if (policyDocument != null) 'policyDocument': policyDocument,
      if (policyName != null) 'policyName': policyName,
    },
  );

  return PutResourcePolicyResponse.fromJson(jsonResponse.body);
}