aws-sdk-sqs 1.5.0 → 1.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'set'
2
4
 
3
5
  module Aws
4
6
  module SQS
5
-
6
7
  # A utility class for long polling messages in a loop. **Messages are
7
8
  # automatically deleted from the queue at the end of the given block.**
8
9
  #
@@ -179,6 +180,16 @@ module Aws
179
180
  # end
180
181
  # ```
181
182
  #
183
+ # * Configure an {#after_empty_receive} callback.
184
+ #
185
+ # ```
186
+ # poller.after_empty_receive do |stats|
187
+ # logger.info("requests: #{stats.request_count}")
188
+ # logger.info("messages: #{stats.received_message_count}")
189
+ # logger.info("last-timestamp: #{stats.last_message_received_at}")
190
+ # end
191
+ # ```
192
+ #
182
193
  # * Accept a 2nd argument in the poll block, for example:
183
194
  #
184
195
  # ```
@@ -201,7 +212,6 @@ module Aws
201
212
  # ```
202
213
  #
203
214
  class QueuePoller
204
-
205
215
  # @param [String] queue_url
206
216
  # @option options [Client] :client
207
217
  # @option (see #poll)
@@ -253,7 +263,22 @@ module Aws
253
263
  #
254
264
  # @return [void]
255
265
  def before_request(&block)
256
- @default_config = @default_config.with(before_request: Proc.new)
266
+ @default_config = @default_config.with(before_request: block) if block_given?
267
+ end
268
+
269
+ # Registers a callback that is invoked when the poll requests returns with no messages.
270
+ # This callback is invoked after the idle timeout is checked.
271
+ #
272
+ # poller.after_empty_receive do |stats|
273
+ # # Handle empty receive
274
+ # end
275
+ #
276
+ # @yieldparam [PollerStats] stats An object that tracks a few
277
+ # client-side statistics about the queue polling.
278
+ #
279
+ # @return [void]
280
+ def after_empty_receive(&block)
281
+ @default_config = @default_config.with(after_empty_receive: block) if block_given?
257
282
  end
258
283
 
259
284
  # Polls the queue, yielded a message, or an array of messages.
@@ -288,7 +313,7 @@ module Aws
288
313
  # @option options [Integer] :visibility_timeout (nil)
289
314
  # The number of seconds you have to process a message before
290
315
  # it is put back into the queue and can be received again.
291
- # By default, the queue's
316
+ # By default, the queue's visibility timeout is not set.
292
317
  #
293
318
  # @option options [Array<String>] :attribute_names ([])
294
319
  # The list of attributes that need to be returned along with each
@@ -331,7 +356,8 @@ module Aws
331
356
  loop do
332
357
  messages = get_messages(config, stats)
333
358
  if messages.empty?
334
- check_idle_timeout(config, stats, messages)
359
+ check_idle_timeout(config, stats)
360
+ config.after_empty_receive&.call(stats)
335
361
  else
336
362
  process_messages(config, stats, messages, &block)
337
363
  end
@@ -346,21 +372,21 @@ module Aws
346
372
  # `#receipt_handle`.
347
373
  # @param [Integer] seconds
348
374
  def change_message_visibility_timeout(message, seconds)
349
- @client.change_message_visibility({
375
+ @client.change_message_visibility(
350
376
  queue_url: @queue_url,
351
377
  receipt_handle: message.receipt_handle,
352
- visibility_timeout: seconds,
353
- })
378
+ visibility_timeout: seconds
379
+ )
354
380
  end
355
381
 
356
382
  # @note This method should be called from inside a {#poll} block.
357
383
  # @param [#receipt_handle] message An object that responds to
358
384
  # `#receipt_handle`.
359
385
  def delete_message(message)
360
- @client.delete_message({
386
+ @client.delete_message(
361
387
  queue_url: @queue_url,
362
- receipt_handle: message.receipt_handle,
363
- })
388
+ receipt_handle: message.receipt_handle
389
+ )
364
390
  end
365
391
 
366
392
  # @note This method should be called from inside a {#poll} block.
@@ -370,16 +396,16 @@ module Aws
370
396
  def delete_messages(messages)
