aws-sdk-kms 1.72.0 → 1.96.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,7 @@ require 'aws-sdk-core/plugins/endpoint_pattern.rb'
22
22
  require 'aws-sdk-core/plugins/response_paging.rb'
23
23
  require 'aws-sdk-core/plugins/stub_responses.rb'
24
24
  require 'aws-sdk-core/plugins/idempotency_token.rb'
25
+ require 'aws-sdk-core/plugins/invocation_id.rb'
25
26
  require 'aws-sdk-core/plugins/jsonvalue_converter.rb'
26
27
  require 'aws-sdk-core/plugins/client_metrics_plugin.rb'
27
28
  require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb'
@@ -31,11 +32,10 @@ require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
32
  require 'aws-sdk-core/plugins/request_compression.rb'
32
33
  require 'aws-sdk-core/plugins/defaults_mode.rb'
33
34
  require 'aws-sdk-core/plugins/recursion_detection.rb'
35
+ require 'aws-sdk-core/plugins/telemetry.rb'
34
36
  require 'aws-sdk-core/plugins/sign.rb'
35
37
  require 'aws-sdk-core/plugins/protocols/json_rpc.rb'
36
38
 
37
- Aws::Plugins::GlobalConfiguration.add_identifier(:kms)
38
-
39
39
  module Aws::KMS
40
40
  # An API client for KMS. To construct a client, you need to configure a `:region` and `:credentials`.
41
41
  #
@@ -72,6 +72,7 @@ module Aws::KMS
72
72
  add_plugin(Aws::Plugins::ResponsePaging)
73
73
  add_plugin(Aws::Plugins::StubResponses)
74
74
  add_plugin(Aws::Plugins::IdempotencyToken)
75
+ add_plugin(Aws::Plugins::InvocationId)
75
76
  add_plugin(Aws::Plugins::JsonvalueConverter)
76
77
  add_plugin(Aws::Plugins::ClientMetricsPlugin)
77
78
  add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
@@ -81,12 +82,18 @@ module Aws::KMS
81
82
  add_plugin(Aws::Plugins::RequestCompression)
82
83
  add_plugin(Aws::Plugins::DefaultsMode)
83
84
  add_plugin(Aws::Plugins::RecursionDetection)
85
+ add_plugin(Aws::Plugins::Telemetry)
84
86
  add_plugin(Aws::Plugins::Sign)
85
87
  add_plugin(Aws::Plugins::Protocols::JsonRpc)
86
88
  add_plugin(Aws::KMS::Plugins::Endpoints)
87
89
 
88
90
  # @overload initialize(options)
89
91
  # @param [Hash] options
92
+ #
93
+ # @option options [Array<Seahorse::Client::Plugin>] :plugins ([]])
94
+ # A list of plugins to apply to the client. Each plugin is either a
95
+ # class name or an instance of a plugin class.
96
+ #
90
97
  # @option options [required, Aws::CredentialProvider] :credentials
91
98
  # Your AWS credentials. This can be an instance of any one of the
92
99
  # following classes:
@@ -121,13 +128,15 @@ module Aws::KMS
121
128
  # locations will be searched for credentials:
122
129
  #
123
130
  # * `Aws.config[:credentials]`
124
- # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
125
- # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
131
+ # * The `:access_key_id`, `:secret_access_key`, `:session_token`, and
132
+ # `:account_id` options.
133
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'],
134
+ # ENV['AWS_SESSION_TOKEN'], and ENV['AWS_ACCOUNT_ID']
126
135
  # * `~/.aws/credentials`
127
136
  # * `~/.aws/config`
128
137
  # * EC2/ECS IMDS instance profile - When used by default, the timeouts
129
138
  # are very aggressive. Construct and pass an instance of
130
- # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to
139
+ # `Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
131
140
  # enable retries and extended timeouts. Instance profile credential
132
141
  # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED']
133
142
  # to true.
@@ -146,6 +155,8 @@ module Aws::KMS
146
155
  #
147
156
  # @option options [String] :access_key_id
148
157
  #
158
+ # @option options [String] :account_id
159
+ #
149
160
  # @option options [Boolean] :active_endpoint_cache (false)
150
161
  # When set to `true`, a thread polling for endpoints will be running in
151
162
  # the background every 60 secs (default). Defaults to `false`.
@@ -196,10 +207,16 @@ module Aws::KMS
196
207
  # When set to 'true' the request body will not be compressed
197
208
  # for supported operations.
198
209
  #
199
- # @option options [String] :endpoint
200
- # The client endpoint is normally constructed from the `:region`
201
- # option. You should only configure an `:endpoint` when connecting
202
- # to test or custom endpoints. This should be a valid HTTP(S) URI.
210
+ # @option options [String, URI::HTTPS, URI::HTTP] :endpoint
211
+ # Normally you should not configure the `:endpoint` option
212
+ # directly. This is normally constructed from the `:region`
213
+ # option. Configuring `:endpoint` is normally reserved for
214
+ # connecting to test or custom endpoints. The endpoint should
215
+ # be a URI formatted like:
216
+ #
217
+ # 'http://example.com'
218
+ # 'https://example.com'
219
+ # 'http://example.com:123'
203
220
  #
204
221
  # @option options [Integer] :endpoint_cache_max_entries (1000)
205
222
  # Used for the maximum size limit of the LRU cache storing endpoints data
@@ -289,25 +306,31 @@ module Aws::KMS
289
306
  # throttling. This is a provisional mode that may change behavior
290
307
  # in the future.
291
308
  #
292
- #
293
309
  # @option options [String] :sdk_ua_app_id
294
310
  # A unique and opaque application ID that is appended to the
295
- # User-Agent header as app/<sdk_ua_app_id>. It should have a
296
- # maximum length of 50.
311
+ # User-Agent header as app/sdk_ua_app_id. It should have a
312
+ # maximum length of 50. This variable is sourced from environment
313
+ # variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id.
297
314
  #
298
315
  # @option options [String] :secret_access_key
299
316
  #
300
317
  # @option options [String] :session_token
301
318
  #
319
+ # @option options [Array] :sigv4a_signing_region_set
320
+ # A list of regions that should be signed with SigV4a signing. When
321
+ # not passed, a default `:sigv4a_signing_region_set` is searched for
322
+ # in the following locations:
323
+ #
324
+ # * `Aws.config[:sigv4a_signing_region_set]`
325
+ # * `ENV['AWS_SIGV4A_SIGNING_REGION_SET']`
326
+ # * `~/.aws/config`
327
+ #
302
328
  # @option options [Boolean] :simple_json (false)
303
329
  # Disables request parameter conversion, validation, and formatting.
304
- # Also disable response data type conversions. This option is useful
305
- # when you want to ensure the highest level of performance by
306
- # avoiding overhead of walking request parameters and response data
307
- # structures.
308
- #
309
- # When `:simple_json` is enabled, the request parameters hash must
310
- # be formatted exactly as the DynamoDB API expects.
330
+ # Also disables response data type conversions. The request parameters
331
+ # hash must be formatted exactly as the API expects.This option is useful
332
+ # when you want to ensure the highest level of performance by avoiding
333
+ # overhead of walking request parameters and response data structures.
311
334
  #
312
335
  # @option options [Boolean] :stub_responses (false)
313
336
  # Causes the client to return stubbed responses. By default
@@ -318,6 +341,16 @@ module Aws::KMS
318
341
  # ** Please note ** When response stubbing is enabled, no HTTP
319
342
  # requests are made, and retries are disabled.
320
343
  #
344
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
345
+ # Allows you to provide a telemetry provider, which is used to
346
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
347
+ # will not record or emit any telemetry data. The SDK supports the
348
+ # following telemetry providers:
349
+ #
350
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
351
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
352
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
353
+ #
321
354
  # @option options [Aws::TokenProvider] :token_provider
322
355
  # A Bearer Token Provider. This can be an instance of any one of the
323
356
  # following classes:
@@ -345,52 +378,75 @@ module Aws::KMS
345
378
  # sending the request.
346
379
  #
347
380
  # @option options [Aws::KMS::EndpointProvider] :endpoint_provider
348
- # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::KMS::EndpointParameters`
349
- #
350
- # @option options [URI::HTTP,String] :http_proxy A proxy to send
351
- # requests through. Formatted like 'http://proxy.com:123'.
352
- #
353
- # @option options [Float] :http_open_timeout (15) The number of
354
- # seconds to wait when opening a HTTP session before raising a
355
- # `Timeout::Error`.
356
- #
357
- # @option options [Float] :http_read_timeout (60) The default
358
- # number of seconds to wait for response data. This value can
359
- # safely be set per-request on the session.
360
- #
361
- # @option options [Float] :http_idle_timeout (5) The number of
362
- # seconds a connection is allowed to sit idle before it is
363
- # considered stale. Stale connections are closed and removed
364
- # from the pool before making a request.
381
+ # The endpoint provider used to resolve endpoints. Any object that responds to
382
+ # `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to
383
+ # `Aws::KMS::EndpointParameters`.
384
+ #
385
+ # @option options [Float] :http_continue_timeout (1)
386
+ # The number of seconds to wait for a 100-continue response before sending the
387
+ # request body. This option has no effect unless the request has "Expect"
388
+ # header set to "100-continue". Defaults to `nil` which disables this
389
+ # behaviour. This value can safely be set per request on the session.
390
+ #
391
+ # @option options [Float] :http_idle_timeout (5)
392
+ # The number of seconds a connection is allowed to sit idle before it
393
+ # is considered stale. Stale connections are closed and removed from the
394
+ # pool before making a request.
395
+ #
396
+ # @option options [Float] :http_open_timeout (15)
397
+ # The default number of seconds to wait for response data.
398
+ # This value can safely be set per-request on the session.
399
+ #
400
+ # @option options [URI::HTTP,String] :http_proxy
401
+ # A proxy to send requests through. Formatted like 'http://proxy.com:123'.
402
+ #
403
+ # @option options [Float] :http_read_timeout (60)
404
+ # The default number of seconds to wait for response data.
405
+ # This value can safely be set per-request on the session.
406
+ #
407
+ # @option options [Boolean] :http_wire_trace (false)
408
+ # When `true`, HTTP debug output will be sent to the `:logger`.
409
+ #
410
+ # @option options [Proc] :on_chunk_received
411
+ # When a Proc object is provided, it will be used as callback when each chunk
412
+ # of the response body is received. It provides three arguments: the chunk,
413
+ # the number of bytes received, and the total number of
414
+ # bytes in the response (or nil if the server did not send a `content-length`).
415
+ #
416
+ # @option options [Proc] :on_chunk_sent
417
+ # When a Proc object is provided, it will be used as callback when each chunk
418
+ # of the request body is sent. It provides three arguments: the chunk,
419
+ # the number of bytes read from the body, and the total number of
420
+ # bytes in the body.
421
+ #
422
+ # @option options [Boolean] :raise_response_errors (true)
423
+ # When `true`, response errors are raised.
424
+ #
425
+ # @option options [String] :ssl_ca_bundle
426
+ # Full path to the SSL certificate authority bundle file that should be used when
427
+ # verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
428
+ # `:ssl_ca_directory` the the system default will be used if available.
429
+ #
430
+ # @option options [String] :ssl_ca_directory
431
+ # Full path of the directory that contains the unbundled SSL certificate
432
+ # authority files for verifying peer certificates. If you do
433
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
434
+ # default will be used if available.
365
435
  #
366
- # @option options [Float] :http_continue_timeout (1) The number of
367
- # seconds to wait for a 100-continue response before sending the
368
- # request body. This option has no effect unless the request has
369
- # "Expect" header set to "100-continue". Defaults to `nil` which
370
- # disables this behaviour. This value can safely be set per
371
- # request on the session.
436
+ # @option options [String] :ssl_ca_store
437
+ # Sets the X509::Store to verify peer certificate.
372
438
  #
373
- # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout
374
- # in seconds.
439
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
440
+ # Sets a client certificate when creating http connections.
375
441
  #
376
- # @option options [Boolean] :http_wire_trace (false) When `true`,
377
- # HTTP debug output will be sent to the `:logger`.
442
+ # @option options [OpenSSL::PKey] :ssl_key
443
+ # Sets a client key when creating http connections.
378
444
  #
379
- # @option options [Boolean] :ssl_verify_peer (true) When `true`,
380
- # SSL peer certificates are verified when establishing a
381
- # connection.
445
+ # @option options [Float] :ssl_timeout
446
+ # Sets the SSL timeout in seconds
382
447
  #
383
- # @option options [String] :ssl_ca_bundle Full path to the SSL
384
- # certificate authority bundle file that should be used when
385
- # verifying peer certificates. If you do not pass
386
- # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default
387
- # will be used if available.
388
- #
389
- # @option options [String] :ssl_ca_directory Full path of the
390
- # directory that contains the unbundled SSL certificate
391
- # authority files for verifying peer certificates. If you do
392
- # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the
393
- # system default will be used if available.
448
+ # @option options [Boolean] :ssl_verify_peer (true)
449
+ # When `true`, SSL peer certificates are verified when establishing a connection.
394
450
  #
395
451
  def initialize(*args)
396
452
  super
@@ -417,11 +473,15 @@ module Aws::KMS
417
473
  #
418
474
  # **Related operations**: ScheduleKeyDeletion
419
475
  #
476
+ # **Eventual consistency**: The KMS API follows an eventual consistency
477
+ # model. For more information, see [KMS eventual consistency][4].
478
+ #
420
479
  #
421
480
  #
422
481
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html
423
482
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
424
483
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
484
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
425
485
  #
426
486
  # @option params [required, String] :key_id
427
487
  # Identifies the KMS key whose deletion is being canceled.
@@ -564,6 +624,9 @@ module Aws::KMS
564
624
  #
565
625
  # * UpdateCustomKeyStore
566
626
  #
627
+ # **Eventual consistency**: The KMS API follows an eventual consistency
628
+ # model. For more information, see [KMS eventual consistency][8].
629
+ #
567
630
  #
568
631
  #
569
632
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
@@ -573,6 +636,7 @@ module Aws::KMS
573
636
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html
574
637
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/xks-troubleshooting.html
575
638
  # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
639
+ # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
576
640
  #
577
641
  # @option params [required, String] :custom_key_store_id
578
642
  # Enter the key store ID of the custom key store that you want to
@@ -664,6 +728,9 @@ module Aws::KMS
664
728
  #
665
729
  # * UpdateAlias
666
730
  #
731
+ # **Eventual consistency**: The KMS API follows an eventual consistency
732
+ # model. For more information, see [KMS eventual consistency][7].
733
+ #
667
734
  #
668
735
  #
669
736
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/abac.html
@@ -672,6 +739,7 @@ module Aws::KMS
672
739
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
673
740
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
674
741
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access
742
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
675
743
  #
