aws-sdk-directoryservice 1.86.0 → 1.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -95,7 +95,7 @@ module Aws::DirectoryService
95
95
  # class name or an instance of a plugin class.
96
96
  #
97
97
  # @option options [required, Aws::CredentialProvider] :credentials
98
- # Your AWS credentials. This can be an instance of any one of the
98
+ # Your AWS credentials used for authentication. This can be an instance of any one of the
99
99
  # following classes:
100
100
  #
101
101
  # * `Aws::Credentials` - Used for configuring static, non-refreshing
@@ -128,18 +128,23 @@ module Aws::DirectoryService
128
128
  # locations will be searched for credentials:
129
129
  #
130
130
  # * `Aws.config[:credentials]`
131
+ #
131
132
  # * The `:access_key_id`, `:secret_access_key`, `:session_token`, and
132
133
  # `:account_id` options.
133
- # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'],
134
- # ENV['AWS_SESSION_TOKEN'], and ENV['AWS_ACCOUNT_ID']
134
+ #
135
+ # * `ENV['AWS_ACCESS_KEY_ID']`, `ENV['AWS_SECRET_ACCESS_KEY']`,
136
+ # `ENV['AWS_SESSION_TOKEN']`, and `ENV['AWS_ACCOUNT_ID']`.
137
+ #
135
138
  # * `~/.aws/credentials`
139
+ #
136
140
  # * `~/.aws/config`
141
+ #
137
142
  # * EC2/ECS IMDS instance profile - When used by default, the timeouts
138
143
  # are very aggressive. Construct and pass an instance of
139
144
  # `Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
140
145
  # enable retries and extended timeouts. Instance profile credential
141
- # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED']
142
- # to true.
146
+ # fetching can be disabled by setting `ENV['AWS_EC2_METADATA_DISABLED']`
147
+ # to `true`.
143
148
  #
144
149
  # @option options [required, String] :region
145
150
  # The AWS region to connect to. The configured `:region` is
@@ -167,6 +172,11 @@ module Aws::DirectoryService
167
172
  # When false, the request will raise a `RetryCapacityNotAvailableError` and will
168
173
  # not retry instead of sleeping.
169
174
  #
175
+ # @option options [Array<String>] :auth_scheme_preference
176
+ # A list of preferred authentication schemes to use when making a request. Supported values are:
177
+ # `sigv4`, `sigv4a`, `httpBearerAuth`, and `noAuth`. When set using `ENV['AWS_AUTH_SCHEME_PREFERENCE']` or in
178
+ # shared config as `auth_scheme_preference`, the value should be a comma-separated list.
179
+ #
170
180
  # @option options [Boolean] :client_side_monitoring (false)
171
181
  # When `true`, client-side metrics will be collected for all API requests from
172
182
  # this client.
@@ -253,8 +263,8 @@ module Aws::DirectoryService
253
263
  # 4 times. Used in `standard` and `adaptive` retry modes.
254
264
  #
255
265
  # @option options [String] :profile ("default")
256
- # Used when loading credentials from the shared credentials file
257
- # at HOME/.aws/credentials. When not specified, 'default' is used.
266
+ # Used when loading credentials from the shared credentials file at `HOME/.aws/credentials`.
267
+ # When not specified, 'default' is used.
258
268
  #
259
269
  # @option options [String] :request_checksum_calculation ("when_supported")
260
270
  # Determines when a checksum will be calculated for request payloads. Values are:
@@ -374,7 +384,7 @@ module Aws::DirectoryService
374
384
  # `Aws::Telemetry::OTelProvider` for telemetry provider.
375
385
  #
376
386
  # @option options [Aws::TokenProvider] :token_provider
377
- # A Bearer Token Provider. This can be an instance of any one of the
387
+ # Your Bearer token used for authentication. This can be an instance of any one of the
378
388
  # following classes:
379
389
  #
380
390
  # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
@@ -664,8 +674,8 @@ module Aws::DirectoryService
664
674
  # replication. For example, `us-east-1`.
665
675
  #
666
676
  # @option params [required, Types::DirectoryVpcSettings] :vpc_settings
667
- # Contains VPC information for the CreateDirectory or CreateMicrosoftAD
668
- # operation.
677
+ # Contains VPC information for the CreateDirectory, CreateMicrosoftAD,
678
+ # or CreateHybridAD operation.
669
679
  #
670
680
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
671
681
  #