371
397
  @client.delete_message_batch(
372
398
  queue_url: @queue_url,
373
- entries: messages.map { |msg|
399
+ entries: messages.map do |msg|
374
400
  { id: msg.message_id, receipt_handle: msg.receipt_handle }
375
- }
401
+ end
376
402
  )
377
403
  end
378
404
 
379
405
  private
380
406
 
381
407
  def get_messages(config, stats)
382
- config.before_request.call(stats) if config.before_request
408
+ config.before_request&.call(stats)
383
409
  messages = send_request(config).messages
384
410
  stats.request_count += 1
385
411
  messages
@@ -390,17 +416,22 @@ module Aws
390
416
  @client.receive_message(params)
391
417
  end
392
418
 
393
- def check_idle_timeout(config, stats, messages)
394
- if config.idle_timeout
395
- since = stats.last_message_received_at || stats.polling_started_at
396
- idle_time = Time.now - since
397
- throw :stop_polling if idle_time > config.idle_timeout
398
- end
419
+ def check_idle_timeout(config, stats)
420
+ return unless config.idle_timeout
421
+
422
+ since = stats.last_message_received_at || stats.polling_started_at
423
+ idle_time = Time.now - since
424
+ throw :stop_polling if idle_time > config.idle_timeout
399
425
  end
400
426
 
401
427
  def process_messages(config, stats, messages, &block)
402
428
  stats.received_message_count += messages.count
403
429
  stats.last_message_received_at = Time.now
430
+
431
+ # duplicated messages will have a different receipt handle
432
+ # so we need to provide the most recent receipt to
433
+ # delete a batch - thus, filtering below by message_id
434
+ messages = messages.reverse.uniq(&:message_id).reverse!
404
435
  catch(:skip_delete) do
405
436
  yield_messages(config, messages, stats, &block)
406
437
  delete_messages(messages) unless config.skip_delete
@@ -419,7 +450,6 @@ module Aws
419
450
 
420
451
  # Statistics tracked client-side by the {QueuePoller}.
421
452
  class PollerStats
422
-
423
453
  def initialize
424
454
  @request_count = 0
425
455
  @received_message_count = 0
@@ -442,27 +472,26 @@ module Aws
442
472
 
443
473
  # @return [Time,nil]
444
474
  attr_accessor :polling_stopped_at
445
-
446
475
  end
447
476
 
448
477
  # A read-only set of configuration used by the QueuePoller.
449
478
  class PollerConfig
450
-
451
479
  # @api private
452
- CONFIG_OPTIONS = Set.new([
453
- :idle_timeout,
454
- :skip_delete,
455
- :before_request,
456
- ])
480
+ CONFIG_OPTIONS = Set.new %i[
481
+ idle_timeout
482
+ skip_delete
483
+ before_request
484
+ after_empty_receive
485
+ ]
457
486
 
458
487
  # @api private
459
- PARAM_OPTIONS = Set.new([
460
- :wait_time_seconds,
461
- :max_number_of_messages,
462
- :visibility_timeout,
463
- :attribute_names,
464
- :message_attribute_names,
465
- ])
488
+ PARAM_OPTIONS = Set.new %i[
489
+ wait_time_seconds
490
+ max_number_of_messages
491
+ visibility_timeout
492
+ attribute_names
493
+ message_attribute_names
494
+ ]
466
495
 
467
496
  # @return [Integer,nil]
468
497
  attr_reader :idle_timeout
@@ -473,6 +502,9 @@ module Aws
473
502
  # @return [Proc,nil]
474
503
  attr_reader :before_request
475
504
 
505
+ # @return [Proc,nil]
506
+ attr_reader :after_empty_receive
507
+
476
508
  # @return [Hash]
477
509
  attr_reader :request_params
478
510
 
@@ -480,12 +512,13 @@ module Aws
480
512
  @idle_timeout = nil
481
513
  @skip_delete = false
482
514
  @before_request = nil
