aws-sdk-dynamodbstreams 1.23.0 → 1.28.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b2682c80b22863a7aadb81dc79da9c479cd34d4303598f231c33f1c4f296072
4
- data.tar.gz: 0b5ad61f61fb7f714bd701aa5eb474478553b1882d6d5a7a1b27762d729d8e6e
3
+ metadata.gz: 1b25ccc8b1bcbb5930ccf0c4fc4a4fc9c19822608814b4da4368f7738635cc15
4
+ data.tar.gz: a7666236432ea4024baa072a22bc8c25a64779e36f89001dce3f73d9625354c9
5
5
  SHA512:
6
- metadata.gz: 9294d1b5827fd3f15322adb6897f65d857ebcc257e576b63fd398b69cf5b0a5b857c4980dc92150d8cea0be5ab67d66375226290a86dde5804b17236b60c36f3
7
- data.tar.gz: 7e989072f69b7863d847be29162b906238223182c31f0ecbb97f880017545580de1d61545e25104ea89d33353ad77714b95cb499f1ddd3ce7dcd103e298b8427
6
+ metadata.gz: 8ff3a9a68ff26170d11101de46a8475275db4ef345f79b6e12d6ad21aad9e08114e9c651931e2744941b56223f46e11e5359864590b296c7cf2bb0e640bc32a9
7
+ data.tar.gz: 3698efd18c17ca973319efa79b2e37297d92d5ec361906e92fe42a2412422a1f44c08e9ea31e9328f7dea4290ce03fbc7773d41c3f645b830572acfc8d3f0020
@@ -48,6 +48,6 @@ require_relative 'aws-sdk-dynamodbstreams/customizations'
48
48
  # @!group service
49
49
  module Aws::DynamoDBStreams
50
50
 
51
- GEM_VERSION = '1.23.0'
51
+ GEM_VERSION = '1.28.0'
52
52
 
53
53
  end
@@ -0,0 +1,40 @@
1
+ module Aws
2
+ module DynamoDBStreams
3
+ # A utility class that translates DynamoDBStream events from Lambda
4
+ # functions into their simple attribute equivalents.
5
+ class AttributeTranslator
6
+ # Parse a DynamoDBStream event hash from Lambda that contains 1 or more
7
+ # records. When using the SDK to retrieve DynamoDB stream records, use the
8
+ # `simple_attributes: true` client option instead.
9
+ #
10
+ # @param [Hash] event A DynamoDBStream event.
11
+ #
12
+ # @example Parse a DynamoDB stream event from Lambda
13
+ # def lambda_handler(event:, context:)
14
+ # records = Aws::DynamoDBStreams::AttributeTranslator.from_event(event)
15
+ # records.each do |record|
16
+ # puts record.dynamodb.new_image
17
+ # # => { "size" => 123, "enabled" => true, ... }
18
+ # end
19
+ # end
20
+ def self.from_event(event)
21
+ return unless event.is_a?(Hash)
22
+
23
+ # TODO: This implementation is slow and inefficient. It would be
24
+ # better to write a switch-case that has similar logic to AttributeValue
25
+ # used in the ValueTranslator. This implementation however provides
26
+ # consistency between both DynamoDB and DynamoDBStreams. The translator
27
+ # only works with shapes and structs and not a regular Ruby hash.
28
+ shape_ref = ClientApi::Shapes::ShapeRef.new(
29
+ shape: ClientApi::GetRecordsOutput
30
+ )
31
+ translator = Plugins::SimpleAttributes::ValueTranslator.new(
32
+ shape_ref, :unmarshal
33
+ )
34
+ parser = Aws::Json::Parser.new(shape_ref)
35
+ input = parser.parse(Aws::Json.dump(event))
36
+ translator.apply(input).records
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bigdecimal'
4
+ require 'stringio'
5
+ require 'set'
6
+
7
+ module Aws
8
+ module DynamoDBStreams
9
+ # @api private
10
+ class AttributeValue
11
+
12
+ def initialize
13
+ @unmarshaler = Unmarshaler.new
14
+ end
15
+
16
+ def unmarshal(value)
17
+ @unmarshaler.format(value)
18
+ end
19
+
20
+ class Unmarshaler
21
+
22
+ def format(obj)
23
+ type, value = extract_type_and_value(obj)
24
+ case type
25
+ when :m
26
+ value.each.with_object({}) do |(k, v), map|
27
+ map[k] = format(v)
28
+ end
29
+ when :l then value.map { |v| format(v) }
30
+ when :s then value
31
+ when :n then BigDecimal(value)
32
+ when :b then StringIO.new(value)
33
+ when :null then nil
34
+ when :bool then value
35
+ when :ss then Set.new(value)
36
+ when :ns then Set.new(value.map { |n| BigDecimal(n) })
37
+ when :bs then Set.new(value.map { |b| StringIO.new(b) })
38
+ else
39
+ raise ArgumentError, "unhandled type #{type.inspect}"
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def extract_type_and_value(obj)
46
+ case obj
47
+ when Hash then obj.to_a.first
48
+ when Struct
49
+ obj.members.each do |key|
50
+ value = obj[key]
51
+ return [key, value] unless value.nil?
52
+ end
53
+ else
54
+ raise ArgumentError, "unhandled type #{obj.inspect}"
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
@@ -29,6 +29,7 @@ require 'aws-sdk-core/plugins/transfer_encoding.rb'
29
29
  require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/signature_v4.rb'