@@ -1230,6 +1240,66 @@ module Aws::DirectoryService
1230
1240
  req.send_request(options)
1231
1241
  end
1232
1242
 
1243
+ # Creates a hybrid directory that connects your self-managed Active
1244
+ # Directory (AD) infrastructure and Amazon Web Services.
1245
+ #
1246
+ # You must have a successful directory assessment using
1247
+ # StartADAssessment to validate your environment compatibility before
1248
+ # you use this operation.
1249
+ #
1250
+ # Updates are applied asynchronously. Use DescribeDirectories to monitor
1251
+ # the progress of directory creation.
1252
+ #
1253
+ # @option params [required, String] :secret_arn
1254
+ # The Amazon Resource Name (ARN) of the Amazon Web Services Secrets
1255
+ # Manager secret that contains the credentials for the service account
1256
+ # used to join hybrid domain controllers to your self-managed AD domain.
1257
+ # This secret is used once and not stored.
1258
+ #
1259
+ # The secret must contain key-value pairs with keys matching
1260
+ # `customerAdAdminDomainUsername` and `customerAdAdminDomainPassword`.
1261
+ # For example:
1262
+ # `{"customerAdAdminDomainUsername":"carlos_salazar","customerAdAdminDomainPassword":"ExamplePassword123!"}`.
1263
+ #
1264
+ # @option params [required, String] :assessment_id
1265
+ # The unique identifier of the successful directory assessment that
1266
+ # validates your self-managed AD environment. You must have a successful
1267
+ # directory assessment before you create a hybrid directory.
1268
+ #
1269
+ # @option params [Array<Types::Tag>] :tags
1270
+ # The tags to be assigned to the directory. Each tag consists of a key
1271
+ # and value pair. You can specify multiple tags as a list.
1272
+ #
1273
+ # @return [Types::CreateHybridADResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1274
+ #
1275
+ # * {Types::CreateHybridADResult#directory_id #directory_id} => String
1276
+ #
1277
+ # @example Request syntax with placeholder values
1278
+ #
1279
+ # resp = client.create_hybrid_ad({
1280
+ # secret_arn: "SecretArn", # required
1281
+ # assessment_id: "AssessmentId", # required
1282
+ # tags: [
1283
+ # {
1284
+ # key: "TagKey", # required
1285
+ # value: "TagValue", # required
1286
+ # },
1287
+ # ],
1288
+ # })
1289
+ #
1290
+ # @example Response structure
1291
+ #
1292
+ # resp.directory_id #=> String
1293
+ #
1294
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/CreateHybridAD AWS API Documentation
1295
+ #
1296
+ # @overload create_hybrid_ad(params = {})
1297
+ # @param [Hash] params ({})
1298
+ def create_hybrid_ad(params = {}, options = {})
1299
+ req = build_request(:create_hybrid_ad, params)
1300
+ req.send_request(options)
1301
+ end
1302
+
1233
1303
  # Creates a subscription to forward real-time Directory Service domain
1234
1304
  # controller security logs to the specified Amazon CloudWatch log group
1235
1305
  # in your Amazon Web Services account.
@@ -1508,6 +1578,39 @@ module Aws::DirectoryService
1508
1578
  req.send_request(options)
1509
1579
  end
1510
1580
 
1581
+ # Deletes a directory assessment and all associated data. This operation
1582
+ # permanently removes the assessment results, validation reports, and
1583
+ # configuration information.
1584
+ #
1585
+ # You cannot delete system-initiated assessments. You can delete
1586
+ # customer-created assessments even if they are in progress.
1587
+ #
1588
+ # @option params [required, String] :assessment_id
1589
+ # The unique identifier of the directory assessment to delete.
1590
+ #
1591
+ # @return [Types::DeleteADAssessmentResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1592
+ #
1593
+ # * {Types::DeleteADAssessmentResult#assessment_id #assessment_id} => String
1594
+ #
1595
+ # @example Request syntax with placeholder values
1596
+ #
1597
+ # resp = client.delete_ad_assessment({
1598
+ # assessment_id: "AssessmentId", # required
1599
+ # })
1600
+ #
1601
+ # @example Response structure
1602
+ #
1603
+ # resp.assessment_id #=> String
1604
+ #
1605
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/DeleteADAssessment AWS API Documentation
1606
+ #
1607
+ # @overload delete_ad_assessment(params = {})
1608
+ # @param [Hash] params ({})
1609
+ def delete_ad_assessment(params = {}, options = {})
1610
+ req = build_request(:delete_ad_assessment, params)
1611
+ req.send_request(options)
1612
+ end
1613
+
1511
1614
  # Deletes a conditional forwarder that has been set up for your Amazon
