From b354dc898e9f14c5439b154e4161dcb4b7e72f29 Mon Sep 17 00:00:00 2001 From: AWS SDK Swift Automation Date: Thu, 31 Oct 2024 19:03:22 +0000 Subject: [PATCH] chore: Updates version to 1.0.32 --- Package.version | 2 +- Package.version.next | 2 +- .../AWSAmp/Sources/AWSAmp/AmpClient.swift | 84 ++- .../AWSAmp/Sources/AWSAmp/Models.swift | 164 ++++- .../Sources/AWSAutoScaling/Models.swift | 13 + .../AWSBatch/Sources/AWSBatch/Models.swift | 28 +- .../ElasticLoadBalancingv2Client.swift | 4 +- .../AWSElasticLoadBalancingv2/Models.swift | 107 ++- .../AWSGlue/Sources/AWSGlue/GlueClient.swift | 439 ++++++++++++ .../AWSGlue/Sources/AWSGlue/Models.swift | 628 ++++++++++++++++-- .../AWSSESv2/Sources/AWSSESv2/Models.swift | 55 +- .../Sources/AWSSageMaker/Models.swift | 258 +++++++ .../AWSSageMaker/SageMakerClient.swift | 76 ++- 13 files changed, 1733 insertions(+), 127 deletions(-) diff --git a/Package.version b/Package.version index a8c6b78ec39..08a69b59ed5 100644 --- a/Package.version +++ b/Package.version @@ -1 +1 @@ -1.0.31 \ No newline at end of file +1.0.32 \ No newline at end of file diff --git a/Package.version.next b/Package.version.next index 08a69b59ed5..c1cf2f97ca7 100644 --- a/Package.version.next +++ b/Package.version.next @@ -1 +1 @@ -1.0.32 \ No newline at end of file +1.0.33 \ No newline at end of file diff --git a/Sources/Services/AWSAmp/Sources/AWSAmp/AmpClient.swift b/Sources/Services/AWSAmp/Sources/AWSAmp/AmpClient.swift index c291aa3c116..ca3323064a1 100644 --- a/Sources/Services/AWSAmp/Sources/AWSAmp/AmpClient.swift +++ b/Sources/Services/AWSAmp/Sources/AWSAmp/AmpClient.swift @@ -422,7 +422,7 @@ extension AmpClient { /// Performs the `CreateScraper` operation on the `AmazonPrometheusService` service. /// - /// The CreateScraper operation creates a scraper to collect metrics. A scraper pulls metrics from Prometheus-compatible sources within an Amazon EKS cluster, and sends them to your Amazon Managed Service for Prometheus workspace. You can configure the scraper to control what metrics are collected, and what transformations are applied prior to sending them to your workspace. If needed, an IAM role will be created for you that gives Amazon Managed Service for Prometheus access to the metrics in your cluster. For more information, see [Using roles for scraping metrics from EKS](https://docs.aws.amazon.com/prometheus/latest/userguide/using-service-linked-roles.html#using-service-linked-roles-prom-scraper) in the Amazon Managed Service for Prometheus User Guide. You cannot update a scraper. If you want to change the configuration of the scraper, create a new scraper and delete the old one. The scrapeConfiguration parameter contains the base64-encoded version of the YAML configuration file. For more information about collectors, including what metrics are collected, and how to configure the scraper, see [Amazon Web Services managed collectors](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector.html) in the Amazon Managed Service for Prometheus User Guide. + /// The CreateScraper operation creates a scraper to collect metrics. A scraper pulls metrics from Prometheus-compatible sources within an Amazon EKS cluster, and sends them to your Amazon Managed Service for Prometheus workspace. Scrapers are flexible, and can be configured to control what metrics are collected, the frequency of collection, what transformations are applied to the metrics, and more. An IAM role will be created for you that Amazon Managed Service for Prometheus uses to access the metrics in your cluster. You must configure this role with a policy that allows it to scrape metrics from your cluster. For more information, see [Configuring your Amazon EKS cluster](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-eks-setup) in the Amazon Managed Service for Prometheus User Guide. The scrapeConfiguration parameter contains the base-64 encoded YAML configuration for the scraper. For more information about collectors, including what metrics are collected, and how to configure the scraper, see [Using an Amazon Web Services managed collector](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html) in the Amazon Managed Service for Prometheus User Guide. /// /// - Parameter CreateScraperInput : Represents the input of a CreateScraper operation. /// @@ -1495,7 +1495,7 @@ extension AmpClient { /// Performs the `ListTagsForResource` operation on the `AmazonPrometheusService` service. /// - /// The ListTagsForResource operation returns the tags that are associated with an Amazon Managed Service for Prometheus resource. Currently, the only resources that can be tagged are workspaces and rule groups namespaces. + /// The ListTagsForResource operation returns the tags that are associated with an Amazon Managed Service for Prometheus resource. Currently, the only resources that can be tagged are scrapers, workspaces, and rule groups namespaces. /// /// - Parameter ListTagsForResourceInput : [no documentation found] /// @@ -1787,7 +1787,7 @@ extension AmpClient { /// Performs the `TagResource` operation on the `AmazonPrometheusService` service. /// - /// The TagResource operation associates tags with an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are workspaces and rule groups namespaces. If you specify a new tag key for the resource, this tag is appended to the list of tags associated with the resource. If you specify a tag key that is already associated with the resource, the new tag value that you specify replaces the previous value for that tag. + /// The TagResource operation associates tags with an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are rule groups namespaces, scrapers, and workspaces. If you specify a new tag key for the resource, this tag is appended to the list of tags associated with the resource. If you specify a tag key that is already associated with the resource, the new tag value that you specify replaces the previous value for that tag. To remove a tag, use UntagResource. /// /// - Parameter TagResourceInput : [no documentation found] /// @@ -1860,7 +1860,7 @@ extension AmpClient { /// Performs the `UntagResource` operation on the `AmazonPrometheusService` service. /// - /// Removes the specified tags from an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are workspaces and rule groups namespaces. + /// Removes the specified tags from an Amazon Managed Service for Prometheus resource. The only resources that can be tagged are rule groups namespaces, scrapers, and workspaces. /// /// - Parameter UntagResourceInput : [no documentation found] /// @@ -2003,6 +2003,82 @@ extension AmpClient { return try await op.execute(input: input) } + /// Performs the `UpdateScraper` operation on the `AmazonPrometheusService` service. + /// + /// Updates an existing scraper. You can't use this function to update the source from which the scraper is collecting metrics. To change the source, delete the scraper and create a new one. + /// + /// - Parameter UpdateScraperInput : [no documentation found] + /// + /// - Returns: `UpdateScraperOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The request would cause an inconsistent state. + /// - `InternalServerException` : An unexpected error occurred during the processing of the request. + /// - `ResourceNotFoundException` : The request references a resources that doesn't exist. + /// - `ServiceQuotaExceededException` : Completing the request would cause a service quota to be exceeded. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func updateScraper(input: UpdateScraperInput) async throws -> UpdateScraperOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "updateScraper") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "aps") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + builder.interceptors.add(ClientRuntime.URLPathMiddleware(UpdateScraperInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/json")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: UpdateScraperInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(UpdateScraperOutput.httpOutput(from:), UpdateScraperOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Amp") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "UpdateScraper") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `UpdateWorkspaceAlias` operation on the `AmazonPrometheusService` service. /// /// Updates the alias of an existing workspace. diff --git a/Sources/Services/AWSAmp/Sources/AWSAmp/Models.swift b/Sources/Services/AWSAmp/Sources/AWSAmp/Models.swift index 51011d5bbe3..9b8fc916fd5 100644 --- a/Sources/Services/AWSAmp/Sources/AWSAmp/Models.swift +++ b/Sources/Services/AWSAmp/Sources/AWSAmp/Models.swift @@ -499,7 +499,7 @@ public struct DescribeAlertManagerDefinitionInput: Swift.Sendable { extension AmpClientTypes { - /// The details of an alert manager definition. + /// The details of an alert manager definition. It is the configuration for the alert manager, including information about receivers for routing alerts. public struct AlertManagerDefinitionDescription: Swift.Sendable { /// The date and time that the alert manager definition was created. /// This member is required. @@ -601,7 +601,7 @@ public struct GetDefaultScraperConfigurationOutput: Swift.Sendable { } public struct ListTagsForResourceInput: Swift.Sendable { - /// The ARN of the resource to list tages for. Must be a workspace or rule groups namespace resource. + /// The ARN of the resource to list tages for. Must be a workspace, scraper, or rule groups namespace resource. /// This member is required. public var resourceArn: Swift.String? @@ -646,7 +646,7 @@ extension AmpClientTypes { /// Where to send the metrics from a scraper. public enum Destination: Swift.Sendable { - /// The Amazon Managed Service for Prometheusworkspace to send metrics to. + /// The Amazon Managed Service for Prometheus workspace to send metrics to. case ampconfiguration(AmpClientTypes.AmpConfiguration) case sdkUnknown(Swift.String) } @@ -654,7 +654,7 @@ extension AmpClientTypes { extension AmpClientTypes { - /// A scrape configuration for a scraper, base 64 encoded. For more information, see [Scraper configuration] in the Amazon Managed Service for Prometheus User Guide. + /// A scrape configuration for a scraper, base 64 encoded. For more information, see [Scraper configuration](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-configuration) in the Amazon Managed Service for Prometheus User Guide. public enum ScrapeConfiguration: Swift.Sendable { /// The base 64 encoded scrape configuration file. case configurationblob(Foundation.Data) @@ -700,14 +700,14 @@ extension AmpClientTypes { /// Represents the input of a CreateScraper operation. public struct CreateScraperInput: Swift.Sendable { - /// (optional) a name to associate with the scraper. This is for your use, and does not need to be unique. + /// (optional) An alias to associate with the scraper. This is for your use, and does not need to be unique. public var alias: Swift.String? /// (Optional) A unique, case-sensitive identifier that you can provide to ensure the idempotency of the request. public var clientToken: Swift.String? /// The Amazon Managed Service for Prometheus workspace to send metrics to. /// This member is required. public var destination: AmpClientTypes.Destination? - /// The configuration file to use in the new scraper. For more information, see [Scraper configuration] in the Amazon Managed Service for Prometheus User Guide. + /// The configuration file to use in the new scraper. For more information, see [Scraper configuration](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-configuration) in the Amazon Managed Service for Prometheus User Guide. /// This member is required. public var scrapeConfiguration: AmpClientTypes.ScrapeConfiguration? /// The Amazon EKS cluster from which the scraper will collect metrics. @@ -748,6 +748,10 @@ extension AmpClientTypes { case deleting /// Scraper deletion failed. case deletionFailed + /// Scraper update failed. + case updateFailed + /// Scraper is being updated. Deletion is disallowed until status is ACTIVE. + case updating case sdkUnknown(Swift.String) public static var allCases: [ScraperStatusCode] { @@ -756,7 +760,9 @@ extension AmpClientTypes { .creating, .creationFailed, .deleting, - .deletionFailed + .deletionFailed, + .updateFailed, + .updating ] } @@ -772,6 +778,8 @@ extension AmpClientTypes { case .creationFailed: return "CREATION_FAILED" case .deleting: return "DELETING" case .deletionFailed: return "DELETION_FAILED" + case .updateFailed: return "UPDATE_FAILED" + case .updating: return "UPDATING" case let .sdkUnknown(s): return s } } @@ -880,7 +888,7 @@ extension AmpClientTypes { public struct ScraperDescription: Swift.Sendable { /// (Optional) A name associated with the scraper. public var alias: Swift.String? - /// The Amazon Resource Name (ARN) of the scraper. + /// The Amazon Resource Name (ARN) of the scraper. For example, arn:aws:aps::123456798012:scraper/s-example1-1234-abcd-5678-ef9012abcd34. /// This member is required. public var arn: Swift.String? /// The date and time that the scraper was created. @@ -892,13 +900,13 @@ extension AmpClientTypes { /// The date and time that the scraper was last modified. /// This member is required. public var lastModifiedAt: Foundation.Date? - /// The Amazon Resource Name (ARN) of the IAM role that provides permissions for the scraper to discover and collect metrics on your behalf. + /// The Amazon Resource Name (ARN) of the IAM role that provides permissions for the scraper to discover and collect metrics on your behalf. For example, arn:aws:iam::123456789012:role/service-role/AmazonGrafanaServiceRole-12example. /// This member is required. public var roleArn: Swift.String? - /// The configuration file in use by the scraper. + /// The configuration in use by the scraper. /// This member is required. public var scrapeConfiguration: AmpClientTypes.ScrapeConfiguration? - /// The ID of the scraper. + /// The ID of the scraper. For example, s-example1-1234-abcd-5678-ef9012abcd34. /// This member is required. public var scraperId: Swift.String? /// The Amazon EKS cluster from which the scraper collects metrics. @@ -1060,11 +1068,67 @@ public struct ListScrapersOutput: Swift.Sendable { } } +public struct UpdateScraperInput: Swift.Sendable { + /// The new alias of the scraper. + public var alias: Swift.String? + /// A unique identifier that you can provide to ensure the idempotency of the request. Case-sensitive. + public var clientToken: Swift.String? + /// The new Amazon Managed Service for Prometheus workspace to send metrics to. + public var destination: AmpClientTypes.Destination? + /// Contains the base-64 encoded YAML configuration for the scraper. For more information about configuring a scraper, see [Using an Amazon Web Services managed collector](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html) in the Amazon Managed Service for Prometheus User Guide. + public var scrapeConfiguration: AmpClientTypes.ScrapeConfiguration? + /// The ID of the scraper to update. + /// This member is required. + public var scraperId: Swift.String? + + public init( + alias: Swift.String? = nil, + clientToken: Swift.String? = nil, + destination: AmpClientTypes.Destination? = nil, + scrapeConfiguration: AmpClientTypes.ScrapeConfiguration? = nil, + scraperId: Swift.String? = nil + ) + { + self.alias = alias + self.clientToken = clientToken + self.destination = destination + self.scrapeConfiguration = scrapeConfiguration + self.scraperId = scraperId + } +} + +public struct UpdateScraperOutput: Swift.Sendable { + /// The Amazon Resource Name (ARN) of the updated scraper. + /// This member is required. + public var arn: Swift.String? + /// The ID of the updated scraper. + /// This member is required. + public var scraperId: Swift.String? + /// A structure that displays the current status of the scraper. + /// This member is required. + public var status: AmpClientTypes.ScraperStatus? + /// The list of tag keys and values that are associated with the scraper. + public var tags: [Swift.String: Swift.String]? + + public init( + arn: Swift.String? = nil, + scraperId: Swift.String? = nil, + status: AmpClientTypes.ScraperStatus? = nil, + tags: [Swift.String: Swift.String]? = nil + ) + { + self.arn = arn + self.scraperId = scraperId + self.status = status + self.tags = tags + } +} + public struct TagResourceInput: Swift.Sendable { - /// The ARN of the workspace or rule groups namespace to apply tags to. + /// The ARN of the resource to apply tags to. /// This member is required. public var resourceArn: Swift.String? - /// The list of tag keys and values to associate with the resource. Keys may not begin with aws:. + /// The list of tag keys and values to associate with the resource. Keys must not begin with aws:. /// This member is required. public var tags: [Swift.String: Swift.String]? @@ -1084,7 +1148,7 @@ public struct TagResourceOutput: Swift.Sendable { } public struct UntagResourceInput: Swift.Sendable { - /// The ARN of the workspace or rule groups namespace. + /// The ARN of the resource from which to remove a tag. /// This member is required. public var resourceArn: Swift.String? /// The keys of the tags to remove. @@ -1260,9 +1324,9 @@ extension AmpClientTypes { /// The full details about one Amazon Managed Service for Prometheus workspace in your account. public struct WorkspaceDescription: Swift.Sendable { - /// The alias that is assigned to this workspace to help identify it. It may not be unique. + /// The alias that is assigned to this workspace to help identify it. It does not need to be unique. public var alias: Swift.String? - /// The ARN of the workspace. + /// The ARN of the workspace. For example, arn:aws:aps::123456789012:workspace/ws-example1-1234-abcd-5678-ef90abcd1234. /// This member is required. public var arn: Swift.String? /// The date and time that the workspace was created. @@ -1270,14 +1334,14 @@ extension AmpClientTypes { public var createdAt: Foundation.Date? /// (optional) If the workspace was created with a customer managed KMS key, the ARN for the key used. public var kmsKeyArn: Swift.String? - /// The Prometheus endpoint available for this workspace. + /// The Prometheus endpoint available for this workspace. For example, https://aps-workspaces..amazonaws.com/workspaces/ws-example1-1234-abcd-5678-ef90abcd1234/api/v1/. public var prometheusEndpoint: Swift.String? /// The current status of the workspace. /// This member is required. public var status: AmpClientTypes.WorkspaceStatus? /// The list of tag keys and values that are associated with the workspace. public var tags: [Swift.String: Swift.String]? - /// The unique ID for the workspace. + /// The unique ID for the workspace. For example, ws-example1-1234-abcd-5678-ef90abcd1234. /// This member is required. public var workspaceId: Swift.String? @@ -1343,7 +1407,7 @@ extension AmpClientTypes { /// The information about one Amazon Managed Service for Prometheus workspace in your account. public struct WorkspaceSummary: Swift.Sendable { - /// The alias that is assigned to this workspace to help identify it. It may not be unique. + /// The alias that is assigned to this workspace to help identify it. It does not need to be unique. public var alias: Swift.String? /// The ARN of the workspace. /// This member is required. @@ -1405,7 +1469,7 @@ public struct ListWorkspacesOutput: Swift.Sendable { public struct CreateLoggingConfigurationInput: Swift.Sendable { /// A unique identifier that you can provide to ensure the idempotency of the request. Case-sensitive. public var clientToken: Swift.String? - /// The ARN of the CloudWatch log group to which the vended log data will be published. This log group must exist prior to calling this API. + /// The ARN of the CloudWatch log group to which the vended log data will be published. This log group must exist prior to calling this operation. /// This member is required. public var logGroupArn: Swift.String? /// The ID of the workspace to create the logging configuration for. @@ -1541,7 +1605,7 @@ public struct DescribeLoggingConfigurationInput: Swift.Sendable { extension AmpClientTypes { - /// Contains information about the logging configuration. + /// Contains information about the logging configuration for the workspace. public struct LoggingConfigurationMetadata: Swift.Sendable { /// The date and time that the logging configuration was created. /// This member is required. @@ -1802,7 +1866,7 @@ extension AmpClientTypes { /// The details about one rule groups namespace. public struct RuleGroupsNamespaceDescription: Swift.Sendable { - /// The ARN of the rule groups namespace. + /// The ARN of the rule groups namespace. For example, arn:aws:aps::123456789012:rulegroupsnamespace/ws-example1-1234-abcd-5678-ef90abcd1234/rulesfile1. /// This member is required. public var arn: Swift.String? /// The date and time that the rule groups namespace was created. @@ -2408,6 +2472,16 @@ extension UpdateLoggingConfigurationInput { } } +extension UpdateScraperInput { + + static func urlPathProvider(_ value: UpdateScraperInput) -> Swift.String? { + guard let scraperId = value.scraperId else { + return nil + } + return "/scrapers/\(scraperId.urlPercentEncoding())" + } +} + extension UpdateWorkspaceAliasInput { static func urlPathProvider(_ value: UpdateWorkspaceAliasInput) -> Swift.String? { @@ -2506,6 +2580,17 @@ extension UpdateLoggingConfigurationInput { } } +extension UpdateScraperInput { + + static func write(value: UpdateScraperInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["alias"].write(value.alias) + try writer["clientToken"].write(value.clientToken) + try writer["destination"].write(value.destination, with: AmpClientTypes.Destination.write(value:to:)) + try writer["scrapeConfiguration"].write(value.scrapeConfiguration, with: AmpClientTypes.ScrapeConfiguration.write(value:to:)) + } +} + extension UpdateWorkspaceAliasInput { static func write(value: UpdateWorkspaceAliasInput?, to writer: SmithyJSON.Writer) throws { @@ -2802,6 +2887,21 @@ extension UpdateLoggingConfigurationOutput { } } +extension UpdateScraperOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> UpdateScraperOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = UpdateScraperOutput() + value.arn = try reader["arn"].readIfPresent() ?? "" + value.scraperId = try reader["scraperId"].readIfPresent() ?? "" + value.status = try reader["status"].readIfPresent(with: AmpClientTypes.ScraperStatus.read(from:)) + value.tags = try reader["tags"].readMapIfPresent(valueReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + return value + } +} + extension UpdateWorkspaceAliasOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> UpdateWorkspaceAliasOutput { @@ -3268,6 +3368,26 @@ enum UpdateLoggingConfigurationOutputError { } } +enum UpdateScraperOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.RestJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "ConflictException": return try ConflictException.makeError(baseError: baseError) + case "InternalServerException": return try InternalServerException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ServiceQuotaExceededException": return try ServiceQuotaExceededException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + case "ValidationException": return try ValidationException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum UpdateWorkspaceAliasOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { diff --git a/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift b/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift index 47fc12e7216..f1b867ffcca 100644 --- a/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift +++ b/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift @@ -3167,6 +3167,8 @@ extension AutoScalingClientTypes { /// /// For more information, see [Undo changes with a rollback](https://docs.aws.amazon.com/autoscaling/ec2/userguide/instance-refresh-rollback.html) in the Amazon EC2 Auto Scaling User Guide. public var autoRollback: Swift.Bool? + /// The amount of time, in seconds, to wait at the end of an instance refresh before the instance refresh is considered complete. + public var bakeTime: Swift.Int? /// (Optional) The amount of time, in seconds, to wait after a checkpoint before continuing. This property is optional, but if you specify a value for it, you must also specify a value for CheckpointPercentages. If you specify a value for CheckpointPercentages and not for CheckpointDelay, the CheckpointDelay defaults to 3600 (1 hour). public var checkpointDelay: Swift.Int? /// (Optional) Threshold values for each checkpoint in ascending order. Each number must be unique. To replace all instances in the Auto Scaling group, the last number in the array must be 100. For usage examples, see [Add checkpoints to an instance refresh](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-adding-checkpoints-instance-refresh.html) in the Amazon EC2 Auto Scaling User Guide. @@ -3187,6 +3189,7 @@ extension AutoScalingClientTypes { public init( alarmSpecification: AutoScalingClientTypes.AlarmSpecification? = nil, autoRollback: Swift.Bool? = nil, + bakeTime: Swift.Int? = nil, checkpointDelay: Swift.Int? = nil, checkpointPercentages: [Swift.Int]? = nil, instanceWarmup: Swift.Int? = nil, @@ -3199,6 +3202,7 @@ extension AutoScalingClientTypes { { self.alarmSpecification = alarmSpecification self.autoRollback = autoRollback + self.bakeTime = bakeTime self.checkpointDelay = checkpointDelay self.checkpointPercentages = checkpointPercentages self.instanceWarmup = instanceWarmup @@ -3306,6 +3310,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { public enum InstanceRefreshStatus: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case baking case cancelled case cancelling case failed @@ -3319,6 +3324,7 @@ extension AutoScalingClientTypes { public static var allCases: [InstanceRefreshStatus] { return [ + .baking, .cancelled, .cancelling, .failed, @@ -3338,6 +3344,7 @@ extension AutoScalingClientTypes { public var rawValue: Swift.String { switch self { + case .baking: return "Baking" case .cancelled: return "Cancelled" case .cancelling: return "Cancelling" case .failed: return "Failed" @@ -3396,6 +3403,8 @@ extension AutoScalingClientTypes { /// * RollbackFailed - The rollback failed to complete. You can troubleshoot using the status reason and the scaling activities. /// /// * RollbackSuccessful - The rollback completed successfully. + /// + /// * Baking - Waiting the specified bake time after an instance refresh has finished updating instances. public var status: AutoScalingClientTypes.InstanceRefreshStatus? /// The explanation for the specific status assigned to this operation. public var statusReason: Swift.String? @@ -6195,6 +6204,8 @@ public struct StartInstanceRefreshInput: Swift.Sendable { /// * CloudWatch alarms /// /// * Skip matching + /// + /// * Bake time public var preferences: AutoScalingClientTypes.RefreshPreferences? /// The strategy to use for the instance refresh. The only valid value is Rolling. public var strategy: AutoScalingClientTypes.RefreshStrategy? @@ -10024,6 +10035,7 @@ extension AutoScalingClientTypes.RefreshPreferences { guard let value else { return } try writer["AlarmSpecification"].write(value.alarmSpecification, with: AutoScalingClientTypes.AlarmSpecification.write(value:to:)) try writer["AutoRollback"].write(value.autoRollback) + try writer["BakeTime"].write(value.bakeTime) try writer["CheckpointDelay"].write(value.checkpointDelay) try writer["CheckpointPercentages"].writeList(value.checkpointPercentages, memberWritingClosure: SmithyReadWrite.WritingClosures.writeInt(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["InstanceWarmup"].write(value.instanceWarmup) @@ -10047,6 +10059,7 @@ extension AutoScalingClientTypes.RefreshPreferences { value.standbyInstances = try reader["StandbyInstances"].readIfPresent() value.alarmSpecification = try reader["AlarmSpecification"].readIfPresent(with: AutoScalingClientTypes.AlarmSpecification.read(from:)) value.maxHealthyPercentage = try reader["MaxHealthyPercentage"].readIfPresent() + value.bakeTime = try reader["BakeTime"].readIfPresent() return value } } diff --git a/Sources/Services/AWSBatch/Sources/AWSBatch/Models.swift b/Sources/Services/AWSBatch/Sources/AWSBatch/Models.swift index b97ea480793..ee884cf7bcd 100644 --- a/Sources/Services/AWSBatch/Sources/AWSBatch/Models.swift +++ b/Sources/Services/AWSBatch/Sources/AWSBatch/Models.swift @@ -346,7 +346,7 @@ public struct CancelJobInput: Swift.Sendable { /// The Batch job ID of the job to cancel. /// This member is required. public var jobId: Swift.String? - /// A message to attach to the job that explains the reason for canceling it. This message is returned by future [DescribeJobs] operations on the job. This message is also recorded in the Batch activity logs. + /// A message to attach to the job that explains the reason for canceling it. This message is returned by future [DescribeJobs] operations on the job. It is also recorded in the Batch activity logs. This parameter has as limit of 1024 characters. /// This member is required. public var reason: Swift.String? @@ -854,12 +854,12 @@ public struct CreateJobQueueInput: Swift.Sendable { /// The name of the job queue. It can be up to 128 letters long. It can contain uppercase and lowercase letters, numbers, hyphens (-), and underscores (_). /// This member is required. public var jobQueueName: Swift.String? - /// The set of actions that Batch performs on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed. + /// The set of actions that Batch performs on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed. (Note: The minimum value for maxTimeSeconds is 600 (10 minutes) and its maximum value is 86,400 (24 hours).) public var jobStateTimeLimitActions: [BatchClientTypes.JobStateTimeLimitAction]? /// The priority of the job queue. Job queues with a higher priority (or a higher integer value for the priority parameter) are evaluated first when associated with the same compute environment. Priority is determined in descending order. For example, a job queue with a priority value of 10 is given scheduling preference over a job queue with a priority value of 1. All of the compute environments must be either EC2 (EC2 or SPOT) or Fargate (FARGATE or FARGATE_SPOT); EC2 and Fargate compute environments can't be mixed. /// This member is required. public var priority: Swift.Int? - /// The Amazon Resource Name (ARN) of the fair share scheduling policy. If this parameter is specified, the job queue uses a fair share scheduling policy. If this parameter isn't specified, the job queue uses a first in, first out (FIFO) scheduling policy. After a job queue is created, you can replace but can't remove the fair share scheduling policy. The format is aws:Partition:batch:Region:Account:scheduling-policy/Name . An example is aws:aws:batch:us-west-2:123456789012:scheduling-policy/MySchedulingPolicy. + /// The Amazon Resource Name (ARN) of the fair share scheduling policy. Job queues that don't have a scheduling policy are scheduled in a first-in, first-out (FIFO) model. After a job queue has a scheduling policy, it can be replaced but can't be removed. The format is aws:Partition:batch:Region:Account:scheduling-policy/Name . An example is aws:aws:batch:us-west-2:123456789012:scheduling-policy/MySchedulingPolicy. A job queue without a scheduling policy is scheduled as a FIFO job queue and can't have a scheduling policy added. Jobs queues with a scheduling policy can have a maximum of 500 active fair share identifiers. When the limit has been reached, submissions of any jobs that add a new fair share identifier fail. public var schedulingPolicyArn: Swift.String? /// The state of the job queue. If the job queue state is ENABLED, it is able to accept jobs. If the job queue state is DISABLED, new jobs can't be added to the queue, but jobs already in the queue can finish. public var state: BatchClientTypes.JQState? @@ -2177,7 +2177,7 @@ extension BatchClientTypes { /// An object that contains the properties for the Amazon ECS resources of a job. public struct EcsProperties: Swift.Sendable { - /// An object that contains the properties for the Amazon ECS task definition of a job. This object is currently limited to one element. + /// An object that contains the properties for the Amazon ECS task definition of a job. This object is currently limited to one task element. However, the task element can run up to 10 containers. /// This member is required. public var taskProperties: [BatchClientTypes.EcsTaskProperties]? @@ -2463,7 +2463,7 @@ extension BatchClientTypes { /// The properties for the pod. public struct EksPodProperties: Swift.Sendable { - /// The properties of the container that's used on the Amazon EKS pod. + /// The properties of the container that's used on the Amazon EKS pod. This object is limited to 10 elements. public var containers: [BatchClientTypes.EksContainer]? /// The DNS policy for the pod. The default value is ClusterFirst. If the hostNetwork parameter is not specified, the default is ClusterFirstWithHostNet. ClusterFirst indicates that any DNS query that does not match the configured cluster domain suffix is forwarded to the upstream nameserver inherited from the node. For more information, see [Pod's DNS policy](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy) in the Kubernetes documentation. Valid values: Default | ClusterFirst | ClusterFirstWithHostNet public var dnsPolicy: Swift.String? @@ -2471,7 +2471,7 @@ extension BatchClientTypes { public var hostNetwork: Swift.Bool? /// References a Kubernetes secret resource. It holds a list of secrets. These secrets help to gain access to pull an images from a private registry. ImagePullSecret$name is required when this object is used. public var imagePullSecrets: [BatchClientTypes.ImagePullSecret]? - /// These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see [Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) in the Kubernetes documentation. This object is limited to 10 elements + /// These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see [Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) in the Kubernetes documentation. This object is limited to 10 elements. public var initContainers: [BatchClientTypes.EksContainer]? /// Metadata about the Kubernetes pod. For more information, see [Understanding Kubernetes Objects](https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/) in the Kubernetes documentation. public var metadata: BatchClientTypes.EksMetadata? @@ -3291,6 +3291,8 @@ extension BatchClientTypes { /// An object that represents the details for an attempt for a job attempt that an Amazon EKS container runs. public struct EksAttemptContainerDetail: Swift.Sendable { + /// The ID for the container. + public var containerID: Swift.String? /// The exit code returned for the job attempt. A non-zero exit code is considered failed. public var exitCode: Swift.Int? /// The name of a container. @@ -3299,11 +3301,13 @@ extension BatchClientTypes { public var reason: Swift.String? public init( + containerID: Swift.String? = nil, exitCode: Swift.Int? = nil, name: Swift.String? = nil, reason: Swift.String? = nil ) { + self.containerID = containerID self.exitCode = exitCode self.name = name self.reason = reason @@ -3325,6 +3329,8 @@ extension BatchClientTypes { public var nodeName: Swift.String? /// The name of the pod for this job attempt. public var podName: Swift.String? + /// The namespace of the Amazon EKS cluster that the pod exists in. + public var podNamespace: Swift.String? /// The Unix timestamp (in milliseconds) for when the attempt was started (when the attempt transitioned from the STARTING state to the RUNNING state). public var startedAt: Swift.Int? /// A short, human-readable string to provide additional details for the current status of the job attempt. @@ -3338,6 +3344,7 @@ extension BatchClientTypes { initContainers: [BatchClientTypes.EksAttemptContainerDetail]? = nil, nodeName: Swift.String? = nil, podName: Swift.String? = nil, + podNamespace: Swift.String? = nil, startedAt: Swift.Int? = nil, statusReason: Swift.String? = nil, stoppedAt: Swift.Int? = nil @@ -3348,6 +3355,7 @@ extension BatchClientTypes { self.initContainers = initContainers self.nodeName = nodeName self.podName = podName + self.podNamespace = podNamespace self.startedAt = startedAt self.statusReason = statusReason self.stoppedAt = stoppedAt @@ -4348,7 +4356,7 @@ extension BatchClientTypes { public struct EksPodPropertiesOverride: Swift.Sendable { /// The overrides for the container that's used on the Amazon EKS pod. public var containers: [BatchClientTypes.EksContainerOverride]? - /// The overrides for the conatainers defined in the Amazon EKS pod. These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see [Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) in the Kubernetes documentation. This object is limited to 10 elements + /// The overrides for the initContainers defined in the Amazon EKS pod. These containers run before application containers, always runs to completion, and must complete successfully before the next container starts. These containers are registered with the Amazon EKS Connector agent and persists the registration information in the Kubernetes backend data store. For more information, see [Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) in the Kubernetes documentation. public var initContainers: [BatchClientTypes.EksContainerOverride]? /// Metadata about the overrides for the container that's used on the Amazon EKS pod. public var metadata: BatchClientTypes.EksMetadata? @@ -4568,7 +4576,7 @@ public struct TerminateJobInput: Swift.Sendable { /// The Batch job ID of the job to terminate. /// This member is required. public var jobId: Swift.String? - /// A message to attach to the job that explains the reason for canceling it. This message is returned by future [DescribeJobs] operations on the job. This message is also recorded in the Batch activity logs. + /// A message to attach to the job that explains the reason for canceling it. This message is returned by future [DescribeJobs] operations on the job. It is also recorded in the Batch activity logs. This parameter has as limit of 1024 characters. /// This member is required. public var reason: Swift.String? @@ -4784,7 +4792,7 @@ public struct UpdateJobQueueInput: Swift.Sendable { /// The name or the Amazon Resource Name (ARN) of the job queue. /// This member is required. public var jobQueue: Swift.String? - /// The set of actions that Batch perform on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed. + /// The set of actions that Batch perform on jobs that remain at the head of the job queue in the specified state longer than specified times. Batch will perform each action after maxTimeSeconds has passed. (Note: The minimum value for maxTimeSeconds is 600 (10 minutes) and its maximum value is 86,400 (24 hours).) public var jobStateTimeLimitActions: [BatchClientTypes.JobStateTimeLimitAction]? /// The priority of the job queue. Job queues with a higher priority (or a higher integer value for the priority parameter) are evaluated first when associated with the same compute environment. Priority is determined in descending order. For example, a job queue with a priority value of 10 is given scheduling preference over a job queue with a priority value of 1. All of the compute environments must be either EC2 (EC2 or SPOT) or Fargate (FARGATE or FARGATE_SPOT). EC2 and Fargate compute environments can't be mixed. public var priority: Swift.Int? @@ -7163,6 +7171,7 @@ extension BatchClientTypes.EksAttemptDetail { value.initContainers = try reader["initContainers"].readListIfPresent(memberReadingClosure: BatchClientTypes.EksAttemptContainerDetail.read(from:), memberNodeInfo: "member", isFlattened: false) value.eksClusterArn = try reader["eksClusterArn"].readIfPresent() value.podName = try reader["podName"].readIfPresent() + value.podNamespace = try reader["podNamespace"].readIfPresent() value.nodeName = try reader["nodeName"].readIfPresent() value.startedAt = try reader["startedAt"].readIfPresent() value.stoppedAt = try reader["stoppedAt"].readIfPresent() @@ -7177,6 +7186,7 @@ extension BatchClientTypes.EksAttemptContainerDetail { guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } var value = BatchClientTypes.EksAttemptContainerDetail() value.name = try reader["name"].readIfPresent() + value.containerID = try reader["containerID"].readIfPresent() value.exitCode = try reader["exitCode"].readIfPresent() value.reason = try reader["reason"].readIfPresent() return value diff --git a/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/ElasticLoadBalancingv2Client.swift b/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/ElasticLoadBalancingv2Client.swift index 5e5ce93ab2a..87d97f4767c 100644 --- a/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/ElasticLoadBalancingv2Client.swift +++ b/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/ElasticLoadBalancingv2Client.swift @@ -1057,7 +1057,7 @@ extension ElasticLoadBalancingv2Client { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `DeleteAssociationSameAccountException` : The specified association cannot be within the same account. + /// - `DeleteAssociationSameAccountException` : The specified association can't be within the same account. /// - `TrustStoreAssociationNotFoundException` : The specified association does not exist. /// - `TrustStoreNotFoundException` : The specified trust store does not exist. public func deleteSharedTrustStoreAssociation(input: DeleteSharedTrustStoreAssociationInput) async throws -> DeleteSharedTrustStoreAssociationOutput { @@ -3122,7 +3122,7 @@ extension ElasticLoadBalancingv2Client { /// Performs the `RegisterTargets` operation on the `ElasticLoadBalancing_v10` service. /// - /// Registers the specified targets with the specified target group. If the target is an EC2 instance, it must be in the running state when you register it. By default, the load balancer routes requests to registered targets using the protocol and port for the target group. Alternatively, you can override the port for a target when you register it. You can register each EC2 instance or IP address with the same target group multiple times using different ports. With a Network Load Balancer, you cannot register instances by instance ID if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these types by IP address. + /// Registers the specified targets with the specified target group. If the target is an EC2 instance, it must be in the running state when you register it. By default, the load balancer routes requests to registered targets using the protocol and port for the target group. Alternatively, you can override the port for a target when you register it. You can register each EC2 instance or IP address with the same target group multiple times using different ports. With a Network Load Balancer, you can't register instances by instance ID if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these types by IP address. /// /// - Parameter RegisterTargetsInput : [no documentation found] /// diff --git a/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/Models.swift b/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/Models.swift index e97d14fec9a..36fe59bd302 100644 --- a/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/Models.swift +++ b/Sources/Services/AWSElasticLoadBalancingv2/Sources/AWSElasticLoadBalancingv2/Models.swift @@ -351,7 +351,7 @@ extension ElasticLoadBalancingv2ClientTypes { public var path: Swift.String? /// The port. You can specify a value from 1 to 65535 or #{port}. public var port: Swift.String? - /// The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS to HTTP. + /// The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You can't redirect HTTPS to HTTP. public var `protocol`: Swift.String? /// The query parameters, URL-encoded when necessary, but not percent-encoded. Do not include the leading "?", as it is automatically added. You can specify any of the reserved keywords. public var query: Swift.String? @@ -1210,6 +1210,8 @@ extension ElasticLoadBalancingv2ClientTypes { public var loadBalancerAddresses: [ElasticLoadBalancingv2ClientTypes.LoadBalancerAddress]? /// [Application Load Balancers on Outposts] The ID of the Outpost. public var outpostId: Swift.String? + /// [Network Load Balancers with UDP listeners] The IPv6 prefixes to use for source NAT. For each subnet, specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or auto_assigned to use an IPv6 prefix selected at random from the subnet CIDR block. + public var sourceNatIpv6Prefixes: [Swift.String]? /// The ID of the subnet. You can specify one subnet per Availability Zone. public var subnetId: Swift.String? /// The name of the Availability Zone. @@ -1218,12 +1220,14 @@ extension ElasticLoadBalancingv2ClientTypes { public init( loadBalancerAddresses: [ElasticLoadBalancingv2ClientTypes.LoadBalancerAddress]? = nil, outpostId: Swift.String? = nil, + sourceNatIpv6Prefixes: [Swift.String]? = nil, subnetId: Swift.String? = nil, zoneName: Swift.String? = nil ) { self.loadBalancerAddresses = loadBalancerAddresses self.outpostId = outpostId + self.sourceNatIpv6Prefixes = sourceNatIpv6Prefixes self.subnetId = subnetId self.zoneName = zoneName } @@ -1737,9 +1741,9 @@ public struct CreateListenerInput: Swift.Sendable { public var loadBalancerArn: Swift.String? /// The mutual authentication configuration information. public var mutualAuthentication: ElasticLoadBalancingv2ClientTypes.MutualAuthenticationAttributes? - /// The port on which the load balancer is listening. You cannot specify a port for a Gateway Load Balancer. + /// The port on which the load balancer is listening. You can't specify a port for a Gateway Load Balancer. public var port: Swift.Int? - /// The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can’t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You cannot specify a protocol for a Gateway Load Balancer. + /// The protocol for connections from clients to the load balancer. For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can’t specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You can't specify a protocol for a Gateway Load Balancer. public var `protocol`: ElasticLoadBalancingv2ClientTypes.ProtocolEnum? /// [HTTPS and TLS listeners] The security policy that defines which protocols and ciphers are supported. For more information, see [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) in the Application Load Balancers Guide and [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#describe-ssl-policies) in the Network Load Balancers Guide. public var sslPolicy: Swift.String? @@ -2022,6 +2026,35 @@ public struct TooManyLoadBalancersException: ClientRuntime.ModeledError, AWSClie } } +extension ElasticLoadBalancingv2ClientTypes { + + public enum EnablePrefixForIpv6SourceNatEnum: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case off + case on + case sdkUnknown(Swift.String) + + public static var allCases: [EnablePrefixForIpv6SourceNatEnum] { + return [ + .off, + .on + ] + } + + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + + public var rawValue: Swift.String { + switch self { + case .off: return "off" + case .on: return "on" + case let .sdkUnknown(s): return s + } + } + } +} + extension ElasticLoadBalancingv2ClientTypes { public enum IpAddressType: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -2093,6 +2126,8 @@ extension ElasticLoadBalancingv2ClientTypes { public var ipv6Address: Swift.String? /// [Network Load Balancers] The private IPv4 address for an internal load balancer. public var privateIPv4Address: Swift.String? + /// [Network Load Balancers with UDP listeners] The IPv6 prefix to use for source NAT. Specify an IPv6 prefix (/80 netmask) from the subnet CIDR block or auto_assigned to use an IPv6 prefix selected at random from the subnet CIDR block. + public var sourceNatIpv6Prefix: Swift.String? /// The ID of the subnet. public var subnetId: Swift.String? @@ -2100,12 +2135,14 @@ extension ElasticLoadBalancingv2ClientTypes { allocationId: Swift.String? = nil, ipv6Address: Swift.String? = nil, privateIPv4Address: Swift.String? = nil, + sourceNatIpv6Prefix: Swift.String? = nil, subnetId: Swift.String? = nil ) { self.allocationId = allocationId self.ipv6Address = ipv6Address self.privateIPv4Address = privateIPv4Address + self.sourceNatIpv6Prefix = sourceNatIpv6Prefix self.subnetId = subnetId } } @@ -2146,18 +2183,20 @@ extension ElasticLoadBalancingv2ClientTypes { public struct CreateLoadBalancerInput: Swift.Sendable { /// [Application Load Balancers on Outposts] The ID of the customer-owned address pool (CoIP pool). public var customerOwnedIpv4Pool: Swift.String? - /// Note: Internal load balancers must use the ipv4 IP address type. [Application Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). [Network Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). You can’t specify dualstack for a load balancer with a UDP or TCP_UDP listener. [Gateway Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). + /// [Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be dualstack. The default value is off. + public var enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? + /// The IP address type. Internal load balancers must use ipv4. [Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses). [Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses). public var ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? /// The name of the load balancer. This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, must not begin or end with a hyphen, and must not begin with "internal-". /// This member is required. public var name: Swift.String? - /// The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer. The default is an Internet-facing load balancer. You cannot specify a scheme for a Gateway Load Balancer. + /// The nodes of an Internet-facing load balancer have public IP addresses. The DNS name of an Internet-facing load balancer is publicly resolvable to the public IP addresses of the nodes. Therefore, Internet-facing load balancers can route requests from clients over the internet. The nodes of an internal load balancer have only private IP addresses. The DNS name of an internal load balancer is publicly resolvable to the private IP addresses of the nodes. Therefore, internal load balancers can route requests only from clients with access to the VPC for the load balancer. The default is an Internet-facing load balancer. You can't specify a scheme for a Gateway Load Balancer. public var scheme: ElasticLoadBalancingv2ClientTypes.LoadBalancerSchemeEnum? /// [Application Load Balancers and Network Load Balancers] The IDs of the security groups for the load balancer. public var securityGroups: [Swift.String]? - /// The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You cannot specify Elastic IP addresses for your subnets. + /// The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. You can't specify Elastic IP addresses for your subnets. public var subnetMappings: [ElasticLoadBalancingv2ClientTypes.SubnetMapping]? - /// The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. + /// The IDs of the subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings, but not both. To specify an Elastic IP address, specify subnet mappings instead of subnets. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones. public var subnets: [Swift.String]? /// The tags to assign to the load balancer. public var tags: [ElasticLoadBalancingv2ClientTypes.Tag]? @@ -2166,6 +2205,7 @@ public struct CreateLoadBalancerInput: Swift.Sendable { public init( customerOwnedIpv4Pool: Swift.String? = nil, + enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? = nil, ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? = nil, name: Swift.String? = nil, scheme: ElasticLoadBalancingv2ClientTypes.LoadBalancerSchemeEnum? = nil, @@ -2177,6 +2217,7 @@ public struct CreateLoadBalancerInput: Swift.Sendable { ) { self.customerOwnedIpv4Pool = customerOwnedIpv4Pool + self.enablePrefixForIpv6SourceNat = enablePrefixForIpv6SourceNat self.ipAddressType = ipAddressType self.name = name self.scheme = scheme @@ -2257,9 +2298,11 @@ extension ElasticLoadBalancingv2ClientTypes { public var customerOwnedIpv4Pool: Swift.String? /// The public DNS name of the load balancer. public var dnsName: Swift.String? + /// [Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be dualstack. The default value is off. + public var enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? /// Indicates whether to evaluate inbound security group rules for traffic sent to a Network Load Balancer through Amazon Web Services PrivateLink. public var enforceSecurityGroupInboundRulesOnPrivateLinkTraffic: Swift.String? - /// [Application Load Balancers] The type of IP addresses used for public or private connections by the subnets attached to your load balancer. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). [Network Load Balancers and Gateway Load Balancers] The type of IP addresses used for public or private connections by the subnets attached to your load balancer. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). + /// The type of IP addresses used for public or private connections by the subnets attached to your load balancer. [Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses). [Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses). public var ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? /// The Amazon Resource Name (ARN) of the load balancer. public var loadBalancerArn: Swift.String? @@ -2282,6 +2325,7 @@ extension ElasticLoadBalancingv2ClientTypes { createdTime: Foundation.Date? = nil, customerOwnedIpv4Pool: Swift.String? = nil, dnsName: Swift.String? = nil, + enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? = nil, enforceSecurityGroupInboundRulesOnPrivateLinkTraffic: Swift.String? = nil, ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? = nil, loadBalancerArn: Swift.String? = nil, @@ -2298,6 +2342,7 @@ extension ElasticLoadBalancingv2ClientTypes { self.createdTime = createdTime self.customerOwnedIpv4Pool = customerOwnedIpv4Pool self.dnsName = dnsName + self.enablePrefixForIpv6SourceNat = enablePrefixForIpv6SourceNat self.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic = enforceSecurityGroupInboundRulesOnPrivateLinkTraffic self.ipAddressType = ipAddressType self.loadBalancerArn = loadBalancerArn @@ -2517,7 +2562,7 @@ extension ElasticLoadBalancingv2ClientTypes { extension ElasticLoadBalancingv2ClientTypes { - /// Information about a condition for a rule. Each rule can optionally include up to one of each of the following conditions: http-request-method, host-header, path-pattern, and source-ip. Each rule can also optionally include one or more of each of the following conditions: http-header and query-string. Note that the value for a condition cannot be empty. For more information, see [Quotas for your Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html). + /// Information about a condition for a rule. Each rule can optionally include up to one of each of the following conditions: http-request-method, host-header, path-pattern, and source-ip. Each rule can also optionally include one or more of each of the following conditions: http-header and query-string. Note that the value for a condition can't be empty. For more information, see [Quotas for your Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html). public struct RuleCondition: Swift.Sendable { /// The field in the HTTP request. The following are the possible values: /// @@ -2777,7 +2822,7 @@ extension ElasticLoadBalancingv2ClientTypes { } public struct CreateTargetGroupInput: Swift.Sendable { - /// Indicates whether health checks are enabled. If the target type is lambda, health checks are disabled by default but can be enabled. If the target type is instance, ip, or alb, health checks are always enabled and cannot be disabled. + /// Indicates whether health checks are enabled. If the target type is lambda, health checks are disabled by default but can be enabled. If the target type is instance, ip, or alb, health checks are always enabled and can't be disabled. public var healthCheckEnabled: Swift.Bool? /// The approximate amount of time, in seconds, between health checks of an individual target. The range is 5-300. If the target group protocol is TCP, TLS, UDP, TCP_UDP, HTTP or HTTPS, the default is 30 seconds. If the target group protocol is GENEVE, the default is 10 seconds. If the target type is lambda, the default is 35 seconds. public var healthCheckIntervalSeconds: Swift.Int? @@ -2791,7 +2836,7 @@ public struct CreateTargetGroupInput: Swift.Sendable { public var healthCheckTimeoutSeconds: Swift.Int? /// The number of consecutive health check successes required before considering a target healthy. The range is 2-10. If the target group protocol is TCP, TCP_UDP, UDP, TLS, HTTP or HTTPS, the default is 5. For target groups with a protocol of GENEVE, the default is 5. If the target type is lambda, the default is 5. public var healthyThresholdCount: Swift.Int? - /// The type of IP address used for this target group. The possible values are ipv4 and ipv6. This is an optional parameter. If not specified, the IP address type defaults to ipv4. + /// The IP address type. The default value is ipv4. public var ipAddressType: ElasticLoadBalancingv2ClientTypes.TargetGroupIpAddressTypeEnum? /// [HTTP/HTTPS health checks] The HTTP or gRPC codes to use when checking for a successful response from a target. For target groups with a protocol of TCP, TCP_UDP, UDP or TLS the range is 200-599. For target groups with a protocol of HTTP or HTTPS, the range is 200-499. For target groups with a protocol of GENEVE, the range is 200-399. public var matcher: ElasticLoadBalancingv2ClientTypes.Matcher? @@ -2879,7 +2924,7 @@ extension ElasticLoadBalancingv2ClientTypes { public var healthCheckTimeoutSeconds: Swift.Int? /// The number of consecutive health checks successes required before considering an unhealthy target healthy. public var healthyThresholdCount: Swift.Int? - /// The type of IP address used for this target group. The possible values are ipv4 and ipv6. This is an optional parameter. If not specified, the IP address type defaults to ipv4. + /// The IP address type. The default value is ipv4. public var ipAddressType: ElasticLoadBalancingv2ClientTypes.TargetGroupIpAddressTypeEnum? /// The Amazon Resource Name (ARN) of the load balancer that routes traffic to this target group. You can use each target group with only one load balancer. public var loadBalancerArns: [Swift.String]? @@ -3038,7 +3083,7 @@ public struct CreateTrustStoreInput: Swift.Sendable { public var caCertificatesBundleS3Key: Swift.String? /// The Amazon S3 object version for the ca certificates bundle. If undefined the current version is used. public var caCertificatesBundleS3ObjectVersion: Swift.String? - /// The name of the trust store. This name must be unique per region and cannot be changed after creation. + /// The name of the trust store. This name must be unique per region and can't be changed after creation. /// This member is required. public var name: Swift.String? /// The tags to assign to the trust store. @@ -3133,7 +3178,7 @@ public struct CreateTrustStoreOutput: Swift.Sendable { } } -/// The specified association cannot be within the same account. +/// The specified association can't be within the same account. public struct DeleteAssociationSameAccountException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { @@ -3629,7 +3674,7 @@ extension ElasticLoadBalancingv2ClientTypes { /// /// * deletion_protection.enabled - Indicates whether deletion protection is enabled. The value is true or false. The default is false. /// - /// * load_balancing.cross_zone.enabled - Indicates whether cross-zone load balancing is enabled. The possible values are true and false. The default for Network Load Balancers and Gateway Load Balancers is false. The default for Application Load Balancers is true, and cannot be changed. + /// * load_balancing.cross_zone.enabled - Indicates whether cross-zone load balancing is enabled. The possible values are true and false. The default for Network Load Balancers and Gateway Load Balancers is false. The default for Application Load Balancers is true, and can't be changed. /// /// /// The following attributes are supported by both Application Load Balancers and Network Load Balancers: @@ -3978,7 +4023,7 @@ extension ElasticLoadBalancingv2ClientTypes { /// /// * deregistration_delay.connection_termination.enabled - Indicates whether the load balancer terminates connections at the end of the deregistration timeout. The value is true or false. For new UDP/TCP_UDP target groups the default is true. Otherwise, the default is false. /// - /// * preserve_client_ip.enabled - Indicates whether client IP preservation is enabled. The value is true or false. The default is disabled if the target group type is IP address and the target group protocol is TCP or TLS. Otherwise, the default is enabled. Client IP preservation cannot be disabled for UDP and TCP_UDP target groups. + /// * preserve_client_ip.enabled - Indicates whether client IP preservation is enabled. The value is true or false. The default is disabled if the target group type is IP address and the target group protocol is TCP or TLS. Otherwise, the default is enabled. Client IP preservation can't be disabled for UDP and TCP_UDP target groups. /// /// * proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version 2 is enabled. The value is true or false. The default is false. /// @@ -3991,7 +4036,7 @@ extension ElasticLoadBalancingv2ClientTypes { /// /// * target_failover.on_deregistration - Indicates how the Gateway Load Balancer handles existing flows when a target is deregistered. The possible values are rebalance and no_rebalance. The default is no_rebalance. The two attributes (target_failover.on_deregistration and target_failover.on_unhealthy) can't be set independently. The value you set for both attributes must be the same. /// - /// * target_failover.on_unhealthy - Indicates how the Gateway Load Balancer handles existing flows when a target is unhealthy. The possible values are rebalance and no_rebalance. The default is no_rebalance. The two attributes (target_failover.on_deregistration and target_failover.on_unhealthy) cannot be set independently. The value you set for both attributes must be the same. + /// * target_failover.on_unhealthy - Indicates how the Gateway Load Balancer handles existing flows when a target is unhealthy. The possible values are rebalance and no_rebalance. The default is no_rebalance. The two attributes (target_failover.on_deregistration and target_failover.on_unhealthy) can't be set independently. The value you set for both attributes must be the same. public var key: Swift.String? /// The value of the attribute. public var value: Swift.String? @@ -4661,9 +4706,9 @@ public struct ModifyListenerInput: Swift.Sendable { public var listenerArn: Swift.String? /// The mutual authentication configuration information. public var mutualAuthentication: ElasticLoadBalancingv2ClientTypes.MutualAuthenticationAttributes? - /// The port for connections from clients to the load balancer. You cannot specify a port for a Gateway Load Balancer. + /// The port for connections from clients to the load balancer. You can't specify a port for a Gateway Load Balancer. public var port: Swift.Int? - /// The protocol for connections from clients to the load balancer. Application Load Balancers support the HTTP and HTTPS protocols. Network Load Balancers support the TCP, TLS, UDP, and TCP_UDP protocols. You can’t change the protocol to UDP or TCP_UDP if dual-stack mode is enabled. You cannot specify a protocol for a Gateway Load Balancer. + /// The protocol for connections from clients to the load balancer. Application Load Balancers support the HTTP and HTTPS protocols. Network Load Balancers support the TCP, TLS, UDP, and TCP_UDP protocols. You can’t change the protocol to UDP or TCP_UDP if dual-stack mode is enabled. You can't specify a protocol for a Gateway Load Balancer. public var `protocol`: ElasticLoadBalancingv2ClientTypes.ProtocolEnum? /// [HTTPS and TLS listeners] The security policy that defines which protocols and ciphers are supported. For more information, see [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies) in the Application Load Balancers Guide or [Security policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#describe-ssl-policies) in the Network Load Balancers Guide. public var sslPolicy: Swift.String? @@ -5018,7 +5063,7 @@ public struct RemoveTrustStoreRevocationsOutput: Swift.Sendable { } public struct SetIpAddressTypeInput: Swift.Sendable { - /// Note: Internal load balancers must use the ipv4 IP address type. [Application Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). Note: Application Load Balancer authentication only supports IPv4 addresses when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer cannot complete the authentication process, resulting in HTTP 500 errors. [Network Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). You can’t specify dualstack for a load balancer with a UDP or TCP_UDP listener. [Gateway Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). + /// The IP address type. Internal load balancers must use ipv4. [Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses). Application Load Balancer authentication supports IPv4 addresses only when connecting to an Identity Provider (IdP) or Amazon Cognito endpoint. Without a public IPv4 address the load balancer can't complete the authentication process, resulting in HTTP 500 errors. [Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses). /// This member is required. public var ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? /// The Amazon Resource Name (ARN) of the load balancer. @@ -5160,23 +5205,27 @@ public struct SetSecurityGroupsOutput: Swift.Sendable { } public struct SetSubnetsInput: Swift.Sendable { - /// [Application Load Balancers] The IP address type. The possible values are ipv4 (for only IPv4 addresses), dualstack (for IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (for IPv6 only public addresses, with private IPv4 and IPv6 addresses). [Network Load Balancers] The type of IP addresses used by the subnets for your load balancer. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). You can’t specify dualstack for a load balancer with a UDP or TCP_UDP listener. [Gateway Load Balancers] The type of IP addresses used by the subnets for your load balancer. The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses). + /// [Network Load Balancers with UDP listeners] Indicates whether to use an IPv6 prefix from each subnet for source NAT. The IP address type must be dualstack. The default value is off. + public var enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? + /// The IP address type. [Application Load Balancers] The possible values are ipv4 (IPv4 addresses), dualstack (IPv4 and IPv6 addresses), and dualstack-without-public-ipv4 (public IPv6 addresses and private IPv4 and IPv6 addresses). [Network Load Balancers and Gateway Load Balancers] The possible values are ipv4 (IPv4 addresses) and dualstack (IPv4 and IPv6 addresses). public var ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? /// The Amazon Resource Name (ARN) of the load balancer. /// This member is required. public var loadBalancerArn: Swift.String? - /// The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Application Load Balancers] You must specify subnets from at least two Availability Zones. You cannot specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. + /// The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Application Load Balancers] You must specify subnets from at least two Availability Zones. You can't specify Elastic IP addresses for your subnets. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer. For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet. For internet-facing load balancer, you can specify one IPv6 address per subnet. [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. public var subnetMappings: [ElasticLoadBalancingv2ClientTypes.SubnetMapping]? - /// The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers] You can specify subnets from one or more Availability Zones. [Gateway Load Balancers] You can specify subnets from one or more Availability Zones. + /// The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings. [Application Load Balancers] You must specify subnets from at least two Availability Zones. [Application Load Balancers on Outposts] You must specify one Outpost subnet. [Application Load Balancers on Local Zones] You can specify subnets from one or more Local Zones. [Network Load Balancers and Gateway Load Balancers] You can specify subnets from one or more Availability Zones. public var subnets: [Swift.String]? public init( + enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? = nil, ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? = nil, loadBalancerArn: Swift.String? = nil, subnetMappings: [ElasticLoadBalancingv2ClientTypes.SubnetMapping]? = nil, subnets: [Swift.String]? = nil ) { + self.enablePrefixForIpv6SourceNat = enablePrefixForIpv6SourceNat self.ipAddressType = ipAddressType self.loadBalancerArn = loadBalancerArn self.subnetMappings = subnetMappings @@ -5187,15 +5236,19 @@ public struct SetSubnetsInput: Swift.Sendable { public struct SetSubnetsOutput: Swift.Sendable { /// Information about the subnets. public var availabilityZones: [ElasticLoadBalancingv2ClientTypes.AvailabilityZone]? - /// [Application Load Balancers] The IP address type. [Network Load Balancers] The IP address type. [Gateway Load Balancers] The IP address type. + /// [Network Load Balancers] Indicates whether to use an IPv6 prefix from each subnet for source NAT. + public var enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? + /// The IP address type. public var ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? public init( availabilityZones: [ElasticLoadBalancingv2ClientTypes.AvailabilityZone]? = nil, + enablePrefixForIpv6SourceNat: ElasticLoadBalancingv2ClientTypes.EnablePrefixForIpv6SourceNatEnum? = nil, ipAddressType: ElasticLoadBalancingv2ClientTypes.IpAddressType? = nil ) { self.availabilityZones = availabilityZones + self.enablePrefixForIpv6SourceNat = enablePrefixForIpv6SourceNat self.ipAddressType = ipAddressType } } @@ -5592,6 +5645,7 @@ extension CreateLoadBalancerInput { static func write(value: CreateLoadBalancerInput?, to writer: SmithyFormURL.Writer) throws { guard let value else { return } try writer["CustomerOwnedIpv4Pool"].write(value.customerOwnedIpv4Pool) + try writer["EnablePrefixForIpv6SourceNat"].write(value.enablePrefixForIpv6SourceNat) try writer["IpAddressType"].write(value.ipAddressType) try writer["Name"].write(value.name) try writer["Scheme"].write(value.scheme) @@ -6116,6 +6170,7 @@ extension SetSubnetsInput { static func write(value: SetSubnetsInput?, to writer: SmithyFormURL.Writer) throws { guard let value else { return } + try writer["EnablePrefixForIpv6SourceNat"].write(value.enablePrefixForIpv6SourceNat) try writer["IpAddressType"].write(value.ipAddressType) try writer["LoadBalancerArn"].write(value.loadBalancerArn) try writer["SubnetMappings"].writeList(value.subnetMappings, memberWritingClosure: ElasticLoadBalancingv2ClientTypes.SubnetMapping.write(value:to:), memberNodeInfo: "member", isFlattened: false) @@ -6648,6 +6703,7 @@ extension SetSubnetsOutput { let reader = responseReader["SetSubnetsResult"] var value = SetSubnetsOutput() value.availabilityZones = try reader["AvailabilityZones"].readListIfPresent(memberReadingClosure: ElasticLoadBalancingv2ClientTypes.AvailabilityZone.read(from:), memberNodeInfo: "member", isFlattened: false) + value.enablePrefixForIpv6SourceNat = try reader["EnablePrefixForIpv6SourceNat"].readIfPresent() value.ipAddressType = try reader["IpAddressType"].readIfPresent() return value } @@ -8405,6 +8461,7 @@ extension ElasticLoadBalancingv2ClientTypes.LoadBalancer { value.ipAddressType = try reader["IpAddressType"].readIfPresent() value.customerOwnedIpv4Pool = try reader["CustomerOwnedIpv4Pool"].readIfPresent() value.enforceSecurityGroupInboundRulesOnPrivateLinkTraffic = try reader["EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic"].readIfPresent() + value.enablePrefixForIpv6SourceNat = try reader["EnablePrefixForIpv6SourceNat"].readIfPresent() return value } } @@ -8418,6 +8475,7 @@ extension ElasticLoadBalancingv2ClientTypes.AvailabilityZone { value.subnetId = try reader["SubnetId"].readIfPresent() value.outpostId = try reader["OutpostId"].readIfPresent() value.loadBalancerAddresses = try reader["LoadBalancerAddresses"].readListIfPresent(memberReadingClosure: ElasticLoadBalancingv2ClientTypes.LoadBalancerAddress.read(from:), memberNodeInfo: "member", isFlattened: false) + value.sourceNatIpv6Prefixes = try reader["SourceNatIpv6Prefixes"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) return value } } @@ -8879,6 +8937,7 @@ extension ElasticLoadBalancingv2ClientTypes.SubnetMapping { try writer["AllocationId"].write(value.allocationId) try writer["IPv6Address"].write(value.ipv6Address) try writer["PrivateIPv4Address"].write(value.privateIPv4Address) + try writer["SourceNatIpv6Prefix"].write(value.sourceNatIpv6Prefix) try writer["SubnetId"].write(value.subnetId) } } diff --git a/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift b/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift index a6615a5905e..b0e327e3f52 100644 --- a/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift +++ b/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift @@ -2020,6 +2020,82 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `CreateColumnStatisticsTaskSettings` operation on the `AWSGlue` service. + /// + /// Creates settings for a column statistics task. + /// + /// - Parameter CreateColumnStatisticsTaskSettingsInput : [no documentation found] + /// + /// - Returns: `CreateColumnStatisticsTaskSettingsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : Access to a resource was denied. + /// - `AlreadyExistsException` : A resource to be created or added already exists. + /// - `ColumnStatisticsTaskRunningException` : An exception thrown when you try to start another job while running a column stats generation job. + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + /// - `ResourceNumberLimitExceededException` : A resource numerical limit was exceeded. + public func createColumnStatisticsTaskSettings(input: CreateColumnStatisticsTaskSettingsInput) async throws -> CreateColumnStatisticsTaskSettingsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createColumnStatisticsTaskSettings") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "glue") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(CreateColumnStatisticsTaskSettingsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(CreateColumnStatisticsTaskSettingsOutput.httpOutput(from:), CreateColumnStatisticsTaskSettingsOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.CreateColumnStatisticsTaskSettings")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: CreateColumnStatisticsTaskSettingsInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "CreateColumnStatisticsTaskSettings") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `CreateConnection` operation on the `AWSGlue` service. /// /// Creates a connection definition in the Data Catalog. Connections used for creating federated resources require the IAM glue:PassConnection permission. @@ -3897,6 +3973,78 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `DeleteColumnStatisticsTaskSettings` operation on the `AWSGlue` service. + /// + /// Deletes settings for a column statistics task. + /// + /// - Parameter DeleteColumnStatisticsTaskSettingsInput : [no documentation found] + /// + /// - Returns: `DeleteColumnStatisticsTaskSettingsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + public func deleteColumnStatisticsTaskSettings(input: DeleteColumnStatisticsTaskSettingsInput) async throws -> DeleteColumnStatisticsTaskSettingsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteColumnStatisticsTaskSettings") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "glue") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(DeleteColumnStatisticsTaskSettingsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(DeleteColumnStatisticsTaskSettingsOutput.httpOutput(from:), DeleteColumnStatisticsTaskSettingsOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.DeleteColumnStatisticsTaskSettings")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: DeleteColumnStatisticsTaskSettingsInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "DeleteColumnStatisticsTaskSettings") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `DeleteConnection` operation on the `AWSGlue` service. /// /// Deletes a connection from the Data Catalog. @@ -6303,6 +6451,78 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `GetColumnStatisticsTaskSettings` operation on the `AWSGlue` service. + /// + /// Gets settings for a column statistics task. + /// + /// - Parameter GetColumnStatisticsTaskSettingsInput : [no documentation found] + /// + /// - Returns: `GetColumnStatisticsTaskSettingsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + public func getColumnStatisticsTaskSettings(input: GetColumnStatisticsTaskSettingsInput) async throws -> GetColumnStatisticsTaskSettingsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getColumnStatisticsTaskSettings") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "glue") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(GetColumnStatisticsTaskSettingsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(GetColumnStatisticsTaskSettingsOutput.httpOutput(from:), GetColumnStatisticsTaskSettingsOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.GetColumnStatisticsTaskSettings")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: GetColumnStatisticsTaskSettingsInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "GetColumnStatisticsTaskSettings") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `GetConnection` operation on the `AWSGlue` service. /// /// Retrieves a connection definition from the Data Catalog. @@ -13577,6 +13797,79 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `StartColumnStatisticsTaskRunSchedule` operation on the `AWSGlue` service. + /// + /// Starts a column statistics task run schedule. + /// + /// - Parameter StartColumnStatisticsTaskRunScheduleInput : [no documentation found] + /// + /// - Returns: `StartColumnStatisticsTaskRunScheduleOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : Access to a resource was denied. + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + public func startColumnStatisticsTaskRunSchedule(input: StartColumnStatisticsTaskRunScheduleInput) async throws -> StartColumnStatisticsTaskRunScheduleOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "startColumnStatisticsTaskRunSchedule") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "glue") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(StartColumnStatisticsTaskRunScheduleInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(StartColumnStatisticsTaskRunScheduleOutput.httpOutput(from:), StartColumnStatisticsTaskRunScheduleOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.StartColumnStatisticsTaskRunSchedule")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: StartColumnStatisticsTaskRunScheduleInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "StartColumnStatisticsTaskRunSchedule") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `StartCrawler` operation on the `AWSGlue` service. /// /// Starts a crawl using the specified crawler, regardless of what is scheduled. If the crawler is already running, returns a [CrawlerRunningException](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-exceptions.html#aws-glue-api-exceptions-CrawlerRunningException). @@ -14464,6 +14757,78 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `StopColumnStatisticsTaskRunSchedule` operation on the `AWSGlue` service. + /// + /// Stops a column statistics task run schedule. + /// + /// - Parameter StopColumnStatisticsTaskRunScheduleInput : [no documentation found] + /// + /// - Returns: `StopColumnStatisticsTaskRunScheduleOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + public func stopColumnStatisticsTaskRunSchedule(input: StopColumnStatisticsTaskRunScheduleInput) async throws -> StopColumnStatisticsTaskRunScheduleOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "stopColumnStatisticsTaskRunSchedule") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "glue") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(StopColumnStatisticsTaskRunScheduleInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(StopColumnStatisticsTaskRunScheduleOutput.httpOutput(from:), StopColumnStatisticsTaskRunScheduleOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.StopColumnStatisticsTaskRunSchedule")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: StopColumnStatisticsTaskRunScheduleInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "StopColumnStatisticsTaskRunSchedule") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `StopCrawler` operation on the `AWSGlue` service. /// /// If the specified crawler is running, stops the crawl. @@ -15353,6 +15718,80 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `UpdateColumnStatisticsTaskSettings` operation on the `AWSGlue` service. + /// + /// Updates settings for a column statistics task. + /// + /// - Parameter UpdateColumnStatisticsTaskSettingsInput : [no documentation found] + /// + /// - Returns: `UpdateColumnStatisticsTaskSettingsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : Access to a resource was denied. + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + /// - `VersionMismatchException` : There was a version conflict. + public func updateColumnStatisticsTaskSettings(input: UpdateColumnStatisticsTaskSettingsInput) async throws -> UpdateColumnStatisticsTaskSettingsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "updateColumnStatisticsTaskSettings") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "glue") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(UpdateColumnStatisticsTaskSettingsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(UpdateColumnStatisticsTaskSettingsOutput.httpOutput(from:), UpdateColumnStatisticsTaskSettingsOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.UpdateColumnStatisticsTaskSettings")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: UpdateColumnStatisticsTaskSettingsInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "UpdateColumnStatisticsTaskSettings") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `UpdateConnection` operation on the `AWSGlue` service. /// /// Updates a connection definition in the Data Catalog. diff --git a/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift b/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift index dd52c65e994..7b05126b17d 100644 --- a/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift +++ b/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift @@ -10010,6 +10010,83 @@ public struct CreateClassifierOutput: Swift.Sendable { public init() { } } +/// An exception thrown when you try to start another job while running a column stats generation job. +public struct ColumnStatisticsTaskRunningException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// A message describing the problem. + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ColumnStatisticsTaskRunningException" } + public static var fault: ClientRuntime.ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = SmithyHTTPAPI.HTTPResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +public struct CreateColumnStatisticsTaskSettingsInput: Swift.Sendable { + /// The ID of the Data Catalog in which the database resides. + public var catalogID: Swift.String? + /// A list of column names for which to run statistics. + public var columnNameList: [Swift.String]? + /// The name of the database where the table resides. + /// This member is required. + public var databaseName: Swift.String? + /// The role used for running the column statistics. + /// This member is required. + public var role: Swift.String? + /// The percentage of data to sample. + public var sampleSize: Swift.Double? + /// A schedule for running the column statistics, specified in CRON syntax. + public var schedule: Swift.String? + /// Name of the security configuration that is used to encrypt CloudWatch logs. + public var securityConfiguration: Swift.String? + /// The name of the table for which to generate column statistics. + /// This member is required. + public var tableName: Swift.String? + /// A map of tags. + public var tags: [Swift.String: Swift.String]? + + public init( + catalogID: Swift.String? = nil, + columnNameList: [Swift.String]? = nil, + databaseName: Swift.String? = nil, + role: Swift.String? = nil, + sampleSize: Swift.Double? = 0.0, + schedule: Swift.String? = nil, + securityConfiguration: Swift.String? = nil, + tableName: Swift.String? = nil, + tags: [Swift.String: Swift.String]? = nil + ) + { + self.catalogID = catalogID + self.columnNameList = columnNameList + self.databaseName = databaseName + self.role = role + self.sampleSize = sampleSize + self.schedule = schedule + self.securityConfiguration = securityConfiguration + self.tableName = tableName + self.tags = tags + } +} + +public struct CreateColumnStatisticsTaskSettingsOutput: Swift.Sendable { + + public init() { } +} + extension GlueClientTypes { public enum ConnectionPropertyKey: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -13144,6 +13221,29 @@ public struct DeleteColumnStatisticsForTableOutput: Swift.Sendable { public init() { } } +public struct DeleteColumnStatisticsTaskSettingsInput: Swift.Sendable { + /// The name of the database where the table resides. + /// This member is required. + public var databaseName: Swift.String? + /// The name of the table for which to delete column statistics. + /// This member is required. + public var tableName: Swift.String? + + public init( + databaseName: Swift.String? = nil, + tableName: Swift.String? = nil + ) + { + self.databaseName = databaseName + self.tableName = tableName + } +} + +public struct DeleteColumnStatisticsTaskSettingsOutput: Swift.Sendable { + + public init() { } +} + public struct DeleteConnectionInput: Swift.Sendable { /// The ID of the Data Catalog in which the connection resides. If none is provided, the Amazon Web Services account ID is used by default. public var catalogId: Swift.String? @@ -14890,6 +14990,35 @@ public struct GetColumnStatisticsTaskRunInput: Swift.Sendable { } } +extension GlueClientTypes { + + public enum ComputationType: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case full + case incremental + case sdkUnknown(Swift.String) + + public static var allCases: [ComputationType] { + return [ + .full, + .incremental + ] + } + + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + + public var rawValue: Swift.String { + switch self { + case .full: return "FULL" + case .incremental: return "INCREMENTAL" + case let .sdkUnknown(s): return s + } + } + } +} + extension GlueClientTypes { public enum ColumnStatisticsState: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -14938,6 +15067,8 @@ extension GlueClientTypes { public var columnNameList: [Swift.String]? /// The identifier for the particular column statistics task run. public var columnStatisticsTaskRunId: Swift.String? + /// The type of column statistics computation. + public var computationType: GlueClientTypes.ComputationType? /// The time that this task was created. public var creationTime: Foundation.Date? /// The Amazon Web Services account ID. @@ -14973,6 +15104,7 @@ extension GlueClientTypes { catalogID: Swift.String? = nil, columnNameList: [Swift.String]? = nil, columnStatisticsTaskRunId: Swift.String? = nil, + computationType: GlueClientTypes.ComputationType? = nil, creationTime: Foundation.Date? = nil, customerId: Swift.String? = nil, databaseName: Swift.String? = nil, @@ -14993,6 +15125,7 @@ extension GlueClientTypes { self.catalogID = catalogID self.columnNameList = columnNameList self.columnStatisticsTaskRunId = columnStatisticsTaskRunId + self.computationType = computationType self.creationTime = creationTime self.customerId = customerId self.databaseName = databaseName @@ -15066,6 +15199,80 @@ public struct GetColumnStatisticsTaskRunsOutput: Swift.Sendable { } } +public struct GetColumnStatisticsTaskSettingsInput: Swift.Sendable { + /// The name of the database where the table resides. + /// This member is required. + public var databaseName: Swift.String? + /// The name of the table for which to retrieve column statistics. + /// This member is required. + public var tableName: Swift.String? + + public init( + databaseName: Swift.String? = nil, + tableName: Swift.String? = nil + ) + { + self.databaseName = databaseName + self.tableName = tableName + } +} + +extension GlueClientTypes { + + /// The settings for a column statistics task. + public struct ColumnStatisticsTaskSettings: Swift.Sendable { + /// The ID of the Data Catalog in which the database resides. + public var catalogID: Swift.String? + /// A list of column names for which to run statistics. + public var columnNameList: [Swift.String]? + /// The name of the database where the table resides. + public var databaseName: Swift.String? + /// The role used for running the column statistics. + public var role: Swift.String? + /// The percentage of data to sample. + public var sampleSize: Swift.Double + /// A schedule for running the column statistics, specified in CRON syntax. + public var schedule: GlueClientTypes.Schedule? + /// Name of the security configuration that is used to encrypt CloudWatch logs. + public var securityConfiguration: Swift.String? + /// The name of the table for which to generate column statistics. + public var tableName: Swift.String? + + public init( + catalogID: Swift.String? = nil, + columnNameList: [Swift.String]? = nil, + databaseName: Swift.String? = nil, + role: Swift.String? = nil, + sampleSize: Swift.Double = 0.0, + schedule: GlueClientTypes.Schedule? = nil, + securityConfiguration: Swift.String? = nil, + tableName: Swift.String? = nil + ) + { + self.catalogID = catalogID + self.columnNameList = columnNameList + self.databaseName = databaseName + self.role = role + self.sampleSize = sampleSize + self.schedule = schedule + self.securityConfiguration = securityConfiguration + self.tableName = tableName + } + } +} + +public struct GetColumnStatisticsTaskSettingsOutput: Swift.Sendable { + /// A ColumnStatisticsTaskSettings object representing the settings for the column statistics task. + public var columnStatisticsTaskSettings: GlueClientTypes.ColumnStatisticsTaskSettings? + + public init( + columnStatisticsTaskSettings: GlueClientTypes.ColumnStatisticsTaskSettings? = nil + ) + { + self.columnStatisticsTaskSettings = columnStatisticsTaskSettings + } +} + public struct GetConnectionInput: Swift.Sendable { /// The ID of the Data Catalog in which the connection resides. If none is provided, the Amazon Web Services account ID is used by default. public var catalogId: Swift.String? @@ -22362,31 +22569,6 @@ public struct StartBlueprintRunOutput: Swift.Sendable { } } -/// An exception thrown when you try to start another job while running a column stats generation job. -public struct ColumnStatisticsTaskRunningException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { - - public struct Properties { - /// A message describing the problem. - public internal(set) var message: Swift.String? = nil - } - - public internal(set) var properties = Properties() - public static var typeName: Swift.String { "ColumnStatisticsTaskRunningException" } - public static var fault: ClientRuntime.ErrorFault { .client } - public static var isRetryable: Swift.Bool { false } - public static var isThrottling: Swift.Bool { false } - public internal(set) var httpResponse = SmithyHTTPAPI.HTTPResponse() - public internal(set) var message: Swift.String? - public internal(set) var requestID: Swift.String? - - public init( - message: Swift.String? = nil - ) - { - self.properties.message = message - } -} - public struct StartColumnStatisticsTaskRunInput: Swift.Sendable { /// The ID of the Data Catalog where the table reside. If none is supplied, the Amazon Web Services account ID is used by default. public var catalogID: Swift.String? @@ -22438,6 +22620,29 @@ public struct StartColumnStatisticsTaskRunOutput: Swift.Sendable { } } +public struct StartColumnStatisticsTaskRunScheduleInput: Swift.Sendable { + /// The name of the database where the table resides. + /// This member is required. + public var databaseName: Swift.String? + /// The name of the table for which to start a column statistic task run schedule. + /// This member is required. + public var tableName: Swift.String? + + public init( + databaseName: Swift.String? = nil, + tableName: Swift.String? = nil + ) + { + self.databaseName = databaseName + self.tableName = tableName + } +} + +public struct StartColumnStatisticsTaskRunScheduleOutput: Swift.Sendable { + + public init() { } +} + public struct StartCrawlerInput: Swift.Sendable { /// Name of the crawler to start. /// This member is required. @@ -22986,6 +23191,29 @@ public struct StopColumnStatisticsTaskRunOutput: Swift.Sendable { public init() { } } +public struct StopColumnStatisticsTaskRunScheduleInput: Swift.Sendable { + /// The name of the database where the table resides. + /// This member is required. + public var databaseName: Swift.String? + /// The name of the table for which to stop a column statistic task run schedule. + /// This member is required. + public var tableName: Swift.String? + + public init( + databaseName: Swift.String? = nil, + tableName: Swift.String? = nil + ) + { + self.databaseName = databaseName + self.tableName = tableName + } +} + +public struct StopColumnStatisticsTaskRunScheduleOutput: Swift.Sendable { + + public init() { } +} + /// The specified crawler is not running. public struct CrawlerNotRunningException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { @@ -23595,6 +23823,53 @@ public struct UpdateColumnStatisticsForTableOutput: Swift.Sendable { } } +public struct UpdateColumnStatisticsTaskSettingsInput: Swift.Sendable { + /// The ID of the Data Catalog in which the database resides. + public var catalogID: Swift.String? + /// A list of column names for which to run statistics. + public var columnNameList: [Swift.String]? + /// The name of the database where the table resides. + /// This member is required. + public var databaseName: Swift.String? + /// The role used for running the column statistics. + public var role: Swift.String? + /// The percentage of data to sample. + public var sampleSize: Swift.Double? + /// A schedule for running the column statistics, specified in CRON syntax. + public var schedule: Swift.String? + /// Name of the security configuration that is used to encrypt CloudWatch logs. + public var securityConfiguration: Swift.String? + /// The name of the table for which to generate column statistics. + /// This member is required. + public var tableName: Swift.String? + + public init( + catalogID: Swift.String? = nil, + columnNameList: [Swift.String]? = nil, + databaseName: Swift.String? = nil, + role: Swift.String? = nil, + sampleSize: Swift.Double? = 0.0, + schedule: Swift.String? = nil, + securityConfiguration: Swift.String? = nil, + tableName: Swift.String? = nil + ) + { + self.catalogID = catalogID + self.columnNameList = columnNameList + self.databaseName = databaseName + self.role = role + self.sampleSize = sampleSize + self.schedule = schedule + self.securityConfiguration = securityConfiguration + self.tableName = tableName + } +} + +public struct UpdateColumnStatisticsTaskSettingsOutput: Swift.Sendable { + + public init() { } +} + public struct UpdateConnectionInput: Swift.Sendable { /// The ID of the Data Catalog in which the connection resides. If none is provided, the Amazon Web Services account ID is used by default. public var catalogId: Swift.String? @@ -25794,6 +26069,13 @@ extension CreateClassifierInput { } } +extension CreateColumnStatisticsTaskSettingsInput { + + static func urlPathProvider(_ value: CreateColumnStatisticsTaskSettingsInput) -> Swift.String? { + return "/" + } +} + extension CreateConnectionInput { static func urlPathProvider(_ value: CreateConnectionInput) -> Swift.String? { @@ -25969,6 +26251,13 @@ extension DeleteColumnStatisticsForTableInput { } } +extension DeleteColumnStatisticsTaskSettingsInput { + + static func urlPathProvider(_ value: DeleteColumnStatisticsTaskSettingsInput) -> Swift.String? { + return "/" + } +} + extension DeleteConnectionInput { static func urlPathProvider(_ value: DeleteConnectionInput) -> Swift.String? { @@ -26200,6 +26489,13 @@ extension GetColumnStatisticsTaskRunsInput { } } +extension GetColumnStatisticsTaskSettingsInput { + + static func urlPathProvider(_ value: GetColumnStatisticsTaskSettingsInput) -> Swift.String? { + return "/" + } +} + extension GetConnectionInput { static func urlPathProvider(_ value: GetConnectionInput) -> Swift.String? { @@ -26893,6 +27189,13 @@ extension StartColumnStatisticsTaskRunInput { } } +extension StartColumnStatisticsTaskRunScheduleInput { + + static func urlPathProvider(_ value: StartColumnStatisticsTaskRunScheduleInput) -> Swift.String? { + return "/" + } +} + extension StartCrawlerInput { static func urlPathProvider(_ value: StartCrawlerInput) -> Swift.String? { @@ -26977,6 +27280,13 @@ extension StopColumnStatisticsTaskRunInput { } } +extension StopColumnStatisticsTaskRunScheduleInput { + + static func urlPathProvider(_ value: StopColumnStatisticsTaskRunScheduleInput) -> Swift.String? { + return "/" + } +} + extension StopCrawlerInput { static func urlPathProvider(_ value: StopCrawlerInput) -> Swift.String? { @@ -27061,6 +27371,13 @@ extension UpdateColumnStatisticsForTableInput { } } +extension UpdateColumnStatisticsTaskSettingsInput { + + static func urlPathProvider(_ value: UpdateColumnStatisticsTaskSettingsInput) -> Swift.String? { + return "/" + } +} + extension UpdateConnectionInput { static func urlPathProvider(_ value: UpdateConnectionInput) -> Swift.String? { @@ -27428,6 +27745,22 @@ extension CreateClassifierInput { } } +extension CreateColumnStatisticsTaskSettingsInput { + + static func write(value: CreateColumnStatisticsTaskSettingsInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["CatalogID"].write(value.catalogID) + try writer["ColumnNameList"].writeList(value.columnNameList, memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["DatabaseName"].write(value.databaseName) + try writer["Role"].write(value.role) + try writer["SampleSize"].write(value.sampleSize) + try writer["Schedule"].write(value.schedule) + try writer["SecurityConfiguration"].write(value.securityConfiguration) + try writer["TableName"].write(value.tableName) + try writer["Tags"].writeMap(value.tags, valueWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + } +} + extension CreateConnectionInput { static func write(value: CreateConnectionInput?, to writer: SmithyJSON.Writer) throws { @@ -27770,6 +28103,15 @@ extension DeleteColumnStatisticsForTableInput { } } +extension DeleteColumnStatisticsTaskSettingsInput { + + static func write(value: DeleteColumnStatisticsTaskSettingsInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["DatabaseName"].write(value.databaseName) + try writer["TableName"].write(value.tableName) + } +} + extension DeleteConnectionInput { static func write(value: DeleteConnectionInput?, to writer: SmithyJSON.Writer) throws { @@ -28072,6 +28414,15 @@ extension GetColumnStatisticsTaskRunsInput { } } +extension GetColumnStatisticsTaskSettingsInput { + + static func write(value: GetColumnStatisticsTaskSettingsInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["DatabaseName"].write(value.databaseName) + try writer["TableName"].write(value.tableName) + } +} + extension GetConnectionInput { static func write(value: GetConnectionInput?, to writer: SmithyJSON.Writer) throws { @@ -29088,6 +29439,15 @@ extension StartColumnStatisticsTaskRunInput { } } +extension StartColumnStatisticsTaskRunScheduleInput { + + static func write(value: StartColumnStatisticsTaskRunScheduleInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["DatabaseName"].write(value.databaseName) + try writer["TableName"].write(value.tableName) + } +} + extension StartCrawlerInput { static func write(value: StartCrawlerInput?, to writer: SmithyJSON.Writer) throws { @@ -29214,6 +29574,15 @@ extension StopColumnStatisticsTaskRunInput { } } +extension StopColumnStatisticsTaskRunScheduleInput { + + static func write(value: StopColumnStatisticsTaskRunScheduleInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["DatabaseName"].write(value.databaseName) + try writer["TableName"].write(value.tableName) + } +} + extension StopCrawlerInput { static func write(value: StopCrawlerInput?, to writer: SmithyJSON.Writer) throws { @@ -29327,6 +29696,21 @@ extension UpdateColumnStatisticsForTableInput { } } +extension UpdateColumnStatisticsTaskSettingsInput { + + static func write(value: UpdateColumnStatisticsTaskSettingsInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["CatalogID"].write(value.catalogID) + try writer["ColumnNameList"].writeList(value.columnNameList, memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["DatabaseName"].write(value.databaseName) + try writer["Role"].write(value.role) + try writer["SampleSize"].write(value.sampleSize) + try writer["Schedule"].write(value.schedule) + try writer["SecurityConfiguration"].write(value.securityConfiguration) + try writer["TableName"].write(value.tableName) + } +} + extension UpdateConnectionInput { static func write(value: UpdateConnectionInput?, to writer: SmithyJSON.Writer) throws { @@ -29856,6 +30240,13 @@ extension CreateClassifierOutput { } } +extension CreateColumnStatisticsTaskSettingsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateColumnStatisticsTaskSettingsOutput { + return CreateColumnStatisticsTaskSettingsOutput() + } +} + extension CreateConnectionOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateConnectionOutput { @@ -30142,6 +30533,13 @@ extension DeleteColumnStatisticsForTableOutput { } } +extension DeleteColumnStatisticsTaskSettingsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> DeleteColumnStatisticsTaskSettingsOutput { + return DeleteColumnStatisticsTaskSettingsOutput() + } +} + extension DeleteConnectionOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> DeleteConnectionOutput { @@ -30477,6 +30875,18 @@ extension GetColumnStatisticsTaskRunsOutput { } } +extension GetColumnStatisticsTaskSettingsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GetColumnStatisticsTaskSettingsOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = GetColumnStatisticsTaskSettingsOutput() + value.columnStatisticsTaskSettings = try reader["ColumnStatisticsTaskSettings"].readIfPresent(with: GlueClientTypes.ColumnStatisticsTaskSettings.read(from:)) + return value + } +} + extension GetConnectionOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GetConnectionOutput { @@ -31841,6 +32251,13 @@ extension StartColumnStatisticsTaskRunOutput { } } +extension StartColumnStatisticsTaskRunScheduleOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> StartColumnStatisticsTaskRunScheduleOutput { + return StartColumnStatisticsTaskRunScheduleOutput() + } +} + extension StartCrawlerOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> StartCrawlerOutput { @@ -31970,6 +32387,13 @@ extension StopColumnStatisticsTaskRunOutput { } } +extension StopColumnStatisticsTaskRunScheduleOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> StopColumnStatisticsTaskRunScheduleOutput { + return StopColumnStatisticsTaskRunScheduleOutput() + } +} + extension StopCrawlerOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> StopCrawlerOutput { @@ -32079,6 +32503,13 @@ extension UpdateColumnStatisticsForTableOutput { } } +extension UpdateColumnStatisticsTaskSettingsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> UpdateColumnStatisticsTaskSettingsOutput { + return UpdateColumnStatisticsTaskSettingsOutput() + } +} + extension UpdateConnectionOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> UpdateConnectionOutput { @@ -32693,6 +33124,26 @@ enum CreateClassifierOutputError { } } +enum CreateColumnStatisticsTaskSettingsOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "AlreadyExistsException": return try AlreadyExistsException.makeError(baseError: baseError) + case "ColumnStatisticsTaskRunningException": return try ColumnStatisticsTaskRunningException.makeError(baseError: baseError) + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + case "ResourceNumberLimitExceededException": return try ResourceNumberLimitExceededException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum CreateConnectionOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -33170,6 +33621,22 @@ enum DeleteColumnStatisticsForTableOutputError { } } +enum DeleteColumnStatisticsTaskSettingsOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum DeleteConnectionOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -33728,6 +34195,22 @@ enum GetColumnStatisticsTaskRunsOutputError { } } +enum GetColumnStatisticsTaskSettingsOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum GetConnectionOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -35438,6 +35921,23 @@ enum StartColumnStatisticsTaskRunOutputError { } } +enum StartColumnStatisticsTaskRunScheduleOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum StartCrawlerOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -35653,6 +36153,22 @@ enum StopColumnStatisticsTaskRunOutputError { } } +enum StopColumnStatisticsTaskRunScheduleOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum StopCrawlerOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -35870,6 +36386,24 @@ enum UpdateColumnStatisticsForTableOutputError { } } +enum UpdateColumnStatisticsTaskSettingsOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + case "VersionMismatchException": return try VersionMismatchException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum UpdateConnectionOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -36409,6 +36943,19 @@ extension IllegalSessionStateException { } } +extension ColumnStatisticsTaskRunningException { + + static func makeError(baseError: AWSClientRuntime.AWSJSONError) throws -> ColumnStatisticsTaskRunningException { + let reader = baseError.errorBodyReader + var value = ColumnStatisticsTaskRunningException() + value.properties.message = try reader["Message"].readIfPresent() + value.httpResponse = baseError.httpResponse + value.requestID = baseError.requestID + value.message = baseError.message + return value + } +} + extension IdempotentParameterMismatchException { static func makeError(baseError: AWSClientRuntime.AWSJSONError) throws -> IdempotentParameterMismatchException { @@ -36579,19 +37126,6 @@ extension IllegalBlueprintStateException { } } -extension ColumnStatisticsTaskRunningException { - - static func makeError(baseError: AWSClientRuntime.AWSJSONError) throws -> ColumnStatisticsTaskRunningException { - let reader = baseError.errorBodyReader - var value = ColumnStatisticsTaskRunningException() - value.properties.message = try reader["Message"].readIfPresent() - value.httpResponse = baseError.httpResponse - value.requestID = baseError.requestID - value.message = baseError.message - return value - } -} - extension NoScheduleException { static func makeError(baseError: AWSClientRuntime.AWSJSONError) throws -> NoScheduleException { @@ -41151,6 +41685,7 @@ extension GlueClientTypes.ColumnStatisticsTaskRun { value.securityConfiguration = try reader["SecurityConfiguration"].readIfPresent() value.numberOfWorkers = try reader["NumberOfWorkers"].readIfPresent() ?? 0 value.workerType = try reader["WorkerType"].readIfPresent() + value.computationType = try reader["ComputationType"].readIfPresent() value.status = try reader["Status"].readIfPresent() value.creationTime = try reader["CreationTime"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) value.lastUpdated = try reader["LastUpdated"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) @@ -41162,6 +41697,23 @@ extension GlueClientTypes.ColumnStatisticsTaskRun { } } +extension GlueClientTypes.ColumnStatisticsTaskSettings { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.ColumnStatisticsTaskSettings { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.ColumnStatisticsTaskSettings() + value.databaseName = try reader["DatabaseName"].readIfPresent() + value.tableName = try reader["TableName"].readIfPresent() + value.schedule = try reader["Schedule"].readIfPresent(with: GlueClientTypes.Schedule.read(from:)) + value.columnNameList = try reader["ColumnNameList"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) + value.catalogID = try reader["CatalogID"].readIfPresent() + value.role = try reader["Role"].readIfPresent() + value.sampleSize = try reader["SampleSize"].readIfPresent() ?? 0 + value.securityConfiguration = try reader["SecurityConfiguration"].readIfPresent() + return value + } +} + extension GlueClientTypes.Connection { static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.Connection { diff --git a/Sources/Services/AWSSESv2/Sources/AWSSESv2/Models.swift b/Sources/Services/AWSSESv2/Sources/AWSSESv2/Models.swift index 24453c8f33d..b553f4113da 100644 --- a/Sources/Services/AWSSESv2/Sources/AWSSESv2/Models.swift +++ b/Sources/Services/AWSSESv2/Sources/AWSSESv2/Models.swift @@ -839,12 +839,38 @@ extension SESv2ClientTypes { extension SESv2ClientTypes { - /// An object that defines the email template to use for an email message, and the values to use for any message variables in that template. An email template is a type of message template that contains content that you want to define, save, and reuse in email messages that you send. + /// The content of the email, composed of a subject line, an HTML part, and a text-only part. + public struct EmailTemplateContent: Swift.Sendable { + /// The HTML body of the email. + public var html: Swift.String? + /// The subject line of the email. + public var subject: Swift.String? + /// The email body that will be visible to recipients whose email clients do not display HTML. + public var text: Swift.String? + + public init( + html: Swift.String? = nil, + subject: Swift.String? = nil, + text: Swift.String? = nil + ) + { + self.html = html + self.subject = subject + self.text = text + } + } +} + +extension SESv2ClientTypes { + + /// An object that defines the email template to use for an email message, and the values to use for any message variables in that template. An email template is a type of message template that contains content that you want to reuse in email messages that you send. You can specifiy the email template by providing the name or ARN of an email template previously saved in your Amazon SES account or by providing the full template content. public struct Template: Swift.Sendable { /// The list of message headers that will be added to the email message. public var headers: [SESv2ClientTypes.MessageHeader]? /// The Amazon Resource Name (ARN) of the template. public var templateArn: Swift.String? + /// The content of the template. Amazon SES supports only simple substitions when you send email using the SendEmail or SendBulkEmail operations and you provide the full template content in the request. + public var templateContent: SESv2ClientTypes.EmailTemplateContent? /// An object that defines the values to use for message variables in the template. This object is a set of key-value pairs. Each key defines a message variable in the template. The corresponding value defines the value to use for that variable. public var templateData: Swift.String? /// The name of the template. You will refer to this name when you send email using the SendTemplatedEmail or SendBulkTemplatedEmail operations. @@ -853,12 +879,14 @@ extension SESv2ClientTypes { public init( headers: [SESv2ClientTypes.MessageHeader]? = nil, templateArn: Swift.String? = nil, + templateContent: SESv2ClientTypes.EmailTemplateContent? = nil, templateData: Swift.String? = nil, templateName: Swift.String? = nil ) { self.headers = headers self.templateArn = templateArn + self.templateContent = templateContent self.templateData = templateData self.templateName = templateName } @@ -2776,30 +2804,6 @@ public struct CreateEmailIdentityPolicyOutput: Swift.Sendable { public init() { } } -extension SESv2ClientTypes { - - /// The content of the email, composed of a subject line, an HTML part, and a text-only part. - public struct EmailTemplateContent: Swift.Sendable { - /// The HTML body of the email. - public var html: Swift.String? - /// The subject line of the email. - public var subject: Swift.String? - /// The email body that will be visible to recipients whose email clients do not display HTML. - public var text: Swift.String? - - public init( - html: Swift.String? = nil, - subject: Swift.String? = nil, - text: Swift.String? = nil - ) - { - self.html = html - self.subject = subject - self.text = text - } - } -} - /// Represents a request to create an email template. For more information, see the [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html). public struct CreateEmailTemplateInput: Swift.Sendable { /// The content of the email template, composed of a subject line, an HTML part, and a text-only part. @@ -12886,6 +12890,7 @@ extension SESv2ClientTypes.Template { guard let value else { return } try writer["Headers"].writeList(value.headers, memberWritingClosure: SESv2ClientTypes.MessageHeader.write(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["TemplateArn"].write(value.templateArn) + try writer["TemplateContent"].write(value.templateContent, with: SESv2ClientTypes.EmailTemplateContent.write(value:to:)) try writer["TemplateData"].write(value.templateData) try writer["TemplateName"].write(value.templateName) } diff --git a/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/Models.swift b/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/Models.swift index cb801c93bd5..57bf8f69a1c 100644 --- a/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/Models.swift +++ b/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/Models.swift @@ -2741,6 +2741,22 @@ extension SageMakerClientTypes { case mlG54xlarge case mlG58xlarge case mlG5Xlarge + case mlG6e12xlarge + case mlG6e16xlarge + case mlG6e24xlarge + case mlG6e2xlarge + case mlG6e48xlarge + case mlG6e4xlarge + case mlG6e8xlarge + case mlG6eXlarge + case mlG612xlarge + case mlG616xlarge + case mlG624xlarge + case mlG62xlarge + case mlG648xlarge + case mlG64xlarge + case mlG68xlarge + case mlG6Xlarge case mlM410xlarge case mlM416xlarge case mlM42xlarge @@ -2835,6 +2851,22 @@ extension SageMakerClientTypes { .mlG54xlarge, .mlG58xlarge, .mlG5Xlarge, + .mlG6e12xlarge, + .mlG6e16xlarge, + .mlG6e24xlarge, + .mlG6e2xlarge, + .mlG6e48xlarge, + .mlG6e4xlarge, + .mlG6e8xlarge, + .mlG6eXlarge, + .mlG612xlarge, + .mlG616xlarge, + .mlG624xlarge, + .mlG62xlarge, + .mlG648xlarge, + .mlG64xlarge, + .mlG68xlarge, + .mlG6Xlarge, .mlM410xlarge, .mlM416xlarge, .mlM42xlarge, @@ -2935,6 +2967,22 @@ extension SageMakerClientTypes { case .mlG54xlarge: return "ml.g5.4xlarge" case .mlG58xlarge: return "ml.g5.8xlarge" case .mlG5Xlarge: return "ml.g5.xlarge" + case .mlG6e12xlarge: return "ml.g6e.12xlarge" + case .mlG6e16xlarge: return "ml.g6e.16xlarge" + case .mlG6e24xlarge: return "ml.g6e.24xlarge" + case .mlG6e2xlarge: return "ml.g6e.2xlarge" + case .mlG6e48xlarge: return "ml.g6e.48xlarge" + case .mlG6e4xlarge: return "ml.g6e.4xlarge" + case .mlG6e8xlarge: return "ml.g6e.8xlarge" + case .mlG6eXlarge: return "ml.g6e.xlarge" + case .mlG612xlarge: return "ml.g6.12xlarge" + case .mlG616xlarge: return "ml.g6.16xlarge" + case .mlG624xlarge: return "ml.g6.24xlarge" + case .mlG62xlarge: return "ml.g6.2xlarge" + case .mlG648xlarge: return "ml.g6.48xlarge" + case .mlG64xlarge: return "ml.g6.4xlarge" + case .mlG68xlarge: return "ml.g6.8xlarge" + case .mlG6Xlarge: return "ml.g6.xlarge" case .mlM410xlarge: return "ml.m4.10xlarge" case .mlM416xlarge: return "ml.m4.16xlarge" case .mlM42xlarge: return "ml.m4.2xlarge" @@ -7885,6 +7933,99 @@ extension SageMakerClientTypes { } } +public struct BatchDeleteClusterNodesInput: Swift.Sendable { + /// The name of the SageMaker HyperPod cluster from which to delete the specified nodes. + /// This member is required. + public var clusterName: Swift.String? + /// A list of node IDs to be deleted from the specified cluster. For SageMaker HyperPod clusters using the Slurm workload manager, you cannot remove instances that are configured as Slurm controller nodes. + /// This member is required. + public var nodeIds: [Swift.String]? + + public init( + clusterName: Swift.String? = nil, + nodeIds: [Swift.String]? = nil + ) + { + self.clusterName = clusterName + self.nodeIds = nodeIds + } +} + +extension SageMakerClientTypes { + + public enum BatchDeleteClusterNodesErrorCode: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case invalidNodeStatus + case nodeIdInUse + case nodeIdNotFound + case sdkUnknown(Swift.String) + + public static var allCases: [BatchDeleteClusterNodesErrorCode] { + return [ + .invalidNodeStatus, + .nodeIdInUse, + .nodeIdNotFound + ] + } + + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + + public var rawValue: Swift.String { + switch self { + case .invalidNodeStatus: return "InvalidNodeStatus" + case .nodeIdInUse: return "NodeIdInUse" + case .nodeIdNotFound: return "NodeIdNotFound" + case let .sdkUnknown(s): return s + } + } + } +} + +extension SageMakerClientTypes { + + /// Represents an error encountered when deleting a node from a SageMaker HyperPod cluster. + public struct BatchDeleteClusterNodesError: Swift.Sendable { + /// The error code associated with the error encountered when deleting a node. The code provides information about the specific issue encountered, such as the node not being found, the node's status being invalid for deletion, or the node ID being in use by another process. + /// This member is required. + public var code: SageMakerClientTypes.BatchDeleteClusterNodesErrorCode? + /// A message describing the error encountered when deleting a node. + /// This member is required. + public var message: Swift.String? + /// The ID of the node that encountered an error during the deletion process. + /// This member is required. + public var nodeId: Swift.String? + + public init( + code: SageMakerClientTypes.BatchDeleteClusterNodesErrorCode? = nil, + message: Swift.String? = nil, + nodeId: Swift.String? = nil + ) + { + self.code = code + self.message = message + self.nodeId = nodeId + } + } +} + +public struct BatchDeleteClusterNodesOutput: Swift.Sendable { + /// A list of errors encountered when deleting the specified nodes. + public var failed: [SageMakerClientTypes.BatchDeleteClusterNodesError]? + /// A list of node IDs that were successfully deleted from the specified cluster. + public var successful: [Swift.String]? + + public init( + failed: [SageMakerClientTypes.BatchDeleteClusterNodesError]? = nil, + successful: [Swift.String]? = nil + ) + { + self.failed = failed + self.successful = successful + } +} + public struct BatchDescribeModelPackageInput: Swift.Sendable { /// The list of Amazon Resource Name (ARN) of the model package groups. /// This member is required. @@ -9581,6 +9722,24 @@ extension SageMakerClientTypes { case mlG54xlarge case mlG58xlarge case mlG5Xlarge + case mlG6e12xlarge + case mlG6e16xlarge + case mlG6e24xlarge + case mlG6e2xlarge + case mlG6e48xlarge + case mlG6e4xlarge + case mlG6e8xlarge + case mlG6eXlarge + case mlG612xlarge + case mlG616xlarge + case mlG624xlarge + case mlG62xlarge + case mlG648xlarge + case mlG64xlarge + case mlG68xlarge + case mlG6Xlarge + case mlGr64xlarge + case mlGr68xlarge case mlM512xlarge case mlM516xlarge case mlM524xlarge @@ -9591,6 +9750,7 @@ extension SageMakerClientTypes { case mlM5Xlarge case mlP4de24xlarge case mlP4d24xlarge + case mlP5e48xlarge case mlP548xlarge case mlT32xlarge case mlT3Large @@ -9623,6 +9783,24 @@ extension SageMakerClientTypes { .mlG54xlarge, .mlG58xlarge, .mlG5Xlarge, + .mlG6e12xlarge, + .mlG6e16xlarge, + .mlG6e24xlarge, + .mlG6e2xlarge, + .mlG6e48xlarge, + .mlG6e4xlarge, + .mlG6e8xlarge, + .mlG6eXlarge, + .mlG612xlarge, + .mlG616xlarge, + .mlG624xlarge, + .mlG62xlarge, + .mlG648xlarge, + .mlG64xlarge, + .mlG68xlarge, + .mlG6Xlarge, + .mlGr64xlarge, + .mlGr68xlarge, .mlM512xlarge, .mlM516xlarge, .mlM524xlarge, @@ -9633,6 +9811,7 @@ extension SageMakerClientTypes { .mlM5Xlarge, .mlP4de24xlarge, .mlP4d24xlarge, + .mlP5e48xlarge, .mlP548xlarge, .mlT32xlarge, .mlT3Large, @@ -9671,6 +9850,24 @@ extension SageMakerClientTypes { case .mlG54xlarge: return "ml.g5.4xlarge" case .mlG58xlarge: return "ml.g5.8xlarge" case .mlG5Xlarge: return "ml.g5.xlarge" + case .mlG6e12xlarge: return "ml.g6e.12xlarge" + case .mlG6e16xlarge: return "ml.g6e.16xlarge" + case .mlG6e24xlarge: return "ml.g6e.24xlarge" + case .mlG6e2xlarge: return "ml.g6e.2xlarge" + case .mlG6e48xlarge: return "ml.g6e.48xlarge" + case .mlG6e4xlarge: return "ml.g6e.4xlarge" + case .mlG6e8xlarge: return "ml.g6e.8xlarge" + case .mlG6eXlarge: return "ml.g6e.xlarge" + case .mlG612xlarge: return "ml.g6.12xlarge" + case .mlG616xlarge: return "ml.g6.16xlarge" + case .mlG624xlarge: return "ml.g6.24xlarge" + case .mlG62xlarge: return "ml.g6.2xlarge" + case .mlG648xlarge: return "ml.g6.48xlarge" + case .mlG64xlarge: return "ml.g6.4xlarge" + case .mlG68xlarge: return "ml.g6.8xlarge" + case .mlG6Xlarge: return "ml.g6.xlarge" + case .mlGr64xlarge: return "ml.gr6.4xlarge" + case .mlGr68xlarge: return "ml.gr6.8xlarge" case .mlM512xlarge: return "ml.m5.12xlarge" case .mlM516xlarge: return "ml.m5.16xlarge" case .mlM524xlarge: return "ml.m5.24xlarge" @@ -9681,6 +9878,7 @@ extension SageMakerClientTypes { case .mlM5Xlarge: return "ml.m5.xlarge" case .mlP4de24xlarge: return "ml.p4de.24xlarge" case .mlP4d24xlarge: return "ml.p4d.24xlarge" + case .mlP5e48xlarge: return "ml.p5e.48xlarge" case .mlP548xlarge: return "ml.p5.48xlarge" case .mlT32xlarge: return "ml.t3.2xlarge" case .mlT3Large: return "ml.t3.large" @@ -44585,6 +44783,8 @@ extension SageMakerClientTypes { public var creationTime: Foundation.Date? /// Timestamp when the training job was last modified. public var lastModifiedTime: Foundation.Date? + /// The secondary status of the training job. + public var secondaryStatus: SageMakerClientTypes.SecondaryStatus? /// A timestamp that shows when the training job ended. This field is set only if the training job has one of the terminal statuses (Completed, Failed, or Stopped). public var trainingEndTime: Foundation.Date? /// The Amazon Resource Name (ARN) of the training job. @@ -44602,6 +44802,7 @@ extension SageMakerClientTypes { public init( creationTime: Foundation.Date? = nil, lastModifiedTime: Foundation.Date? = nil, + secondaryStatus: SageMakerClientTypes.SecondaryStatus? = nil, trainingEndTime: Foundation.Date? = nil, trainingJobArn: Swift.String? = nil, trainingJobName: Swift.String? = nil, @@ -44611,6 +44812,7 @@ extension SageMakerClientTypes { { self.creationTime = creationTime self.lastModifiedTime = lastModifiedTime + self.secondaryStatus = secondaryStatus self.trainingEndTime = trainingEndTime self.trainingJobArn = trainingJobArn self.trainingJobName = trainingJobName @@ -49575,6 +49777,13 @@ extension AssociateTrialComponentInput { } } +extension BatchDeleteClusterNodesInput { + + static func urlPathProvider(_ value: BatchDeleteClusterNodesInput) -> Swift.String? { + return "/" + } +} + extension BatchDescribeModelPackageInput { static func urlPathProvider(_ value: BatchDescribeModelPackageInput) -> Swift.String? { @@ -51927,6 +52136,15 @@ extension AssociateTrialComponentInput { } } +extension BatchDeleteClusterNodesInput { + + static func write(value: BatchDeleteClusterNodesInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ClusterName"].write(value.clusterName) + try writer["NodeIds"].writeList(value.nodeIds, memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false) + } +} + extension BatchDescribeModelPackageInput { static func write(value: BatchDescribeModelPackageInput?, to writer: SmithyJSON.Writer) throws { @@ -55795,6 +56013,19 @@ extension AssociateTrialComponentOutput { } } +extension BatchDeleteClusterNodesOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> BatchDeleteClusterNodesOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = BatchDeleteClusterNodesOutput() + value.failed = try reader["Failed"].readListIfPresent(memberReadingClosure: SageMakerClientTypes.BatchDeleteClusterNodesError.read(from:), memberNodeInfo: "member", isFlattened: false) + value.successful = try reader["Successful"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + extension BatchDescribeModelPackageOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> BatchDescribeModelPackageOutput { @@ -60314,6 +60545,20 @@ enum AssociateTrialComponentOutputError { } } +enum BatchDeleteClusterNodesOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "ResourceNotFound": return try ResourceNotFound.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum BatchDescribeModelPackageOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -65033,6 +65278,18 @@ extension SageMakerClientTypes.Tag { } } +extension SageMakerClientTypes.BatchDeleteClusterNodesError { + + static func read(from reader: SmithyJSON.Reader) throws -> SageMakerClientTypes.BatchDeleteClusterNodesError { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = SageMakerClientTypes.BatchDeleteClusterNodesError() + value.code = try reader["Code"].readIfPresent() ?? .sdkUnknown("") + value.message = try reader["Message"].readIfPresent() ?? "" + value.nodeId = try reader["NodeId"].readIfPresent() ?? "" + return value + } +} + extension SageMakerClientTypes.BatchDescribeModelPackageSummary { static func read(from reader: SmithyJSON.Reader) throws -> SageMakerClientTypes.BatchDescribeModelPackageSummary { @@ -74297,6 +74554,7 @@ extension SageMakerClientTypes.TrainingJobSummary { value.trainingEndTime = try reader["TrainingEndTime"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) value.lastModifiedTime = try reader["LastModifiedTime"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) value.trainingJobStatus = try reader["TrainingJobStatus"].readIfPresent() ?? .sdkUnknown("") + value.secondaryStatus = try reader["SecondaryStatus"].readIfPresent() value.warmPoolStatus = try reader["WarmPoolStatus"].readIfPresent(with: SageMakerClientTypes.WarmPoolStatus.read(from:)) return value } diff --git a/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/SageMakerClient.swift b/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/SageMakerClient.swift index 7bf39292c33..158da64f2bb 100644 --- a/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/SageMakerClient.swift +++ b/Sources/Services/AWSSageMaker/Sources/AWSSageMaker/SageMakerClient.swift @@ -402,6 +402,80 @@ extension SageMakerClient { return try await op.execute(input: input) } + /// Performs the `BatchDeleteClusterNodes` operation on the `SageMaker` service. + /// + /// Deletes specific nodes within a SageMaker HyperPod cluster. BatchDeleteClusterNodes accepts a cluster name and a list of node IDs. + /// + /// * To safeguard your work, back up your data to Amazon S3 or an FSx for Lustre file system before invoking the API on a worker node group. This will help prevent any potential data loss from the instance root volume. For more information about backup, see [Use the backup script provided by SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-operate-cli-command.html#sagemaker-hyperpod-operate-cli-command-update-cluster-software-backup). + /// + /// * If you want to invoke this API on an existing cluster, you'll first need to patch the cluster by running the [UpdateClusterSoftware API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateClusterSoftware.html). For more information about patching a cluster, see [Update the SageMaker HyperPod platform software of a cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-operate-cli-command.html#sagemaker-hyperpod-operate-cli-command-update-cluster-software). + /// + /// - Parameter BatchDeleteClusterNodesInput : [no documentation found] + /// + /// - Returns: `BatchDeleteClusterNodesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ResourceNotFound` : Resource being access is not found. + public func batchDeleteClusterNodes(input: BatchDeleteClusterNodesInput) async throws -> BatchDeleteClusterNodesOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "batchDeleteClusterNodes") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "sagemaker") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(BatchDeleteClusterNodesInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(BatchDeleteClusterNodesOutput.httpOutput(from:), BatchDeleteClusterNodesOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "SageMaker.BatchDeleteClusterNodes")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: BatchDeleteClusterNodesInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "SageMaker") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "BatchDeleteClusterNodes") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `BatchDescribeModelPackage` operation on the `SageMaker` service. /// /// This action batch describes a list of versioned model packages @@ -20954,7 +21028,7 @@ extension SageMakerClient { /// Performs the `UpdateClusterSoftware` operation on the `SageMaker` service. /// - /// Updates the platform software of a SageMaker HyperPod cluster for security patching. To learn how to use this API, see [Update the SageMaker HyperPod platform software of a cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-operate.html#sagemaker-hyperpod-operate-cli-command-update-cluster-software). + /// Updates the platform software of a SageMaker HyperPod cluster for security patching. To learn how to use this API, see [Update the SageMaker HyperPod platform software of a cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-operate.html#sagemaker-hyperpod-operate-cli-command-update-cluster-software). The UpgradeClusterSoftware API call may impact your SageMaker HyperPod cluster uptime and availability. Plan accordingly to mitigate potential disruptions to your workloads. /// /// - Parameter UpdateClusterSoftwareInput : [no documentation found] ///