31
31
  require 'aws-sdk-core/plugins/protocols/json_rpc.rb'
32
+ require 'aws-sdk-dynamodbstreams/plugins/simple_attributes.rb'
32
33
 
33
34
  Aws::Plugins::GlobalConfiguration.add_identifier(:dynamodbstreams)
34
35
 
@@ -75,6 +76,7 @@ module Aws::DynamoDBStreams
75
76
  add_plugin(Aws::Plugins::HttpChecksum)
76
77
  add_plugin(Aws::Plugins::SignatureV4)
77
78
  add_plugin(Aws::Plugins::Protocols::JsonRpc)
79
+ add_plugin(Aws::DynamoDBStreams::Plugins::SimpleAttributes)
78
80
 
79
81
  # @overload initialize(options)
80
82
  # @param [Hash] options
@@ -266,6 +268,10 @@ module Aws::DynamoDBStreams
266
268
  #
267
269
  # @option options [String] :session_token
268
270
  #
271
+ # @option options [Boolean] :simple_attributes (false)
272
+ # When enabled, returns DynamoDBStream attribute values using
273
+ # hashes, arrays, sets, integers, floats, booleans, and nil.
274
+ #
269
275
  # @option options [Boolean] :simple_json (false)
270
276
  # Disables request parameter conversion, validation, and formatting.
271
277
  # Also disable response data type conversions. This option is useful
@@ -787,7 +793,7 @@ module Aws::DynamoDBStreams
787
793
  params: params,
788
794
  config: config)
789
795
  context[:gem_name] = 'aws-sdk-dynamodbstreams'
790
- context[:gem_version] = '1.23.0'
796
+ context[:gem_version] = '1.28.0'
791
797
  Seahorse::Client::Request.new(handlers, context)
792
798
  end
793
799
 
@@ -214,6 +214,7 @@ module Aws::DynamoDBStreams
214
214
  "jsonVersion" => "1.0",
215
215
  "protocol" => "json",
216
216
  "serviceFullName" => "Amazon DynamoDB Streams",
217
+ "serviceId" => "DynamoDB Streams",
217
218
  "signatureVersion" => "v4",
218
219
  "signingName" => "dynamodb",