1512
1615
  # Web Services directory.
1513
1616
  #
@@ -1784,6 +1887,65 @@ module Aws::DirectoryService
1784
1887
  req.send_request(options)
1785
1888
  end
1786
1889
 
1890
+ # Retrieves detailed information about a directory assessment, including
1891
+ # its current status, validation results, and configuration details. Use
1892
+ # this operation to monitor assessment progress and review results.
1893
+ #
1894
+ # @option params [required, String] :assessment_id
1895
+ # The identifier of the directory assessment to describe.
1896
+ #
1897
+ # @return [Types::DescribeADAssessmentResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1898
+ #
1899
+ # * {Types::DescribeADAssessmentResult#assessment #assessment} => Types::Assessment
1900
+ # * {Types::DescribeADAssessmentResult#assessment_reports #assessment_reports} => Array&lt;Types::AssessmentReport&gt;
1901
+ #
1902
+ # @example Request syntax with placeholder values
1903
+ #
1904
+ # resp = client.describe_ad_assessment({
1905
+ # assessment_id: "AssessmentId", # required
1906
+ # })
1907
+ #
1908
+ # @example Response structure
1909
+ #
1910
+ # resp.assessment.assessment_id #=> String
1911
+ # resp.assessment.directory_id #=> String
1912
+ # resp.assessment.dns_name #=> String
1913
+ # resp.assessment.start_time #=> Time
1914
+ # resp.assessment.last_update_date_time #=> Time
1915
+ # resp.assessment.status #=> String
1916
+ # resp.assessment.status_code #=> String
1917
+ # resp.assessment.status_reason #=> String
1918
+ # resp.assessment.customer_dns_ips #=> Array
1919
+ # resp.assessment.customer_dns_ips[0] #=> String
1920
+ # resp.assessment.vpc_id #=> String
1921
+ # resp.assessment.subnet_ids #=> Array
1922
+ # resp.assessment.subnet_ids[0] #=> String
1923
+ # resp.assessment.security_group_ids #=> Array
1924
+ # resp.assessment.security_group_ids[0] #=> String
1925
+ # resp.assessment.self_managed_instance_ids #=> Array
1926
+ # resp.assessment.self_managed_instance_ids[0] #=> String
1927
+ # resp.assessment.report_type #=> String
1928
+ # resp.assessment.version #=> String
1929
+ # resp.assessment_reports #=> Array
1930
+ # resp.assessment_reports[0].domain_controller_ip #=> String
1931
+ # resp.assessment_reports[0].validations #=> Array
1932
+ # resp.assessment_reports[0].validations[0].category #=> String
1933
+ # resp.assessment_reports[0].validations[0].name #=> String
1934
+ # resp.assessment_reports[0].validations[0].status #=> String
1935
+ # resp.assessment_reports[0].validations[0].status_code #=> String
1936
+ # resp.assessment_reports[0].validations[0].status_reason #=> String
1937
+ # resp.assessment_reports[0].validations[0].start_time #=> Time
1938
+ # resp.assessment_reports[0].validations[0].last_update_date_time #=> Time
1939
+ #
1940
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/DescribeADAssessment AWS API Documentation
1941
+ #
1942
+ # @overload describe_ad_assessment(params = {})
1943
+ # @param [Hash] params ({})
1944
+ def describe_ad_assessment(params = {}, options = {})
1945
+ req = build_request(:describe_ad_assessment, params)
1946
+ req.send_request(options)
1947
+ end
1948
+
1787
1949
  # Displays information about the certificate registered for secure LDAP
1788
1950
  # or client certificate authentication.
1789
1951
  #
@@ -2105,6 +2267,10 @@ module Aws::DirectoryService
2105
2267
  # resp.directory_descriptions[0].regions_info.additional_regions #=> Array
2106
2268
  # resp.directory_descriptions[0].regions_info.additional_regions[0] #=> String
2107
2269
  # resp.directory_descriptions[0].os_version #=> String, one of "SERVER_2012", "SERVER_2019"