515
+ @after_empty_receive = nil
483
516
  @request_params = {
484
517
  wait_time_seconds: 20,
485
518
  max_number_of_messages: 1,
486
519
  visibility_timeout: nil,
487
520
  attribute_names: ['All'],
488
- message_attribute_names: ['All'],
521
+ message_attribute_names: ['All']
489
522
  }
490
523
  options.each do |opt_name, value|
491
524
  if CONFIG_OPTIONS.include?(opt_name)
@@ -496,6 +529,12 @@ module Aws
496
529
  raise ArgumentError, "invalid option #{opt_name.inspect}"
497
530
  end
498
531
  end
532
+
533
+ max_number_of_messages = @request_params[:max_number_of_messages]
534
+ unless max_number_of_messages.is_a?(Integer) && max_number_of_messages.positive?
535
+ raise ArgumentError, ':max_number_of_messages must be a positive integer'
536
+ end
537
+
499
538
  @request_params.freeze
500
539
  freeze
501
540
  end
@@ -514,7 +553,6 @@ module Aws
514
553
  PARAM_OPTIONS.each { |key| hash[key] = @request_params[key] }
515
554
  hash
516
555
  end
517
-
518
556
  end
519
557
  end
520
558
  end
@@ -1,11 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # WARNING ABOUT GENERATED CODE
2
4
  #
3
5
  # This file is generated. See the contributing guide for more information:
4
- # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
5
7
  #
6
8
  # WARNING ABOUT GENERATED CODE
7
9
 
8
10
  module Aws::SQS
11
+
12
+ # This class provides a resource oriented interface for SQS.
13
+ # To create a resource object:
14
+ #
15
+ # resource = Aws::SQS::Resource.new(region: 'us-west-2')
16
+ #
17
+ # You can supply a client object with custom configuration that will be used for all resource operations.
18
+ # If you do not pass `:client`, a default client will be constructed.
19
+ #
20
+ # client = Aws::SQS::Client.new(region: 'us-west-2')
21
+ # resource = Aws::SQS::Resource.new(client: client)
22
+ #
9
23
  class Resource
10
24
 
11
25
  # @param options ({})
@@ -28,6 +42,9 @@ module Aws::SQS
28
42
  # attributes: {
29
43
  # "All" => "String",
30
44
  # },
45
+ # tags: {
46
+ # "TagKey" => "TagValue",
47
+ # },
31
48
  # })
32
49
  # @param [Hash] options ({})
33
50
  # @option options [required, String] :queue_name
@@ -40,96 +57,137 @@ module Aws::SQS
40
57
  #
41
58
  # * A FIFO queue name must end with the `.fifo` suffix.
42
59
  #
43
- # Queue names are case-sensitive.
60
+ # Queue URLs and names are case-sensitive.
44
61
  # @option options [Hash<String,String>] :attributes
45
62
  # A map of attributes with their corresponding values.
46
63
  #
47
64
  # The following lists the names, descriptions, and values of the special
48
65
  # request parameters that the `CreateQueue` action uses:
49
66
  #
50
- # * `DelaySeconds` - The length of time, in seconds, for which the
67
+ # * `DelaySeconds` The length of time, in seconds, for which the
51
68
  # delivery of all messages in the queue is delayed. Valid values: An
52
- # integer from 0 to 900 seconds (15 minutes). The default is 0 (zero).
69
+ # integer from 0 to 900 seconds (15 minutes). Default: 0.
53
70
  #
54
- # * `MaximumMessageSize` - The limit of how many bytes a message can
71
+ # * `MaximumMessageSize` The limit of how many bytes a message can
55
72
  # contain before Amazon SQS rejects it. Valid values: An integer from
56
- # 1,024 bytes (1 KiB) to 262,144 bytes (256 KiB). The default is
57
- # 262,144 (256 KiB).
73
+ # 1,024 bytes (1 KiB) to 262,144 bytes (256 KiB). Default: 262,144
74
+ # (256 KiB).
58
75
  #
59
- # * `MessageRetentionPeriod` - The length of time, in seconds, for which
76
+ # * `MessageRetentionPeriod` The length of time, in seconds, for which
60
77
  # Amazon SQS retains a message. Valid values: An integer from 60
