AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.
Sets the value of one or more queue attributes, like a policy. When you change a queue's
attributes, the change can take up to 60 seconds for most of the attributes to propagate
throughout the Amazon SQS system. Changes made to the
In the future, new attributes might be added. If you write code that calls this action,
we recommend that you structure your code so that it can handle new attributes gracefully.
Cross-account permissions don't apply to this action. For more information, see Grant
cross-account permissions to a role and a username in the Amazon SQS Developer
Guide.
To remove the ability to change queue permissions, you must deny permission to the
MessageRetentionPeriod
attribute can take up to 15 minutes and will impact existing messages in the queue
potentially causing them to be expired and deleted if the MessageRetentionPeriod
is reduced below the age of existing messages.
AddPermission
, RemovePermission
, and SetQueueAttributes
actions
in your IAM policy.
For .NET Core this operation is only available in asynchronous form. Please refer to SetQueueAttributesAsync.
Namespace: Amazon.SQS
Assembly: AWSSDK.SQS.dll
Version: 3.x.y.z
public abstract SetQueueAttributesResponse SetQueueAttributes( SetQueueAttributesRequest request )
Container for the necessary parameters to execute the SetQueueAttributes service method.
Exception | Condition |
---|---|
InvalidAddressException | The specified ID is invalid. |
InvalidAttributeNameException | The specified attribute doesn't exist. |
InvalidAttributeValueException | A queue attribute value is invalid. |
InvalidSecurityException | The request was not made over HTTPS or did not use SigV4 for signing. |
OverLimitException | The specified action violates a limit. For example, ReceiveMessage returns this error if the maximum number of in flight messages is reached and AddPermission returns this error if the maximum number of permissions for the queue is reached. |
QueueDoesNotExistException | Ensure that the QueueUrl is correct and that the queue has not been deleted. |
RequestThrottledException | The request was denied due to request throttling. Exceeds the permitted request rate for the queue or for the recipient of the request. Ensure that the request rate is within the Amazon SQS limits for sending messages. For more information, see Amazon SQS quotas in the Amazon SQS Developer Guide. |
UnsupportedOperationException | Error code 400. Unsupported operation. |
This example shows how to set queue attributes.
var client = new AmazonSQSClient(); var attrs = new Dictionary<string, string>(); // Maximum message size of 128 KiB (1,024 bytes * 128 KiB = 131,072 bytes). int maxMessage = 128 * 1024; attrs.Add(QueueAttributeName.DelaySeconds, TimeSpan.FromSeconds(5).TotalSeconds.ToString()); attrs.Add(QueueAttributeName.MaximumMessageSize, maxMessage.ToString()); attrs.Add(QueueAttributeName.MessageRetentionPeriod, TimeSpan.FromDays(1).TotalSeconds.ToString()); attrs.Add(QueueAttributeName.ReceiveMessageWaitTimeSeconds, TimeSpan.FromSeconds(5).TotalSeconds.ToString()); attrs.Add(QueueAttributeName.VisibilityTimeout, TimeSpan.FromHours(1).TotalSeconds.ToString()); // Dead-letter queue attributes. attrs.Add(QueueAttributeName.RedrivePolicy, "{\"maxReceiveCount\":" + "\"5\"," + "\"deadLetterTargetArn\":" + "\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyTestDeadLetterQueue\"}"); var request = new SetQueueAttributesRequest { Attributes = attrs, QueueUrl = "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyTestQueue" }; client.SetQueueAttributes(request);
.NET Framework:
Supported in: 4.5 and newer, 3.5