2270
+ # resp.directory_descriptions[0].hybrid_settings.self_managed_dns_ip_addrs #=> Array
2271
+ # resp.directory_descriptions[0].hybrid_settings.self_managed_dns_ip_addrs[0] #=> String
2272
+ # resp.directory_descriptions[0].hybrid_settings.self_managed_instance_ids #=> Array
2273
+ # resp.directory_descriptions[0].hybrid_settings.self_managed_instance_ids[0] #=> String
2108
2274
  # resp.next_token #=> String
2109
2275
  #
2110
2276
  # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/DescribeDirectories AWS API Documentation
@@ -2273,6 +2439,84 @@ module Aws::DirectoryService
2273
2439
  req.send_request(options)
2274
2440
  end
2275
2441
 
2442
+ # Retrieves information about update activities for a hybrid directory.
2443
+ # This operation provides details about configuration changes,
2444
+ # administrator account updates, and self-managed instance settings (IDs
2445
+ # and DNS IPs).
2446
+ #
2447
+ # @option params [required, String] :directory_id
2448
+ # The identifier of the hybrid directory for which to retrieve update
2449
+ # information.
2450
+ #
2451
+ # @option params [String] :update_type
2452
+ # The type of update activities to retrieve. Valid values include
2453
+ # `SelfManagedInstances` and `HybridAdministratorAccount`.
2454
+ #
2455
+ # @option params [String] :next_token
2456
+ # The pagination token from a previous request to
2457
+ # DescribeHybridADUpdate. Pass null if this is the first request.
2458
+ #
2459
+ # @return [Types::DescribeHybridADUpdateResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2460
+ #
2461
+ # * {Types::DescribeHybridADUpdateResult#update_activities #update_activities} => Types::HybridUpdateActivities
2462
+ # * {Types::DescribeHybridADUpdateResult#next_token #next_token} => String
2463
+ #
2464
+ # @example Request syntax with placeholder values
2465
+ #
2466
+ # resp = client.describe_hybrid_ad_update({
2467
+ # directory_id: "DirectoryId", # required
2468
+ # update_type: "SelfManagedInstances", # accepts SelfManagedInstances, HybridAdministratorAccount
2469
+ # next_token: "NextToken",
2470
+ # })
2471
+ #
2472
+ # @example Response structure
2473
+ #
2474
+ # resp.update_activities.self_managed_instances #=> Array
2475
+ # resp.update_activities.self_managed_instances[0].status #=> String, one of "Updated", "Updating", "UpdateFailed"
2476
+ # resp.update_activities.self_managed_instances[0].status_reason #=> String
2477
+ # resp.update_activities.self_managed_instances[0].initiated_by #=> String
2478
+ # resp.update_activities.self_managed_instances[0].new_value.instance_ids #=> Array
2479
+ # resp.update_activities.self_managed_instances[0].new_value.instance_ids[0] #=> String
2480
+ # resp.update_activities.self_managed_instances[0].new_value.dns_ips #=> Array
2481
+ # resp.update_activities.self_managed_instances[0].new_value.dns_ips[0] #=> String
2482
+ # resp.update_activities.self_managed_instances[0].previous_value.instance_ids #=> Array
2483
+ # resp.update_activities.self_managed_instances[0].previous_value.instance_ids[0] #=> String
2484
+ # resp.update_activities.self_managed_instances[0].previous_value.dns_ips #=> Array
2485
+ # resp.update_activities.self_managed_instances[0].previous_value.dns_ips[0] #=> String
2486
+ # resp.update_activities.self_managed_instances[0].start_time #=> Time
2487
+ # resp.update_activities.self_managed_instances[0].last_updated_date_time #=> Time
2488
+ # resp.update_activities.self_managed_instances[0].assessment_id #=> String
2489
+ # resp.update_activities.hybrid_administrator_account #=> Array
2490
+ # resp.update_activities.hybrid_administrator_account[0].status #=> String, one of "Updated", "Updating", "UpdateFailed"
2491
+ # resp.update_activities.hybrid_administrator_account[0].status_reason #=> String
2492
+ # resp.update_activities.hybrid_administrator_account[0].initiated_by #=> String
2493
+ # resp.update_activities.hybrid_administrator_account[0].new_value.instance_ids #=> Array
2494
+ # resp.update_activities.hybrid_administrator_account[0].new_value.instance_ids[0] #=> String
2495
+ # resp.update_activities.hybrid_administrator_account[0].new_value.dns_ips #=> Array
2496
+ # resp.update_activities.hybrid_administrator_account[0].new_value.dns_ips[0] #=> String
2497
+ # resp.update_activities.hybrid_administrator_account[0].previous_value.instance_ids #=> Array
2498
+ # resp.update_activities.hybrid_administrator_account[0].previous_value.instance_ids[0] #=> String
2499
+ # resp.update_activities.hybrid_administrator_account[0].previous_value.dns_ips #=> Array
2500
+ # resp.update_activities.hybrid_administrator_account[0].previous_value.dns_ips[0] #=> String
2501
+ # resp.update_activities.hybrid_administrator_account[0].start_time #=> Time
2502
+ # resp.update_activities.hybrid_administrator_account[0].last_updated_date_time #=> Time
2503
+ # resp.update_activities.hybrid_administrator_account[0].assessment_id #=> String
2504
+ # resp.next_token #=> String
2505
+ #
2506
+ #
2507
+ # The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
2508
+ #
2509
+ # * hybrid_ad_updated
2510
+ #
2511
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/DescribeHybridADUpdate AWS API Documentation
2512
+ #
2513
+ # @overload describe_hybrid_ad_update(params = {})
2514
+ # @param [Hash] params ({})
2515
+ def describe_hybrid_ad_update(params = {}, options = {})
2516
+ req = build_request(:describe_hybrid_ad_update, params)
2517
+ req.send_request(options)
2518
+ end
2519
+
2276
2520
  # Describes the status of LDAP security for the specified directory.