61
- # seconds (1 minute) to 1,209,600 seconds (14 days). The default is
62
- # 345,600 (4 days).
78
+ # seconds (1 minute) to 1,209,600 seconds (14 days). Default: 345,600
79
+ # (4 days). When you change a queue's attributes, the change can take
80
+ # up to 60 seconds for most of the attributes to propagate throughout
81
+ # the Amazon SQS system. Changes made to the `MessageRetentionPeriod`
82
+ # attribute can take up to 15 minutes and will impact existing
83
+ # messages in the queue potentially causing them to be expired and
84
+ # deleted if the `MessageRetentionPeriod` is reduced below the age of
85
+ # existing messages.
86
+ #
87
+ # * `Policy` – The queue's policy. A valid Amazon Web Services policy.
88
+ # For more information about policy structure, see [Overview of Amazon
89
+ # Web Services IAM Policies][1] in the *IAM User Guide*.
90
+ #
91
+ # * `ReceiveMessageWaitTimeSeconds` – The length of time, in seconds,
92
+ # for which a ` ReceiveMessage ` action waits for a message to arrive.
93
+ # Valid values: An integer from 0 to 20 (seconds). Default: 0.
63
94
  #
64
- # * `Policy` - The queue's policy. A valid AWS policy. For more
65
- # information about policy structure, see [Overview of AWS IAM
66
- # Policies][1] in the *Amazon IAM User Guide*.
95
+ # * `VisibilityTimeout` The visibility timeout for the queue, in
96
+ # seconds. Valid values: An integer from 0 to 43,200 (12 hours).
97
+ # Default: 30. For more information about the visibility timeout, see
98
+ # [Visibility Timeout][2] in the *Amazon SQS Developer Guide*.
67
99
  #
68
- # * `ReceiveMessageWaitTimeSeconds` - The length of time, in seconds,
69
- # for which a ` ReceiveMessage ` action waits for a message to arrive.
70
- # Valid values: An integer from 0 to 20 (seconds). The default is 0
71
- # (zero).
100
+ # The following attributes apply only to [dead-letter queues:][3]
72
101
  #
73
- # * `RedrivePolicy` - The string that includes the parameters for the
74
- # dead-letter queue functionality of the source queue. For more
75
- # information about the redrive policy and dead-letter queues, see
76
- # [Using Amazon SQS Dead-Letter Queues][2] in the *Amazon Simple Queue
77
- # Service Developer Guide*.
102
+ # * `RedrivePolicy` The string that includes the parameters for the
103
+ # dead-letter queue functionality of the source queue as a JSON
104
+ # object. The parameters are as follows:
78
105
  #
79
- # * `deadLetterTargetArn` - The Amazon Resource Name (ARN) of the
106
+ # * `deadLetterTargetArn` The Amazon Resource Name (ARN) of the
80
107
  # dead-letter queue to which Amazon SQS moves messages after the
81
108
  # value of `maxReceiveCount` is exceeded.
82
109
  #
83
- # * `maxReceiveCount` - The number of times a message is delivered to
110
+ # * `maxReceiveCount` The number of times a message is delivered to
84
111
  # the source queue before being moved to the dead-letter queue.
