setTopicAttributes method

Future<void> setTopicAttributes({
  1. required String attributeName,
  2. required String topicArn,
  3. String? attributeValue,
})

Allows a topic owner to set an attribute of the topic to a new value.

May throw InvalidParameterException. May throw InternalErrorException. May throw NotFoundException. May throw AuthorizationErrorException. May throw InvalidSecurityException.

Parameter attributeName : A map of attributes with their corresponding values.

The following lists the names, descriptions, and values of the special request parameters that the SetTopicAttributes action uses:

  • DeliveryPolicy – The policy that defines how Amazon SNS retries failed deliveries to HTTP/S endpoints.
  • DisplayName – The display name to use for a topic with SMS subscriptions.
  • Policy – The policy that defines who can access your topic. By default, only the topic owner can publish or subscribe to the topic.
The following attribute applies only to server-side-encryption:
  • KmsMasterKeyId – The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. For more information, see Key Terms. For more examples, see KeyId in the AWS Key Management Service API Reference.
The following attribute applies only to FIFO topics:
  • ContentBasedDeduplication – Enables content-based deduplication for FIFO topics.
    • By default, ContentBasedDeduplication is set to false. If you create a FIFO topic and this attribute is false, you must specify a value for the MessageDeduplicationId parameter for the Publish action.
    • When you set ContentBasedDeduplication to true, Amazon SNS uses a SHA-256 hash to generate the MessageDeduplicationId using the body of the message (but not the attributes of the message).

      (Optional) To override the generated value, you can specify a value for the the MessageDeduplicationId parameter for the Publish action.

Parameter topicArn : The ARN of the topic to modify.

Parameter attributeValue : The new value for the attribute.

Implementation

Future<void> setTopicAttributes({
  required String attributeName,
  required String topicArn,
  String? attributeValue,
}) async {
  ArgumentError.checkNotNull(attributeName, 'attributeName');
  ArgumentError.checkNotNull(topicArn, 'topicArn');
  final $request = <String, dynamic>{};
  $request['AttributeName'] = attributeName;
  $request['TopicArn'] = topicArn;
  attributeValue?.also((arg) => $request['AttributeValue'] = arg);
  await _protocol.send(
    $request,
    action: 'SetTopicAttributes',
    version: '2010-03-31',
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    shape: shapes['SetTopicAttributesInput'],
    shapes: shapes,
  );
}