2277
2521
  #
2278
2522
  # @option params [required, String] :directory_id
@@ -3205,6 +3449,59 @@ module Aws::DirectoryService
3205
3449
  req.send_request(options)
3206
3450
  end
3207
3451
 
3452
+ # Retrieves a list of directory assessments for the specified directory
3453
+ # or all assessments in your account. Use this operation to monitor
3454
+ # assessment status and manage multiple assessments.
3455
+ #
3456
+ # @option params [String] :directory_id
3457
+ # The identifier of the directory for which to list assessments. If not
3458
+ # specified, all assessments in your account are returned.
3459
+ #
3460
+ # @option params [String] :next_token
3461
+ # The pagination token from a previous request to ListADAssessments.
3462
+ # Pass null if this is the first request.
3463
+ #
3464
+ # @option params [Integer] :limit
3465
+ # The maximum number of assessment summaries to return.
3466
+ #
3467
+ # @return [Types::ListADAssessmentsResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3468
+ #
3469
+ # * {Types::ListADAssessmentsResult#assessments #assessments} => Array&lt;Types::AssessmentSummary&gt;
3470
+ # * {Types::ListADAssessmentsResult#next_token #next_token} => String
3471
+ #
3472
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
3473
+ #
3474
+ # @example Request syntax with placeholder values
3475
+ #
3476
+ # resp = client.list_ad_assessments({
3477
+ # directory_id: "DirectoryId",
3478
+ # next_token: "NextToken",
3479
+ # limit: 1,
3480
+ # })
3481
+ #
3482
+ # @example Response structure
3483
+ #
3484
+ # resp.assessments #=> Array
3485
+ # resp.assessments[0].assessment_id #=> String
3486
+ # resp.assessments[0].directory_id #=> String
3487
+ # resp.assessments[0].dns_name #=> String
3488
+ # resp.assessments[0].start_time #=> Time
3489
+ # resp.assessments[0].last_update_date_time #=> Time
3490
+ # resp.assessments[0].status #=> String
3491
+ # resp.assessments[0].customer_dns_ips #=> Array
3492
+ # resp.assessments[0].customer_dns_ips[0] #=> String
3493
+ # resp.assessments[0].report_type #=> String
3494
+ # resp.next_token #=> String
3495
+ #
3496
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/ListADAssessments AWS API Documentation
3497
+ #
3498
+ # @overload list_ad_assessments(params = {})
3499
+ # @param [Hash] params ({})
3500
+ def list_ad_assessments(params = {}, options = {})
3501
+ req = build_request(:list_ad_assessments, params)
3502
+ req.send_request(options)
3503
+ end
3504
+
3208
3505
  # For the specified directory, lists all the certificates registered for
3209
3506
  # a secure LDAP or client certificate authentication.
3210
3507
  #
@@ -3910,6 +4207,73 @@ module Aws::DirectoryService
3910
4207
  req.send_request(options)