219
220
  "targetPrefix" => "DynamoDBStreams_20120810",
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ # utility classes
4
+ require 'aws-sdk-dynamodbstreams/attribute_translator'
5
+ require 'aws-sdk-dynamodbstreams/attribute_value'
@@ -0,0 +1,152 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module DynamoDBStreams
5
+ module Plugins
6
+ # Simplifies working with Amazon DynamoDBStreams attribute values.
7
+ # Translates attribute values from responses to sensible Ruby natives.
8
+ #
9
+ # This plugin is disabled by default for all {DynamoDBStreams::Client}
10
+ # objects. You can enable this plugin by passing
11
+ # `simple_attributes: false` to the client constructor:
12
+ #
13
+ # ddb = Aws::DynamoDBStreams::Client.new(simple_attributes: true)
14
+ #
15
+ # ## Output Examples
16
+ #
17
+ # With this plugin **enabled**, `simple_attributes: true`:
18
+ #
19
+ # resp = dynamodbstreams.get_records(shard_iterator: iterator)
20
+ # resp.records.first.dynamodb.new_image
21
+ # {
22
+ # id: 'uuid',
23
+ # enabled: true,
24
+ # tags: #<Set: {"attributes", "simple"}>,
25
+ # data: #<StringIO:0x00007fe4061e6bc0>,
26
+ # scores: [0.1e1, 0.2e1, 0.3e1, nil],
27
+ # name: {
28
+ # first: 'John',
29
+ # last: 'Doe',
30
+ # }
31
+ # }
32
+ #
33
+ # With this plugin **disabled**, `simple_attributes: false`:
34
+ #
35
+ # resp = dynamodbstreams.get_records(shard_iterator: iterator)
36
+ # resp.records.first.dynamodb.new_image
37
+ # {
38
+ # "id"=> <struct s='uuid', n=nil, b=nil, ss=nil, ns=nil, bs=nil, m=nil, l=nil, null=nil, bool=nil>
39
+ # "enabled"=> <struct s=nil, n=nil, b=nil, ss=nil, ns=nil, bs=nil, m=nil, l=nil, null=nil, bool=true>
40
+ # ...
41
+ # }
42
+ #
43
+ class SimpleAttributes < Seahorse::Client::Plugin
44
+
45
+ option(:simple_attributes,
46
+ default: false,
47
+ doc_type: 'Boolean',
48
+ docstring: <<-DOCS
49
+ When enabled, returns DynamoDBStream attribute values using
50
+ hashes, arrays, sets, integers, floats, booleans, and nil.
51
+ DOCS
52
+ )
53
+
54
+ def add_handlers(handlers, config)
55
+ if config.simple_attributes
56
+ handlers.add(Handler, step: :initialize, operations: [:get_records])
57
+ end
58
+ end
59
+
60
+ class Handler < Seahorse::Client::Handler
61
+
62
+ def call(context)
63
+ @handler.call(context).on(200) do |response|
64
+ response.data = translate_output(response)
65
+ end
66
+ end
67
+
68
+ private
69
+
70
+ def translate_output(response)
71
+ if shape = response.context.operation.output
72
+ ValueTranslator.new(shape, :unmarshal).apply(response.data)
73
+ else
74
+ response.data
75
+ end
76
+ end
77
+
78
+ end
79
+
80
+ # @api private
81
+ class ValueTranslator
82
+
83
+ include Seahorse::Model::Shapes
84
+
85
+ def self.apply(rules, mode, data)
86
+ new(rules, mode).apply(data)
87
+ end
88
+
89
+ def initialize(rules, mode)
90
+ @rules = rules
91
+ @mode = mode
92
+ end
93
+
94
+ def apply(values)
95
+ structure(@rules, values) if @rules
96
+ end
97
+
98
+ private
99
+
100
+ def structure(ref, values)
101
+ shape = ref.shape
102
+ if values.is_a?(Struct)
103
+ values.members.each.with_object(values.class.new) do |key, st|
104
+ st[key] = translate(shape.member(key), values[key])
105
+ end
106
+ elsif values.is_a?(Hash)
107
+ values.each.with_object({}) do |(key, value), hash|
108
+ hash[key] = translate(shape.member(key), value)
109
+ end
110
+ else
111
+ values
112
+ end
113
+ end
114
+
115
+ def list(ref, values)
116
+ return values unless values.is_a?(Array)
117
+ member_ref = ref.shape.member
118
+ values.inject([]) do |list, value|
119
+ list << translate(member_ref, value)
120
+ end
121
+ end
122
+
123
+ def map(ref, values)
124
+ return values unless values.is_a?(Hash)
125
+ value_ref = ref.shape.value
126
+ values.each.with_object({}) do |(key, value), hash|
127
+ hash[key] = translate(value_ref, value)
128
+ end
129
+ end
130
+
131
+ def translate(ref, value)
132
+ if ClientApi::AttributeValue === ref.shape
133
+ AttributeValue.new.send(@mode, value)
134
+ else
135
+ translate_complex(ref, value)
136
+ end
137
+ end
138
+
139
+ def translate_complex(ref, value)
140
+ case ref.shape
141
+ when StructureShape then structure(ref, value)
142
+ when ListShape then list(ref, value)
143
+ when MapShape then map(ref, value)
144
+ else value
145
+ end
146
+ end
147
+
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -10,53 +10,86 @@
10
10
  module Aws::DynamoDBStreams