676
744
  # @option params [required, String] :alias_name
677
745
  # Specifies the alias name. This value must begin with `alias/` followed
@@ -829,6 +897,9 @@ module Aws::KMS
829
897
  #
830
898
  # * UpdateCustomKeyStore
831
899
  #
900
+ # **Eventual consistency**: The KMS API follows an eventual consistency
901
+ # model. For more information, see [KMS eventual consistency][10].
902
+ #
832
903
  #
833
904
  #
834
905
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
@@ -840,6 +911,7 @@ module Aws::KMS
840
911
  # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html
841
912
  # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/xks-troubleshooting.html
842
913
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
914
+ # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
843
915
  #
844
916
  # @option params [required, String] :custom_key_store_name
845
917
  # Specifies a friendly name for the custom key store. The name must be
@@ -936,7 +1008,7 @@ module Aws::KMS
936
1008
  #
937
1009
  # * An external key store with `PUBLIC_ENDPOINT` connectivity cannot use
938
1010
  # the same `XksProxyUriEndpoint` value as an external key store with
939
- # `VPC_ENDPOINT_SERVICE` connectivity in the same Amazon Web Services
1011
+ # `VPC_ENDPOINT_SERVICE` connectivity in this Amazon Web Services
940
1012
  # Region.
941
1013
  #
942
1014
  # * Each external key store with `VPC_ENDPOINT_SERVICE` connectivity
@@ -1184,6 +1256,9 @@ module Aws::KMS
1184
1256
  #
1185
1257
  # * RevokeGrant
1186
1258
  #
1259
+ # **Eventual consistency**: The KMS API follows an eventual consistency
1260
+ # model. For more information, see [KMS eventual consistency][6].
1261
+ #
1187
1262
  #
1188
1263
  #
1189
1264
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
@@ -1191,6 +1266,7 @@ module Aws::KMS
1191
1266
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
1192
1267
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
1193
1268
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
1269
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
1194
1270
  #
1195
1271
  # @option params [required, String] :key_id
1196
1272
  # Identifies the KMS key for the grant. The grant gives principals
@@ -1376,7 +1452,7 @@ module Aws::KMS
1376
1452
  # key_id: "KeyIdType", # required
1377
1453
  # grantee_principal: "PrincipalIdType", # required
1378
1454
  # retiring_principal: "PrincipalIdType",
1379
- # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext, GenerateMac, VerifyMac
1455
+ # operations: ["Decrypt"], # required, accepts Decrypt, Encrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ReEncryptFrom, ReEncryptTo, Sign, Verify, GetPublicKey, CreateGrant, RetireGrant, DescribeKey, GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext, GenerateMac, VerifyMac, DeriveSharedSecret
1380
1456
  # constraints: {
1381
1457
  # encryption_context_subset: {
1382
1458
  # "EncryptionContextKey" => "EncryptionContextValue",
@@ -1463,12 +1539,17 @@ module Aws::KMS
1463
1539
  # key pair, or an SM2 key pair (China Regions only). The private key
1464
1540
  # in an asymmetric KMS key never leaves KMS unencrypted. However, you
1465
1541
  # can use the GetPublicKey operation to download the public key so it
1466
- # can be used outside of KMS. KMS keys with RSA or SM2 key pairs can
1467
- # be used to encrypt or decrypt data or sign and verify messages (but
1468
- # not both). KMS keys with ECC key pairs can be used only to sign and
1469
- # verify messages. For information about asymmetric KMS keys, see
1470
- # [Asymmetric KMS keys][3] in the *Key Management Service Developer
1471
- # Guide*.
1542
+ # can be used outside of KMS. Each KMS key can have only one key
1543
+ # usage. KMS keys with RSA key pairs can be used to encrypt and
1544
+ # decrypt data or sign and verify messages (but not both). KMS keys
1545
+ # with NIST-recommended ECC key pairs can be used to sign and verify
1546
+ # messages or derive shared secrets (but not both). KMS keys with
1547
+ # `ECC_SECG_P256K1` can be used only to sign and verify messages. KMS
1548
+ # keys with SM2 key pairs (China Regions only) can be used to either
1549
+ # encrypt and decrypt data, sign and verify messages, or derive shared
1550
+ # secrets (you must choose one key usage type). For information about
1551
+ # asymmetric KMS keys, see [Asymmetric KMS keys][3] in the *Key
1552
+ # Management Service Developer Guide*.
1472
1553
  #
1473
1554
  #
1474
1555
  #
@@ -1609,6 +1690,9 @@ module Aws::KMS
1609
1690
  #
1610
1691
  # * ScheduleKeyDeletion
1611
1692
  #
1693
+ # **Eventual consistency**: The KMS API follows an eventual consistency
1694
+ # model. For more information, see [KMS eventual consistency][12].
1695
+ #
1612
1696
  #
1613
1697
  #
1614
1698
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms-keys
@@ -1622,6 +1706,7 @@ module Aws::KMS
1622
1706
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html
1623
1707
  # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
1624
1708
  # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policy-example-create-key
1709
+ # [12]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
1625
1710
  #
1626
1711
  # @option params [String] :policy
1627
1712
  # The key policy to attach to the KMS key.
@@ -1686,14 +1771,17 @@ module Aws::KMS
1686
1771
  #
1687
1772
  # * For HMAC KMS keys (symmetric), specify `GENERATE_VERIFY_MAC`.
1688
1773
  #
1689
- # * For asymmetric KMS keys with RSA key material, specify
1774
+ # * For asymmetric KMS keys with RSA key pairs, specify
1690
1775
  # `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
1691
1776
  #
1692
- # * For asymmetric KMS keys with ECC key material, specify
1777
+ # * For asymmetric KMS keys with NIST-recommended elliptic curve key
1778
+ # pairs, specify `SIGN_VERIFY` or `KEY_AGREEMENT`.
1779
+ #
1780
+ # * For asymmetric KMS keys with `ECC_SECG_P256K1` key pairs specify
1693
1781
  # `SIGN_VERIFY`.
1694
1782
  #
1695
- # * For asymmetric KMS keys with SM2 key material (China Regions only),
1696
- # specify `ENCRYPT_DECRYPT` or `SIGN_VERIFY`.
1783
+ # * For asymmetric KMS keys with SM2 key pairs (China Regions only),
1784
+ # specify `ENCRYPT_DECRYPT`, `SIGN_VERIFY`, or `KEY_AGREEMENT`.
1697
1785
  #
1698
1786
  #
1699
1787
  #
@@ -1735,7 +1823,6 @@ module Aws::KMS
1735
1823
  # * `SYMMETRIC_DEFAULT`
1736
1824
  #
1737
1825
  # ^
1738
- #
1739
1826
  # * HMAC keys (symmetric)
1740
1827
  #
1741
1828
  # * `HMAC_224`
@@ -1745,32 +1832,31 @@ module Aws::KMS
1745
1832
  # * `HMAC_384`
1746
1833
  #
1747
1834
  # * `HMAC_512`
1748
- #
1749
- # * Asymmetric RSA key pairs
1835
+ # * Asymmetric RSA key pairs (encryption and decryption -or- signing and
1836
+ # verification)
1750
1837
  #
1751
1838
  # * `RSA_2048`
1752
1839
  #
1753
1840
  # * `RSA_3072`
1754
1841
  #
1755
1842
  # * `RSA_4096`
1756
- #
1757
- # * Asymmetric NIST-recommended elliptic curve key pairs
1843
+ # * Asymmetric NIST-recommended elliptic curve key pairs (signing and
1844
+ # verification -or- deriving shared secrets)
1758
1845
  #
1759
1846
  # * `ECC_NIST_P256` (secp256r1)
1760
1847
  #
1761
1848
  # * `ECC_NIST_P384` (secp384r1)
1762
1849
  #
1763
1850
  # * `ECC_NIST_P521` (secp521r1)
1764
- #
1765
- # * Other asymmetric elliptic curve key pairs
1851
+ # * Other asymmetric elliptic curve key pairs (signing and verification)
1766
1852
  #
1767
1853
  # * `ECC_SECG_P256K1` (secp256k1), commonly used for cryptocurrencies.
1768
1854
  #
1769
1855
  # ^
1856
+ # * SM2 key pairs (encryption and decryption -or- signing and
1857
+ # verification -or- deriving shared secrets)
1770
1858
  #
1771
- # * SM2 key pairs (China Regions only)
1772
- #
1773
- # * `SM2`
1859
+ # * `SM2` (China Regions only)
1774
1860
  #
1775
1861
  # ^
1776
1862
  #
@@ -1843,12 +1929,13 @@ module Aws::KMS
1843
1929
  # Management Service Developer Guide*.
1844
1930
  #
1845
1931
  # Use this parameter only when you intend to prevent the principal that
1846
- # is making the request from making a subsequent PutKeyPolicy request on
1847
- # the KMS key.
1932
+ # is making the request from making a subsequent [PutKeyPolicy][2]
1933
+ # request on the KMS key.
1848
1934
  #
1849
1935
  #
1850
1936
  #
1851
1937
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key
1938
+ # [2]: https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html
1852
1939
  #
1853
1940
  # @option params [Array<Types::Tag>] :tags
1854
1941
  # Assigns one or more tags to the KMS key. Use this parameter to tag the
@@ -2233,7 +2320,7 @@ module Aws::KMS
2233
2320
  # resp = client.create_key({
2234
2321
  # policy: "PolicyType",
2235
2322
  # description: "DescriptionType",
2236
- # key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT, GENERATE_VERIFY_MAC
2323
+ # key_usage: "SIGN_VERIFY", # accepts SIGN_VERIFY, ENCRYPT_DECRYPT, GENERATE_VERIFY_MAC, KEY_AGREEMENT
2237
2324
  # customer_master_key_spec: "RSA_2048", # accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1, SYMMETRIC_DEFAULT, HMAC_224, HMAC_256, HMAC_384, HMAC_512, SM2
2238
2325
  # key_spec: "RSA_2048", # accepts RSA_2048, RSA_3072, RSA_4096, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1, SYMMETRIC_DEFAULT, HMAC_224, HMAC_256, HMAC_384, HMAC_512, SM2
2239
2326
  # origin: "AWS_KMS", # accepts AWS_KMS, EXTERNAL, AWS_CLOUDHSM, EXTERNAL_KEY_STORE
@@ -2257,7 +2344,7 @@ module Aws::KMS
2257
2344
  # resp.key_metadata.creation_date #=> Time
2258
2345
  # resp.key_metadata.enabled #=> Boolean
2259
2346
  # resp.key_metadata.description #=> String
2260
- # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
2347
+ # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
2261
2348
  # resp.key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
2262
2349
  # resp.key_metadata.deletion_date #=> Time
2263
2350
  # resp.key_metadata.valid_to #=> Time
@@ -2272,6 +2359,8 @@ module Aws::KMS
2272
2359
  # resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
2273
2360
  # resp.key_metadata.signing_algorithms #=> Array
2274
2361
  # resp.key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
2362
+ # resp.key_metadata.key_agreement_algorithms #=> Array
2363
+ # resp.key_metadata.key_agreement_algorithms[0] #=> String, one of "ECDH"
2275
2364
  # resp.key_metadata.multi_region #=> Boolean
2276
2365
  # resp.key_metadata.multi_region_configuration.multi_region_key_type #=> String, one of "PRIMARY", "REPLICA"
2277
2366
  # resp.key_metadata.multi_region_configuration.primary_key.arn #=> String
@@ -2350,10 +2439,10 @@ module Aws::KMS
2350
2439
  # parameter to provide the attestation document for the enclave. Instead
2351
2440
  # of the plaintext data, the response includes the plaintext data
2352
2441
  # encrypted with the public key from the attestation document
2353
- # (`CiphertextForRecipient`).For information about the interaction
2442
+ # (`CiphertextForRecipient`). For information about the interaction
2354
2443
  # between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon
2355
2444
  # Web Services Nitro Enclaves uses KMS][7] in the *Key Management
2356
- # Service Developer Guide*..
2445
+ # Service Developer Guide*.
2357
2446
  #
2358
2447
  # The KMS key that you use for this operation must be in a compatible
2359
2448
  # key state. For details, see [Key states of KMS keys][8] in the *Key
@@ -2375,6 +2464,9 @@ module Aws::KMS
2375
2464
  #
2376
2465
  # * ReEncrypt
2377
2466
  #
2467
+ # **Eventual consistency**: The KMS API follows an eventual consistency
2468
+ # model. For more information, see [KMS eventual consistency][10].
2469
+ #
2378
2470
  #
2379
2471
  #
2380
2472
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
@@ -2386,6 +2478,7 @@ module Aws::KMS
2386
2478
  # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html
2387
2479
  # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
2388
2480
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
2481
+ # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
2389
2482
  #
2390
2483
  # @option params [required, String, StringIO, File] :ciphertext_blob
2391
2484
  # Ciphertext to be decrypted. The blob includes metadata.
@@ -2492,7 +2585,7 @@ module Aws::KMS
2492
2585
  #
2493
2586
  #
2494
2587
  #
2495
- # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-how.html#term-attestdoc
2588
+ # [1]: https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-concepts.html#term-attestdoc
2496
2589
  # [2]: https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk
2497
2590
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html
2498
2591
  #
@@ -2643,11 +2736,15 @@ module Aws::KMS
2643
2736
  #
2644
2737
  # * UpdateAlias
2645
2738
  #
2739
+ # **Eventual consistency**: The KMS API follows an eventual consistency
2740
+ # model. For more information, see [KMS eventual consistency][4].
2741
+ #
2646
2742
  #
2647
2743
  #
2648
2744
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/abac.html
2649
2745
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
2650
2746
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access
2747
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
2651
2748
  #
2652
2749
  # @option params [required, String] :alias_name
2653
2750
  # The alias to be deleted. The alias name must begin with `alias/`
@@ -2734,6 +2831,9 @@ module Aws::KMS
2734
2831
  #
2735
2832
  # * UpdateCustomKeyStore
2736
2833
  #
2834
+ # **Eventual consistency**: The KMS API follows an eventual consistency
2835
+ # model. For more information, see [KMS eventual consistency][6].
2836
+ #
2737
2837
  #
2738
2838
  #
2739
2839
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
@@ -2741,6 +2841,7 @@ module Aws::KMS
2741
2841
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations
2742
2842
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#fix-keystore-orphaned-key
2743
2843
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
2844
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
2744
2845
  #
2745
2846
  # @option params [required, String] :custom_key_store_id
2746
2847
  # Enter the ID of the custom key store you want to delete. To find the
@@ -2804,11 +2905,15 @@ module Aws::KMS
2804
2905
  #
2805
2906
  # * ImportKeyMaterial
2806
2907
  #