3911
4208
  end
3912
4209
 
4210
+ # Initiates a directory assessment to validate your self-managed AD
4211
+ # environment for hybrid domain join. The assessment checks
4212
+ # compatibility and connectivity of the self-managed AD environment.
4213
+ #
4214
+ # A directory assessment is automatically created when you create a
4215
+ # hybrid directory. There are two types of assessments: `CUSTOMER` and
4216
+ # `SYSTEM`. Your Amazon Web Services account has a limit of 100
4217
+ # `CUSTOMER` directory assessments.
4218
+ #
4219
+ # The assessment process typically takes 30 minutes or more to complete.
4220
+ # The assessment process is asynchronous and you can monitor it with
4221
+ # `DescribeADAssessment`.
4222
+ #
4223
+ # The `InstanceIds` must have a one-to-one correspondence with
4224
+ # `CustomerDnsIps`, meaning that if the IP address for instance
4225
+ # i-10243410 is 10.24.34.100 and the IP address for instance i-10243420
4226
+ # is 10.24.34.200, then the input arrays must maintain the same order
4227
+ # relationship, either \[10.24.34.100, 10.24.34.200\] paired with
4228
+ # \[i-10243410, i-10243420\] or \[10.24.34.200, 10.24.34.100\] paired
4229
+ # with \[i-10243420, i-10243410\].
4230
+ #
4231
+ # Note: You must provide exactly one `DirectoryId` or
4232
+ # `AssessmentConfiguration`.
4233
+ #
4234
+ # @option params [Types::AssessmentConfiguration] :assessment_configuration
4235
+ # Configuration parameters for the directory assessment, including DNS
4236
+ # server information, domain name, Amazon VPC subnet, and Amazon Web
4237
+ # Services System Manager managed node details.
4238
+ #
4239
+ # @option params [String] :directory_id
4240
+ # The identifier of the directory for which to perform the assessment.
4241
+ # This should be an existing directory. If the assessment is not for an
4242
+ # existing directory, this parameter should be omitted.
4243
+ #
4244
+ # @return [Types::StartADAssessmentResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4245
+ #
4246
+ # * {Types::StartADAssessmentResult#assessment_id #assessment_id} => String
4247
+ #
4248
+ # @example Request syntax with placeholder values
4249
+ #
4250
+ # resp = client.start_ad_assessment({
4251
+ # assessment_configuration: {
4252
+ # customer_dns_ips: ["IpAddr"], # required
4253
+ # dns_name: "DirectoryName", # required
4254
+ # vpc_settings: { # required
4255
+ # vpc_id: "VpcId", # required
4256
+ # subnet_ids: ["SubnetId"], # required
4257
+ # },
4258
+ # instance_ids: ["AssessmentInstanceId"], # required
4259
+ # security_group_ids: ["SecurityGroupId"],
4260
+ # },
4261
+ # directory_id: "DirectoryId",
4262
+ # })
4263
+ #
4264
+ # @example Response structure
4265
+ #
4266
+ # resp.assessment_id #=> String
4267
+ #
4268
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/StartADAssessment AWS API Documentation
4269
+ #
4270
+ # @overload start_ad_assessment(params = {})
4271
+ # @param [Hash] params ({})
4272
+ def start_ad_assessment(params = {}, options = {})
4273
+ req = build_request(:start_ad_assessment, params)
4274
+ req.send_request(options)
4275
+ end
4276
+
3913
4277
  # Applies a schema extension to a Microsoft AD directory.
3914
4278
  #
3915
4279
  # @option params [required, String] :directory_id
@@ -4101,6 +4465,82 @@ module Aws::DirectoryService
4101
4465
  req.send_request(options)
4102
4466
  end
4103
4467
 