85
- #
86
- # <note markdown="1"> The dead-letter queue of a FIFO queue must also be a FIFO queue.
87
- # Similarly, the dead-letter queue of a standard queue must also be a
88
- # standard queue.
89
- #
90
- # </note>
91
- #
92
- # * `VisibilityTimeout` - The visibility timeout for the queue. Valid
93
- # values: An integer from 0 to 43,200 (12 hours). The default is 30.
94
- # For more information about the visibility timeout, see [Visibility
95
- # Timeout][3] in the *Amazon Simple Queue Service Developer Guide*.
96
- #
97
- # The following attributes apply only to [server-side-encryption][4]\:
98
- #
99
- # * `KmsMasterKeyId` - The ID of an AWS-managed customer master key
100
- # (CMK) for Amazon SQS or a custom CMK. For more information, see [Key
101
- # Terms][5]. While the alias of the AWS-managed CMK for Amazon SQS is
102
- # always `alias/aws/sqs`, the alias of a custom CMK can, for example,
103
- # be `alias/MyAlias `. For more examples, see [KeyId][6] in the *AWS
104
- # Key Management Service API Reference*.
105
- #
106
- # * `KmsDataKeyReusePeriodSeconds` - The length of time, in seconds, for
112
+ # Default: 10. When the `ReceiveCount` for a message exceeds the
113
+ # `maxReceiveCount` for a queue, Amazon SQS moves the message to the
114
+ # dead-letter-queue.
115
+ #
116
+ # * `RedriveAllowPolicy` – The string that includes the parameters for
117
+ # the permissions for the dead-letter queue redrive permission and
118
+ # which source queues can specify dead-letter queues as a JSON object.
119
+ # The parameters are as follows:
120
+ #
121
+ # * `redrivePermission` The permission type that defines which
122
+ # source queues can specify the current queue as the dead-letter
123
+ # queue. Valid values are:
124
+ #
125
+ # * `allowAll` – (Default) Any source queues in this Amazon Web
126
+ # Services account in the same Region can specify this queue as
127
+ # the dead-letter queue.
128
+ #
129
+ # * `denyAll` No source queues can specify this queue as the
130
+ # dead-letter queue.
131
+ #
132
+ # * `byQueue` – Only queues specified by the `sourceQueueArns`
133
+ # parameter can specify this queue as the dead-letter queue.
134
+ #
135
+ # * `sourceQueueArns` – The Amazon Resource Names (ARN)s of the source
136
+ # queues that can specify this queue as the dead-letter queue and
137
+ # redrive messages. You can specify this parameter only when the
138
+ # `redrivePermission` parameter is set to `byQueue`. You can specify
139
+ # up to 10 source queue ARNs. To allow more than 10 source queues to
140
+ # specify dead-letter queues, set the `redrivePermission` parameter
141
+ # to `allowAll`.
142
+ #
143
+ # <note markdown="1"> The dead-letter queue of a FIFO queue must also be a FIFO queue.
144
+ # Similarly, the dead-letter queue of a standard queue must also be a
145
+ # standard queue.
146
+ #
147
+ # </note>
148
+ #
149
+ # The following attributes apply only to [server-side-encryption][4]:
150
+ #
151
+ # * `KmsMasterKeyId` – The ID of an Amazon Web Services managed customer
152
+ # master key (CMK) for Amazon SQS or a custom CMK. For more
153
+ # information, see [Key Terms][5]. While the alias of the Amazon Web
154
+ # Services managed CMK for Amazon SQS is always `alias/aws/sqs`, the
155
+ # alias of a custom CMK can, for example, be `alias/MyAlias `. For
156
+ # more examples, see [KeyId][6] in the *Key Management Service API
157
+ # Reference*.
158
+ #
159
+ # * `KmsDataKeyReusePeriodSeconds` – The length of time, in seconds, for
107
160
  # which Amazon SQS can reuse a [data key][7] to encrypt or decrypt
108
- # messages before calling AWS KMS again. An integer representing
109
- # seconds, between 60 seconds (1 minute) and 86,400 seconds (24
110
- # hours). The default is 300 (5 minutes). A shorter time period
111
- # provides better security but results in more calls to KMS which
112
- # might incur charges after Free Tier. For more information, see [How
113
- # Does the Data Key Reuse Period Work?][8].
161
+ # messages before calling KMS again. An integer representing seconds,
162
+ # between 60 seconds (1 minute) and 86,400 seconds (24 hours).
163
+ # Default: 300 (5 minutes). A shorter time period provides better
164
+ # security but results in more calls to KMS which might incur charges
165
+ # after Free Tier. For more information, see [How Does the Data Key
166
+ # Reuse Period Work?][8]
114
167
  #
115
- # The following attributes apply only to [FIFO (first-in-first-out)
116
- # queues][9]\:
168
+ # * `SqsManagedSseEnabled` Enables server-side queue encryption using
169
+ # SQS owned encryption keys. Only one server-side encryption option is
170
+ # supported per queue (for example, [SSE-KMS][9] or [SSE-SQS][10]).
117
171
  #