2908
+ # **Eventual consistency**: The KMS API follows an eventual consistency
2909
+ # model. For more information, see [KMS eventual consistency][4].
2910
+ #
2807
2911
  #
2808
2912
  #
2809
2913
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
2810
2914
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
2811
2915
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
2916
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
2812
2917
  #
2813
2918
  # @option params [required, String] :key_id
2814
2919
  # Identifies the KMS key from which you are deleting imported key
@@ -2852,6 +2957,270 @@ module Aws::KMS
2852
2957
  req.send_request(options)
2853
2958
  end
2854
2959
 
2960
+ # Derives a shared secret using a key agreement algorithm.
2961
+ #
2962
+ # <note markdown="1"> You must use an asymmetric NIST-recommended elliptic curve (ECC) or
2963
+ # SM2 (China Regions only) KMS key pair with a `KeyUsage` value of
2964
+ # `KEY_AGREEMENT` to call DeriveSharedSecret.
2965
+ #
2966
+ # </note>
2967
+ #
2968
+ # DeriveSharedSecret uses the [Elliptic Curve Cryptography Cofactor
2969
+ # Diffie-Hellman Primitive][1] (ECDH) to establish a key agreement
2970
+ # between two peers by deriving a shared secret from their elliptic
2971
+ # curve public-private key pairs. You can use the raw shared secret that
2972
+ # DeriveSharedSecret returns to derive a symmetric key that can encrypt
2973
+ # and decrypt data that is sent between the two peers, or that can
2974
+ # generate and verify HMACs. KMS recommends that you follow [NIST
2975
+ # recommendations for key derivation][2] when using the raw shared
2976
+ # secret to derive a symmetric key.
2977
+ #
2978
+ # The following workflow demonstrates how to establish key agreement
2979
+ # over an insecure communication channel using DeriveSharedSecret.
2980
+ #
2981
+ # 1. **Alice** calls CreateKey to create an asymmetric KMS key pair
2982
+ # with a `KeyUsage` value of `KEY_AGREEMENT`.
2983
+ #
2984
+ # The asymmetric KMS key must use a NIST-recommended elliptic curve
2985
+ # (ECC) or SM2 (China Regions only) key spec.
2986
+ #
2987
+ # 2. **Bob** creates an elliptic curve key pair.
2988
+ #
2989
+ # Bob can call CreateKey to create an asymmetric KMS key pair or
2990
+ # generate a key pair outside of KMS. Bob's key pair must use the
2991
+ # same NIST-recommended elliptic curve (ECC) or SM2 (China Regions
2992
+ # ony) curve as Alice.
2993
+ #
2994
+ # 3. Alice and Bob **exchange their public keys** through an insecure
2995
+ # communication channel (like the internet).
2996
+ #
2997
+ # Use GetPublicKey to download the public key of your asymmetric KMS
2998
+ # key pair.
2999
+ #
3000
+ # <note markdown="1"> KMS strongly recommends verifying that the public key you receive
3001
+ # came from the expected party before using it to derive a shared
3002
+ # secret.
3003
+ #
3004
+ # </note>
3005
+ #
3006
+ # 4. **Alice** calls DeriveSharedSecret.
3007
+ #
3008
+ # KMS uses the private key from the KMS key pair generated in **Step
3009
+ # 1**, Bob's public key, and the Elliptic Curve Cryptography
3010
+ # Cofactor Diffie-Hellman Primitive to derive the shared secret. The
3011
+ # private key in your KMS key pair never leaves KMS unencrypted.
3012
+ # DeriveSharedSecret returns the raw shared secret.
3013
+ #
3014
+ # 5. **Bob** uses the Elliptic Curve Cryptography Cofactor
3015
+ # Diffie-Hellman Primitive to calculate the same raw secret using
3016
+ # his private key and Alice's public key.
3017
+ #
3018
+ # To derive a shared secret you must provide a key agreement algorithm,
3019
+ # the private key of the caller's asymmetric NIST-recommended elliptic
3020
+ # curve or SM2 (China Regions only) KMS key pair, and the public key
3021
+ # from your peer's NIST-recommended elliptic curve or SM2 (China
3022
+ # Regions only) key pair. The public key can be from another asymmetric
3023
+ # KMS key pair or from a key pair generated outside of KMS, but both key
3024
+ # pairs must be on the same elliptic curve.
3025
+ #
3026
+ # The KMS key that you use for this operation must be in a compatible
3027
+ # key state. For details, see [Key states of KMS keys][3] in the *Key
3028
+ # Management Service Developer Guide*.
3029
+ #
3030
+ # **Cross-account use**: Yes. To perform this operation with a KMS key
3031
+ # in a different Amazon Web Services account, specify the key ARN or
3032
+ # alias ARN in the value of the `KeyId` parameter.
3033
+ #
3034
+ # **Required permissions**: [kms:DeriveSharedSecret][4] (key policy)
3035
+ #
3036
+ # **Related operations:**
3037
+ #
3038
+ # * CreateKey
3039
+ #
3040
+ # * GetPublicKey
3041
+ #
3042
+ # * DescribeKey
3043
+ #
3044
+ # **Eventual consistency**: The KMS API follows an eventual consistency
3045
+ # model. For more information, see [KMS eventual consistency][5].
3046
+ #
3047
+ #
3048
+ #
3049
+ # [1]: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60
3050
+ # [2]: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf
3051
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
3052
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
3053
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3054
+ #
3055
+ # @option params [required, String] :key_id
3056
+ # Identifies an asymmetric NIST-recommended ECC or SM2 (China Regions
3057
+ # only) KMS key. KMS uses the private key in the specified key pair to
3058
+ # derive the shared secret. The key usage of the KMS key must be
3059
+ # `KEY_AGREEMENT`. To find the `KeyUsage` of a KMS key, use the
3060
+ # DescribeKey operation.
3061
+ #
3062
+ # To specify a KMS key, use its key ID, key ARN, alias name, or alias
3063
+ # ARN. When using an alias name, prefix it with `"alias/"`. To specify a
3064
+ # KMS key in a different Amazon Web Services account, you must use the
3065
+ # key ARN or alias ARN.
3066
+ #
3067
+ # For example:
3068
+ #
3069
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
3070
+ #
3071
+ # * Key ARN:
3072
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
3073
+ #
3074
+ # * Alias name: `alias/ExampleAlias`
3075
+ #
3076
+ # * Alias ARN: `arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias`
3077
+ #
3078
+ # To get the key ID and key ARN for a KMS key, use ListKeys or
3079
+ # DescribeKey. To get the alias name and alias ARN, use ListAliases.
3080
+ #
3081
+ # @option params [required, String] :key_agreement_algorithm
3082
+ # Specifies the key agreement algorithm used to derive the shared
3083
+ # secret. The only valid value is `ECDH`.
3084
+ #
3085
+ # @option params [required, String, StringIO, File] :public_key
3086
+ # Specifies the public key in your peer's NIST-recommended elliptic
3087
+ # curve (ECC) or SM2 (China Regions only) key pair.
3088
+ #
3089
+ # The public key must be a DER-encoded X.509 public key, also known as
3090
+ # `SubjectPublicKeyInfo` (SPKI), as defined in [RFC 5280][1].
3091
+ #
3092
+ # GetPublicKey returns the public key of an asymmetric KMS key pair in
3093
+ # the required DER-encoded format.
3094
+ #
3095
+ # <note markdown="1"> If you use [Amazon Web Services CLI version 1][2], you must provide
3096
+ # the DER-encoded X.509 public key in a file. Otherwise, the Amazon Web
3097
+ # Services CLI Base64-encodes the public key a second time, resulting in
3098
+ # a `ValidationException`.
3099
+ #
3100
+ # </note>
3101
+ #
3102
+ # You can specify the public key as binary data in a file using fileb
3103
+ # (`fileb://<path-to-file>`) or in-line using a Base64 encoded string.
3104
+ #
3105
+ #
3106
+ #
3107
+ # [1]: https://tools.ietf.org/html/rfc5280
3108
+ # [2]: https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-welcome.html
3109
+ #
3110
+ # @option params [Array<String>] :grant_tokens
3111
+ # A list of grant tokens.
3112
+ #
3113
+ # Use a grant token when your permission to call this operation comes
3114
+ # from a new grant that has not yet achieved *eventual consistency*. For
3115
+ # more information, see [Grant token][1] and [Using a grant token][2] in
3116
+ # the *Key Management Service Developer Guide*.
3117
+ #
3118
+ #
3119
+ #
3120
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
3121
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token
3122
+ #
3123
+ # @option params [Boolean] :dry_run
3124
+ # Checks if your request will succeed. `DryRun` is an optional
3125
+ # parameter.
3126
+ #
3127
+ # To learn more about how to use this parameter, see [Testing your KMS
3128
+ # API calls][1] in the *Key Management Service Developer Guide*.
3129
+ #
3130
+ #
3131
+ #
3132
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-dryrun.html
3133
+ #
3134
+ # @option params [Types::RecipientInfo] :recipient
3135
+ # A signed [attestation document][1] from an Amazon Web Services Nitro
3136
+ # enclave and the encryption algorithm to use with the enclave's public
3137
+ # key. The only valid encryption algorithm is `RSAES_OAEP_SHA_256`.
3138
+ #
3139
+ # This parameter only supports attestation documents for Amazon Web
3140
+ # Services Nitro Enclaves. To call DeriveSharedSecret for an Amazon Web
3141
+ # Services Nitro Enclaves, use the [Amazon Web Services Nitro Enclaves
3142
+ # SDK][2] to generate the attestation document and then use the
3143
+ # Recipient parameter from any Amazon Web Services SDK to provide the
3144
+ # attestation document for the enclave.
3145
+ #
3146
+ # When you use this parameter, instead of returning a plaintext copy of
3147
+ # the shared secret, KMS encrypts the plaintext shared secret under the
3148
+ # public key in the attestation document, and returns the resulting
3149
+ # ciphertext in the `CiphertextForRecipient` field in the response. This
3150
+ # ciphertext can be decrypted only with the private key in the enclave.
3151
+ # The `CiphertextBlob` field in the response contains the encrypted
3152
+ # shared secret derived from the KMS key specified by the `KeyId`
3153
+ # parameter and public key specified by the `PublicKey` parameter. The
3154
+ # `SharedSecret` field in the response is null or empty.
3155
+ #
3156
+ # For information about the interaction between KMS and Amazon Web
3157
+ # Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves
3158
+ # uses KMS][3] in the *Key Management Service Developer Guide*.
3159
+ #
3160
+ #
3161
+ #
3162
+ # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-how.html#term-attestdoc
3163
+ # [2]: https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk
3164
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html
3165
+ #
3166
+ # @return [Types::DeriveSharedSecretResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3167
+ #
3168
+ # * {Types::DeriveSharedSecretResponse#key_id #key_id} => String
3169
+ # * {Types::DeriveSharedSecretResponse#shared_secret #shared_secret} => String
3170
+ # * {Types::DeriveSharedSecretResponse#ciphertext_for_recipient #ciphertext_for_recipient} => String
3171
+ # * {Types::DeriveSharedSecretResponse#key_agreement_algorithm #key_agreement_algorithm} => String
3172
+ # * {Types::DeriveSharedSecretResponse#key_origin #key_origin} => String
3173
+ #
3174
+ #
3175
+ # @example Example: To derive a shared secret
3176
+ #
3177
+ # # The following example derives a shared secret using a key agreement algorithm.
3178
+ #
3179
+ # resp = client.derive_shared_secret({
3180
+ # key_agreement_algorithm: "ECDH", # The key agreement algorithm used to derive the shared secret. The only valid value is ECDH.
3181
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The key identifier for an asymmetric KMS key pair. The private key in the specified key pair is used to derive the shared secret.
3182
+ # public_key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvH3Yj0wbkLEpUl95Cv1cJVjsVNSjwGq3tCLnzXfhVwVvmzGN8pYj3U8nKwgouaHbBWNJYjP5VutbbkKS4Kv4GojwZBJyHN17kmxo8yTjRmjR15SKIQ8cqRA2uaERMLnpztIXdZp232PQPbWGxDyXYJ0aJ5EFSag", # The public key in your peer's asymmetric key pair.
3183
+ # })
3184
+ #
3185
+ # resp.to_h outputs the following:
3186
+ # {
3187
+ # key_agreement_algorithm: "ECDH", # The key agreement algorithm used to derive the shared secret.
3188
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The asymmetric KMS key pair used to derive the shared secret.
3189
+ # key_origin: "AWS_KMS", # The source of the key material for the specified KMS key.
3190
+ # shared_secret: "MEYCIQCKZLWyTk5runarx6XiAkU9gv3lbwPO/pHa+DXFehzdDwIhANwpsIV2g/9SPWLLsF6p/hiSskuIXMTRwqrMdVKWTMHG", # The raw secret derived from the specified key agreement algorithm, private key in the asymmetric KMS key, and your peer's public key.
3191
+ # }
3192
+ #
3193
+ # @example Request syntax with placeholder values
3194
+ #
3195
+ # resp = client.derive_shared_secret({
3196
+ # key_id: "KeyIdType", # required
3197
+ # key_agreement_algorithm: "ECDH", # required, accepts ECDH
3198
+ # public_key: "data", # required
3199
+ # grant_tokens: ["GrantTokenType"],
3200
+ # dry_run: false,
3201
+ # recipient: {
3202
+ # key_encryption_algorithm: "RSAES_OAEP_SHA_256", # accepts RSAES_OAEP_SHA_256
3203
+ # attestation_document: "data",
3204
+ # },
3205
+ # })
3206
+ #
3207
+ # @example Response structure
3208
+ #
3209
+ # resp.key_id #=> String
3210
+ # resp.shared_secret #=> String
3211
+ # resp.ciphertext_for_recipient #=> String
3212
+ # resp.key_agreement_algorithm #=> String, one of "ECDH"
3213
+ # resp.key_origin #=> String, one of "AWS_KMS", "EXTERNAL", "AWS_CLOUDHSM", "EXTERNAL_KEY_STORE"
3214
+ #
3215
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/DeriveSharedSecret AWS API Documentation
3216
+ #
3217
+ # @overload derive_shared_secret(params = {})
3218
+ # @param [Hash] params ({})
3219
+ def derive_shared_secret(params = {}, options = {})
3220
+ req = build_request(:derive_shared_secret, params)
3221
+ req.send_request(options)
3222
+ end
3223
+
2855
3224
  # Gets information about [custom key stores][1] in the account and
2856
3225
  # Region.
2857
3226
  #
@@ -2905,12 +3274,16 @@ module Aws::KMS
2905
3274
  #
2906
3275
  # * UpdateCustomKeyStore
2907
3276
  #
3277
+ # **Eventual consistency**: The KMS API follows an eventual consistency
3278
+ # model. For more information, see [KMS eventual consistency][5].
3279
+ #
2908
3280
  #