11
11
  module Types
12
12
 
13
- # Represents the data for an attribute. You can set one, and only one,
14
- # of the elements.
13
+ # Represents the data for an attribute.
15
14
  #
16
- # Each attribute in an item is a name-value pair. An attribute can be
17
- # single-valued or multi-valued set. For example, a book item can have
18
- # title and authors attributes. Each book has one title but can have
19
- # many authors. The multi-valued attribute is a set; duplicate values
20
- # are not allowed.
15
+ # Each attribute value is described as a name-value pair. The name is
16
+ # the data type, and the value is the data itself.
17
+ #
18
+ # For more information, see [Data Types][1] in the *Amazon DynamoDB
19
+ # Developer Guide*.
20
+ #
21
+ #
22
+ #
23
+ # [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes
21
24
  #
22
25
  # @!attribute [rw] s
23
- # A String data type.
26
+ # An attribute of type String. For example:
27
+ #
28
+ # `"S": "Hello"`
24
29
  # @return [String]
25
30
  #
26
31
  # @!attribute [rw] n
27
- # A Number data type.
32
+ # An attribute of type Number. For example:
33
+ #
34
+ # `"N": "123.45"`
35
+ #
36
+ # Numbers are sent across the network to DynamoDB as strings, to
37
+ # maximize compatibility across languages and libraries. However,
38
+ # DynamoDB treats them as number type attributes for mathematical
39
+ # operations.
28
40
  # @return [String]
29
41
  #
30
42
  # @!attribute [rw] b
31
- # A Binary data type.
43
+ # An attribute of type Binary. For example:
44
+ #
45
+ # `"B": "dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk"`
32
46
  # @return [String]
33
47
  #
34
48
  # @!attribute [rw] ss
35
- # A String Set data type.
49
+ # An attribute of type String Set. For example:
50
+ #
51
+ # `"SS": ["Giraffe", "Hippo" ,"Zebra"]`
36
52
  # @return [Array<String>]
37
53
  #
38
54
  # @!attribute [rw] ns
39
- # A Number Set data type.
55
+ # An attribute of type Number Set. For example:
56
+ #
57
+ # `"NS": ["42.2", "-19", "7.5", "3.14"]`
58
+ #
59
+ # Numbers are sent across the network to DynamoDB as strings, to
60
+ # maximize compatibility across languages and libraries. However,
61
+ # DynamoDB treats them as number type attributes for mathematical
62
+ # operations.
40
63
  # @return [Array<String>]
41
64
  #
42
65
  # @!attribute [rw] bs