118
- # * `FifoQueue` - Designates a queue as FIFO. Valid values: `true`,
119
- # `false`. You can provide this attribute only during queue creation.
120
- # You can't change it for an existing queue. When you set this
121
- # attribute, you must also provide the `MessageGroupId` for your
122
- # messages explicitly.
172
+ # The following attributes apply only to [FIFO (first-in-first-out)
173
+ # queues][11]:
123
174
  #
124
- # For more information, see [FIFO Queue Logic][10] in the *Amazon
125
- # Simple Queue Service Developer Guide*.
175
+ # * `FifoQueue` Designates a queue as FIFO. Valid values are `true`
176
+ # and `false`. If you don't specify the `FifoQueue` attribute, Amazon
177
+ # SQS creates a standard queue. You can provide this attribute only
178
+ # during queue creation. You can't change it for an existing queue.
179
+ # When you set this attribute, you must also provide the
180
+ # `MessageGroupId` for your messages explicitly.
126
181
  #
127
- # * `ContentBasedDeduplication` - Enables content-based deduplication.
128
- # Valid values: `true`, `false`. For more information, see
129
- # [Exactly-Once Processing][11] in the *Amazon Simple Queue Service
182
+ # For more information, see [FIFO queue logic][12] in the *Amazon SQS
130
183
  # Developer Guide*.
131
184
  #
132
- # * Every message must have a unique `MessageDeduplicationId`,
185
+ # * `ContentBasedDeduplication` Enables content-based deduplication.
186
+ # Valid values are `true` and `false`. For more information, see
187
+ # [Exactly-once processing][13] in the *Amazon SQS Developer Guide*.
188
+ # Note the following:
189
+ #
190
+ # * Every message must have a unique `MessageDeduplicationId`.
133
191
  #
134
192
  # * You may provide a `MessageDeduplicationId` explicitly.
135
193
  #
@@ -157,37 +215,88 @@ module Aws::SQS
157
215
  # `MessageDeduplicationId`, the two messages are treated as
158
216
  # duplicates and only one copy of the message is delivered.
159
217
  #
160
- # Any other valid special request parameters (such as the following) are
161
- # ignored:
218
+ # The following attributes apply only to [high throughput for FIFO
219
+ # queues][14]:
220
+ #
221
+ # * `DeduplicationScope` – Specifies whether message deduplication
222
+ # occurs at the message group or queue level. Valid values are
223
+ # `messageGroup` and `queue`.
162
224
  #
163
- # * `ApproximateNumberOfMessages`
225
+ # * `FifoThroughputLimit` – Specifies whether the FIFO queue throughput
226
+ # quota applies to the entire queue or per message group. Valid values
227
+ # are `perQueue` and `perMessageGroupId`. The `perMessageGroupId`
228
+ # value is allowed only when the value for `DeduplicationScope` is
229
+ # `messageGroup`.
164
230
  #
165
- # * `ApproximateNumberOfMessagesDelayed`
231
+ # To enable high throughput for FIFO queues, do the following:
166
232
  #
167
- # * `ApproximateNumberOfMessagesNotVisible`
233
+ # * Set `DeduplicationScope` to `messageGroup`.
168
234
  #
169
- # * `CreatedTimestamp`
235
+ # * Set `FifoThroughputLimit` to `perMessageGroupId`.
170
236
  #
171
- # * `LastModifiedTimestamp`
237
+ # If you set these attributes to anything other than the values shown
238
+ # for enabling high throughput, normal throughput is in effect and
239
+ # deduplication occurs as specified.
172
240
  #
173
- # * `QueueArn`
241
+ # For information on throughput quotas, see [Quotas related to
242
+ # messages][15] in the *Amazon SQS Developer Guide*.
174
243
  #
175
244
  #
176
245
  #