2909
3281
  #
2910
3282
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
2911
3283
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html
2912
3284
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/xks-troubleshooting.html
2913
3285
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
3286
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
2914
3287
  #
2915
3288
  # @option params [String] :custom_key_store_id
2916
3289
  # Gets only information about the specified custom key store. Enter the
@@ -3094,15 +3467,11 @@ module Aws::KMS
3094
3467
  # also displays the key usage (encryption, signing, or generating and
3095
3468
  # verifying MACs) and the algorithms that the KMS key supports.
3096
3469
  #
3097
- # For [multi-Region
3098
- # keys](kms/latest/developerguide/multi-region-keys-overview.html),
3099
- # `DescribeKey` displays the primary key and all related replica keys.
3100
- # For KMS keys in [CloudHSM key
3101
- # stores](kms/latest/developerguide/keystore-cloudhsm.html), it includes
3102
- # information about the key store, such as the key store ID and the
3103
- # CloudHSM cluster ID. For KMS keys in [external key
3104
- # stores](kms/latest/developerguide/keystore-external.html), it includes
3105
- # the custom key store ID and the ID of the external key.
3470
+ # For [multi-Region keys][3], `DescribeKey` displays the primary key and
3471
+ # all related replica keys. For KMS keys in [CloudHSM key stores][4], it
3472
+ # includes information about the key store, such as the key store ID and
3473
+ # the CloudHSM cluster ID. For KMS keys in [external key stores][5], it
3474
+ # includes the custom key store ID and the ID of the external key.
3106
3475
  #
3107
3476
  # `DescribeKey` does not return the following information:
3108
3477
  #
@@ -3112,7 +3481,7 @@ module Aws::KMS
3112
3481
  # * Whether automatic key rotation is enabled on the KMS key. To get
3113
3482
  # this information, use GetKeyRotationStatus. Also, some key states
3114
3483
  # prevent a KMS key from being automatically rotated. For details, see
3115
- # [How Automatic Key Rotation Works][3] in the *Key Management Service
3484
+ # [How Automatic Key Rotation Works][6] in the *Key Management Service
3116
3485
  # Developer Guide*.
3117
3486
  #
3118
3487
  # * Tags on the KMS key. To get this information, use ListResourceTags.
@@ -3129,7 +3498,7 @@ module Aws::KMS
3129
3498
  # in a different Amazon Web Services account, specify the key ARN or
3130
3499
  # alias ARN in the value of the `KeyId` parameter.
3131
3500
  #
3132
- # **Required permissions**: [kms:DescribeKey][4] (key policy)
3501
+ # **Required permissions**: [kms:DescribeKey][7] (key policy)
3133
3502
  #
3134
3503
  # **Related operations:**
3135
3504
  #
@@ -3147,12 +3516,19 @@ module Aws::KMS
3147
3516
  #
3148
3517
  # * ListRetirableGrants
3149
3518
  #
3519
+ # **Eventual consistency**: The KMS API follows an eventual consistency
3520
+ # model. For more information, see [KMS eventual consistency][8].
3521
+ #
3150
3522
  #
3151
3523
  #
3152
3524
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3153
3525
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3154
- # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-how-it-works
3155
- # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
3526
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html
3527
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html
3528
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html
3529
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-how-it-works
3530
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
3531
+ # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3156
3532
  #
3157
3533
  # @option params [required, String] :key_id
3158
3534
  # Describes the specified KMS key.
@@ -3429,7 +3805,7 @@ module Aws::KMS
3429
3805
  # resp.key_metadata.creation_date #=> Time
3430
3806
  # resp.key_metadata.enabled #=> Boolean
3431
3807
  # resp.key_metadata.description #=> String
3432
- # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
3808
+ # resp.key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
3433
3809
  # resp.key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
3434
3810
  # resp.key_metadata.deletion_date #=> Time
3435
3811
  # resp.key_metadata.valid_to #=> Time
@@ -3444,6 +3820,8 @@ module Aws::KMS
3444
3820
  # resp.key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
3445
3821
  # resp.key_metadata.signing_algorithms #=> Array
3446
3822
  # resp.key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
3823
+ # resp.key_metadata.key_agreement_algorithms #=> Array
3824
+ # resp.key_metadata.key_agreement_algorithms[0] #=> String, one of "ECDH"
3447
3825
  # resp.key_metadata.multi_region #=> Boolean
3448
3826
  # resp.key_metadata.multi_region_configuration.multi_region_key_type #=> String, one of "PRIMARY", "REPLICA"
3449
3827
  # resp.key_metadata.multi_region_configuration.primary_key.arn #=> String
@@ -3483,11 +3861,15 @@ module Aws::KMS
3483
3861
  #
3484
3862
  # **Related operations**: EnableKey
3485
3863
  #
3864
+ # **Eventual consistency**: The KMS API follows an eventual consistency
3865
+ # model. For more information, see [KMS eventual consistency][4].
3866
+ #
3486
3867
  #
3487
3868
  #
3488
3869
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations
3489
3870
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
3490
3871
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
3872
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3491
3873
  #
3492
3874
  # @option params [required, String] :key_id
3493
3875
  # Identifies the KMS key to disable.
@@ -3567,6 +3949,13 @@ module Aws::KMS
3567
3949
  #
3568
3950
  # * GetKeyRotationStatus
3569
3951
  #
3952
+ # * ListKeyRotations
3953
+ #
3954
+ # * RotateKeyOnDemand
3955
+ #
3956
+ # **Eventual consistency**: The KMS API follows an eventual consistency
3957
+ # model. For more information, see [KMS eventual consistency][12].
3958
+ #
3570
3959
  #
3571
3960
  #
3572
3961
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
@@ -3580,6 +3969,7 @@ module Aws::KMS
3580
3969
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk
3581
3970
  # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
3582
3971
  # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
3972
+ # [12]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3583
3973
  #
3584
3974
  # @option params [required, String] :key_id
3585
3975
  # Identifies a symmetric encryption KMS key. You cannot enable or
@@ -3679,11 +4069,15 @@ module Aws::KMS
3679
4069
  #
3680
4070
  # * UpdateCustomKeyStore
3681
4071
  #
4072
+ # **Eventual consistency**: The KMS API follows an eventual consistency
4073
+ # model. For more information, see [KMS eventual consistency][4].
4074
+ #
3682
4075
  #
3683
4076
  #
3684
4077
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
3685
4078
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations
3686
4079
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
4080
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3687
4081
  #
3688
4082
  # @option params [required, String] :custom_key_store_id
3689
4083
  # Enter the ID of the custom key store you want to disconnect. To find
@@ -3737,11 +4131,15 @@ module Aws::KMS
3737
4131
  #
3738
4132
  # **Related operations**: DisableKey
3739
4133
  #
4134
+ # **Eventual consistency**: The KMS API follows an eventual consistency
4135
+ # model. For more information, see [KMS eventual consistency][4].
4136
+ #
3740
4137
  #
3741
4138
  #
3742
4139
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations
3743
4140
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
3744
4141
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
4142
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3745
4143
  #
3746
4144
  # @option params [required, String] :key_id
3747
4145
  # Identifies the KMS key to enable.
@@ -3787,12 +4185,20 @@ module Aws::KMS
3787
4185
  # Enables [automatic rotation of the key material][1] of the specified
3788
4186
  # symmetric encryption KMS key.
3789
4187
  #
3790
- # When you enable automatic rotation of a[customer managed KMS key][2],
3791
- # KMS rotates the key material of the KMS key one year (approximately
3792
- # 365 days) from the enable date and every year thereafter. You can
3793
- # monitor rotation of the key material for your KMS keys in CloudTrail
3794
- # and Amazon CloudWatch. To disable rotation of the key material in a
3795
- # customer managed KMS key, use the DisableKeyRotation operation.
4188
+ # By default, when you enable automatic rotation of a [customer managed
4189
+ # KMS key][2], KMS rotates the key material of the KMS key one year
4190
+ # (approximately 365 days) from the enable date and every year
4191
+ # thereafter. You can use the optional `RotationPeriodInDays` parameter
4192
+ # to specify a custom rotation period when you enable key rotation, or
4193
+ # you can use `RotationPeriodInDays` to modify the rotation period of a
4194
+ # key that you previously enabled automatic key rotation on.
4195
+ #
4196
+ # You can monitor rotation of the key material for your KMS keys in
4197
+ # CloudTrail and Amazon CloudWatch. To disable rotation of the key
4198
+ # material in a customer managed KMS key, use the DisableKeyRotation
4199
+ # operation. You can use the GetKeyRotationStatus operation to identify
4200
+ # any in progress rotations. You can use the ListKeyRotations operation
4201
+ # to view the details of completed rotations.
3796
4202
  #
3797
4203
  # Automatic key rotation is supported only on [symmetric encryption KMS
3798
4204
  # keys][3]. You cannot enable automatic rotation of [asymmetric KMS
@@ -3801,10 +4207,11 @@ module Aws::KMS
3801
4207
  # disable automatic rotation of a set of related [multi-Region keys][8],
3802
4208
  # set the property on the primary key.
3803
4209
  #
3804
- # You cannot enable or disable automatic rotation [Amazon Web Services
3805
- # managed KMS keys][9]. KMS always rotates the key material of Amazon
3806
- # Web Services managed keys every year. Rotation of [Amazon Web Services
3807
- # owned KMS keys][10] varies.
4210
+ # You cannot enable or disable automatic rotation of [Amazon Web
4211
+ # Services managed KMS keys][9]. KMS always rotates the key material of
4212
+ # Amazon Web Services managed keys every year. Rotation of [Amazon Web
4213
+ # Services owned KMS keys][10] is managed by the Amazon Web Services
4214
+ # service that owns the key.
3808
4215
  #
3809
4216
  # <note markdown="1"> In May 2022, KMS changed the rotation schedule for Amazon Web Services
3810
4217
  # managed keys from every three years (approximately 1,095 days) to
@@ -3833,9 +4240,22 @@ module Aws::KMS
3833
4240
  #
3834
4241
  # * GetKeyRotationStatus
3835
4242
  #
4243
+ # * ListKeyRotations
3836
4244
  #
4245
+ # * RotateKeyOnDemand
3837
4246
  #
3838
- # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
4247
+ # <note markdown="1"> You can perform on-demand (RotateKeyOnDemand) rotation of the key
4248
+ # material in customer managed KMS keys, regardless of whether or not
4249
+ # automatic key rotation is enabled.
4250
+ #
4251
+ # </note>
4252
+ #
4253
+ # **Eventual consistency**: The KMS API follows an eventual consistency
4254
+ # model. For more information, see [KMS eventual consistency][13].
4255
+ #
4256
+ #
4257
+ #
4258
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotating-keys-enable-disable
3839
4259
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3840
4260
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks
3841
4261
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
@@ -3847,6 +4267,7 @@ module Aws::KMS
3847
4267
  # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk
3848
4268
  # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
3849
4269
  # [12]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
4270
+ # [13]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3850
4271
  #
3851
4272
  # @option params [required, String] :key_id
3852
4273
  # Identifies a symmetric encryption KMS key. You cannot enable automatic
@@ -3875,21 +4296,42 @@ module Aws::KMS
3875
4296
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
3876
4297
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
3877
4298
  #
4299
+ # @option params [Integer] :rotation_period_in_days
4300
+ # Use this parameter to specify a custom period of time between each
4301
+ # rotation date. If no value is specified, the default value is 365
4302
+ # days.
4303
+ #
4304
+ # The rotation period defines the number of days after you enable
4305
+ # automatic key rotation that KMS will rotate your key material, and the
4306
+ # number of days between each automatic rotation thereafter.
4307
+ #
4308
+ # You can use the [ `kms:RotationPeriodInDays` ][1] condition key to
4309
+ # further constrain the values that principals can specify in the
4310
+ # `RotationPeriodInDays` parameter.
4311
+ #
4312
+ #
4313
+ #
4314
+ #
4315
+ #
4316
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-rotation-period-in-days
4317
+ #
3878
4318
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
3879
4319
  #
3880
4320
  #
3881
4321
  # @example Example: To enable automatic rotation of key material
3882
4322
  #
3883
- # # The following example enables automatic annual rotation of the key material for the specified KMS key.
4323
+ # # The following example enables automatic rotation with a rotation period of 365 days for the specified KMS key.
3884
4324
  #
3885
4325
  # resp = client.enable_key_rotation({
3886
- # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The identifier of the KMS key whose key material will be rotated annually. You can use the key ID or the Amazon Resource Name (ARN) of the KMS key.
4326
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The identifier of the KMS key whose key material will be automatically rotated. You can use the key ID or the Amazon Resource Name (ARN) of the KMS key.
4327
+ # rotation_period_in_days: 365, # The number of days between each rotation date. Specify a value between 9 and 2560. If no value is specified, the default value is 365 days.
3887
4328
  # })
3888
4329
  #
3889
4330
  # @example Request syntax with placeholder values
3890
4331
  #
3891
4332
  # resp = client.enable_key_rotation({
3892
4333
  # key_id: "KeyIdType", # required
4334
+ # rotation_period_in_days: 1,
3893
4335
  # })
3894
4336
  #
3895
4337
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/EnableKeyRotation AWS API Documentation
@@ -3944,25 +4386,21 @@ module Aws::KMS
3944
4386
  # * `SYMMETRIC_DEFAULT`: 4096 bytes
3945
4387
  #
3946
4388
  # ^
3947
- #
3948
4389
  # * `RSA_2048`
3949
4390
  #
3950
4391
  # * `RSAES_OAEP_SHA_1`: 214 bytes
3951
4392
  #
3952
4393
  # * `RSAES_OAEP_SHA_256`: 190 bytes
3953
- #
3954
4394
  # * `RSA_3072`
3955
4395
  #
3956
4396
  # * `RSAES_OAEP_SHA_1`: 342 bytes
3957
4397
  #
3958
4398
  # * `RSAES_OAEP_SHA_256`: 318 bytes
3959
- #
3960
4399
  # * `RSA_4096`
3961
4400
  #
3962
4401
  # * `RSAES_OAEP_SHA_1`: 470 bytes
3963
4402
  #
3964
4403
  # * `RSAES_OAEP_SHA_256`: 446 bytes
3965
- #
3966
4404
  # * `SM2PKE`: 1024 bytes (China Regions only)
3967
4405
  #
3968
4406
  # The KMS key that you use for this operation must be in a compatible
@@ -3983,11 +4421,15 @@ module Aws::KMS
3983
4421
  #
3984
4422
  # * GenerateDataKeyPair
3985
4423
  #
4424
+ # **Eventual consistency**: The KMS API follows an eventual consistency
4425
+ # model. For more information, see [KMS eventual consistency][4].
4426
+ #
3986
4427
  #
3987
4428
  #