43
- # A Binary Set data type.
66
+ # An attribute of type Binary Set. For example:
67
+ #
68
+ # `"BS": ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]`
44
69
  # @return [Array<String>]
45
70
  #
46
71
  # @!attribute [rw] m
47
- # A Map data type.
72
+ # An attribute of type Map. For example:
73
+ #
74
+ # `"M": \{"Name": \{"S": "Joe"\}, "Age": \{"N": "35"\}\}`
48
75
  # @return [Hash<String,Types::AttributeValue>]
49
76
  #
50
77
  # @!attribute [rw] l
51
- # A List data type.
78
+ # An attribute of type List. For example:
79
+ #
80
+ # `"L": [ \{"S": "Cookies"\} , \{"S": "Coffee"\}, \{"N", "3.14159"\}]`
52
81
  # @return [Array<Types::AttributeValue>]
53
82
  #
54
83
  # @!attribute [rw] null
55
- # A Null data type.
84
+ # An attribute of type Null. For example:
85
+ #
86
+ # `"NULL": true`
56
87
  # @return [Boolean]
57
88
  #
58
89
  # @!attribute [rw] bool
59
- # A Boolean data type.
90
+ # An attribute of type Boolean. For example:
91
+ #
92
+ # `"BOOL": true`
60
93
  # @return [Boolean]
61
94
  #
62
95
  # @see http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/AttributeValue AWS API Documentation
@@ -311,30 +344,37 @@ module Aws::DynamoDBStreams
311
344
  # attributes of an index.
312
345
  #
313
346
  # A `KeySchemaElement` represents exactly one attribute of the primary
314
- # key. For example, a simple primary key (partition key) would be
315
- # represented by one `KeySchemaElement`. A composite primary key
316
- # (partition key and sort key) would require one `KeySchemaElement` for
317
- # the partition key, and another `KeySchemaElement` for the sort key.
318
- #
319
- # <note markdown="1"> The partition key of an item is also known as its *hash attribute*.
320
- # The term "hash attribute" derives from DynamoDB's usage of an
321
- # internal hash function to evenly distribute data items across
322
- # partitions, based on their partition key values.
323
- #
324
- # The sort key of an item is also known as its *range attribute*. The
325
- # term "range attribute" derives from the way DynamoDB stores items
326
- # with the same partition key physically close together, in sorted order
327
- # by the sort key value.
347
+ # key. For example, a simple primary key would be represented by one
348
+ # `KeySchemaElement` (for the partition key). A composite primary key
349
+ # would require one `KeySchemaElement` for the partition key, and
350
+ # another `KeySchemaElement` for the sort key.
328
351
  #
329
- # </note>
352
+ # A `KeySchemaElement` must be a scalar, top-level attribute (not a
353
+ # nested attribute). The data type must be one of String, Number, or
354
+ # Binary. The attribute cannot be nested within a List or a Map.
330
355
  #
331
356
  # @!attribute [rw] attribute_name
332
357
  # The name of a key attribute.
333
358
  # @return [String]
334
359
  #
335
360
  # @!attribute [rw] key_type
336
- # The attribute data, consisting of the data type and the attribute
337
- # value itself.
361
+ # The role that this key attribute will assume:
362
+ #
363
+ # * `HASH` - partition key
364
+ #
365
+ # * `RANGE` - sort key
366
+ #
367
+ # <note markdown="1"> The partition key of an item is also known as its *hash attribute*.
368
+ # The term "hash attribute" derives from DynamoDB's usage of an
369
+ # internal hash function to evenly distribute data items across
370
+ # partitions, based on their partition key values.
371
+ #
372
+ # The sort key of an item is also known as its *range attribute*. The
373
+ # term "range attribute" derives from the way DynamoDB stores items
374
+ # with the same partition key physically close together, in sorted
375
+ # order by the sort key value.
376
+ #
377
+ # </note>
338
378
  # @return [String]
339
379
  #
340
380
  # @see http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/KeySchemaElement AWS API Documentation
