# frozen_string_literal: true # WARNING ABOUT GENERATED CODE # # This file is generated. See the contributing guide for more information: # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md # # WARNING ABOUT GENERATED CODE require 'seahorse/client/plugins/content_length.rb' require 'aws-sdk-core/plugins/credentials_configuration.rb' require 'aws-sdk-core/plugins/logging.rb' require 'aws-sdk-core/plugins/param_converter.rb' require 'aws-sdk-core/plugins/param_validator.rb' require 'aws-sdk-core/plugins/user_agent.rb' require 'aws-sdk-core/plugins/helpful_socket_errors.rb' require 'aws-sdk-core/plugins/retry_errors.rb' require 'aws-sdk-core/plugins/global_configuration.rb' require 'aws-sdk-core/plugins/regional_endpoint.rb' require 'aws-sdk-core/plugins/endpoint_discovery.rb' require 'aws-sdk-core/plugins/endpoint_pattern.rb' require 'aws-sdk-core/plugins/response_paging.rb' require 'aws-sdk-core/plugins/stub_responses.rb' require 'aws-sdk-core/plugins/idempotency_token.rb' require 'aws-sdk-core/plugins/jsonvalue_converter.rb' require 'aws-sdk-core/plugins/client_metrics_plugin.rb' require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb' require 'aws-sdk-core/plugins/transfer_encoding.rb' require 'aws-sdk-core/plugins/http_checksum.rb' require 'aws-sdk-core/plugins/signature_v4.rb' require 'aws-sdk-core/plugins/protocols/query.rb' require 'aws-sdk-sqs/plugins/queue_urls.rb' require 'aws-sdk-sqs/plugins/md5s.rb' Aws::Plugins::GlobalConfiguration.add_identifier(:sqs) module Aws::SQS # An API client for SQS. To construct a client, you need to configure a `:region` and `:credentials`. # # client = Aws::SQS::Client.new( # region: region_name, # credentials: credentials, # # ... # ) # # For details on configuring region and credentials see # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html). # # See {#initialize} for a full list of supported configuration options. class Client < Seahorse::Client::Base include Aws::ClientStubs @identifier = :sqs set_api(ClientApi::API) add_plugin(Seahorse::Client::Plugins::ContentLength) add_plugin(Aws::Plugins::CredentialsConfiguration) add_plugin(Aws::Plugins::Logging) add_plugin(Aws::Plugins::ParamConverter) add_plugin(Aws::Plugins::ParamValidator) add_plugin(Aws::Plugins::UserAgent) add_plugin(Aws::Plugins::HelpfulSocketErrors) add_plugin(Aws::Plugins::RetryErrors) add_plugin(Aws::Plugins::GlobalConfiguration) add_plugin(Aws::Plugins::RegionalEndpoint) add_plugin(Aws::Plugins::EndpointDiscovery) add_plugin(Aws::Plugins::EndpointPattern) add_plugin(Aws::Plugins::ResponsePaging) add_plugin(Aws::Plugins::StubResponses) add_plugin(Aws::Plugins::IdempotencyToken) add_plugin(Aws::Plugins::JsonvalueConverter) add_plugin(Aws::Plugins::ClientMetricsPlugin) add_plugin(Aws::Plugins::ClientMetricsSendPlugin) add_plugin(Aws::Plugins::TransferEncoding) add_plugin(Aws::Plugins::HttpChecksum) add_plugin(Aws::Plugins::SignatureV4) add_plugin(Aws::Plugins::Protocols::Query) add_plugin(Aws::SQS::Plugins::QueueUrls) add_plugin(Aws::SQS::Plugins::Md5s) # @overload initialize(options) # @param [Hash] options # @option options [required, Aws::CredentialProvider] :credentials # Your AWS credentials. This can be an instance of any one of the # following classes: # # * `Aws::Credentials` - Used for configuring static, non-refreshing # credentials. # # * `Aws::SharedCredentials` - Used for loading static credentials from a # shared file, such as `~/.aws/config`. # # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role. # # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to # assume a role after providing credentials via the web. # # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an # access token generated from `aws login`. # # * `Aws::ProcessCredentials` - Used for loading credentials from a # process that outputs to stdout. # # * `Aws::InstanceProfileCredentials` - Used for loading credentials # from an EC2 IMDS on an EC2 instance. # # * `Aws::ECSCredentials` - Used for loading credentials from # instances running in ECS. # # * `Aws::CognitoIdentityCredentials` - Used for loading credentials # from the Cognito Identity service. # # When `:credentials` are not configured directly, the following # locations will be searched for credentials: # # * `Aws.config[:credentials]` # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options. # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'] # * `~/.aws/credentials` # * `~/.aws/config` # * EC2/ECS IMDS instance profile - When used by default, the timeouts # are very aggressive. Construct and pass an instance of # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to # enable retries and extended timeouts. # # @option options [required, String] :region # The AWS region to connect to. The configured `:region` is # used to determine the service `:endpoint`. When not passed, # a default `:region` is searched for in the following locations: # # * `Aws.config[:region]` # * `ENV['AWS_REGION']` # * `ENV['AMAZON_REGION']` # * `ENV['AWS_DEFAULT_REGION']` # * `~/.aws/credentials` # * `~/.aws/config` # # @option options [String] :access_key_id # # @option options [Boolean] :active_endpoint_cache (false) # When set to `true`, a thread polling for endpoints will be running in # the background every 60 secs (default). Defaults to `false`. # # @option options [Boolean] :adaptive_retry_wait_to_fill (true) # Used only in `adaptive` retry mode. When true, the request will sleep # until there is sufficent client side capacity to retry the request. # When false, the request will raise a `RetryCapacityNotAvailableError` and will # not retry instead of sleeping. # # @option options [Boolean] :client_side_monitoring (false) # When `true`, client-side metrics will be collected for all API requests from # this client. # # @option options [String] :client_side_monitoring_client_id ("") # Allows you to provide an identifier for this client which will be attached to # all generated client side metrics. Defaults to an empty string. # # @option options [String] :client_side_monitoring_host ("127.0.0.1") # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client # side monitoring agent is running on, where client metrics will be published via UDP. # # @option options [Integer] :client_side_monitoring_port (31000) # Required for publishing client metrics. The port that the client side monitoring # agent is running on, where client metrics will be published via UDP. # # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher) # Allows you to provide a custom client-side monitoring publisher class. By default, # will use the Client Side Monitoring Agent Publisher. # # @option options [Boolean] :convert_params (true) # When `true`, an attempt is made to coerce request parameters into # the required types. # # @option options [Boolean] :correct_clock_skew (true) # Used only in `standard` and adaptive retry modes. Specifies whether to apply # a clock skew correction and retry requests with skewed client clocks. # # @option options [Boolean] :disable_host_prefix_injection (false) # Set to true to disable SDK automatically adding host prefix # to default service endpoint when available. # # @option options [String] :endpoint # The client endpoint is normally constructed from the `:region` # option. You should only configure an `:endpoint` when connecting # to test or custom endpoints. This should be a valid HTTP(S) URI. # # @option options [Integer] :endpoint_cache_max_entries (1000) # Used for the maximum size limit of the LRU cache storing endpoints data # for endpoint discovery enabled operations. Defaults to 1000. # # @option options [Integer] :endpoint_cache_max_threads (10) # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10. # # @option options [Integer] :endpoint_cache_poll_interval (60) # When :endpoint_discovery and :active_endpoint_cache is enabled, # Use this option to config the time interval in seconds for making # requests fetching endpoints information. Defaults to 60 sec. # # @option options [Boolean] :endpoint_discovery (false) # When set to `true`, endpoint discovery will be enabled for operations when available. # # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default) # The log formatter. # # @option options [Symbol] :log_level (:info) # The log level to send messages to the `:logger` at. # # @option options [Logger] :logger # The Logger instance to send log messages to. If this option # is not set, logging will be disabled. # # @option options [Integer] :max_attempts (3) # An integer representing the maximum number attempts that will be made for # a single request, including the initial attempt. For example, # setting this value to 5 will result in a request being retried up to # 4 times. Used in `standard` and `adaptive` retry modes. # # @option options [String] :profile ("default") # Used when loading credentials from the shared credentials file # at HOME/.aws/credentials. When not specified, 'default' is used. # # @option options [Proc] :retry_backoff # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay. # This option is only used in the `legacy` retry mode. # # @option options [Float] :retry_base_delay (0.3) # The base delay in seconds used by the default backoff function. This option # is only used in the `legacy` retry mode. # # @option options [Symbol] :retry_jitter (:none) # A delay randomiser function used by the default backoff function. # Some predefined functions can be referenced by name - :none, :equal, :full, # otherwise a Proc that takes and returns a number. This option is only used # in the `legacy` retry mode. # # @see https://www.awsarchitectureblog.com/2015/03/backoff.html # # @option options [Integer] :retry_limit (3) # The maximum number of times to retry failed requests. Only # ~ 500 level server errors and certain ~ 400 level client errors # are retried. Generally, these are throttling errors, data # checksum errors, networking errors, timeout errors, auth errors, # endpoint discovery, and errors from expired credentials. # This option is only used in the `legacy` retry mode. # # @option options [Integer] :retry_max_delay (0) # The maximum number of seconds to delay between retries (0 for no limit) # used by the default backoff function. This option is only used in the # `legacy` retry mode. # # @option options [String] :retry_mode ("legacy") # Specifies which retry algorithm to use. Values are: # # * `legacy` - The pre-existing retry behavior. This is default value if # no retry mode is provided. # # * `standard` - A standardized set of retry rules across the AWS SDKs. # This includes support for retry quotas, which limit the number of # unsuccessful retries a client can make. # # * `adaptive` - An experimental retry mode that includes all the # functionality of `standard` mode along with automatic client side # throttling. This is a provisional mode that may change behavior # in the future. # # # @option options [String] :secret_access_key # # @option options [String] :session_token # # @option options [Boolean] :stub_responses (false) # Causes the client to return stubbed responses. By default # fake responses are generated and returned. You can specify # the response data to return or errors to raise by calling # {ClientStubs#stub_responses}. See {ClientStubs} for more information. # # ** Please note ** When response stubbing is enabled, no HTTP # requests are made, and retries are disabled. # # @option options [Boolean] :use_dualstack_endpoint # When set to `true`, dualstack enabled endpoints (with `.aws` TLD) # will be used if available. # # @option options [Boolean] :use_fips_endpoint # When set to `true`, fips compatible endpoints will be used if available. # When a `fips` region is used, the region is normalized and this config # is set to `true`. # # @option options [Boolean] :validate_params (true) # When `true`, request parameters are validated before # sending the request. # # @option options [Boolean] :verify_checksums (true) # When `true` MD5 checksums will be computed for messages sent to # an SQS queue and matched against MD5 checksums returned by Amazon SQS. # `Aws::Errors::Checksum` errors are raised for cases where checksums do # not match. # # @option options [URI::HTTP,String] :http_proxy A proxy to send # requests through. Formatted like 'http://proxy.com:123'. # # @option options [Float] :http_open_timeout (15) The number of # seconds to wait when opening a HTTP session before raising a # `Timeout::Error`. # # @option options [Integer] :http_read_timeout (60) The default # number of seconds to wait for response data. This value can # safely be set per-request on the session. # # @option options [Float] :http_idle_timeout (5) The number of # seconds a connection is allowed to sit idle before it is # considered stale. Stale connections are closed and removed # from the pool before making a request. # # @option options [Float] :http_continue_timeout (1) The number of # seconds to wait for a 100-continue response before sending the # request body. This option has no effect unless the request has # "Expect" header set to "100-continue". Defaults to `nil` which # disables this behaviour. This value can safely be set per # request on the session. # # @option options [Boolean] :http_wire_trace (false) When `true`, # HTTP debug output will be sent to the `:logger`. # # @option options [Boolean] :ssl_verify_peer (true) When `true`, # SSL peer certificates are verified when establishing a # connection. # # @option options [String] :ssl_ca_bundle Full path to the SSL # certificate authority bundle file that should be used when # verifying peer certificates. If you do not pass # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default # will be used if available. # # @option options [String] :ssl_ca_directory Full path of the # directory that contains the unbundled SSL certificate # authority files for verifying peer certificates. If you do # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the # system default will be used if available. # def initialize(*args) super end # @!group API Operations # Adds a permission to a queue for a specific [principal][1]. This # allows sharing access to the queue. # # When you create a queue, you have full control access rights for the # queue. Only you, the owner of the queue, can grant or deny permissions # to the queue. For more information about these permissions, see [Allow # Developers to Write Messages to a Shared Queue][2] in the *Amazon SQS # Developer Guide*. # # * `AddPermission` generates a policy for you. You can use ` # SetQueueAttributes ` to upload your policy. For more information, # see [Using Custom Policies with the Amazon SQS Access Policy # Language][3] in the *Amazon SQS Developer Guide*. # # * An Amazon SQS policy can have a maximum of 7 actions. # # * To remove the ability to change queue permissions, you must deny # permission to the `AddPermission`, `RemovePermission`, and # `SetQueueAttributes` actions in your IAM policy. # # # # Some actions take lists of parameters. These lists are specified using # the `param.n` notation. Values of `n` are integers starting from 1. # For example, a parameter list with two elements looks like this: # # `&AttributeName.1=first` # # `&AttributeName.2=second` # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][4] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#P # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-writing-an-sqs-policy.html#write-messages-to-shared-queue # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-creating-custom-policies.html # [4]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue to which permissions are added. # # Queue URLs and names are case-sensitive. # # @option params [required, String] :label # The unique identification of the permission you're setting (for # example, `AliceSendMessage`). Maximum 80 characters. Allowed # characters include alphanumeric characters, hyphens (`-`), and # underscores (`_`). # # @option params [required, Array] :aws_account_ids # The Amazon Web Services account numbers of the [principals][1] who are # to receive permission. For information about locating the Amazon Web # Services account identification, see [Your Amazon Web Services # Identifiers][2] in the *Amazon SQS Developer Guide*. # # # # [1]: https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#P # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-making-api-requests.html#sqs-api-request-authentication # # @option params [required, Array] :actions # The action the client wants to allow for the specified principal. # Valid values: the name of any action or `*`. # # For more information about these actions, see [Overview of Managing # Access Permissions to Your Amazon Simple Queue Service Resource][1] in # the *Amazon SQS Developer Guide*. # # Specifying `SendMessage`, `DeleteMessage`, or # `ChangeMessageVisibility` for `ActionName.n` also grants permissions # for the corresponding batch versions of those actions: # `SendMessageBatch`, `DeleteMessageBatch`, and # `ChangeMessageVisibilityBatch`. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-overview-of-managing-access.html # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.add_permission({ # queue_url: "String", # required # label: "String", # required # aws_account_ids: ["String"], # required # actions: ["String"], # required # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/AddPermission AWS API Documentation # # @overload add_permission(params = {}) # @param [Hash] params ({}) def add_permission(params = {}, options = {}) req = build_request(:add_permission, params) req.send_request(options) end # Changes the visibility timeout of a specified message in a queue to a # new value. The default visibility timeout for a message is 30 seconds. # The minimum is 0 seconds. The maximum is 12 hours. For more # information, see [Visibility Timeout][1] in the *Amazon SQS Developer # Guide*. # # For example, you have a message with a visibility timeout of 5 # minutes. After 3 minutes, you call `ChangeMessageVisibility` with a # timeout of 10 minutes. You can continue to call # `ChangeMessageVisibility` to extend the visibility timeout to the # maximum allowed time. If you try to extend the visibility timeout # beyond the maximum, your request is rejected. # # An Amazon SQS message has three basic states: # # 1. Sent to a queue by a producer. # # 2. Received from the queue by a consumer. # # 3. Deleted from the queue. # # A message is considered to be *stored* after it is sent to a queue by # a producer, but not yet received from the queue by a consumer (that # is, between states 1 and 2). There is no limit to the number of stored # messages. A message is considered to be *in flight* after it is # received from a queue by a consumer, but not yet deleted from the # queue (that is, between states 2 and 3). There is a limit to the # number of inflight messages. # # Limits that apply to inflight messages are unrelated to the # *unlimited* number of stored messages. # # For most standard queues (depending on queue traffic and message # backlog), there can be a maximum of approximately 120,000 inflight # messages (received from a queue by a consumer, but not yet deleted # from the queue). If you reach this limit, Amazon SQS returns the # `OverLimit` error message. To avoid reaching the limit, you should # delete messages from the queue after they're processed. You can also # increase the number of queues you use to process your messages. To # request a limit increase, [file a support request][2]. # # For FIFO queues, there can be a maximum of 20,000 inflight messages # (received from a queue by a consumer, but not yet deleted from the # queue). If you reach this limit, Amazon SQS returns no error messages. # # If you attempt to set the `VisibilityTimeout` to a value greater than # the maximum time left, Amazon SQS returns an error. Amazon SQS # doesn't automatically recalculate and increase the timeout to the # maximum remaining time. # # Unlike with a queue, when you change the visibility timeout for a # specific message the timeout value is applied immediately but isn't # saved in memory for that message. If you don't delete a message after # it is received, the visibility timeout for the message reverts to the # original timeout value (not to the value you set using the # `ChangeMessageVisibility` action) the next time the message is # received. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html # [2]: https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-sqs # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue whose message's visibility is # changed. # # Queue URLs and names are case-sensitive. # # @option params [required, String] :receipt_handle # The receipt handle associated with the message whose visibility # timeout is changed. This parameter is returned by the ` ReceiveMessage # ` action. # # @option params [required, Integer] :visibility_timeout # The new value for the message's visibility timeout (in seconds). # Values range: `0` to `43200`. Maximum: 12 hours. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.change_message_visibility({ # queue_url: "String", # required # receipt_handle: "String", # required # visibility_timeout: 1, # required # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/ChangeMessageVisibility AWS API Documentation # # @overload change_message_visibility(params = {}) # @param [Hash] params ({}) def change_message_visibility(params = {}, options = {}) req = build_request(:change_message_visibility, params) req.send_request(options) end # Changes the visibility timeout of multiple messages. This is a batch # version of ` ChangeMessageVisibility.` The result of the action on # each message is reported individually in the response. You can send up # to 10 ` ChangeMessageVisibility ` requests with each # `ChangeMessageVisibilityBatch` action. # # Because the batch request can result in a combination of successful # and unsuccessful actions, you should check for batch errors even when # the call returns an HTTP status code of `200`. # # Some actions take lists of parameters. These lists are specified using # the `param.n` notation. Values of `n` are integers starting from 1. # For example, a parameter list with two elements looks like this: # # `&AttributeName.1=first` # # `&AttributeName.2=second` # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue whose messages' visibility is # changed. # # Queue URLs and names are case-sensitive. # # @option params [required, Array] :entries # A list of receipt handles of the messages for which the visibility # timeout must be changed. # # @return [Types::ChangeMessageVisibilityBatchResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::ChangeMessageVisibilityBatchResult#successful #successful} => Array<Types::ChangeMessageVisibilityBatchResultEntry> # * {Types::ChangeMessageVisibilityBatchResult#failed #failed} => Array<Types::BatchResultErrorEntry> # # @example Request syntax with placeholder values # # resp = client.change_message_visibility_batch({ # queue_url: "String", # required # entries: [ # required # { # id: "String", # required # receipt_handle: "String", # required # visibility_timeout: 1, # }, # ], # }) # # @example Response structure # # resp.successful #=> Array # resp.successful[0].id #=> String # resp.failed #=> Array # resp.failed[0].id #=> String # resp.failed[0].sender_fault #=> Boolean # resp.failed[0].code #=> String # resp.failed[0].message #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/ChangeMessageVisibilityBatch AWS API Documentation # # @overload change_message_visibility_batch(params = {}) # @param [Hash] params ({}) def change_message_visibility_batch(params = {}, options = {}) req = build_request(:change_message_visibility_batch, params) req.send_request(options) end # Creates a new standard or FIFO queue. You can pass one or more # attributes in the request. Keep the following in mind: # # * If you don't specify the `FifoQueue` attribute, Amazon SQS creates # a standard queue. # # You can't change the queue type after you create it and you can't # convert an existing standard queue into a FIFO queue. You must # either create a new FIFO queue for your application or delete your # existing standard queue and recreate it as a FIFO queue. For more # information, see [Moving From a Standard Queue to a FIFO Queue][1] # in the *Amazon SQS Developer Guide*. # # # # * If you don't provide a value for an attribute, the queue is created # with the default value for the attribute. # # * If you delete a queue, you must wait at least 60 seconds before # creating a queue with the same name. # # To successfully create a new queue, you must provide a queue name that # adheres to the [limits related to queues][2] and is unique within the # scope of your queues. # # After you create a queue, you must wait at least one second after the # queue is created to be able to use the queue. # # # # To get the queue URL, use the ` GetQueueUrl ` action. ` GetQueueUrl ` # requires only the `QueueName` parameter. be aware of existing queue # names: # # * If you provide the name of an existing queue along with the exact # names and values of all the queue's attributes, `CreateQueue` # returns the queue URL for the existing queue. # # * If the queue name, attribute names, or attribute values don't match # an existing queue, `CreateQueue` returns an error. # # Some actions take lists of parameters. These lists are specified using # the `param.n` notation. Values of `n` are integers starting from 1. # For example, a parameter list with two elements looks like this: # # `&AttributeName.1=first` # # `&AttributeName.2=second` # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][3] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-moving # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/limits-queues.html # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_name # The name of the new queue. The following limits apply to this name: # # * A queue name can have up to 80 characters. # # * Valid values: alphanumeric characters, hyphens (`-`), and # underscores (`_`). # # * A FIFO queue name must end with the `.fifo` suffix. # # Queue URLs and names are case-sensitive. # # @option params [Hash] :attributes # A map of attributes with their corresponding values. # # The following lists the names, descriptions, and values of the special # request parameters that the `CreateQueue` action uses: # # * `DelaySeconds` – The length of time, in seconds, for which the # delivery of all messages in the queue is delayed. Valid values: An # integer from 0 to 900 seconds (15 minutes). Default: 0. # # * `MaximumMessageSize` – The limit of how many bytes a message can # contain before Amazon SQS rejects it. Valid values: An integer from # 1,024 bytes (1 KiB) to 262,144 bytes (256 KiB). Default: 262,144 # (256 KiB). # # * `MessageRetentionPeriod` – The length of time, in seconds, for which # Amazon SQS retains a message. Valid values: An integer from 60 # seconds (1 minute) to 1,209,600 seconds (14 days). Default: 345,600 # (4 days). # # * `Policy` – The queue's policy. A valid Amazon Web Services policy. # For more information about policy structure, see [Overview of Amazon # Web Services IAM Policies][1] in the *Amazon IAM User Guide*. # # * `ReceiveMessageWaitTimeSeconds` – The length of time, in seconds, # for which a ` ReceiveMessage ` action waits for a message to arrive. # Valid values: An integer from 0 to 20 (seconds). Default: 0. # # * `RedrivePolicy` – The string that includes the parameters for the # dead-letter queue functionality of the source queue as a JSON # object. For more information about the redrive policy and # dead-letter queues, see [Using Amazon SQS Dead-Letter Queues][2] in # the *Amazon SQS Developer Guide*. # # * `deadLetterTargetArn` – The Amazon Resource Name (ARN) of the # dead-letter queue to which Amazon SQS moves messages after the # value of `maxReceiveCount` is exceeded. # # * `maxReceiveCount` – The number of times a message is delivered to # the source queue before being moved to the dead-letter queue. When # the `ReceiveCount` for a message exceeds the `maxReceiveCount` for # a queue, Amazon SQS moves the message to the dead-letter-queue. # # The dead-letter queue of a FIFO queue must also be a FIFO queue. # Similarly, the dead-letter queue of a standard queue must also be a # standard queue. # # # # * `VisibilityTimeout` – The visibility timeout for the queue, in # seconds. Valid values: An integer from 0 to 43,200 (12 hours). # Default: 30. For more information about the visibility timeout, see # [Visibility Timeout][3] in the *Amazon SQS Developer Guide*. # # The following attributes apply only to [server-side-encryption][4]\: # # * `KmsMasterKeyId` – The ID of an Amazon Web Services managed customer # master key (CMK) for Amazon SQS or a custom CMK. For more # information, see [Key Terms][5]. While the alias of the Amazon Web # Services managed CMK for Amazon SQS is always `alias/aws/sqs`, the # alias of a custom CMK can, for example, be `alias/MyAlias `. For # more examples, see [KeyId][6] in the *Key Management Service API # Reference*. # # * `KmsDataKeyReusePeriodSeconds` – The length of time, in seconds, for # which Amazon SQS can reuse a [data key][7] to encrypt or decrypt # messages before calling KMS again. An integer representing seconds, # between 60 seconds (1 minute) and 86,400 seconds (24 hours). # Default: 300 (5 minutes). A shorter time period provides better # security but results in more calls to KMS which might incur charges # after Free Tier. For more information, see [How Does the Data Key # Reuse Period Work?][8]. # # * `SqsManagedSseEnabled` – Enables server-side queue encryption using # SQS owned encryption keys. Only one server-side encryption option is # supported per queue (e.g. [SSE-KMS][9] or [SSE-SQS][10]). # # The following attributes apply only to [FIFO (first-in-first-out) # queues][11]\: # # * `FifoQueue` – Designates a queue as FIFO. Valid values are `true` # and `false`. If you don't specify the `FifoQueue` attribute, Amazon # SQS creates a standard queue. You can provide this attribute only # during queue creation. You can't change it for an existing queue. # When you set this attribute, you must also provide the # `MessageGroupId` for your messages explicitly. # # For more information, see [FIFO queue logic][12] in the *Amazon SQS # Developer Guide*. # # * `ContentBasedDeduplication` – Enables content-based deduplication. # Valid values are `true` and `false`. For more information, see # [Exactly-once processing][13] in the *Amazon SQS Developer Guide*. # Note the following: # # * Every message must have a unique `MessageDeduplicationId`. # # * You may provide a `MessageDeduplicationId` explicitly. # # * If you aren't able to provide a `MessageDeduplicationId` and # you enable `ContentBasedDeduplication` for your queue, Amazon # SQS uses a SHA-256 hash to generate the `MessageDeduplicationId` # using the body of the message (but not the attributes of the # message). # # * If you don't provide a `MessageDeduplicationId` and the queue # doesn't have `ContentBasedDeduplication` set, the action fails # with an error. # # * If the queue has `ContentBasedDeduplication` set, your # `MessageDeduplicationId` overrides the generated one. # # * When `ContentBasedDeduplication` is in effect, messages with # identical content sent within the deduplication interval are # treated as duplicates and only one copy of the message is # delivered. # # * If you send one message with `ContentBasedDeduplication` enabled # and then another message with a `MessageDeduplicationId` that is # the same as the one generated for the first # `MessageDeduplicationId`, the two messages are treated as # duplicates and only one copy of the message is delivered. # # The following attributes apply only to [high throughput for FIFO # queues][14]\: # # * `DeduplicationScope` – Specifies whether message deduplication # occurs at the message group or queue level. Valid values are # `messageGroup` and `queue`. # # * `FifoThroughputLimit` – Specifies whether the FIFO queue throughput # quota applies to the entire queue or per message group. Valid values # are `perQueue` and `perMessageGroupId`. The `perMessageGroupId` # value is allowed only when the value for `DeduplicationScope` is # `messageGroup`. # # To enable high throughput for FIFO queues, do the following: # # * Set `DeduplicationScope` to `messageGroup`. # # * Set `FifoThroughputLimit` to `perMessageGroupId`. # # If you set these attributes to anything other than the values shown # for enabling high throughput, normal throughput is in effect and # deduplication occurs as specified. # # For information on throughput quotas, see [Quotas related to # messages][15] in the *Amazon SQS Developer Guide*. # # # # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html # [4]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html # [5]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms # [6]: https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys # [8]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work # [9]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html # [10]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html # [11]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html # [12]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-understanding-logic.html # [13]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html # [14]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html # [15]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html # # @option params [Hash] :tags # Add cost allocation tags to the specified Amazon SQS queue. For an # overview, see [Tagging Your Amazon SQS Queues][1] in the *Amazon SQS # Developer Guide*. # # When you use queue tags, keep the following guidelines in mind: # # * Adding more than 50 tags to a queue isn't recommended. # # * Tags don't have any semantic meaning. Amazon SQS interprets tags as # character strings. # # * Tags are case-sensitive. # # * A new tag with a key identical to that of an existing tag overwrites # the existing tag. # # For a full list of tag restrictions, see [Quotas related to queues][2] # in the *Amazon SQS Developer Guide*. # # To be able to tag a queue on creation, you must have the # `sqs:CreateQueue` and `sqs:TagQueue` permissions. # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][3] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-tags.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-limits.html#limits-queues # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @return [Types::CreateQueueResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::CreateQueueResult#queue_url #queue_url} => String # # @example Request syntax with placeholder values # # resp = client.create_queue({ # queue_name: "String", # required # attributes: { # "All" => "String", # }, # tags: { # "TagKey" => "TagValue", # }, # }) # # @example Response structure # # resp.queue_url #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/CreateQueue AWS API Documentation # # @overload create_queue(params = {}) # @param [Hash] params ({}) def create_queue(params = {}, options = {}) req = build_request(:create_queue, params) req.send_request(options) end # Deletes the specified message from the specified queue. To select the # message to delete, use the `ReceiptHandle` of the message (*not* the # `MessageId` which you receive when you send the message). Amazon SQS # can delete a message from a queue even if a visibility timeout setting # causes the message to be locked by another consumer. Amazon SQS # automatically deletes messages left in a queue longer than the # retention period configured for the queue. # # The `ReceiptHandle` is associated with a *specific instance* of # receiving a message. If you receive a message more than once, the # `ReceiptHandle` is different each time you receive a message. When you # use the `DeleteMessage` action, you must provide the most recently # received `ReceiptHandle` for the message (otherwise, the request # succeeds, but the message might not be deleted). # # For standard queues, it is possible to receive a message even after # you delete it. This might happen on rare occasions if one of the # servers which stores a copy of the message is unavailable when you # send the request to delete the message. The copy remains on the server # and might be returned to you during a subsequent receive request. You # should ensure that your application is idempotent, so that receiving a # message more than once does not cause issues. # # # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue from which messages are deleted. # # Queue URLs and names are case-sensitive. # # @option params [required, String] :receipt_handle # The receipt handle associated with the message to delete. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.delete_message({ # queue_url: "String", # required # receipt_handle: "String", # required # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/DeleteMessage AWS API Documentation # # @overload delete_message(params = {}) # @param [Hash] params ({}) def delete_message(params = {}, options = {}) req = build_request(:delete_message, params) req.send_request(options) end # Deletes up to ten messages from the specified queue. This is a batch # version of ` DeleteMessage.` The result of the action on each message # is reported individually in the response. # # Because the batch request can result in a combination of successful # and unsuccessful actions, you should check for batch errors even when # the call returns an HTTP status code of `200`. # # Some actions take lists of parameters. These lists are specified using # the `param.n` notation. Values of `n` are integers starting from 1. # For example, a parameter list with two elements looks like this: # # `&AttributeName.1=first` # # `&AttributeName.2=second` # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue from which messages are deleted. # # Queue URLs and names are case-sensitive. # # @option params [required, Array] :entries # A list of receipt handles for the messages to be deleted. # # @return [Types::DeleteMessageBatchResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::DeleteMessageBatchResult#successful #successful} => Array<Types::DeleteMessageBatchResultEntry> # * {Types::DeleteMessageBatchResult#failed #failed} => Array<Types::BatchResultErrorEntry> # # @example Request syntax with placeholder values # # resp = client.delete_message_batch({ # queue_url: "String", # required # entries: [ # required # { # id: "String", # required # receipt_handle: "String", # required # }, # ], # }) # # @example Response structure # # resp.successful #=> Array # resp.successful[0].id #=> String # resp.failed #=> Array # resp.failed[0].id #=> String # resp.failed[0].sender_fault #=> Boolean # resp.failed[0].code #=> String # resp.failed[0].message #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/DeleteMessageBatch AWS API Documentation # # @overload delete_message_batch(params = {}) # @param [Hash] params ({}) def delete_message_batch(params = {}, options = {}) req = build_request(:delete_message_batch, params) req.send_request(options) end # Deletes the queue specified by the `QueueUrl`, regardless of the # queue's contents. # # Be careful with the `DeleteQueue` action: When you delete a queue, any # messages in the queue are no longer available. # # When you delete a queue, the deletion process takes up to 60 seconds. # Requests you send involving that queue during the 60 seconds might # succeed. For example, a ` SendMessage ` request might succeed, but # after 60 seconds the queue and the message you sent no longer exist. # # When you delete a queue, you must wait at least 60 seconds before # creating a queue with the same name. # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][1] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue to delete. # # Queue URLs and names are case-sensitive. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.delete_queue({ # queue_url: "String", # required # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/DeleteQueue AWS API Documentation # # @overload delete_queue(params = {}) # @param [Hash] params ({}) def delete_queue(params = {}, options = {}) req = build_request(:delete_queue, params) req.send_request(options) end # Gets attributes for the specified queue. # # To determine whether a queue is [FIFO][1], you can check whether # `QueueName` ends with the `.fifo` suffix. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue whose attribute information is # retrieved. # # Queue URLs and names are case-sensitive. # # @option params [Array] :attribute_names # A list of attributes for which to retrieve information. # # The `AttributeName.N` parameter is optional, but if you don't specify # values for this parameter, the request returns empty results. # # 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. # # # # The following attributes are supported: # # The `ApproximateNumberOfMessagesDelayed`, # `ApproximateNumberOfMessagesNotVisible`, and # `ApproximateNumberOfMessagesVisible` metrics may not achieve # consistency until at least 1 minute after the producers stop sending # messages. This period is required for the queue metadata to reach # eventual consistency. # # * `All` – Returns all values. # # * `ApproximateNumberOfMessages` – Returns the approximate number of # messages available for retrieval from the queue. # # * `ApproximateNumberOfMessagesDelayed` – Returns the approximate # number of messages in the queue that are delayed and not available # for reading immediately. This can happen when the queue is # configured as a delay queue or when a message has been sent with a # delay parameter. # # * `ApproximateNumberOfMessagesNotVisible` – Returns the approximate # number of messages that are in flight. Messages are considered to be # *in flight* if they have been sent to a client but have not yet been # deleted or have not yet reached the end of their visibility window. # # * `CreatedTimestamp` – Returns the time when the queue was created in # seconds ([epoch time][1]). # # * `DelaySeconds` – Returns the default delay on the queue in seconds. # # * `LastModifiedTimestamp` – Returns the time when the queue was last # changed in seconds ([epoch time][1]). # # * `MaximumMessageSize` – Returns the limit of how many bytes a message # can contain before Amazon SQS rejects it. # # * `MessageRetentionPeriod` – Returns the length of time, in seconds, # for which Amazon SQS retains a message. # # * `Policy` – Returns the policy of the queue. # # * `QueueArn` – Returns the Amazon resource name (ARN) of the queue. # # * `ReceiveMessageWaitTimeSeconds` – Returns the length of time, in # seconds, for which the `ReceiveMessage` action waits for a message # to arrive. # # * `RedrivePolicy` – The string that includes the parameters for the # dead-letter queue functionality of the source queue as a JSON # object. For more information about the redrive policy and # dead-letter queues, see [Using Amazon SQS Dead-Letter Queues][2] in # the *Amazon SQS Developer Guide*. # # * `deadLetterTargetArn` – The Amazon Resource Name (ARN) of the # dead-letter queue to which Amazon SQS moves messages after the # value of `maxReceiveCount` is exceeded. # # * `maxReceiveCount` – The number of times a message is delivered to # the source queue before being moved to the dead-letter queue. When # the `ReceiveCount` for a message exceeds the `maxReceiveCount` for # a queue, Amazon SQS moves the message to the dead-letter-queue. # # * `VisibilityTimeout` – Returns the visibility timeout for the queue. # For more information about the visibility timeout, see [Visibility # Timeout][3] in the *Amazon SQS Developer Guide*. # # The following attributes apply only to [server-side-encryption][4]\: # # * `KmsMasterKeyId` – Returns the ID of an Amazon Web Services managed # customer master key (CMK) for Amazon SQS or a custom CMK. For more # information, see [Key Terms][5]. # # * `KmsDataKeyReusePeriodSeconds` – Returns the length of time, in # seconds, for which Amazon SQS can reuse a data key to encrypt or # decrypt messages before calling KMS again. For more information, see # [How Does the Data Key Reuse Period Work?][6]. # # * `SqsManagedSseEnabled` – Returns information about whether the queue # is using SSE-SQS encryption using SQS owned encryption keys. Only # one server-side encryption option is supported per queue (e.g. # [SSE-KMS][7] or [SSE-SQS][8]). # # The following attributes apply only to [FIFO (first-in-first-out) # queues][9]\: # # * `FifoQueue` – Returns information about whether the queue is FIFO. # For more information, see [FIFO queue logic][10] in the *Amazon SQS # Developer Guide*. # # To determine whether a queue is [FIFO][9], you can check whether # `QueueName` ends with the `.fifo` suffix. # # # # * `ContentBasedDeduplication` – Returns whether content-based # deduplication is enabled for the queue. For more information, see # [Exactly-once processing][11] in the *Amazon SQS Developer Guide*. # # The following attributes apply only to [high throughput for FIFO # queues][12]\: # # * `DeduplicationScope` – Specifies whether message deduplication # occurs at the message group or queue level. Valid values are # `messageGroup` and `queue`. # # * `FifoThroughputLimit` – Specifies whether the FIFO queue throughput # quota applies to the entire queue or per message group. Valid values # are `perQueue` and `perMessageGroupId`. The `perMessageGroupId` # value is allowed only when the value for `DeduplicationScope` is # `messageGroup`. # # To enable high throughput for FIFO queues, do the following: # # * Set `DeduplicationScope` to `messageGroup`. # # * Set `FifoThroughputLimit` to `perMessageGroupId`. # # If you set these attributes to anything other than the values shown # for enabling high throughput, normal throughput is in effect and # deduplication occurs as specified. # # For information on throughput quotas, see [Quotas related to # messages][13] in the *Amazon SQS Developer Guide*. # # # # [1]: http://en.wikipedia.org/wiki/Unix_time # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html # [4]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html # [5]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms # [6]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work # [7]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html # [8]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html # [9]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html # [10]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-understanding-logic.html # [11]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html # [12]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html # [13]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html # # @return [Types::GetQueueAttributesResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::GetQueueAttributesResult#attributes #attributes} => Hash<String,String> # # @example Request syntax with placeholder values # # resp = client.get_queue_attributes({ # queue_url: "String", # required # attribute_names: ["All"], # accepts All, Policy, VisibilityTimeout, MaximumMessageSize, MessageRetentionPeriod, ApproximateNumberOfMessages, ApproximateNumberOfMessagesNotVisible, CreatedTimestamp, LastModifiedTimestamp, QueueArn, ApproximateNumberOfMessagesDelayed, DelaySeconds, ReceiveMessageWaitTimeSeconds, RedrivePolicy, FifoQueue, ContentBasedDeduplication, KmsMasterKeyId, KmsDataKeyReusePeriodSeconds, DeduplicationScope, FifoThroughputLimit, RedriveAllowPolicy, SqsManagedSseEnabled # }) # # @example Response structure # # resp.attributes #=> Hash # resp.attributes["QueueAttributeName"] #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/GetQueueAttributes AWS API Documentation # # @overload get_queue_attributes(params = {}) # @param [Hash] params ({}) def get_queue_attributes(params = {}, options = {}) req = build_request(:get_queue_attributes, params) req.send_request(options) end # Returns the URL of an existing Amazon SQS queue. # # To access a queue that belongs to another AWS account, use the # `QueueOwnerAWSAccountId` parameter to specify the account ID of the # queue's owner. The queue's owner must grant you permission to access # the queue. For more information about shared queue access, see ` # AddPermission ` or see [Allow Developers to Write Messages to a Shared # Queue][1] in the *Amazon SQS Developer Guide*. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-writing-an-sqs-policy.html#write-messages-to-shared-queue # # @option params [required, String] :queue_name # The name of the queue whose URL must be fetched. Maximum 80 # characters. Valid values: alphanumeric characters, hyphens (`-`), and # underscores (`_`). # # Queue URLs and names are case-sensitive. # # @option params [String] :queue_owner_aws_account_id # The Amazon Web Services account ID of the account that created the # queue. # # @return [Types::GetQueueUrlResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::GetQueueUrlResult#queue_url #queue_url} => String # # @example Request syntax with placeholder values # # resp = client.get_queue_url({ # queue_name: "String", # required # queue_owner_aws_account_id: "String", # }) # # @example Response structure # # resp.queue_url #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/GetQueueUrl AWS API Documentation # # @overload get_queue_url(params = {}) # @param [Hash] params ({}) def get_queue_url(params = {}, options = {}) req = build_request(:get_queue_url, params) req.send_request(options) end # Returns a list of your queues that have the `RedrivePolicy` queue # attribute configured with a dead-letter queue. # # The `ListDeadLetterSourceQueues` methods supports pagination. Set # parameter `MaxResults` in the request to specify the maximum number of # results to be returned in the response. If you do not set # `MaxResults`, the response includes a maximum of 1,000 results. If you # set `MaxResults` and there are additional results to display, the # response includes a value for `NextToken`. Use `NextToken` as a # parameter in your next request to `ListDeadLetterSourceQueues` to # receive the next page of results. # # For more information about using dead-letter queues, see [Using Amazon # SQS Dead-Letter Queues][1] in the *Amazon SQS Developer Guide*. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html # # @option params [required, String] :queue_url # The URL of a dead-letter queue. # # Queue URLs and names are case-sensitive. # # @option params [String] :next_token # Pagination token to request the next set of results. # # @option params [Integer] :max_results # Maximum number of results to include in the response. Value range is 1 # to 1000. You must set `MaxResults` to receive a value for `NextToken` # in the response. # # @return [Types::ListDeadLetterSourceQueuesResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::ListDeadLetterSourceQueuesResult#queue_urls #queue_urls} => Array<String> # * {Types::ListDeadLetterSourceQueuesResult#next_token #next_token} => String # # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. # # @example Request syntax with placeholder values # # resp = client.list_dead_letter_source_queues({ # queue_url: "String", # required # next_token: "Token", # max_results: 1, # }) # # @example Response structure # # resp.queue_urls #=> Array # resp.queue_urls[0] #=> String # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/ListDeadLetterSourceQueues AWS API Documentation # # @overload list_dead_letter_source_queues(params = {}) # @param [Hash] params ({}) def list_dead_letter_source_queues(params = {}, options = {}) req = build_request(:list_dead_letter_source_queues, params) req.send_request(options) end # List all cost allocation tags added to the specified Amazon SQS queue. # For an overview, see [Tagging Your Amazon SQS Queues][1] in the # *Amazon SQS Developer Guide*. # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][2] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-tags.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_url # The URL of the queue. # # @return [Types::ListQueueTagsResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::ListQueueTagsResult#tags #tags} => Hash<String,String> # # @example Request syntax with placeholder values # # resp = client.list_queue_tags({ # queue_url: "String", # required # }) # # @example Response structure # # resp.tags #=> Hash # resp.tags["TagKey"] #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/ListQueueTags AWS API Documentation # # @overload list_queue_tags(params = {}) # @param [Hash] params ({}) def list_queue_tags(params = {}, options = {}) req = build_request(:list_queue_tags, params) req.send_request(options) end # Returns a list of your queues in the current region. The response # includes a maximum of 1,000 results. If you specify a value for the # optional `QueueNamePrefix` parameter, only queues with a name that # begins with the specified value are returned. # # The `listQueues` methods supports pagination. Set parameter # `MaxResults` in the request to specify the maximum number of results # to be returned in the response. If you do not set `MaxResults`, the # response includes a maximum of 1,000 results. If you set `MaxResults` # and there are additional results to display, the response includes a # value for `NextToken`. Use `NextToken` as a parameter in your next # request to `listQueues` to receive the next page of results. # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][1] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [String] :queue_name_prefix # A string to use for filtering the list results. Only those queues # whose name begins with the specified string are returned. # # Queue URLs and names are case-sensitive. # # @option params [String] :next_token # Pagination token to request the next set of results. # # @option params [Integer] :max_results # Maximum number of results to include in the response. Value range is 1 # to 1000. You must set `MaxResults` to receive a value for `NextToken` # in the response. # # @return [Types::ListQueuesResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::ListQueuesResult#queue_urls #queue_urls} => Array<String> # * {Types::ListQueuesResult#next_token #next_token} => String # # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}. # # @example Request syntax with placeholder values # # resp = client.list_queues({ # queue_name_prefix: "String", # next_token: "Token", # max_results: 1, # }) # # @example Response structure # # resp.queue_urls #=> Array # resp.queue_urls[0] #=> String # resp.next_token #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/ListQueues AWS API Documentation # # @overload list_queues(params = {}) # @param [Hash] params ({}) def list_queues(params = {}, options = {}) req = build_request(:list_queues, params) req.send_request(options) end # Deletes the messages in a queue specified by the `QueueURL` parameter. # # When you use the `PurgeQueue` action, you can't retrieve any messages # deleted from a queue. # # The message deletion process takes up to 60 seconds. We recommend # waiting for 60 seconds regardless of your queue's size. # # Messages sent to the queue *before* you call `PurgeQueue` might be # received but are deleted within the next minute. # # Messages sent to the queue *after* you call `PurgeQueue` might be # deleted while the queue is being purged. # # @option params [required, String] :queue_url # The URL of the queue from which the `PurgeQueue` action deletes # messages. # # Queue URLs and names are case-sensitive. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.purge_queue({ # queue_url: "String", # required # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/PurgeQueue AWS API Documentation # # @overload purge_queue(params = {}) # @param [Hash] params ({}) def purge_queue(params = {}, options = {}) req = build_request(:purge_queue, params) req.send_request(options) end # Retrieves one or more messages (up to 10), from the specified queue. # Using the `WaitTimeSeconds` parameter enables long-poll support. For # more information, see [Amazon SQS Long Polling][1] in the *Amazon SQS # Developer Guide*. # # Short poll is the default behavior where a weighted random set of # machines is sampled on a `ReceiveMessage` call. Thus, only the # messages on the sampled machines are returned. If the number of # messages in the queue is small (fewer than 1,000), you most likely get # fewer messages than you requested per `ReceiveMessage` call. If the # number of messages in the queue is extremely small, you might not # receive any messages in a particular `ReceiveMessage` response. If # this happens, repeat the request. # # For each message returned, the response includes the following: # # * The message body. # # * An MD5 digest of the message body. For information about MD5, see # [RFC1321][2]. # # * The `MessageId` you received when you sent the message to the queue. # # * The receipt handle. # # * The message attributes. # # * An MD5 digest of the message attributes. # # The receipt handle is the identifier you must provide when deleting # the message. For more information, see [Queue and Message # Identifiers][3] in the *Amazon SQS Developer Guide*. # # You can provide the `VisibilityTimeout` parameter in your request. The # parameter is applied to the messages that Amazon SQS returns in the # response. If you don't include the parameter, the overall visibility # timeout for the queue is used for the returned messages. For more # information, see [Visibility Timeout][4] in the *Amazon SQS Developer # Guide*. # # A message that isn't deleted or a message whose visibility isn't # extended before the visibility timeout expires counts as a failed # receive. Depending on the configuration of the queue, the message # might be sent to the dead-letter queue. # # 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. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html # [2]: https://www.ietf.org/rfc/rfc1321.txt # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-message-identifiers.html # [4]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue from which messages are received. # # Queue URLs and names are case-sensitive. # # @option params [Array] :attribute_names # A list of attributes that need to be returned along with each message. # These attributes include: # # * `All` – Returns all values. # # * `ApproximateFirstReceiveTimestamp` – Returns the time the message # was first received from the queue ([epoch time][1] in milliseconds). # # * `ApproximateReceiveCount` – Returns the number of times a message # has been received across all queues but not deleted. # # * `AWSTraceHeader` – Returns the X-Ray trace header string. # # * `SenderId` # # * For an IAM user, returns the IAM user ID, for example # `ABCDEFGHI1JKLMNOPQ23R`. # # * For an IAM role, returns the IAM role ID, for example # `ABCDE1F2GH3I4JK5LMNOP:i-a123b456`. # # * `SentTimestamp` – Returns the time the message was sent to the queue # ([epoch time][1] in milliseconds). # # * `SqsManagedSseEnabled` – Enables server-side queue encryption using # SQS owned encryption keys. Only one server-side encryption option is # supported per queue (e.g. [SSE-KMS][2] or [SSE-SQS][3]). # # * `MessageDeduplicationId` – Returns the value provided by the # producer that calls the ` SendMessage ` action. # # * `MessageGroupId` – Returns the value provided by the producer that # calls the ` SendMessage ` action. Messages with the same # `MessageGroupId` are returned in sequence. # # * `SequenceNumber` – Returns the value provided by Amazon SQS. # # # # [1]: http://en.wikipedia.org/wiki/Unix_time # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html # # @option params [Array] :message_attribute_names # The name of the message attribute, where *N* is the index. # # * The name can contain alphanumeric characters and the underscore # (`_`), hyphen (`-`), and period (`.`). # # * The name is case-sensitive and must be unique among all attribute # names for the message. # # * The name must not start with AWS-reserved prefixes such as `AWS.` or # `Amazon.` (or any casing variants). # # * The name must not start or end with a period (`.`), and it should # not have periods in succession (`..`). # # * The name can be up to 256 characters long. # # When using `ReceiveMessage`, you can send a list of attribute names to # receive, or you can return all of the attributes by specifying `All` # or `.*` in your request. You can also use all message attributes # starting with a prefix, for example `bar.*`. # # @option params [Integer] :max_number_of_messages # The maximum number of messages to return. Amazon SQS never returns # more messages than this value (however, fewer messages might be # returned). Valid values: 1 to 10. Default: 1. # # @option params [Integer] :visibility_timeout # The duration (in seconds) that the received messages are hidden from # subsequent retrieve requests after being retrieved by a # `ReceiveMessage` request. # # @option params [Integer] :wait_time_seconds # The duration (in seconds) for which the call waits for a message to # arrive in the queue before returning. If a message is available, the # call returns sooner than `WaitTimeSeconds`. If no messages are # available and the wait time expires, the call returns successfully # with an empty list of messages. # # To avoid HTTP errors, ensure that the HTTP response timeout for # `ReceiveMessage` requests is longer than the `WaitTimeSeconds` # parameter. For example, with the Java SDK, you can set HTTP transport # settings using the [ NettyNioAsyncHttpClient][1] for asynchronous # clients, or the [ ApacheHttpClient][2] for synchronous clients. # # # # [1]: https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html # [2]: https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html # # @option params [String] :receive_request_attempt_id # This parameter applies only to FIFO (first-in-first-out) queues. # # The token used for deduplication of `ReceiveMessage` calls. If a # networking issue occurs after a `ReceiveMessage` action, and instead # of a response you receive a generic error, it is possible to retry the # same action with an identical `ReceiveRequestAttemptId` to retrieve # the same set of messages, even if their visibility timeout has not yet # expired. # # * You can use `ReceiveRequestAttemptId` only for 5 minutes after a # `ReceiveMessage` action. # # * When you set `FifoQueue`, a caller of the `ReceiveMessage` action # can provide a `ReceiveRequestAttemptId` explicitly. # # * If a caller of the `ReceiveMessage` action doesn't provide a # `ReceiveRequestAttemptId`, Amazon SQS generates a # `ReceiveRequestAttemptId`. # # * It is possible to retry the `ReceiveMessage` action with the same # `ReceiveRequestAttemptId` if none of the messages have been modified # (deleted or had their visibility changes). # # * During a visibility timeout, subsequent calls with the same # `ReceiveRequestAttemptId` return the same messages and receipt # handles. If a retry occurs within the deduplication interval, it # resets the visibility timeout. For more information, see [Visibility # Timeout][1] in the *Amazon SQS Developer Guide*. # # If a caller of the `ReceiveMessage` action still processes messages # when the visibility timeout expires and messages become visible, # another worker consuming from the same queue can receive the same # messages and therefore process duplicates. Also, if a consumer whose # message processing time is longer than the visibility timeout tries # to delete the processed messages, the action fails with an error. # # To mitigate this effect, ensure that your application observes a # safe threshold before the visibility timeout expires and extend the # visibility timeout as necessary. # # * While messages with a particular `MessageGroupId` are invisible, no # more messages belonging to the same `MessageGroupId` are returned # until the visibility timeout expires. You can still receive messages # with another `MessageGroupId` as long as it is also visible. # # * If a caller of `ReceiveMessage` can't track the # `ReceiveRequestAttemptId`, no retries work until the original # visibility timeout expires. As a result, delays might occur but the # messages in the queue remain in a strict order. # # The maximum length of `ReceiveRequestAttemptId` is 128 characters. # `ReceiveRequestAttemptId` can contain alphanumeric characters (`a-z`, # `A-Z`, `0-9`) and punctuation (`` !"#$%&'()*+,-./:;<=>?@[\]^_`\{|\}~ # ``). # # For best practices of using `ReceiveRequestAttemptId`, see [Using the # ReceiveRequestAttemptId Request Parameter][2] in the *Amazon SQS # Developer Guide*. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-receiverequestattemptid-request-parameter.html # # @return [Types::ReceiveMessageResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::ReceiveMessageResult#messages #messages} => Array<Types::Message> # # @example Request syntax with placeholder values # # resp = client.receive_message({ # queue_url: "String", # required # attribute_names: ["All"], # accepts All, Policy, VisibilityTimeout, MaximumMessageSize, MessageRetentionPeriod, ApproximateNumberOfMessages, ApproximateNumberOfMessagesNotVisible, CreatedTimestamp, LastModifiedTimestamp, QueueArn, ApproximateNumberOfMessagesDelayed, DelaySeconds, ReceiveMessageWaitTimeSeconds, RedrivePolicy, FifoQueue, ContentBasedDeduplication, KmsMasterKeyId, KmsDataKeyReusePeriodSeconds, DeduplicationScope, FifoThroughputLimit, RedriveAllowPolicy, SqsManagedSseEnabled # message_attribute_names: ["MessageAttributeName"], # max_number_of_messages: 1, # visibility_timeout: 1, # wait_time_seconds: 1, # receive_request_attempt_id: "String", # }) # # @example Response structure # # resp.messages #=> Array # resp.messages[0].message_id #=> String # resp.messages[0].receipt_handle #=> String # resp.messages[0].md5_of_body #=> String # resp.messages[0].body #=> String # resp.messages[0].attributes #=> Hash # resp.messages[0].attributes["MessageSystemAttributeName"] #=> String # resp.messages[0].md5_of_message_attributes #=> String # resp.messages[0].message_attributes #=> Hash # resp.messages[0].message_attributes["String"].string_value #=> String # resp.messages[0].message_attributes["String"].binary_value #=> String # resp.messages[0].message_attributes["String"].string_list_values #=> Array # resp.messages[0].message_attributes["String"].string_list_values[0] #=> String # resp.messages[0].message_attributes["String"].binary_list_values #=> Array # resp.messages[0].message_attributes["String"].binary_list_values[0] #=> String # resp.messages[0].message_attributes["String"].data_type #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/ReceiveMessage AWS API Documentation # # @overload receive_message(params = {}) # @param [Hash] params ({}) def receive_message(params = {}, options = {}) req = build_request(:receive_message, params) req.send_request(options) end # Revokes any permissions in the queue policy that matches the specified # `Label` parameter. # # * Only the owner of a queue can remove permissions from it. # # * Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a # user name][1] in the *Amazon SQS Developer Guide*. # # * To remove the ability to change queue permissions, you must deny # permission to the `AddPermission`, `RemovePermission`, and # `SetQueueAttributes` actions in your IAM policy. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue from which permissions are removed. # # Queue URLs and names are case-sensitive. # # @option params [required, String] :label # The identification of the permission to remove. This is the label # added using the ` AddPermission ` action. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.remove_permission({ # queue_url: "String", # required # label: "String", # required # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/RemovePermission AWS API Documentation # # @overload remove_permission(params = {}) # @param [Hash] params ({}) def remove_permission(params = {}, options = {}) req = build_request(:remove_permission, params) req.send_request(options) end # Delivers a message to the specified queue. # # A message can include only XML, JSON, and unformatted text. The # following Unicode characters are allowed: # # `#x9` \| `#xA` \| `#xD` \| `#x20` to `#xD7FF` \| `#xE000` to `#xFFFD` # \| `#x10000` to `#x10FFFF` # # Any characters not included in this list will be rejected. For more # information, see the [W3C specification for characters][1]. # # # # [1]: http://www.w3.org/TR/REC-xml/#charsets # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue to which a message is sent. # # Queue URLs and names are case-sensitive. # # @option params [required, String] :message_body # The message to send. The minimum size is one character. The maximum # size is 256 KB. # # A message can include only XML, JSON, and unformatted text. The # following Unicode characters are allowed: # # `#x9` \| `#xA` \| `#xD` \| `#x20` to `#xD7FF` \| `#xE000` to `#xFFFD` # \| `#x10000` to `#x10FFFF` # # Any characters not included in this list will be rejected. For more # information, see the [W3C specification for characters][1]. # # # # [1]: http://www.w3.org/TR/REC-xml/#charsets # # @option params [Integer] :delay_seconds # The length of time, in seconds, for which to delay a specific message. # Valid values: 0 to 900. Maximum: 15 minutes. Messages with a positive # `DelaySeconds` value become available for processing after the delay # period is finished. If you don't specify a value, the default value # for the queue applies. # # When you set `FifoQueue`, you can't set `DelaySeconds` per message. # You can set this parameter only on a queue level. # # # # @option params [Hash] :message_attributes # Each message attribute consists of a `Name`, `Type`, and `Value`. For # more information, see [Amazon SQS message attributes][1] in the # *Amazon SQS Developer Guide*. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes # # @option params [Hash] :message_system_attributes # The message system attribute to send. Each message system attribute # consists of a `Name`, `Type`, and `Value`. # # * Currently, the only supported message system attribute is # `AWSTraceHeader`. Its type must be `String` and its value must be a # correctly formatted X-Ray trace header string. # # * The size of a message system attribute doesn't count towards the # total size of a message. # # @option params [String] :message_deduplication_id # This parameter applies only to FIFO (first-in-first-out) queues. # # The token used for deduplication of sent messages. If a message with a # particular `MessageDeduplicationId` is sent successfully, any messages # sent with the same `MessageDeduplicationId` are accepted successfully # but aren't delivered during the 5-minute deduplication interval. For # more information, see [ Exactly-once processing][1] in the *Amazon SQS # Developer Guide*. # # * Every message must have a unique `MessageDeduplicationId`, # # * You may provide a `MessageDeduplicationId` explicitly. # # * If you aren't able to provide a `MessageDeduplicationId` and you # enable `ContentBasedDeduplication` for your queue, Amazon SQS uses # a SHA-256 hash to generate the `MessageDeduplicationId` using the # body of the message (but not the attributes of the message). # # * If you don't provide a `MessageDeduplicationId` and the queue # doesn't have `ContentBasedDeduplication` set, the action fails # with an error. # # * If the queue has `ContentBasedDeduplication` set, your # `MessageDeduplicationId` overrides the generated one. # # * When `ContentBasedDeduplication` is in effect, messages with # identical content sent within the deduplication interval are treated # as duplicates and only one copy of the message is delivered. # # * If you send one message with `ContentBasedDeduplication` enabled and # then another message with a `MessageDeduplicationId` that is the # same as the one generated for the first `MessageDeduplicationId`, # the two messages are treated as duplicates and only one copy of the # message is delivered. # # The `MessageDeduplicationId` is available to the consumer of the # message (this can be useful for troubleshooting delivery issues). # # If a message is sent successfully but the acknowledgement is lost and # the message is resent with the same `MessageDeduplicationId` after the # deduplication interval, Amazon SQS can't detect duplicate messages. # # Amazon SQS continues to keep track of the message deduplication ID # even after the message is received and deleted. # # # # The maximum length of `MessageDeduplicationId` is 128 characters. # `MessageDeduplicationId` can contain alphanumeric characters (`a-z`, # `A-Z`, `0-9`) and punctuation (`` !"#$%&'()*+,-./:;<=>?@[\]^_`\{|\}~ # ``). # # For best practices of using `MessageDeduplicationId`, see [Using the # MessageDeduplicationId Property][2] in the *Amazon SQS Developer # Guide*. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html # # @option params [String] :message_group_id # This parameter applies only to FIFO (first-in-first-out) queues. # # The tag that specifies that a message belongs to a specific message # group. Messages that belong to the same message group are processed in # a FIFO manner (however, messages in different message groups might be # processed out of order). To interleave multiple ordered streams within # a single queue, use `MessageGroupId` values (for example, session data # for multiple users). In this scenario, multiple consumers can process # the queue, but the session data of each user is processed in a FIFO # fashion. # # * You must associate a non-empty `MessageGroupId` with a message. If # you don't provide a `MessageGroupId`, the action fails. # # * `ReceiveMessage` might return messages with multiple # `MessageGroupId` values. For each `MessageGroupId`, the messages are # sorted by time sent. The caller can't specify a `MessageGroupId`. # # The length of `MessageGroupId` is 128 characters. Valid values: # alphanumeric characters and punctuation `` # (!"#$%&'()*+,-./:;<=>?@[\]^_`\{|\}~) ``. # # For best practices of using `MessageGroupId`, see [Using the # MessageGroupId Property][1] in the *Amazon SQS Developer Guide*. # # `MessageGroupId` is required for FIFO queues. You can't use it for # Standard queues. # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagegroupid-property.html # # @return [Types::SendMessageResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::SendMessageResult#md5_of_message_body #md5_of_message_body} => String # * {Types::SendMessageResult#md5_of_message_attributes #md5_of_message_attributes} => String # * {Types::SendMessageResult#md5_of_message_system_attributes #md5_of_message_system_attributes} => String # * {Types::SendMessageResult#message_id #message_id} => String # * {Types::SendMessageResult#sequence_number #sequence_number} => String # # @example Request syntax with placeholder values # # resp = client.send_message({ # queue_url: "String", # required # message_body: "String", # required # delay_seconds: 1, # message_attributes: { # "String" => { # string_value: "String", # binary_value: "data", # string_list_values: ["String"], # binary_list_values: ["data"], # data_type: "String", # required # }, # }, # message_system_attributes: { # "AWSTraceHeader" => { # string_value: "String", # binary_value: "data", # string_list_values: ["String"], # binary_list_values: ["data"], # data_type: "String", # required # }, # }, # message_deduplication_id: "String", # message_group_id: "String", # }) # # @example Response structure # # resp.md5_of_message_body #=> String # resp.md5_of_message_attributes #=> String # resp.md5_of_message_system_attributes #=> String # resp.message_id #=> String # resp.sequence_number #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/SendMessage AWS API Documentation # # @overload send_message(params = {}) # @param [Hash] params ({}) def send_message(params = {}, options = {}) req = build_request(:send_message, params) req.send_request(options) end # Delivers up to ten messages to the specified queue. This is a batch # version of ` SendMessage.` For a FIFO queue, multiple messages within # a single batch are enqueued in the order they are sent. # # The result of sending each message is reported individually in the # response. Because the batch request can result in a combination of # successful and unsuccessful actions, you should check for batch errors # even when the call returns an HTTP status code of `200`. # # The maximum allowed individual message size and the maximum total # payload size (the sum of the individual lengths of all of the batched # messages) are both 256 KB (262,144 bytes). # # A message can include only XML, JSON, and unformatted text. The # following Unicode characters are allowed: # # `#x9` \| `#xA` \| `#xD` \| `#x20` to `#xD7FF` \| `#xE000` to `#xFFFD` # \| `#x10000` to `#x10FFFF` # # Any characters not included in this list will be rejected. For more # information, see the [W3C specification for characters][1]. # # If you don't specify the `DelaySeconds` parameter for an entry, # Amazon SQS uses the default value for the queue. # # Some actions take lists of parameters. These lists are specified using # the `param.n` notation. Values of `n` are integers starting from 1. # For example, a parameter list with two elements looks like this: # # `&AttributeName.1=first` # # `&AttributeName.2=second` # # # # [1]: http://www.w3.org/TR/REC-xml/#charsets # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue to which batched messages are sent. # # Queue URLs and names are case-sensitive. # # @option params [required, Array] :entries # A list of ` SendMessageBatchRequestEntry ` items. # # @return [Types::SendMessageBatchResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods: # # * {Types::SendMessageBatchResult#successful #successful} => Array<Types::SendMessageBatchResultEntry> # * {Types::SendMessageBatchResult#failed #failed} => Array<Types::BatchResultErrorEntry> # # @example Request syntax with placeholder values # # resp = client.send_message_batch({ # queue_url: "String", # required # entries: [ # required # { # id: "String", # required # message_body: "String", # required # delay_seconds: 1, # message_attributes: { # "String" => { # string_value: "String", # binary_value: "data", # string_list_values: ["String"], # binary_list_values: ["data"], # data_type: "String", # required # }, # }, # message_system_attributes: { # "AWSTraceHeader" => { # string_value: "String", # binary_value: "data", # string_list_values: ["String"], # binary_list_values: ["data"], # data_type: "String", # required # }, # }, # message_deduplication_id: "String", # message_group_id: "String", # }, # ], # }) # # @example Response structure # # resp.successful #=> Array # resp.successful[0].id #=> String # resp.successful[0].message_id #=> String # resp.successful[0].md5_of_message_body #=> String # resp.successful[0].md5_of_message_attributes #=> String # resp.successful[0].md5_of_message_system_attributes #=> String # resp.successful[0].sequence_number #=> String # resp.failed #=> Array # resp.failed[0].id #=> String # resp.failed[0].sender_fault #=> Boolean # resp.failed[0].code #=> String # resp.failed[0].message #=> String # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/SendMessageBatch AWS API Documentation # # @overload send_message_batch(params = {}) # @param [Hash] params ({}) def send_message_batch(params = {}, options = {}) req = build_request(:send_message_batch, params) req.send_request(options) end # Sets the value of one or more queue attributes. 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 `MessageRetentionPeriod` attribute can take up to 15 # minutes. # # * 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 # user name][1] in the *Amazon SQS Developer Guide*. # # * To remove the ability to change queue permissions, you must deny # permission to the `AddPermission`, `RemovePermission`, and # `SetQueueAttributes` actions in your IAM policy. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_url # The URL of the Amazon SQS queue whose attributes are set. # # Queue URLs and names are case-sensitive. # # @option params [required, Hash] :attributes # A map of attributes to set. # # The following lists the names, descriptions, and values of the special # request parameters that the `SetQueueAttributes` action uses: # # * `DelaySeconds` – The length of time, in seconds, for which the # delivery of all messages in the queue is delayed. Valid values: An # integer from 0 to 900 (15 minutes). Default: 0. # # * `MaximumMessageSize` – The limit of how many bytes a message can # contain before Amazon SQS rejects it. Valid values: An integer from # 1,024 bytes (1 KiB) up to 262,144 bytes (256 KiB). Default: 262,144 # (256 KiB). # # * `MessageRetentionPeriod` – The length of time, in seconds, for which # Amazon SQS retains a message. Valid values: An integer representing # seconds, from 60 (1 minute) to 1,209,600 (14 days). Default: 345,600 # (4 days). # # * `Policy` – The queue's policy. A valid Amazon Web Services policy. # For more information about policy structure, see [Overview of Amazon # Web Services IAM Policies][1] in the *Identity and Access Management # User Guide*. # # * `ReceiveMessageWaitTimeSeconds` – The length of time, in seconds, # for which a ` ReceiveMessage ` action waits for a message to arrive. # Valid values: An integer from 0 to 20 (seconds). Default: 0. # # * `RedrivePolicy` – The string that includes the parameters for the # dead-letter queue functionality of the source queue as a JSON # object. For more information about the redrive policy and # dead-letter queues, see [Using Amazon SQS Dead-Letter Queues][2] in # the *Amazon SQS Developer Guide*. # # * `deadLetterTargetArn` – The Amazon Resource Name (ARN) of the # dead-letter queue to which Amazon SQS moves messages after the # value of `maxReceiveCount` is exceeded. # # * `maxReceiveCount` – The number of times a message is delivered to # the source queue before being moved to the dead-letter queue. When # the `ReceiveCount` for a message exceeds the `maxReceiveCount` for # a queue, Amazon SQS moves the message to the dead-letter-queue. # # The dead-letter queue of a FIFO queue must also be a FIFO queue. # Similarly, the dead-letter queue of a standard queue must also be a # standard queue. # # # # * `VisibilityTimeout` – The visibility timeout for the queue, in # seconds. Valid values: An integer from 0 to 43,200 (12 hours). # Default: 30. For more information about the visibility timeout, see # [Visibility Timeout][3] in the *Amazon SQS Developer Guide*. # # The following attributes apply only to [server-side-encryption][4]\: # # * `KmsMasterKeyId` – The ID of an Amazon Web Services managed customer # master key (CMK) for Amazon SQS or a custom CMK. For more # information, see [Key Terms][5]. While the alias of the AWS-managed # CMK for Amazon SQS is always `alias/aws/sqs`, the alias of a custom # CMK can, for example, be `alias/MyAlias `. For more examples, see # [KeyId][6] in the *Key Management Service API Reference*. # # * `KmsDataKeyReusePeriodSeconds` – The length of time, in seconds, for # which Amazon SQS can reuse a [data key][7] to encrypt or decrypt # messages before calling KMS again. An integer representing seconds, # between 60 seconds (1 minute) and 86,400 seconds (24 hours). # Default: 300 (5 minutes). A shorter time period provides better # security but results in more calls to KMS which might incur charges # after Free Tier. For more information, see [How Does the Data Key # Reuse Period Work?][8]. # # * `SqsManagedSseEnabled` – Enables server-side queue encryption using # SQS owned encryption keys. Only one server-side encryption option is # supported per queue (e.g. [SSE-KMS][9] or [SSE-SQS][10]). # # The following attribute applies only to [FIFO (first-in-first-out) # queues][11]\: # # * `ContentBasedDeduplication` – Enables content-based deduplication. # For more information, see [Exactly-once processing][12] in the # *Amazon SQS Developer Guide*. Note the following: # # * Every message must have a unique `MessageDeduplicationId`. # # * You may provide a `MessageDeduplicationId` explicitly. # # * If you aren't able to provide a `MessageDeduplicationId` and # you enable `ContentBasedDeduplication` for your queue, Amazon # SQS uses a SHA-256 hash to generate the `MessageDeduplicationId` # using the body of the message (but not the attributes of the # message). # # * If you don't provide a `MessageDeduplicationId` and the queue # doesn't have `ContentBasedDeduplication` set, the action fails # with an error. # # * If the queue has `ContentBasedDeduplication` set, your # `MessageDeduplicationId` overrides the generated one. # # * When `ContentBasedDeduplication` is in effect, messages with # identical content sent within the deduplication interval are # treated as duplicates and only one copy of the message is # delivered. # # * If you send one message with `ContentBasedDeduplication` enabled # and then another message with a `MessageDeduplicationId` that is # the same as the one generated for the first # `MessageDeduplicationId`, the two messages are treated as # duplicates and only one copy of the message is delivered. # # The following attributes apply only to [high throughput for FIFO # queues][13]\: # # * `DeduplicationScope` – Specifies whether message deduplication # occurs at the message group or queue level. Valid values are # `messageGroup` and `queue`. # # * `FifoThroughputLimit` – Specifies whether the FIFO queue throughput # quota applies to the entire queue or per message group. Valid values # are `perQueue` and `perMessageGroupId`. The `perMessageGroupId` # value is allowed only when the value for `DeduplicationScope` is # `messageGroup`. # # To enable high throughput for FIFO queues, do the following: # # * Set `DeduplicationScope` to `messageGroup`. # # * Set `FifoThroughputLimit` to `perMessageGroupId`. # # If you set these attributes to anything other than the values shown # for enabling high throughput, normal throughput is in effect and # deduplication occurs as specified. # # For information on throughput quotas, see [Quotas related to # messages][14] in the *Amazon SQS Developer Guide*. # # # # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html # [4]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html # [5]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms # [6]: https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys # [8]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work # [9]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html # [10]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html # [11]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html # [12]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html # [13]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html # [14]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.set_queue_attributes({ # queue_url: "String", # required # attributes: { # required # "All" => "String", # }, # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/SetQueueAttributes AWS API Documentation # # @overload set_queue_attributes(params = {}) # @param [Hash] params ({}) def set_queue_attributes(params = {}, options = {}) req = build_request(:set_queue_attributes, params) req.send_request(options) end # Add cost allocation tags to the specified Amazon SQS queue. For an # overview, see [Tagging Your Amazon SQS Queues][1] in the *Amazon SQS # Developer Guide*. # # When you use queue tags, keep the following guidelines in mind: # # * Adding more than 50 tags to a queue isn't recommended. # # * Tags don't have any semantic meaning. Amazon SQS interprets tags as # character strings. # # * Tags are case-sensitive. # # * A new tag with a key identical to that of an existing tag overwrites # the existing tag. # # For a full list of tag restrictions, see [Quotas related to queues][2] # in the *Amazon SQS Developer Guide*. # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][3] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-tags.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-limits.html#limits-queues # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_url # The URL of the queue. # # @option params [required, Hash] :tags # The list of tags to be added to the specified queue. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.tag_queue({ # queue_url: "String", # required # tags: { # required # "TagKey" => "TagValue", # }, # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/TagQueue AWS API Documentation # # @overload tag_queue(params = {}) # @param [Hash] params ({}) def tag_queue(params = {}, options = {}) req = build_request(:tag_queue, params) req.send_request(options) end # Remove cost allocation tags from the specified Amazon SQS queue. For # an overview, see [Tagging Your Amazon SQS Queues][1] in the *Amazon # SQS Developer Guide*. # # Cross-account permissions don't apply to this action. For more # information, see [Grant cross-account permissions to a role and a user # name][2] in the *Amazon SQS Developer Guide*. # # # # # # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-tags.html # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name # # @option params [required, String] :queue_url # The URL of the queue. # # @option params [required, Array] :tag_keys # The list of tags to be removed from the specified queue. # # @return [Struct] Returns an empty {Seahorse::Client::Response response}. # # @example Request syntax with placeholder values # # resp = client.untag_queue({ # queue_url: "String", # required # tag_keys: ["TagKey"], # required # }) # # @see http://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/UntagQueue AWS API Documentation # # @overload untag_queue(params = {}) # @param [Hash] params ({}) def untag_queue(params = {}, options = {}) req = build_request(:untag_queue, params) req.send_request(options) end # @!endgroup # @param params ({}) # @api private def build_request(operation_name, params = {}) handlers = @handlers.for(operation_name) context = Seahorse::Client::RequestContext.new( operation_name: operation_name, operation: config.api.operation(operation_name), client: self, params: params, config: config) context[:gem_name] = 'aws-sdk-sqs' context[:gem_version] = '1.47.0' Seahorse::Client::Request.new(handlers, context) end # @api private # @deprecated def waiter_names [] end class << self # @api private attr_reader :identifier # @api private def errors_module Errors end end end end