3988
4429
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
3989
4430
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
3990
4431
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
4432
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
3991
4433
  #
3992
4434
  # @option params [required, String] :key_id
3993
4435
  # Identifies the KMS key to use in the encryption operation. The KMS key
@@ -4247,6 +4689,9 @@ module Aws::KMS
4247
4689
  #
4248
4690
  # * GenerateDataKeyWithoutPlaintext
4249
4691
  #
4692
+ # **Eventual consistency**: The KMS API follows an eventual consistency
4693
+ # model. For more information, see [KMS eventual consistency][10].
4694
+ #
4250
4695
  #
4251
4696
  #
4252
4697
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
@@ -4258,6 +4703,7 @@ module Aws::KMS
4258
4703
  # [7]: https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/
4259
4704
  # [8]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
4260
4705
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
4706
+ # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
4261
4707
  #
4262
4708
  # @option params [required, String] :key_id
4263
4709
  # Specifies the symmetric encryption KMS key that encrypts the data key.
@@ -4464,8 +4910,9 @@ module Aws::KMS
4464
4910
  # a copy of the private key that is encrypted under the symmetric
4465
4911
  # encryption KMS key you specify. You can use the data key pair to
4466
4912
  # perform asymmetric cryptography and implement digital signatures
4467
- # outside of KMS. The bytes in the keys are random; they not related to
4468
- # the caller or to the KMS key that is used to encrypt the private key.
4913
+ # outside of KMS. The bytes in the keys are random; they are not related
4914
+ # to the caller or to the KMS key that is used to encrypt the private
4915
+ # key.
4469
4916
  #
4470
4917
  # You can use the public key that `GenerateDataKeyPair` returns to
4471
4918
  # encrypt data or verify a signature outside of KMS. Then, store the
@@ -4546,6 +4993,9 @@ module Aws::KMS
4546
4993
  #
4547
4994
  # * GenerateDataKeyWithoutPlaintext
4548
4995
  #
4996
+ # **Eventual consistency**: The KMS API follows an eventual consistency
4997
+ # model. For more information, see [KMS eventual consistency][9].
4998
+ #
4549
4999
  #
4550
5000
  #
4551
5001
  # [1]: https://tools.ietf.org/html/rfc5280
@@ -4556,6 +5006,7 @@ module Aws::KMS
4556
5006
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
4557
5007
  # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
4558
5008
  # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
5009
+ # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
4559
5010
  #
4560
5011
  # @option params [Hash<String,String>] :encryption_context
4561
5012
  # Specifies the encryption context that will be used when encrypting the
@@ -4633,8 +5084,11 @@ module Aws::KMS
4633
5084
  # key. The only valid encryption algorithm is `RSAES_OAEP_SHA_256`.
4634
5085
  #
4635
5086
  # This parameter only supports attestation documents for Amazon Web
4636
- # Services Nitro Enclaves. To include this parameter, use the [Amazon
4637
- # Web Services Nitro Enclaves SDK][2] or any Amazon Web Services SDK.
5087
+ # Services Nitro Enclaves. To call DeriveSharedSecret for an Amazon Web
5088
+ # Services Nitro Enclaves, use the [Amazon Web Services Nitro Enclaves
5089
+ # SDK][2] to generate the attestation document and then use the
5090
+ # Recipient parameter from any Amazon Web Services SDK to provide the
5091
+ # attestation document for the enclave.
4638
5092
  #
4639
5093
  # When you use this parameter, instead of returning a plaintext copy of
4640
5094
  # the private data key, KMS encrypts the plaintext private data key
@@ -4819,12 +5273,16 @@ module Aws::KMS
4819
5273
  #
4820
5274
  # * GenerateDataKeyWithoutPlaintext
4821
5275
  #
5276
+ # **Eventual consistency**: The KMS API follows an eventual consistency
5277
+ # model. For more information, see [KMS eventual consistency][5].
5278
+ #
4822
5279
  #
4823
5280
  #
4824
5281
  # [1]: https://tools.ietf.org/html/rfc5280
4825
5282
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
4826
5283
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
4827
5284
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
5285
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
4828
5286
  #
4829
5287
  # @option params [Hash<String,String>] :encryption_context
4830
5288
  # Specifies the encryption context that will be used when encrypting the
@@ -5035,11 +5493,15 @@ module Aws::KMS
5035
5493
  #
5036
5494
  # * GenerateDataKeyPairWithoutPlaintext
5037
5495
  #
5496
+ # **Eventual consistency**: The KMS API follows an eventual consistency
5497
+ # model. For more information, see [KMS eventual consistency][4].
5498
+ #
5038
5499
  #
5039
5500
  #
5040
5501
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
5041
5502
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
5042
5503
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
5504
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
5043
5505
  #
5044
5506
  # @option params [required, String] :key_id
5045
5507
  # Specifies the symmetric encryption KMS key that encrypts the data key.
@@ -5207,12 +5669,16 @@ module Aws::KMS
5207
5669
  #
5208
5670
  # **Related operations**: VerifyMac
5209
5671
  #
5672
+ # **Eventual consistency**: The KMS API follows an eventual consistency
5673
+ # model. For more information, see [KMS eventual consistency][5].
5674
+ #
5210
5675
  #
5211
5676
  #
5212
5677
  # [1]: https://datatracker.ietf.org/doc/html/rfc2104
5213
5678
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
5214
5679
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
5215
5680
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
5681
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
5216
5682
  #
5217
5683
  # @option params [required, String, StringIO, File] :message
5218
5684
  # The message to be hashed. Specify a message of up to 4,096 bytes.
@@ -5343,6 +5809,9 @@ module Aws::KMS
5343
5809
  #
5344
5810
  # **Required permissions**: [kms:GenerateRandom][5] (IAM policy)
5345
5811
  #
5812
+ # **Eventual consistency**: The KMS API follows an eventual consistency
5813
+ # model. For more information, see [KMS eventual consistency][6].
5814
+ #
5346
5815
  #
5347
5816
  #
5348
5817
  # [1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html
@@ -5350,6 +5819,7 @@ module Aws::KMS
5350
5819
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html
5351
5820
  # [4]: https://docs.aws.amazon.com/kms/latest/cryptographic-details/
5352
5821
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
5822
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
5353
5823
  #
5354
5824
  # @option params [Integer] :number_of_bytes
5355
5825
  # The length of the random byte string. This parameter is required.
@@ -5460,11 +5930,16 @@ module Aws::KMS
5460
5930
  #
5461
5931
  # **Required permissions**: [kms:GetKeyPolicy][1] (key policy)
5462
5932
  #
5463
- # **Related operations**: PutKeyPolicy
5933
+ # **Related operations**: [PutKeyPolicy][2]
5934
+ #
5935
+ # **Eventual consistency**: The KMS API follows an eventual consistency
5936
+ # model. For more information, see [KMS eventual consistency][3].
5464
5937
  #
5465
5938
  #
5466
5939
  #
5467
5940
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
5941
+ # [2]: https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html
5942
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
5468
5943
  #
5469
5944
  # @option params [required, String] :key_id
5470
5945
  # Gets the key policy for the specified KMS key.
@@ -5481,13 +5956,15 @@ module Aws::KMS
5481
5956
  # To get the key ID and key ARN for a KMS key, use ListKeys or
5482
5957
  # DescribeKey.
5483
5958
  #
5484
- # @option params [required, String] :policy_name
5485
- # Specifies the name of the key policy. The only valid name is
5486
- # `default`. To get the names of key policies, use ListKeyPolicies.
5959
+ # @option params [String] :policy_name
5960
+ # Specifies the name of the key policy. If no policy name is specified,
5961
+ # the default value is `default`. The only valid name is `default`. To
5962
+ # get the names of key policies, use ListKeyPolicies.
5487
5963
  #
5488
5964
  # @return [Types::GetKeyPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5489
5965
  #
5490
5966
  # * {Types::GetKeyPolicyResponse#policy #policy} => String
5967
+ # * {Types::GetKeyPolicyResponse#policy_name #policy_name} => String
5491
5968
  #
5492
5969
  #
5493
5970
  # @example Example: To retrieve a key policy
@@ -5508,12 +5985,13 @@ module Aws::KMS
5508
5985
  #
5509
5986
  # resp = client.get_key_policy({
5510
5987
  # key_id: "KeyIdType", # required
5511
- # policy_name: "PolicyNameType", # required
5988
+ # policy_name: "PolicyNameType",
5512
5989
  # })
5513
5990
  #
5514
5991
  # @example Response structure
5515
5992
  #
5516
5993
  # resp.policy #=> String
5994
+ # resp.policy_name #=> String
5517
5995
  #
5518
5996
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyPolicy AWS API Documentation
5519
5997
  #
@@ -5524,14 +6002,10 @@ module Aws::KMS
5524
6002
  req.send_request(options)
5525
6003
  end
5526
6004
 
5527
- # Gets a Boolean value that indicates whether [automatic rotation of the
5528
- # key material][1] is enabled for the specified KMS key.
5529
- #
5530
- # When you enable automatic rotation for [customer managed KMS keys][2],
5531
- # KMS rotates the key material of the KMS key one year (approximately
5532
- # 365 days) from the enable date and every year thereafter. You can
5533
- # monitor rotation of the key material for your KMS keys in CloudTrail
5534
- # and Amazon CloudWatch.
6005
+ # Provides detailed information about the rotation status for a KMS key,
6006
+ # including whether [automatic rotation of the key material][1] is
6007
+ # enabled for the specified KMS key, the [rotation period][2], and the
6008
+ # next scheduled rotation date.
5535
6009
  #
5536
6010
  # Automatic key rotation is supported only on [symmetric encryption KMS
5537
6011
  # keys][3]. You cannot enable automatic rotation of [asymmetric KMS
@@ -5547,6 +6021,13 @@ module Aws::KMS
5547
6021
  # Services managed KMS keys every year. The key rotation status for
5548
6022
  # Amazon Web Services managed KMS keys is always `true`.
5549
6023
  #
6024
+ # You can perform on-demand (RotateKeyOnDemand) rotation of the key
6025
+ # material in customer managed KMS keys, regardless of whether or not
6026
+ # automatic key rotation is enabled. You can use GetKeyRotationStatus to
6027
+ # identify the date and time that an in progress on-demand rotation was
6028
+ # initiated. You can use ListKeyRotations to view the details of
6029
+ # completed rotations.
6030
+ #
5550
6031
  # <note markdown="1"> In May 2022, KMS changed the rotation schedule for Amazon Web Services
5551
6032
  # managed keys from every three years to every year. For details, see
5552
6033
  # EnableKeyRotation.
@@ -5583,10 +6064,17 @@ module Aws::KMS
5583
6064
  #
5584
6065
  # * EnableKeyRotation
5585
6066
  #
6067
+ # * ListKeyRotations
6068
+ #
6069
+ # * RotateKeyOnDemand
6070
+ #
6071
+ # **Eventual consistency**: The KMS API follows an eventual consistency
6072
+ # model. For more information, see [KMS eventual consistency][12].
6073
+ #
5586
6074
  #
5587
6075
  #
5588
6076
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
5589
- # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
6077
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotation-period
5590
6078
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks
5591
6079
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
5592
6080
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
@@ -5596,6 +6084,7 @@ module Aws::KMS
5596
6084
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
5597
6085
  # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
5598
6086
  # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
6087
+ # [12]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
5599
6088
  #
5600
6089
  # @option params [required, String] :key_id
5601
6090
  # Gets the rotation status for the specified KMS key.
@@ -5616,11 +6105,16 @@ module Aws::KMS
5616
6105
  # @return [Types::GetKeyRotationStatusResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5617
6106
  #
5618
6107
  # * {Types::GetKeyRotationStatusResponse#key_rotation_enabled #key_rotation_enabled} => Boolean
6108
+ # * {Types::GetKeyRotationStatusResponse#key_id #key_id} => String
6109
+ # * {Types::GetKeyRotationStatusResponse#rotation_period_in_days #rotation_period_in_days} => Integer
6110
+ # * {Types::GetKeyRotationStatusResponse#next_rotation_date #next_rotation_date} => Time
6111
+ # * {Types::GetKeyRotationStatusResponse#on_demand_rotation_start_date #on_demand_rotation_start_date} => Time
5619
6112
  #
5620
6113
  #
5621
6114
  # @example Example: To retrieve the rotation status for a KMS key
5622
6115
  #
5623
- # # The following example retrieves the status of automatic annual rotation of the key material for the specified KMS key.
6116
+ # # The following example retrieves detailed information about the rotation status for a KMS key, including whether
6117
+ # # automatic key rotation is enabled for the specified KMS key, the rotation period, and the next scheduled rotation date.
5624
6118
  #
5625
6119
  # resp = client.get_key_rotation_status({
5626
6120
  # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The identifier of the KMS key whose key material rotation status you want to retrieve. You can use the key ID or the Amazon Resource Name (ARN) of the KMS key.
@@ -5628,7 +6122,11 @@ module Aws::KMS
5628
6122
  #
5629
6123
  # resp.to_h outputs the following:
5630
6124
  # {
5631
- # key_rotation_enabled: true, # A boolean that indicates the key material rotation status. Returns true when automatic annual rotation of the key material is enabled, or false when it is not.
6125
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # Identifies the specified symmetric encryption KMS key.
6126
+ # key_rotation_enabled: true, # A boolean that indicates the key material rotation status. Returns true when automatic rotation of the key material is enabled, or false when it is not.
6127
+ # next_rotation_date: Time.parse("2024-04-05T15:14:47.757000+00:00"), # The next date that the key material will be automatically rotated.
6128
+ # on_demand_rotation_start_date: Time.parse("2024-03-02T10:11:36.564000+00:00"), # Identifies the date and time that an in progress on-demand rotation was initiated.
6129
+ # rotation_period_in_days: 365, # The number of days between each automatic rotation. The default value is 365 days.
5632
6130
  # }
5633
6131
  #
5634
6132
  # @example Request syntax with placeholder values
@@ -5640,6 +6138,10 @@ module Aws::KMS
5640
6138
  # @example Response structure
5641
6139
  #
5642
6140
  # resp.key_rotation_enabled #=> Boolean
6141
+ # resp.key_id #=> String
6142
+ # resp.rotation_period_in_days #=> Integer
6143
+ # resp.next_rotation_date #=> Time
6144
+ # resp.on_demand_rotation_start_date #=> Time
5643
6145
  #
5644
6146
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetKeyRotationStatus AWS API Documentation
5645
6147
  #
@@ -5665,14 +6167,11 @@ module Aws::KMS
5665
6167
  # material. You can import key material for a symmetric encryption KMS
5666
6168
  # key, HMAC KMS key, asymmetric encryption KMS key, or asymmetric
5667
6169
  # signing KMS key. You can also import key material into a [multi-Region