@@ -346,16 +386,20 @@ module Aws::DynamoDBStreams
346
386
  include Aws::Structure
347
387
  end
348
388
 
349
- # Your request rate is too high. The AWS SDKs for DynamoDB automatically
350
- # retry requests that receive this exception. Your request is eventually
351
- # successful, unless your retry queue is too large to finish. Reduce the
352
- # frequency of requests and use exponential backoff. For more
353
- # information, go to [Error Retries and Exponential Backoff][1] in the
354
- # *Amazon DynamoDB Developer Guide*.
389
+ # There is no limit to the number of daily on-demand backups that can be
390
+ # taken.
355
391
  #
392
+ # Up to 50 simultaneous table operations are allowed per account. These
393
+ # operations include `CreateTable`, `UpdateTable`,
394
+ # `DeleteTable`,`UpdateTimeToLive`, `RestoreTableFromBackup`, and
395
+ # `RestoreTableToPointInTime`.
356
396
  #
397
+ # The only exception is when you are creating a table with one or more
398
+ # secondary indexes. You can have up to 25 such requests running at a
399
+ # time; however, if the table or index specifications are complex,
400
+ # DynamoDB might temporarily reduce the number of concurrent operations.
357
401
  #
358
- # [1]: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#APIRetries
402
+ # There is a soft account quota of 256 tables.
359
403
  #
360
404
  # @!attribute [rw] message
361
405
  # Too many operations for a given subscriber.
@@ -506,7 +550,9 @@ module Aws::DynamoDBStreams
506
550
  include Aws::Structure
507
551
  end
508
552
 
509
- # The operation tried to access a nonexistent stream.
553
+ # The operation tried to access a nonexistent table or index. The
554
+ # resource might not be specified correctly, or its status might not be
555
+ # `ACTIVE`.
510
556
  #
511
557
  # @!attribute [rw] message
512
558
  # The resource which is being requested does not exist.
@@ -524,11 +570,13 @@ module Aws::DynamoDBStreams
524
570
  # contained within a shard.
525
571
  #
526
572
  # @!attribute [rw] starting_sequence_number
527
- # The first sequence number.
573
+ # The first sequence number for the stream records contained within a
574
+ # shard. String contains numeric characters only.
528
575
  # @return [String]
529
576
  #
530
577
  # @!attribute [rw] ending_sequence_number
531
- # The last sequence number.
578
+ # The last sequence number for the stream records contained within a
579
+ # shard. String contains numeric characters only.
532
580
  # @return [String]
533
581
  #
534
582
  # @see http://docs.aws.amazon.com/goto/WebAPI/streams-dynamodb-2012-08-10/SequenceNumberRange AWS API Documentation
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-dynamodbstreams
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.23.0
4
+ version: 1.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-15 00:00:00.000000000 Z
11
+ date: 2021-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.99.0
22
+ version: 3.112.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.99.0
32
+ version: 3.112.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: aws-sigv4
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -53,10 +53,13 @@ extensions: []
53
53
  extra_rdoc_files: []
54
54
  files:
55
55
  - lib/aws-sdk-dynamodbstreams.rb
56
+ - lib/aws-sdk-dynamodbstreams/attribute_translator.rb
57
+ - lib/aws-sdk-dynamodbstreams/attribute_value.rb
56
58
  - lib/aws-sdk-dynamodbstreams/client.rb
57
59
  - lib/aws-sdk-dynamodbstreams/client_api.rb
58
60
  - lib/aws-sdk-dynamodbstreams/customizations.rb
59
61
  - lib/aws-sdk-dynamodbstreams/errors.rb
62
+ - lib/aws-sdk-dynamodbstreams/plugins/simple_attributes.rb
60
63
  - lib/aws-sdk-dynamodbstreams/resource.rb
61
64
  - lib/aws-sdk-dynamodbstreams/types.rb
62
65
  homepage: https://github.com/aws/aws-sdk-ruby