177
- # [1]: http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html
178
- # [2]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html
179
- # [3]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html
180
- # [4]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html
181
- # [5]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms
182
- # [6]: http://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters
183
- # [7]: http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys
184
- # [8]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work
185
- # [9]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html
186
- # [10]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-understanding-logic
187
- # [11]: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-exactly-once-processing
246
+ # [1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html
247
+ # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html
248
+ # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html
249
+ # [4]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html
250
+ # [5]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-sse-key-terms
251
+ # [6]: https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters
252
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys
253
+ # [8]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work
254
+ # [9]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html
255
+ # [10]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html
256
+ # [11]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html
257
+ # [12]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-understanding-logic.html
258
+ # [13]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-exactly-once-processing.html
259
+ # [14]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html
260
+ # [15]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html
261
+ # @option options [Hash<String,String>] :tags
262
+ # Add cost allocation tags to the specified Amazon SQS queue. For an
263
+ # overview, see [Tagging Your Amazon SQS Queues][1] in the *Amazon SQS
264
+ # Developer Guide*.
265
+ #
266
+ # When you use queue tags, keep the following guidelines in mind:
267
+ #
268
+ # * Adding more than 50 tags to a queue isn't recommended.
269
+ #
270
+ # * Tags don't have any semantic meaning. Amazon SQS interprets tags as
271
+ # character strings.
272
+ #
273
+ # * Tags are case-sensitive.
274
+ #
275
+ # * A new tag with a key identical to that of an existing tag overwrites
276
+ # the existing tag.
277
+ #
278
+ # For a full list of tag restrictions, see [Quotas related to queues][2]
279
+ # in the *Amazon SQS Developer Guide*.
280
+ #
281
+ # <note markdown="1"> To be able to tag a queue on creation, you must have the
282
+ # `sqs:CreateQueue` and `sqs:TagQueue` permissions.
283
+ #
284
+ # Cross-account permissions don't apply to this action. For more
285
+ # information, see [Grant cross-account permissions to a role and a
286
+ # username][3] in the *Amazon SQS Developer Guide*.
287
+ #
288
+ # </note>
289
+ #
290
+ #
291
+ #
292
+ # [1]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-tags.html
293
+ # [2]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-limits.html#limits-queues
294
+ # [3]: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html#grant-cross-account-permissions-to-role-and-user-name
188
295
  # @return [Queue]
189
296
  def create_queue(options = {})
190
- resp = @client.create_queue(options)
297
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
298
+ @client.create_queue(options)
299
+ end
191
300
  Queue.new(
192
301
  url: resp.data.queue_url,
193
302
  client: @client
@@ -206,12 +315,15 @@ module Aws::SQS
206
315
  # characters. Valid values: alphanumeric characters, hyphens (`-`), and
207
316
  # underscores (`_`).
208
317
  #
209
- # Queue names are case-sensitive.
318
+ # Queue URLs and names are case-sensitive.
210
319
  # @option options [String] :queue_owner_aws_account_id
211
- # The AWS account ID of the account that created the queue.
320
+ # The Amazon Web Services account ID of the account that created the
321
+ # queue.
212
322
  # @return [Queue]
213
323
  def get_queue_by_name(options = {})
214
- resp = @client.get_queue_url(options)
324
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
325
+ @client.get_queue_url(options)
326
+ end
215
327
  Queue.new(
216
328
  url: resp.data.queue_url,
217
329
  client: @client
@@ -239,19 +351,23 @@ module Aws::SQS
239
351
  # A string to use for filtering the list results. Only those queues
240
352
  # whose name begins with the specified string are returned.
241
353
  #
242
- # Queue names are case-sensitive.
354
+ # Queue URLs and names are case-sensitive.
243
355
  # @return [Queue::Collection]
244
356
  def queues(options = {})
245
357
  batches = Enumerator.new do |y|
246
- batch = []
247
- resp = @client.list_queues(options)
248
- resp.data.queue_urls.each do |q|
249
- batch << Queue.new(
250
- url: q,
251
- client: @client
252
- )
358
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
359
+ @client.list_queues(options)
360
+ end
361
+ resp.each_page do |page|
362
+ batch = []
363
+ page.data.queue_urls.each do |q|
364
+ batch << Queue.new(
365
+ url: q,
366
+ client: @client
367
+ )
368
+ end
369
+ y.yield(batch)
253
370
  end
254
- y.yield(batch)
255
371
  end
256
372
  Queue::Collection.new(batches)
257
373
  end