5668
- # key](kms/latest/developerguide/multi-region-keys-overview.html) of any
5669
- # supported type. However, you can't import key material into a KMS key
5670
- # in a [custom key
5671
- # store](kms/latest/developerguide/custom-key-store-overview.html). You
5672
- # can also use `GetParametersForImport` to get a public key and import
5673
- # token to [reimport the original key
5674
- # material](kms/latest/developerguide/importing-keys.html#reimport-key-material)
5675
- # into a KMS key whose key material expired or was deleted.
6170
+ # key][2] of any supported type. However, you can't import key material
6171
+ # into a KMS key in a [custom key store][3]. You can also use
6172
+ # `GetParametersForImport` to get a public key and import token to
6173
+ # [reimport the original key material][4] into a KMS key whose key
6174
+ # material expired or was deleted.
5676
6175
  #
5677
6176
  # `GetParametersForImport` returns the items that you need to import
5678
6177
  # your key material.
@@ -5709,13 +6208,13 @@ module Aws::KMS
5709
6208
  # algorithm each time you import or reimport the same key material.
5710
6209
  #
5711
6210
  # The KMS key that you use for this operation must be in a compatible
5712
- # key state. For details, see [Key states of KMS keys][2] in the *Key
6211
+ # key state. For details, see [Key states of KMS keys][5] in the *Key
5713
6212
  # Management Service Developer Guide*.
5714
6213
  #
5715
6214
  # **Cross-account use**: No. You cannot perform this operation on a KMS
5716
6215
  # key in a different Amazon Web Services account.
5717
6216
  #
5718
- # **Required permissions**: [kms:GetParametersForImport][3] (key policy)
6217
+ # **Required permissions**: [kms:GetParametersForImport][6] (key policy)
5719
6218
  #
5720
6219
  # **Related operations:**
5721
6220
  #
@@ -5723,11 +6222,18 @@ module Aws::KMS
5723
6222
  #
5724
6223
  # * DeleteImportedKeyMaterial
5725
6224
  #
6225
+ # **Eventual consistency**: The KMS API follows an eventual consistency
6226
+ # model. For more information, see [KMS eventual consistency][7].
6227
+ #
5726
6228
  #
5727
6229
  #
5728
6230
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
5729
- # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
5730
- # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
6231
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html
6232
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
6233
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html#reimport-key-material
6234
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
6235
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
6236
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
5731
6237
  #
5732
6238
  # @option params [required, String] :key_id
5733
6239
  # The identifier of the KMS key that will be associated with the
@@ -5782,8 +6288,8 @@ module Aws::KMS
5782
6288
  # You cannot use the RSAES\_OAEP\_SHA\_1 wrapping algorithm with the
5783
6289
  # RSA\_2048 wrapping key spec to wrap ECC\_NIST\_P521 key material.
5784
6290
  #
5785
- # * **RSAES\_PKCS1\_V1\_5** (Deprecated) — Supported only for symmetric
5786
- # encryption key material (and only in legacy mode).
6291
+ # * **RSAES\_PKCS1\_V1\_5** (Deprecated) — As of October 10, 2023, KMS
6292
+ # does not support the RSAES\_PKCS1\_V1\_5 wrapping algorithm.
5787
6293
  #
5788
6294
  # @option params [required, String] :wrapping_key_spec
5789
6295
  # The type of RSA public key to return in the response. You will use
@@ -5886,8 +6392,8 @@ module Aws::KMS
5886
6392
  #
5887
6393
  # resp = client.get_parameters_for_import({
5888
6394
  # key_id: "KeyIdType", # required
5889
- # wrapping_algorithm: "RSAES_PKCS1_V1_5", # required, accepts RSAES_PKCS1_V1_5, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256, RSA_AES_KEY_WRAP_SHA_1, RSA_AES_KEY_WRAP_SHA_256
5890
- # wrapping_key_spec: "RSA_2048", # required, accepts RSA_2048, RSA_3072, RSA_4096
6395
+ # wrapping_algorithm: "RSAES_PKCS1_V1_5", # required, accepts RSAES_PKCS1_V1_5, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256, RSA_AES_KEY_WRAP_SHA_1, RSA_AES_KEY_WRAP_SHA_256, SM2PKE
6396
+ # wrapping_key_spec: "RSA_2048", # required, accepts RSA_2048, RSA_3072, RSA_4096, SM2
5891
6397
  # })
5892
6398
  #
5893
6399
  # @example Response structure
@@ -5929,7 +6435,8 @@ module Aws::KMS
5929
6435
  # * [KeySpec][2]: The type of key material in the public key, such as
5930
6436
  # `RSA_4096` or `ECC_NIST_P521`.
5931
6437
  #
5932
- # * [KeyUsage][3]: Whether the key is used for encryption or signing.
6438
+ # * [KeyUsage][3]: Whether the key is used for encryption, signing, or
6439
+ # deriving a shared secret.
5933
6440
  #
5934
6441
  # * [EncryptionAlgorithms][4] or [SigningAlgorithms][5]: A list of the
5935
6442
  # encryption algorithms or the signing algorithms for the key.
@@ -5959,6 +6466,9 @@ module Aws::KMS
5959
6466
  #
5960
6467
  # **Related operations**: CreateKey
5961
6468
  #
6469
+ # **Eventual consistency**: The KMS API follows an eventual consistency
6470
+ # model. For more information, see [KMS eventual consistency][9].
6471
+ #
5962
6472
  #
5963
6473
  #
5964
6474
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
@@ -5969,6 +6479,7 @@ module Aws::KMS
5969
6479
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification
5970
6480
  # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
5971
6481
  # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
6482
+ # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
5972
6483
  #
5973
6484
  # @option params [required, String] :key_id
5974
6485
  # Identifies the asymmetric KMS key that includes the public key.
@@ -6014,6 +6525,7 @@ module Aws::KMS
6014
6525
  # * {Types::GetPublicKeyResponse#key_usage #key_usage} => String
6015
6526
  # * {Types::GetPublicKeyResponse#encryption_algorithms #encryption_algorithms} => Array&lt;String&gt;
6016
6527
  # * {Types::GetPublicKeyResponse#signing_algorithms #signing_algorithms} => Array&lt;String&gt;
6528
+ # * {Types::GetPublicKeyResponse#key_agreement_algorithms #key_agreement_algorithms} => Array&lt;String&gt;
6017
6529
  #
6018
6530
  #
6019
6531
  # @example Example: To download the public key of an asymmetric KMS key
@@ -6051,11 +6563,13 @@ module Aws::KMS
6051
6563
  # resp.public_key #=> String
6052
6564
  # resp.customer_master_key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT", "HMAC_224", "HMAC_256", "HMAC_384", "HMAC_512", "SM2"
6053
6565
  # resp.key_spec #=> String, one of "RSA_2048", "RSA_3072", "RSA_4096", "ECC_NIST_P256", "ECC_NIST_P384", "ECC_NIST_P521", "ECC_SECG_P256K1", "SYMMETRIC_DEFAULT", "HMAC_224", "HMAC_256", "HMAC_384", "HMAC_512", "SM2"
6054
- # resp.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
6566
+ # resp.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
6055
6567
  # resp.encryption_algorithms #=> Array
6056
6568
  # resp.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
6057
6569
  # resp.signing_algorithms #=> Array
6058
6570
  # resp.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
6571
+ # resp.key_agreement_algorithms #=> Array
6572
+ # resp.key_agreement_algorithms[0] #=> String, one of "ECDH"
6059
6573
  #
6060
6574
  # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GetPublicKey AWS API Documentation
6061
6575
  #
@@ -6082,9 +6596,7 @@ module Aws::KMS
6082
6596
  # import different key material. You might reimport key material to
6083
6597
  # replace key material that expired or key material that you deleted.
6084
6598
  # You might also reimport key material to change the expiration model or
6085
- # expiration date of the key material. Before reimporting key material,
6086
- # if necessary, call DeleteImportedKeyMaterial to delete the current
6087
- # imported key material.
6599
+ # expiration date of the key material.
6088
6600
  #
6089
6601
  # Each time you import key material into KMS, you can determine whether
6090
6602
  # (`ExpirationModel`) and when (`ValidTo`) the key material expires. To
@@ -6179,6 +6691,9 @@ module Aws::KMS
6179
6691
  #
6180
6692
  # * GetParametersForImport
6181
6693
  #
6694
+ # **Eventual consistency**: The KMS API follows an eventual consistency
6695
+ # model. For more information, see [KMS eventual consistency][7].
6696
+ #
6182
6697
  #
6183
6698
  #
6184
6699
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
@@ -6187,6 +6702,7 @@ module Aws::KMS
6187
6702
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html#importing-keys-overview
6188
6703
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
6189
6704
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
6705
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
6190
6706
  #
6191
6707
  # @option params [required, String] :key_id
6192
6708
  # The identifier of the KMS key that will be associated with the
@@ -6343,11 +6859,15 @@ module Aws::KMS
6343
6859
  #
6344
6860
  # * UpdateAlias
6345
6861
  #
6862
+ # **Eventual consistency**: The KMS API follows an eventual consistency
6863
+ # model. For more information, see [KMS eventual consistency][4].
6864
+ #
6346
6865
  #
6347
6866
  #
6348
6867
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#aliases-limit
6349
6868
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
6350
6869
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access
6870
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
6351
6871
  #
6352
6872
  # @option params [String] :key_id
6353
6873
  # Lists only aliases that are associated with the specified KMS key.
@@ -6507,12 +7027,16 @@ module Aws::KMS
6507
7027
  #
6508
7028
  # * RevokeGrant
6509
7029
  #
7030
+ # **Eventual consistency**: The KMS API follows an eventual consistency
7031
+ # model. For more information, see [KMS eventual consistency][5].
7032
+ #
6510
7033
  #
6511
7034
  #
6512
7035
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
6513
7036
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html
6514
7037
  # [3]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services
6515
7038
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7039
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
6516
7040
  #
6517
7041
  # @option params [Integer] :limit
6518
7042
  # Use this parameter to specify the maximum number of items to return.
@@ -6648,7 +7172,7 @@ module Aws::KMS
6648
7172
  # resp.grants[0].retiring_principal #=> String
6649
7173
  # resp.grants[0].issuing_account #=> String
6650
7174
  # resp.grants[0].operations #=> Array
6651
- # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac"
7175
+ # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac", "DeriveSharedSecret"
6652
7176
  # resp.grants[0].constraints.encryption_context_subset #=> Hash
6653
7177
  # resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
6654
7178
  # resp.grants[0].constraints.encryption_context_equals #=> Hash
@@ -6679,11 +7203,16 @@ module Aws::KMS
6679
7203
  #
6680
7204
  # * GetKeyPolicy
6681
7205
  #
6682
- # * PutKeyPolicy
7206
+ # * [PutKeyPolicy][2]
7207
+ #
7208
+ # **Eventual consistency**: The KMS API follows an eventual consistency
7209
+ # model. For more information, see [KMS eventual consistency][3].
6683
7210
  #
6684
7211
  #
6685
7212
  #
6686
7213
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7214
+ # [2]: https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html
7215
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
6687
7216
  #
6688
7217
  # @option params [required, String] :key_id
6689
7218
  # Gets the names of key policies for the specified KMS key.
@@ -6765,6 +7294,129 @@ module Aws::KMS
6765
7294
  req.send_request(options)
6766
7295
  end
6767
7296
 
7297
+ # Returns information about all completed key material rotations for the
7298
+ # specified KMS key.
7299
+ #
7300
+ # You must specify the KMS key in all requests. You can refine the key
7301
+ # rotations list by limiting the number of rotations returned.
7302
+ #
7303
+ # For detailed information about automatic and on-demand key rotations,
7304
+ # see [Rotating KMS keys][1] in the *Key Management Service Developer
7305
+ # Guide*.
7306
+ #
7307
+ # **Cross-account use**: No. You cannot perform this operation on a KMS
7308
+ # key in a different Amazon Web Services account.
7309
+ #
7310
+ # **Required permissions**: [kms:ListKeyRotations][2] (key policy)
7311
+ #
7312
+ # **Related operations:**
7313
+ #
7314
+ # * EnableKeyRotation
7315
+ #
7316
+ # * DisableKeyRotation
7317
+ #
7318
+ # * GetKeyRotationStatus
7319
+ #
7320
+ # * RotateKeyOnDemand
7321
+ #
7322
+ # **Eventual consistency**: The KMS API follows an eventual consistency
7323
+ # model. For more information, see [KMS eventual consistency][3].
7324
+ #
7325
+ #
7326
+ #
7327
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
7328
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7329
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
7330
+ #
7331
+ # @option params [required, String] :key_id
7332
+ # Gets the key rotations for the specified KMS key.
7333
+ #
7334
+ # Specify the key ID or key ARN of the KMS key.
7335
+ #
7336
+ # For example:
7337
+ #
7338
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
7339
+ #
7340
+ # * Key ARN:
7341
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
7342
+ #
7343
+ # To get the key ID and key ARN for a KMS key, use ListKeys or
7344
+ # DescribeKey.
7345
+ #
7346
+ # @option params [Integer] :limit
7347
+ # Use this parameter to specify the maximum number of items to return.
7348
+ # When this value is present, KMS does not return more than the
7349
+ # specified number of items, but it might return fewer.
7350
+ #
7351
+ # This value is optional. If you include a value, it must be between 1
7352
+ # and 1000, inclusive. If you do not include a value, it defaults to
7353
+ # 100.
7354
+ #
7355
+ # @option params [String] :marker
7356
+ # Use this parameter in a subsequent request after you receive a
7357
+ # response with truncated results. Set it to the value of `NextMarker`
7358
+ # from the truncated response you just received.
7359
+ #
7360
+ # @return [Types::ListKeyRotationsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
7361
+ #
7362
+ # * {Types::ListKeyRotationsResponse#rotations #rotations} => Array&lt;Types::RotationsListEntry&gt;
7363
+ # * {Types::ListKeyRotationsResponse#next_marker #next_marker} => String
7364
+ # * {Types::ListKeyRotationsResponse#truncated #truncated} => Boolean
7365
+ #
7366
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
7367
+ #
7368
+ #
7369
+ # @example Example: To retrieve information about all completed key material rotations
7370
+ #
7371
+ # # The following example returns information about all completed key material rotations for the specified KMS key.
7372
+ #
7373
+ # resp = client.list_key_rotations({
7374
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab",
7375
+ # })
7376
+ #
7377
+ # resp.to_h outputs the following:
7378
+ # {
7379
+ # rotations: [
7380
+ # {
7381
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab",
7382
+ # rotation_date: Time.parse("2024-03-02T10:11:36.564000+00:00"),
7383
+ # rotation_type: "AUTOMATIC",
7384
+ # },
7385
+ # {
7386
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab",
7387
+ # rotation_date: Time.parse("2024-04-05T15:14:47.757000+00:00"),
7388
+ # rotation_type: "ON_DEMAND",
7389
+ # },
7390
+ # ], # A list of key rotations.
7391
+ # truncated: false, # A flag that indicates whether there are more items in the list. When the value is true, the list in this response is truncated. To get more items, pass the value of the NextMarker element in this response to the Marker parameter in a subsequent request.
7392
+ # }
7393
+ #
7394
+ # @example Request syntax with placeholder values
7395
+ #
7396
+ # resp = client.list_key_rotations({
7397
+ # key_id: "KeyIdType", # required
7398
+ # limit: 1,
7399
+ # marker: "MarkerType",
7400
+ # })
7401
+ #
7402
+ # @example Response structure
7403
+ #
7404
+ # resp.rotations #=> Array
7405
+ # resp.rotations[0].key_id #=> String
7406
+ # resp.rotations[0].rotation_date #=> Time
7407
+ # resp.rotations[0].rotation_type #=> String, one of "AUTOMATIC", "ON_DEMAND"
7408
+ # resp.next_marker #=> String
7409
+ # resp.truncated #=> Boolean
7410
+ #
7411
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/ListKeyRotations AWS API Documentation
7412
+ #
7413
+ # @overload list_key_rotations(params = {})
7414
+ # @param [Hash] params ({})
7415
+ def list_key_rotations(params = {}, options = {})
7416
+ req = build_request(:list_key_rotations, params)
7417
+ req.send_request(options)
7418
+ end
7419
+
6768
7420
  # Gets a list of all KMS keys in the caller's Amazon Web Services