4468
+ # Updates the configuration of an existing hybrid directory. You can
4469
+ # recover hybrid directory administrator account or modify self-managed
4470
+ # instance settings.
4471
+ #
4472
+ # Updates are applied asynchronously. Use DescribeHybridADUpdate to
4473
+ # monitor the progress of configuration changes.
4474
+ #
4475
+ # The `InstanceIds` must have a one-to-one correspondence with
4476
+ # `CustomerDnsIps`, meaning that if the IP address for instance
4477
+ # i-10243410 is 10.24.34.100 and the IP address for instance i-10243420
4478
+ # is 10.24.34.200, then the input arrays must maintain the same order
4479
+ # relationship, either \[10.24.34.100, 10.24.34.200\] paired with
4480
+ # \[i-10243410, i-10243420\] or \[10.24.34.200, 10.24.34.100\] paired
4481
+ # with \[i-10243420, i-10243410\].
4482
+ #
4483
+ # <note markdown="1"> You must provide at least one update to
4484
+ # UpdateHybridADRequest$HybridAdministratorAccountUpdate or
4485
+ # UpdateHybridADRequest$SelfManagedInstancesSettings.
4486
+ #
4487
+ # </note>
4488
+ #
4489
+ # @option params [required, String] :directory_id
4490
+ # The identifier of the hybrid directory to update.
4491
+ #
4492
+ # @option params [Types::HybridAdministratorAccountUpdate] :hybrid_administrator_account_update
4493
+ # We create a hybrid directory administrator account when we create a
4494
+ # hybrid directory. Use `HybridAdministratorAccountUpdate` to recover
4495
+ # the hybrid directory administrator account if you have deleted it.
4496
+ #
4497
+ # To recover your hybrid directory administrator account, we need
4498
+ # temporary access to a user in your self-managed AD with administrator
4499
+ # permissions in the form of a secret from Amazon Web Services Secrets
4500
+ # Manager. We use these credentials once during recovery and don't
4501
+ # store them.
4502
+ #
4503
+ # If your hybrid directory administrator account exists, then you don’t
4504
+ # need to use `HybridAdministratorAccountUpdate`, even if you have
4505
+ # updated your self-managed AD administrator user.
4506
+ #
4507
+ # @option params [Types::HybridCustomerInstancesSettings] :self_managed_instances_settings
4508
+ # Updates to the self-managed AD configuration, including DNS server IP
4509
+ # addresses and Amazon Web Services System Manager managed node
4510
+ # identifiers.
4511
+ #
4512
+ # @return [Types::UpdateHybridADResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4513
+ #
4514
+ # * {Types::UpdateHybridADResult#directory_id #directory_id} => String
4515
+ # * {Types::UpdateHybridADResult#assessment_id #assessment_id} => String
4516
+ #
4517
+ # @example Request syntax with placeholder values
4518
+ #
4519
+ # resp = client.update_hybrid_ad({
4520
+ # directory_id: "DirectoryId", # required
4521
+ # hybrid_administrator_account_update: {
4522
+ # secret_arn: "SecretArn", # required
4523
+ # },
4524
+ # self_managed_instances_settings: {
4525
+ # customer_dns_ips: ["IpAddr"], # required
4526
+ # instance_ids: ["AssessmentInstanceId"], # required
4527
+ # },
4528
+ # })
4529
+ #
4530
+ # @example Response structure
4531
+ #
4532
+ # resp.directory_id #=> String
4533
+ # resp.assessment_id #=> String
4534
+ #
4535
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ds-2015-04-16/UpdateHybridAD AWS API Documentation
4536
+ #
4537
+ # @overload update_hybrid_ad(params = {})
4538
+ # @param [Hash] params ({})
4539
+ def update_hybrid_ad(params = {}, options = {})
4540
+ req = build_request(:update_hybrid_ad, params)
4541
+ req.send_request(options)
4542
+ end
4543
+
4104
4544
  # Adds or removes domain controllers to or from the directory. Based on
4105
4545
  # the difference between current value and new value (provided through
4106
4546
  # this API call), domain controllers will be added or removed. It may
@@ -4333,14 +4773,127 @@ module Aws::DirectoryService
4333
4773
  tracer: tracer
4334
4774
  )
4335
4775
  context[:gem_name] = 'aws-sdk-directoryservice'
4336
- context[:gem_version] = '1.86.0'
4776
+ context[:gem_version] = '1.88.0'
4337
4777
  Seahorse::Client::Request.new(handlers, context)
4338
4778
  end
4339
4779
 