6769
7421
  # account and Region.
6770
7422
  #
@@ -6783,9 +7435,13 @@ module Aws::KMS
6783
7435
  #
6784
7436
  # * ListResourceTags
6785
7437
  #
7438
+ # **Eventual consistency**: The KMS API follows an eventual consistency
7439
+ # model. For more information, see [KMS eventual consistency][2].
7440
+ #
6786
7441
  #
6787
7442
  #
6788
7443
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7444
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
6789
7445
  #
6790
7446
  # @option params [Integer] :limit
6791
7447
  # Use this parameter to specify the maximum number of items to return.
@@ -6898,11 +7554,15 @@ module Aws::KMS
6898
7554
  #
6899
7555
  # * UntagResource
6900
7556
  #
7557
+ # **Eventual consistency**: The KMS API follows an eventual consistency
7558
+ # model. For more information, see [KMS eventual consistency][4].
7559
+ #
6901
7560
  #
6902
7561
  #
6903
7562
  # [1]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html
6904
7563
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html
6905
7564
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7565
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
6906
7566
  #
6907
7567
  # @option params [required, String] :key_id
6908
7568
  # Gets tags on the specified KMS key.
@@ -7011,14 +7671,25 @@ module Aws::KMS
7011
7671
  # programming languages, see [Programming grants][2].
7012
7672
  #
7013
7673
  # **Cross-account use**: You must specify a principal in your Amazon Web
7014
- # Services account. However, this operation can return grants in any
7015
- # Amazon Web Services account. You do not need `kms:ListRetirableGrants`
7016
- # permission (or any other additional permission) in any Amazon Web
7017
- # Services account other than your own.
7674
+ # Services account. This operation returns a list of grants where the
7675
+ # retiring principal specified in the `ListRetirableGrants` request is
7676
+ # the same retiring principal on the grant. This can include grants on
7677
+ # KMS keys owned by other Amazon Web Services accounts, but you do not
7678
+ # need `kms:ListRetirableGrants` permission (or any other additional
7679
+ # permission) in any Amazon Web Services account other than your own.
7018
7680
  #
7019
7681
  # **Required permissions**: [kms:ListRetirableGrants][3] (IAM policy) in
7020
7682
  # your Amazon Web Services account.
7021
7683
  #
7684
+ # <note markdown="1"> KMS authorizes `ListRetirableGrants` requests by evaluating the caller
7685
+ # account's kms:ListRetirableGrants permissions. The authorized
7686
+ # resource in `ListRetirableGrants` calls is the retiring principal
7687
+ # specified in the request. KMS does not evaluate the caller's
7688
+ # permissions to verify their access to any KMS keys or grants that
7689
+ # might be returned by the `ListRetirableGrants` call.
7690
+ #
7691
+ # </note>
7692
+ #
7022
7693
  # **Related operations:**
7023
7694
  #
7024
7695
  # * CreateGrant
@@ -7029,11 +7700,15 @@ module Aws::KMS
7029
7700
  #
7030
7701
  # * RevokeGrant
7031
7702
  #
7703
+ # **Eventual consistency**: The KMS API follows an eventual consistency
7704
+ # model. For more information, see [KMS eventual consistency][4].
7705
+ #
7032
7706
  #
7033
7707
  #
7034
7708
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
7035
7709
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html
7036
7710
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7711
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
7037
7712
  #
7038
7713
  # @option params [Integer] :limit
7039
7714
  # Use this parameter to specify the maximum number of items to return.
@@ -7119,7 +7794,7 @@ module Aws::KMS
7119
7794
  # resp.grants[0].retiring_principal #=> String
7120
7795
  # resp.grants[0].issuing_account #=> String
7121
7796
  # resp.grants[0].operations #=> Array
7122
- # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac"
7797
+ # resp.grants[0].operations[0] #=> String, one of "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "Sign", "Verify", "GetPublicKey", "CreateGrant", "RetireGrant", "DescribeKey", "GenerateDataKeyPair", "GenerateDataKeyPairWithoutPlaintext", "GenerateMac", "VerifyMac", "DeriveSharedSecret"
7123
7798
  # resp.grants[0].constraints.encryption_context_subset #=> Hash
7124
7799
  # resp.grants[0].constraints.encryption_context_subset["EncryptionContextKey"] #=> String
7125
7800
  # resp.grants[0].constraints.encryption_context_equals #=> Hash
@@ -7153,12 +7828,16 @@ module Aws::KMS
7153
7828
  #
7154
7829
  # **Related operations**: GetKeyPolicy
7155
7830
  #
7831
+ # **Eventual consistency**: The KMS API follows an eventual consistency
7832
+ # model. For more information, see [KMS eventual consistency][5].
7833
+ #
7156
7834
  #
7157
7835
  #
7158
7836
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html
7159
7837
  # [2]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html
7160
7838
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-key-policies.html#put-policy
7161
7839
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7840
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
7162
7841
  #
7163
7842
  # @option params [required, String] :key_id
7164
7843
  # Sets the key policy on the specified KMS key.
@@ -7175,8 +7854,9 @@ module Aws::KMS
7175
7854
  # To get the key ID and key ARN for a KMS key, use ListKeys or
7176
7855
  # DescribeKey.
7177
7856
  #
7178
- # @option params [required, String] :policy_name
7179
- # The name of the key policy. The only valid value is `default`.
7857
+ # @option params [String] :policy_name
7858
+ # The name of the key policy. If no policy name is specified, the
7859
+ # default value is `default`. The only valid value is `default`.
7180
7860
  #
7181
7861
  # @option params [required, String] :policy
7182
7862
  # The key policy to attach to the KMS key.
@@ -7233,12 +7913,13 @@ module Aws::KMS
7233
7913
  # Management Service Developer Guide*.
7234
7914
  #
7235
7915
  # Use this parameter only when you intend to prevent the principal that
7236
- # is making the request from making a subsequent PutKeyPolicy request on
7237
- # the KMS key.
7916
+ # is making the request from making a subsequent [PutKeyPolicy][2]
7917
+ # request on the KMS key.
7238
7918
  #
7239
7919
  #
7240
7920
  #
7241
7921
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key
7922
+ # [2]: https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html
7242
7923
  #
7243
7924
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
7244
7925
  #
@@ -7257,7 +7938,7 @@ module Aws::KMS
7257
7938
  #
7258
7939
  # resp = client.put_key_policy({
7259
7940
  # key_id: "KeyIdType", # required
7260
- # policy_name: "PolicyNameType", # required
7941
+ # policy_name: "PolicyNameType",
7261
7942
  # policy: "PolicyType", # required
7262
7943
  # bypass_policy_lockout_safety_check: false,
7263
7944
  # })
@@ -7363,6 +8044,9 @@ module Aws::KMS
7363
8044
  #
7364
8045
  # * GenerateDataKeyPair
7365
8046
  #
8047
+ # **Eventual consistency**: The KMS API follows an eventual consistency
8048
+ # model. For more information, see [KMS eventual consistency][9].
8049
+ #
7366
8050
  #
7367
8051
  #
7368
8052
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-manually
@@ -7373,6 +8057,7 @@ module Aws::KMS
7373
8057
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
7374
8058
  # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
7375
8059
  # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html
8060
+ # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
7376
8061
  #
7377
8062
  # @option params [required, String, StringIO, File] :ciphertext_blob
7378
8063
  # Ciphertext of the data to reencrypt.
@@ -7643,9 +8328,8 @@ module Aws::KMS
7643
8328
  # If you replicate a multi-Region primary key with imported key
7644
8329
  # material, the replica key is created with no key material. You must
7645
8330
  # import the same key material that you imported into the primary key.
7646
- # For details, see [Importing key material into multi-Region
7647
- # keys](kms/latest/developerguide/multi-region-keys-import.html) in the
7648
- # *Key Management Service Developer Guide*.
8331
+ # For details, see [Importing key material into multi-Region keys][12]
8332
+ # in the *Key Management Service Developer Guide*.
7649
8333
  #
7650
8334
  # To convert a replica key to a primary key, use the UpdatePrimaryRegion
7651
8335
  # operation.
@@ -7675,6 +8359,9 @@ module Aws::KMS
7675
8359
  #
7676
8360
  # * UpdatePrimaryRegion
7677
8361
  #
8362
+ # **Eventual consistency**: The KMS API follows an eventual consistency
8363
+ # model. For more information, see [KMS eventual consistency][13].
8364
+ #
7678
8365
  #
7679
8366
  #
7680
8367
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html
@@ -7688,6 +8375,8 @@ module Aws::KMS
7688
8375
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html
7689
8376
  # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
7690
8377
  # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-sync-properties
8378
+ # [12]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-import.html
8379
+ # [13]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
7691
8380
  #
7692
8381
  # @option params [required, String] :key_id
7693
8382
  # Identifies the multi-Region primary key that is being replicated. To
@@ -7806,12 +8495,13 @@ module Aws::KMS
7806
8495
  # Management Service Developer Guide*.
7807
8496
  #
7808
8497
  # Use this parameter only when you intend to prevent the principal that
7809
- # is making the request from making a subsequent PutKeyPolicy request on
7810
- # the KMS key.
8498
+ # is making the request from making a subsequent [PutKeyPolicy][2]
8499
+ # request on the KMS key.
7811
8500
  #
7812
8501
  #
7813
8502
  #
7814
8503
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key
8504
+ # [2]: https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html
7815
8505
  #
7816
8506
  # @option params [String] :description
7817
8507
  # A description of the KMS key. The default value is an empty string (no
@@ -7942,7 +8632,7 @@ module Aws::KMS
7942
8632
  # resp.replica_key_metadata.creation_date #=> Time
7943
8633
  # resp.replica_key_metadata.enabled #=> Boolean
7944
8634
  # resp.replica_key_metadata.description #=> String
7945
- # resp.replica_key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC"
8635
+ # resp.replica_key_metadata.key_usage #=> String, one of "SIGN_VERIFY", "ENCRYPT_DECRYPT", "GENERATE_VERIFY_MAC", "KEY_AGREEMENT"
7946
8636
  # resp.replica_key_metadata.key_state #=> String, one of "Creating", "Enabled", "Disabled", "PendingDeletion", "PendingImport", "PendingReplicaDeletion", "Unavailable", "Updating"
7947
8637
  # resp.replica_key_metadata.deletion_date #=> Time
7948
8638
  # resp.replica_key_metadata.valid_to #=> Time
@@ -7957,6 +8647,8 @@ module Aws::KMS
7957
8647
  # resp.replica_key_metadata.encryption_algorithms[0] #=> String, one of "SYMMETRIC_DEFAULT", "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256", "SM2PKE"
7958
8648
  # resp.replica_key_metadata.signing_algorithms #=> Array
7959
8649
  # resp.replica_key_metadata.signing_algorithms[0] #=> String, one of "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512", "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "ECDSA_SHA_256", "ECDSA_SHA_384", "ECDSA_SHA_512", "SM2DSA"
8650
+ # resp.replica_key_metadata.key_agreement_algorithms #=> Array
8651
+ # resp.replica_key_metadata.key_agreement_algorithms[0] #=> String, one of "ECDH"
7960
8652
  # resp.replica_key_metadata.multi_region #=> Boolean
7961
8653
  # resp.replica_key_metadata.multi_region_configuration.multi_region_key_type #=> String, one of "PRIMARY", "REPLICA"
7962
8654
  # resp.replica_key_metadata.multi_region_configuration.primary_key.arn #=> String
@@ -8002,7 +8694,7 @@ module Aws::KMS
8002
8694
  # **Cross-account use**: Yes. You can retire a grant on a KMS key in a
8003
8695
  # different Amazon Web Services account.
8004
8696
  #
8005
- # **Required permissions:**:Permission to retire a grant is determined
8697
+ # **Required permissions**: Permission to retire a grant is determined
8006
8698
  # primarily by the grant. For details, see [Retiring and revoking
8007
8699
  # grants][2] in the *Key Management Service Developer Guide*.
8008
8700
  #
@@ -8016,12 +8708,16 @@ module Aws::KMS
8016
8708
  #
8017
8709
  # * RevokeGrant
8018
8710
  #
8711
+ # **Eventual consistency**: The KMS API follows an eventual consistency
8712
+ # model. For more information, see [KMS eventual consistency][5].
8713
+ #
8019
8714
  #
8020
8715
  #
8021
8716
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token
8022
8717
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete
8023
8718
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
8024
8719
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html
8720
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8025
8721
  #
8026
8722
  # @option params [String] :grant_token
8027
8723
  # Identifies the grant to be retired. You can use a grant token to
@@ -8125,13 +8821,17 @@ module Aws::KMS
8125
8821
  #
8126
8822
  # * RetireGrant
8127
8823
  #
8824
+ # **Eventual consistency**: The KMS API follows an eventual consistency
8825
+ # model. For more information, see [KMS eventual consistency][6].
8826
+ #
8128
8827
  #
8129
8828
  #
8130
- # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/managing-grants.html#grant-delete
8829
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete
8131
8830
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-eventual-consistency
8132
8831
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
8133
8832
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html
8134
8833
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
8834
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8135
8835
  #
8136
8836
  # @option params [required, String] :key_id