4780
+ # Polls an API operation until a resource enters a desired state.
4781
+ #
4782
+ # ## Basic Usage
4783
+ #
4784
+ # A waiter will call an API operation until:
4785
+ #
4786
+ # * It is successful
4787
+ # * It enters a terminal state
4788
+ # * It makes the maximum number of attempts
4789
+ #
4790
+ # In between attempts, the waiter will sleep.
4791
+ #
4792
+ # # polls in a loop, sleeping between attempts
4793
+ # client.wait_until(waiter_name, params)
4794
+ #
4795
+ # ## Configuration
4796
+ #
4797
+ # You can configure the maximum number of polling attempts, and the
4798
+ # delay (in seconds) between each polling attempt. You can pass
4799
+ # configuration as the final arguments hash.
4800
+ #
4801
+ # # poll for ~25 seconds
4802
+ # client.wait_until(waiter_name, params, {
4803
+ # max_attempts: 5,
4804
+ # delay: 5,
4805
+ # })
4806
+ #
4807
+ # ## Callbacks
4808
+ #
4809
+ # You can be notified before each polling attempt and before each
4810
+ # delay. If you throw `:success` or `:failure` from these callbacks,
4811
+ # it will terminate the waiter.
4812
+ #
4813
+ # started_at = Time.now
4814
+ # client.wait_until(waiter_name, params, {
4815
+ #
4816
+ # # disable max attempts
4817
+ # max_attempts: nil,
4818
+ #
4819
+ # # poll for 1 hour, instead of a number of attempts
4820
+ # before_wait: -> (attempts, response) do
4821
+ # throw :failure if Time.now - started_at > 3600
4822
+ # end
4823
+ # })
4824
+ #
4825
+ # ## Handling Errors
4826
+ #
4827
+ # When a waiter is unsuccessful, it will raise an error.
4828
+ # All of the failure errors extend from
4829
+ # {Aws::Waiters::Errors::WaiterFailed}.
4830
+ #
4831
+ # begin
4832
+ # client.wait_until(...)
4833
+ # rescue Aws::Waiters::Errors::WaiterFailed
4834
+ # # resource did not enter the desired state in time
4835
+ # end
4836
+ #
4837
+ # ## Valid Waiters
4838
+ #
4839
+ # The following table lists the valid waiter names, the operations they call,
4840
+ # and the default `:delay` and `:max_attempts` values.
4841
+ #
4842
+ # | waiter_name | params | :delay | :max_attempts |
4843
+ # | ----------------- | ---------------------------------- | -------- | ------------- |
4844
+ # | hybrid_ad_updated | {Client#describe_hybrid_ad_update} | 120 | 60 |
4845
+ #
4846
+ # @raise [Errors::FailureStateError] Raised when the waiter terminates
4847
+ # because the waiter has entered a state that it will not transition
4848
+ # out of, preventing success.
4849
+ #
4850
+ # @raise [Errors::TooManyAttemptsError] Raised when the configured
4851
+ # maximum number of attempts have been made, and the waiter is not
4852
+ # yet successful.
4853
+ #
4854
+ # @raise [Errors::UnexpectedError] Raised when an error is encounted
4855
+ # while polling for a resource that is not expected.
4856
+ #
4857
+ # @raise [Errors::NoSuchWaiterError] Raised when you request to wait
4858
+ # for an unknown state.
4859
+ #
4860
+ # @return [Boolean] Returns `true` if the waiter was successful.
4861
+ # @param [Symbol] waiter_name
4862
+ # @param [Hash] params ({})
4863
+ # @param [Hash] options ({})
4864
+ # @option options [Integer] :max_attempts
4865
+ # @option options [Integer] :delay
4866
+ # @option options [Proc] :before_attempt
4867
+ # @option options [Proc] :before_wait
4868
+ def wait_until(waiter_name, params = {}, options = {})
4869
+ w = waiter(waiter_name, options)
4870
+ yield(w.waiter) if block_given? # deprecated
4871
+ w.wait(params)
4872
+ end
4873
+
4340
4874
  # @api private
4341
4875
  # @deprecated
4342
4876
  def waiter_names
4343
- []
4877
+ waiters.keys
4878
+ end
4879
+
4880
+ private
4881
+
4882
+ # @param [Symbol] waiter_name
4883
+ # @param [Hash] options ({})
4884
+ def waiter(waiter_name, options = {})
4885
+ waiter_class = waiters[waiter_name]
4886
+ if waiter_class
4887
+ waiter_class.new(options.merge(client: self))
4888
+ else
4889
+ raise Aws::Waiters::Errors::NoSuchWaiterError.new(waiter_name, waiters.keys)
4890
+ end
4891
+ end
4892
+
4893
+ def waiters
4894
+ {
4895
+ hybrid_ad_updated: Waiters::HybridADUpdated
4896
+ }
4344
4897
  end
4345
4898
 
4346
4899
  class << self