8137
8837
  # A unique identifier for the KMS key associated with the grant. To get
@@ -8194,6 +8894,147 @@ module Aws::KMS
8194
8894
  req.send_request(options)
8195
8895
  end
8196
8896
 
8897
+ # Immediately initiates rotation of the key material of the specified
8898
+ # symmetric encryption KMS key.
8899
+ #
8900
+ # You can perform [on-demand rotation][1] of the key material in
8901
+ # customer managed KMS keys, regardless of whether or not [automatic key
8902
+ # rotation][2] is enabled. On-demand rotations do not change existing
8903
+ # automatic rotation schedules. For example, consider a KMS key that has
8904
+ # automatic key rotation enabled with a rotation period of 730 days. If
8905
+ # the key is scheduled to automatically rotate on April 14, 2024, and
8906
+ # you perform an on-demand rotation on April 10, 2024, the key will
8907
+ # automatically rotate, as scheduled, on April 14, 2024 and every 730
8908
+ # days thereafter.
8909
+ #
8910
+ # <note markdown="1"> You can perform on-demand key rotation a **maximum of 10 times** per
8911
+ # KMS key. You can use the KMS console to view the number of remaining
8912
+ # on-demand rotations available for a KMS key.
8913
+ #
8914
+ # </note>
8915
+ #
8916
+ # You can use GetKeyRotationStatus to identify any in progress on-demand
8917
+ # rotations. You can use ListKeyRotations to identify the date that
8918
+ # completed on-demand rotations were performed. You can monitor rotation
8919
+ # of the key material for your KMS keys in CloudTrail and Amazon
8920
+ # CloudWatch.
8921
+ #
8922
+ # On-demand key rotation is supported only on [symmetric encryption KMS
8923
+ # keys][3]. You cannot perform on-demand rotation of [asymmetric KMS
8924
+ # keys][4], [HMAC KMS keys][5], KMS keys with [imported key
8925
+ # material][6], or KMS keys in a [custom key store][7]. To perform
8926
+ # on-demand rotation of a set of related [multi-Region keys][8], invoke
8927
+ # the on-demand rotation on the primary key.
8928
+ #
8929
+ # You cannot initiate on-demand rotation of [Amazon Web Services managed
8930
+ # KMS keys][9]. KMS always rotates the key material of Amazon Web
8931
+ # Services managed keys every year. Rotation of [Amazon Web Services
8932
+ # owned KMS keys][10] is managed by the Amazon Web Services service that
8933
+ # owns the key.
8934
+ #
8935
+ # The KMS key that you use for this operation must be in a compatible
8936
+ # key state. For details, see [Key states of KMS keys][11] in the *Key
8937
+ # Management Service Developer Guide*.
8938
+ #
8939
+ # **Cross-account use**: No. You cannot perform this operation on a KMS
8940
+ # key in a different Amazon Web Services account.
8941
+ #
8942
+ # **Required permissions**: [kms:RotateKeyOnDemand][12] (key policy)
8943
+ #
8944
+ # **Related operations:**
8945
+ #
8946
+ # * EnableKeyRotation
8947
+ #
8948
+ # * DisableKeyRotation
8949
+ #
8950
+ # * GetKeyRotationStatus
8951
+ #
8952
+ # * ListKeyRotations
8953
+ #
8954
+ # **Eventual consistency**: The KMS API follows an eventual consistency
8955
+ # model. For more information, see [KMS eventual consistency][13].
8956
+ #
8957
+ #
8958
+ #
8959
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotating-keys-on-demand
8960
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotating-keys-enable-disable
8961
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks
8962
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
8963
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
8964
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
8965
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
8966
+ # [8]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
8967
+ # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
8968
+ # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk
8969
+ # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
8970
+ # [12]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
8971
+ # [13]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8972
+ #
8973
+ # @option params [required, String] :key_id
8974
+ # Identifies a symmetric encryption KMS key. You cannot perform
8975
+ # on-demand rotation of [asymmetric KMS keys][1], [HMAC KMS keys][2],
8976
+ # KMS keys with [imported key material][3], or KMS keys in a [custom key
8977
+ # store][4]. To perform on-demand rotation of a set of related
8978
+ # [multi-Region keys][5], invoke the on-demand rotation on the primary
8979
+ # key.
8980
+ #
8981
+ # Specify the key ID or key ARN of the KMS key.
8982
+ #
8983
+ # For example:
8984
+ #
8985
+ # * Key ID: `1234abcd-12ab-34cd-56ef-1234567890ab`
8986
+ #
8987
+ # * Key ARN:
8988
+ # `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
8989
+ #
8990
+ # To get the key ID and key ARN for a KMS key, use ListKeys or
8991
+ # DescribeKey.
8992
+ #
8993
+ #
8994
+ #
8995
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
8996
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
8997
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html
8998
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
8999
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate
9000
+ #
9001
+ # @return [Types::RotateKeyOnDemandResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
9002
+ #
9003
+ # * {Types::RotateKeyOnDemandResponse#key_id #key_id} => String
9004
+ #
9005
+ #
9006
+ # @example Example: To perform on-demand rotation of key material
9007
+ #
9008
+ # # The following example immediately initiates rotation of the key material for the specified KMS key.
9009
+ #
9010
+ # resp = client.rotate_key_on_demand({
9011
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The identifier of the KMS key whose key material you want to initiate on-demand rotation on. You can use the key ID or the Amazon Resource Name (ARN) of the KMS key.
9012
+ # })
9013
+ #
9014
+ # resp.to_h outputs the following:
9015
+ # {
9016
+ # key_id: "1234abcd-12ab-34cd-56ef-1234567890ab", # The KMS key that you initiated on-demand rotation on.
9017
+ # }
9018
+ #
9019
+ # @example Request syntax with placeholder values
9020
+ #
9021
+ # resp = client.rotate_key_on_demand({
9022
+ # key_id: "KeyIdType", # required
9023
+ # })
9024
+ #
9025
+ # @example Response structure
9026
+ #
9027
+ # resp.key_id #=> String
9028
+ #
9029
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/RotateKeyOnDemand AWS API Documentation
9030
+ #
9031
+ # @overload rotate_key_on_demand(params = {})
9032
+ # @param [Hash] params ({})
9033
+ def rotate_key_on_demand(params = {}, options = {})
9034
+ req = build_request(:rotate_key_on_demand, params)
9035
+ req.send_request(options)
9036
+ end
9037
+
8197
9038
  # Schedules the deletion of a KMS key. By default, KMS applies a waiting
8198
9039
  # period of 30 days, but you can specify a waiting period of 7-30 days.
8199
9040
  # When this operation is successful, the key state of the KMS key
@@ -8208,9 +9049,8 @@ module Aws::KMS
8208
9049
  # Deleting a KMS key is a destructive and potentially dangerous
8209
9050
  # operation. When a KMS key is deleted, all data that was encrypted
8210
9051
  # under the KMS key is unrecoverable. (The only exception is a
8211
- # [multi-Region replica
8212
- # key](kms/latest/developerguide/multi-region-keys-delete.html), or an
8213
- # [asymmetric or HMAC KMS key with imported key
9052
+ # [multi-Region replica key][1], or an [asymmetric or HMAC KMS key with
9053
+ # imported key
8214
9054
  # material](kms/latest/developerguide/importing-keys-managing.html#import-delete-key).)
8215
9055
  # To prevent the use of a KMS key without deleting it, use DisableKey.
8216
9056
  #
@@ -8256,6 +9096,9 @@ module Aws::KMS
8256
9096
  #
8257
9097
  # * DisableKey
8258
9098
  #
9099
+ # **Eventual consistency**: The KMS API follows an eventual consistency
9100
+ # model. For more information, see [KMS eventual consistency][7].
9101
+ #
8259
9102
  #
8260
9103
  #
8261
9104
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html
@@ -8264,6 +9107,7 @@ module Aws::KMS
8264
9107
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/delete-xks-key.html
8265
9108
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html
8266
9109
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
9110
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8267
9111
  #
8268
9112
  # @option params [required, String] :key_id
8269
9113
  # The unique identifier of the KMS key to delete.
@@ -8403,12 +9247,16 @@ module Aws::KMS
8403
9247
  #
8404
9248
  # **Related operations**: Verify
8405
9249
  #
9250
+ # **Eventual consistency**: The KMS API follows an eventual consistency
9251
+ # model. For more information, see [KMS eventual consistency][5].
9252
+ #
8406
9253
  #
8407
9254
  #
8408
9255
  # [1]: https://en.wikipedia.org/wiki/Digital_signature
8409
9256
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
8410
9257
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
8411
9258
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
9259
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8412
9260
  #
8413
9261
  # @option params [required, String] :key_id
8414
9262
  # Identifies an asymmetric KMS key. KMS uses the private key in the
@@ -8632,6 +9480,9 @@ module Aws::KMS
8632
9480
  #
8633
9481
  # * UntagResource
8634
9482
  #
9483
+ # **Eventual consistency**: The KMS API follows an eventual consistency
9484
+ # model. For more information, see [KMS eventual consistency][11].
9485
+ #
8635
9486
  #
8636
9487
  #
8637
9488
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
@@ -8644,6 +9495,7 @@ module Aws::KMS
8644
9495
  # [8]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html
8645
9496
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
8646
9497
  # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
9498
+ # [11]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8647
9499
  #
8648
9500
  # @option params [required, String] :key_id
8649
9501
  # Identifies a customer managed key in the account and Region.
@@ -8748,6 +9600,9 @@ module Aws::KMS
8748
9600
  #
8749
9601
  # * TagResource
8750
9602
  #
9603
+ # **Eventual consistency**: The KMS API follows an eventual consistency
9604
+ # model. For more information, see [KMS eventual consistency][7].
9605
+ #
8751
9606
  #
8752
9607
  #
8753
9608
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
@@ -8756,6 +9611,7 @@ module Aws::KMS
8756
9611
  # [4]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html
8757
9612
  # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
8758
9613
  # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
9614
+ # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8759
9615
  #
8760
9616
  # @option params [required, String] :key_id
8761
9617
  # Identifies the KMS key from which you are removing tags.
@@ -8859,12 +9715,16 @@ module Aws::KMS
8859
9715
  #
8860
9716
  # * ListAliases
8861
9717
  #
9718
+ # **Eventual consistency**: The KMS API follows an eventual consistency
9719
+ # model. For more information, see [KMS eventual consistency][5].
9720
+ #
8862
9721
  #
8863
9722
  #
8864
9723
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/abac.html
8865
9724
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
8866
9725
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
8867
9726
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html#alias-access
9727
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
8868
9728
  #
8869
9729
  # @option params [required, String] :alias_name
8870
9730
  # Identifies the alias that is changing its KMS key. This value must
@@ -9030,10 +9890,14 @@ module Aws::KMS
9030
9890
  #
9031
9891
  # * DisconnectCustomKeyStore
9032
9892
  #
9893
+ # **Eventual consistency**: The KMS API follows an eventual consistency
9894
+ # model. For more information, see [KMS eventual consistency][3].
9895
+ #
9033
9896
  #
9034
9897
  #
9035
9898
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html
9036
9899
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
9900
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
9037
9901
  #
9038
9902
  # @option params [required, String] :custom_key_store_id
9039
9903
  # Identifies the custom key store that you want to update. Enter the ID
@@ -9304,10 +10168,14 @@ module Aws::KMS
9304
10168
  #
9305
10169
  # * DescribeKey
9306
10170
  #
10171
+ # **Eventual consistency**: The KMS API follows an eventual consistency
10172
+ # model. For more information, see [KMS eventual consistency][3].
10173
+ #
9307
10174
  #
9308
10175
  #
9309
10176
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
9310
10177
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
10178
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
9311
10179
  #
9312
10180
  # @option params [required, String] :key_id
9313
10181
  # Updates the description of the specified KMS key.
@@ -9431,6 +10299,9 @@ module Aws::KMS
9431
10299
  #
9432
10300
  # * ReplicateKey
9433
10301
  #
10302
+ # **Eventual consistency**: The KMS API follows an eventual consistency
10303
+ # model. For more information, see [KMS eventual consistency][10].
10304
+ #
9434
10305
  #
9435
10306
  #
9436
10307
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-update
@@ -9442,6 +10313,7 @@ module Aws::KMS
9442
10313
  # [7]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
9443
10314
  # [8]: https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html
9444
10315
  # [9]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
10316
+ # [10]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
9445
10317
  #
9446
10318
  # @option params [required, String] :key_id
9447
10319
  # Identifies the current primary key. When the operation completes, this
@@ -9550,12 +10422,16 @@ module Aws::KMS
9550
10422
  #
9551
10423
  # **Related operations**: Sign
9552
10424
  #
10425
+ # **Eventual consistency**: The KMS API follows an eventual consistency
10426
+ # model. For more information, see [KMS eventual consistency][5].
10427
+ #
9553
10428
  #
9554
10429
  #
9555
10430
  # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html
9556
10431
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification
9557
10432
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
9558
10433
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
10434
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
9559
10435
  #
9560
10436
  # @option params [required, String] :key_id
9561
10437
  # Identifies the asymmetric KMS key that will be used to verify the
@@ -9767,12 +10643,16 @@ module Aws::KMS
9767
10643
  #
9768
10644
  # **Related operations**: GenerateMac
9769
10645
  #
10646
+ # **Eventual consistency**: The KMS API follows an eventual consistency
10647
+ # model. For more information, see [KMS eventual consistency][5].
10648
+ #
9770
10649
  #
9771
10650
  #
9772
10651
  # [1]: https://datatracker.ietf.org/doc/html/rfc2104
9773
10652
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html
9774
10653
  # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html
9775
10654
  # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html
10655
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html
9776
10656
  #
9777
10657
  # @option params [required, String, StringIO, File] :message
9778
10658
  # The message that will be used in the verification. Enter the same
@@ -9881,14 +10761,19 @@ module Aws::KMS
9881
10761
  # @api private
9882
10762
  def build_request(operation_name, params = {})
9883
10763
  handlers = @handlers.for(operation_name)
10764
+ tracer = config.telemetry_provider.tracer_provider.tracer(
10765
+ Aws::Telemetry.module_to_tracer_name('Aws::KMS')
10766
+ )
9884
10767
  context = Seahorse::Client::RequestContext.new(
9885
10768
  operation_name: operation_name,
9886
10769
  operation: config.api.operation(operation_name),
9887
10770
  client: self,
9888
10771
  params: params,
9889
- config: config)
10772
+ config: config,
10773
+ tracer: tracer
10774
+ )
9890
10775
  context[:gem_name] = 'aws-sdk-kms'
9891
- context[:gem_version] = '1.72.0'
10776
+ context[:gem_version] = '1.96.0'
9892
10777
  Seahorse::Client::Request.new(handlers, context)
9893
10778
  end
9894
10779