diff --git a/Package.swift b/Package.swift index bf9289bcb3a..aea739ed885 100644 --- a/Package.swift +++ b/Package.swift @@ -15,7 +15,7 @@ import PackageDescription // MARK: - Dynamic Content -let clientRuntimeVersion: Version = "0.81.0" +let clientRuntimeVersion: Version = "0.82.0" let crtVersion: Version = "0.36.0" let excludeRuntimeUnitTests = false diff --git a/Package.version b/Package.version index 1c2de38aad8..321816a02d1 100644 --- a/Package.version +++ b/Package.version @@ -1 +1 @@ -1.0.23 \ No newline at end of file +1.0.24 \ No newline at end of file diff --git a/Package.version.next b/Package.version.next index 321816a02d1..855f7029535 100644 --- a/Package.version.next +++ b/Package.version.next @@ -1 +1 @@ -1.0.24 \ No newline at end of file +1.0.25 \ No newline at end of file diff --git a/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md index 34f2b35a440..03e214b1a75 100644 --- a/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md +++ b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md @@ -4,8 +4,6 @@ A pure-Swift SDK for accessing all published AWS services. ## Overview -**The AWS SDK for Swift is currently in developer preview and is intended strictly for feedback purposes only. Do not use this SDK for production workloads. Refer to the SDK [stability guidelines](docs/stability.md) for more detail.** - This SDK is open-source. Code is available on Github [here](https://github.com/awslabs/aws-sdk-swift). diff --git a/Sources/Services/AWSApplicationInsights/Sources/AWSApplicationInsights/Models.swift b/Sources/Services/AWSApplicationInsights/Sources/AWSApplicationInsights/Models.swift index cd8ecf6f7e0..c34e7d0ea22 100644 --- a/Sources/Services/AWSApplicationInsights/Sources/AWSApplicationInsights/Models.swift +++ b/Sources/Services/AWSApplicationInsights/Sources/AWSApplicationInsights/Models.swift @@ -161,6 +161,8 @@ extension ApplicationInsightsClientTypes { case mysql case oracle case postgresql + case sapAseHighAvailability + case sapAseSingleNode case sapHanaHighAvailability case sapHanaMultiNode case sapHanaSingleNode @@ -186,6 +188,8 @@ extension ApplicationInsightsClientTypes { .mysql, .oracle, .postgresql, + .sapAseHighAvailability, + .sapAseSingleNode, .sapHanaHighAvailability, .sapHanaMultiNode, .sapHanaSingleNode, @@ -217,6 +221,8 @@ extension ApplicationInsightsClientTypes { case .mysql: return "MYSQL" case .oracle: return "ORACLE" case .postgresql: return "POSTGRESQL" + case .sapAseHighAvailability: return "SAP_ASE_HIGH_AVAILABILITY" + case .sapAseSingleNode: return "SAP_ASE_SINGLE_NODE" case .sapHanaHighAvailability: return "SAP_HANA_HIGH_AVAILABILITY" case .sapHanaMultiNode: return "SAP_HANA_MULTI_NODE" case .sapHanaSingleNode: return "SAP_HANA_SINGLE_NODE" @@ -398,7 +404,7 @@ extension ApplicationInsightsClientTypes { /// Describes the status of the application. public struct ApplicationInfo: Swift.Sendable { - /// The AWS account ID for the owner of the application. + /// The Amazon Web Services account ID for the owner of the application. public var accountId: Swift.String? /// If set to true, the managed policies for SSM and CW will be attached to the instance roles if they are missing. public var attachMissingPermission: Swift.Bool? @@ -422,6 +428,8 @@ extension ApplicationInsightsClientTypes { public var remarks: Swift.String? /// The name of the resource group used for the application. public var resourceGroupName: Swift.String? + /// The SNS topic ARN that is associated with SNS notifications for updates or issues. + public var snsNotificationArn: Swift.String? public init( accountId: Swift.String? = nil, @@ -433,7 +441,8 @@ extension ApplicationInsightsClientTypes { opsCenterEnabled: Swift.Bool? = nil, opsItemSNSTopicArn: Swift.String? = nil, remarks: Swift.String? = nil, - resourceGroupName: Swift.String? = nil + resourceGroupName: Swift.String? = nil, + snsNotificationArn: Swift.String? = nil ) { self.accountId = accountId @@ -446,6 +455,7 @@ extension ApplicationInsightsClientTypes { self.opsItemSNSTopicArn = opsItemSNSTopicArn self.remarks = remarks self.resourceGroupName = resourceGroupName + self.snsNotificationArn = snsNotificationArn } } } @@ -580,7 +590,7 @@ extension ApplicationInsightsClientTypes { /// The event information. public struct ConfigurationEvent: Swift.Sendable { - /// The AWS account ID for the owner of the application to which the configuration event belongs. + /// The Amazon Web Services account ID for the owner of the application to which the configuration event belongs. public var accountId: Swift.String? /// The details of the event in plain text. public var eventDetail: Swift.String? @@ -678,7 +688,7 @@ extension ApplicationInsightsClientTypes { /// /// * For each associated resource, each tag key must be unique and it can have only one value. /// - /// * The aws: prefix is reserved for use by AWS; you can’t use it in any tag keys or values that you define. In addition, you can't edit or remove tag keys or values that use this prefix. + /// * The aws: prefix is reserved for use by Amazon Web Services; you can’t use it in any tag keys or values that you define. In addition, you can't edit or remove tag keys or values that use this prefix. public struct Tag: Swift.Sendable { /// One part of a key-value pair that defines a tag. The maximum length of a tag key is 128 characters. The minimum length is 1 character. /// This member is required. @@ -715,6 +725,8 @@ public struct CreateApplicationInput: Swift.Sendable { public var opsItemSNSTopicArn: Swift.String? /// The name of the resource group. public var resourceGroupName: Swift.String? + /// The SNS notification topic ARN. + public var snsNotificationArn: Swift.String? /// List of tags to add to the application. tag key (Key) and an associated tag value (Value). The maximum length of a tag key is 128 characters. The maximum length of a tag value is 256 characters. public var tags: [ApplicationInsightsClientTypes.Tag]? @@ -727,6 +739,7 @@ public struct CreateApplicationInput: Swift.Sendable { opsCenterEnabled: Swift.Bool? = nil, opsItemSNSTopicArn: Swift.String? = nil, resourceGroupName: Swift.String? = nil, + snsNotificationArn: Swift.String? = nil, tags: [ApplicationInsightsClientTypes.Tag]? = nil ) { @@ -738,6 +751,7 @@ public struct CreateApplicationInput: Swift.Sendable { self.opsCenterEnabled = opsCenterEnabled self.opsItemSNSTopicArn = opsItemSNSTopicArn self.resourceGroupName = resourceGroupName + self.snsNotificationArn = snsNotificationArn self.tags = tags } } @@ -792,7 +806,7 @@ public struct CreateLogPatternInput: Swift.Sendable { /// The name of the log pattern set. /// This member is required. public var patternSetName: Swift.String? - /// Rank of the log pattern. Must be a value between 1 and 1,000,000. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank 1 will be the first to get matched to a log line. A pattern of rank 1,000,000 will be last to get matched. When you configure custom log patterns from the console, a Low severity pattern translates to a 750,000 rank. A Medium severity pattern translates to a 500,000 rank. And a High severity pattern translates to a 250,000 rank. Rank values less than 1 or greater than 1,000,000 are reserved for AWS-provided patterns. + /// Rank of the log pattern. Must be a value between 1 and 1,000,000. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank 1 will be the first to get matched to a log line. A pattern of rank 1,000,000 will be last to get matched. When you configure custom log patterns from the console, a Low severity pattern translates to a 750,000 rank. A Medium severity pattern translates to a 500,000 rank. And a High severity pattern translates to a 250,000 rank. Rank values less than 1 or greater than 1,000,000 are reserved for Amazon Web Services provided patterns. /// This member is required. public var rank: Swift.Int? /// The name of the resource group. @@ -825,7 +839,7 @@ extension ApplicationInsightsClientTypes { public var patternName: Swift.String? /// The name of the log pattern. A log pattern name can contain as many as 30 characters, and it cannot be empty. The characters can be Unicode letters, digits, or one of the following symbols: period, dash, underscore. public var patternSetName: Swift.String? - /// Rank of the log pattern. Must be a value between 1 and 1,000,000. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank 1 will be the first to get matched to a log line. A pattern of rank 1,000,000 will be last to get matched. When you configure custom log patterns from the console, a Low severity pattern translates to a 750,000 rank. A Medium severity pattern translates to a 500,000 rank. And a High severity pattern translates to a 250,000 rank. Rank values less than 1 or greater than 1,000,000 are reserved for AWS-provided patterns. + /// Rank of the log pattern. Must be a value between 1 and 1,000,000. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank 1 will be the first to get matched to a log line. A pattern of rank 1,000,000 will be last to get matched. When you configure custom log patterns from the console, a Low severity pattern translates to a 750,000 rank. A Medium severity pattern translates to a 500,000 rank. And a High severity pattern translates to a 250,000 rank. Rank values less than 1 or greater than 1,000,000 are reserved for Amazon Web Services provided patterns. public var rank: Swift.Int public init( @@ -929,7 +943,7 @@ public struct DeleteLogPatternOutput: Swift.Sendable { } public struct DescribeApplicationInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The name of the resource group. /// This member is required. @@ -958,7 +972,7 @@ public struct DescribeApplicationOutput: Swift.Sendable { } public struct DescribeComponentInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The name of the component. /// This member is required. @@ -996,7 +1010,7 @@ public struct DescribeComponentOutput: Swift.Sendable { } public struct DescribeComponentConfigurationInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The name of the component. /// This member is required. @@ -1081,7 +1095,7 @@ public struct DescribeComponentConfigurationRecommendationInput: Swift.Sendable /// The tier of the application component. /// This member is required. public var tier: ApplicationInsightsClientTypes.Tier? - /// The name of the workload. + /// The name of the workload. The name of the workload is required when the tier of the application component is SAP_ASE_SINGLE_NODE or SAP_ASE_HIGH_AVAILABILITY. public var workloadName: Swift.String? public init( @@ -1113,7 +1127,7 @@ public struct DescribeComponentConfigurationRecommendationOutput: Swift.Sendable } public struct DescribeLogPatternInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The name of the log pattern. /// This member is required. @@ -1140,7 +1154,7 @@ public struct DescribeLogPatternInput: Swift.Sendable { } public struct DescribeLogPatternOutput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The successfully created log pattern. public var logPattern: ApplicationInsightsClientTypes.LogPattern? @@ -1160,7 +1174,7 @@ public struct DescribeLogPatternOutput: Swift.Sendable { } public struct DescribeObservationInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The ID of the observation. /// This member is required. @@ -1240,15 +1254,15 @@ extension ApplicationInsightsClientTypes { public var ec2State: Swift.String? /// The time when the observation ended, in epoch seconds. public var endTime: Foundation.Date? - /// The Amazon Resource Name (ARN) of the AWS Health Event-based observation. + /// The Amazon Resource Name (ARN) of the Health Event-based observation. public var healthEventArn: Swift.String? - /// The description of the AWS Health event provided by the service, such as Amazon EC2. + /// The description of the Health event provided by the service, such as Amazon EC2. public var healthEventDescription: Swift.String? - /// The category of the AWS Health event, such as issue. + /// The category of the Health event, such as issue. public var healthEventTypeCategory: Swift.String? - /// The type of the AWS Health event, for example, AWS_EC2_POWER_CONNECTIVITY_ISSUE. + /// The type of the Health event, for example, AWS_EC2_POWER_CONNECTIVITY_ISSUE. public var healthEventTypeCode: Swift.String? - /// The service to which the AWS Health Event belongs, such as EC2. + /// The service to which the Health Event belongs, such as EC2. public var healthService: Swift.String? /// The ID of the observation type. public var id: Swift.String? @@ -1413,7 +1427,7 @@ public struct DescribeObservationOutput: Swift.Sendable { } public struct DescribeProblemInput: Swift.Sendable { - /// The AWS account ID for the owner of the resource group affected by the problem. + /// The Amazon Web Services account ID for the owner of the resource group affected by the problem. public var accountId: Swift.String? /// The ID of the problem. /// This member is required. @@ -1625,7 +1639,7 @@ extension ApplicationInsightsClientTypes { /// Describes a problem that is detected by correlating observations. public struct Problem: Swift.Sendable { - /// The AWS account ID for the owner of the resource group affected by the problem. + /// The Amazon Web Services account ID for the owner of the resource group affected by the problem. public var accountId: Swift.String? /// The resource affected by the problem. public var affectedResource: Swift.String? @@ -1647,6 +1661,8 @@ extension ApplicationInsightsClientTypes { public var resourceGroupName: Swift.String? /// A measure of the level of impact of the problem. public var severityLevel: ApplicationInsightsClientTypes.SeverityLevel? + /// The short name of the problem associated with the SNS notification. + public var shortName: Swift.String? /// The time when the problem started, in epoch seconds. public var startTime: Foundation.Date? /// The status of the problem. @@ -1668,6 +1684,7 @@ extension ApplicationInsightsClientTypes { resolutionMethod: ApplicationInsightsClientTypes.ResolutionMethod? = nil, resourceGroupName: Swift.String? = nil, severityLevel: ApplicationInsightsClientTypes.SeverityLevel? = nil, + shortName: Swift.String? = nil, startTime: Foundation.Date? = nil, status: ApplicationInsightsClientTypes.Status? = nil, title: Swift.String? = nil, @@ -1685,6 +1702,7 @@ extension ApplicationInsightsClientTypes { self.resolutionMethod = resolutionMethod self.resourceGroupName = resourceGroupName self.severityLevel = severityLevel + self.shortName = shortName self.startTime = startTime self.status = status self.title = title @@ -1696,17 +1714,21 @@ extension ApplicationInsightsClientTypes { public struct DescribeProblemOutput: Swift.Sendable { /// Information about the problem. public var problem: ApplicationInsightsClientTypes.Problem? + /// The SNS notification topic ARN of the problem. + public var snsNotificationArn: Swift.String? public init( - problem: ApplicationInsightsClientTypes.Problem? = nil + problem: ApplicationInsightsClientTypes.Problem? = nil, + snsNotificationArn: Swift.String? = nil ) { self.problem = problem + self.snsNotificationArn = snsNotificationArn } } public struct DescribeProblemObservationsInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The ID of the problem. /// This member is required. @@ -1751,7 +1773,7 @@ public struct DescribeProblemObservationsOutput: Swift.Sendable { } public struct DescribeWorkloadInput: Swift.Sendable { - /// The AWS account ID for the workload owner. + /// The Amazon Web Services account ID for the workload owner. public var accountId: Swift.String? /// The name of the component. /// This member is required. @@ -1798,7 +1820,7 @@ public struct DescribeWorkloadOutput: Swift.Sendable { } public struct ListApplicationsInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. public var maxResults: Swift.Int? @@ -1834,7 +1856,7 @@ public struct ListApplicationsOutput: Swift.Sendable { } public struct ListComponentsInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. public var maxResults: Swift.Int? @@ -1875,7 +1897,7 @@ public struct ListComponentsOutput: Swift.Sendable { } public struct ListConfigurationHistoryInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The end time of the event. public var endTime: Foundation.Date? @@ -1927,7 +1949,7 @@ public struct ListConfigurationHistoryOutput: Swift.Sendable { } public struct ListLogPatternsInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. public var maxResults: Swift.Int? @@ -1956,7 +1978,7 @@ public struct ListLogPatternsInput: Swift.Sendable { } public struct ListLogPatternsOutput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The list of log patterns. public var logPatterns: [ApplicationInsightsClientTypes.LogPattern]? @@ -1980,7 +2002,7 @@ public struct ListLogPatternsOutput: Swift.Sendable { } public struct ListLogPatternSetsInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned NextToken value. public var maxResults: Swift.Int? @@ -2005,7 +2027,7 @@ public struct ListLogPatternSetsInput: Swift.Sendable { } public struct ListLogPatternSetsOutput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The list of log pattern sets. public var logPatternSets: [Swift.String]? @@ -2029,7 +2051,7 @@ public struct ListLogPatternSetsOutput: Swift.Sendable { } public struct ListProblemsInput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The name of the component. public var componentName: Swift.String? @@ -2069,7 +2091,7 @@ public struct ListProblemsInput: Swift.Sendable { } public struct ListProblemsOutput: Swift.Sendable { - /// The AWS account ID for the resource group owner. + /// The Amazon Web Services account ID for the resource group owner. public var accountId: Swift.String? /// The token used to retrieve the next page of results. This value is null when there are no more results to return. public var nextToken: Swift.String? @@ -2118,7 +2140,7 @@ public struct ListTagsForResourceOutput: Swift.Sendable { } public struct ListWorkloadsInput: Swift.Sendable { - /// The AWS account ID of the owner of the workload. + /// The Amazon Web Services account ID of the owner of the workload. public var accountId: Swift.String? /// The name of the component. /// This member is required. @@ -2153,6 +2175,8 @@ extension ApplicationInsightsClientTypes { public struct Workload: Swift.Sendable { /// The name of the component. public var componentName: Swift.String? + /// Indicates whether all of the component configurations required to monitor a workload were provided. + public var missingWorkloadConfig: Swift.Bool? /// The tier of the workload. public var tier: ApplicationInsightsClientTypes.Tier? /// The ID of the workload. @@ -2164,6 +2188,7 @@ extension ApplicationInsightsClientTypes { public init( componentName: Swift.String? = nil, + missingWorkloadConfig: Swift.Bool? = nil, tier: ApplicationInsightsClientTypes.Tier? = nil, workloadId: Swift.String? = nil, workloadName: Swift.String? = nil, @@ -2171,6 +2196,7 @@ extension ApplicationInsightsClientTypes { ) { self.componentName = componentName + self.missingWorkloadConfig = missingWorkloadConfig self.tier = tier self.workloadId = workloadId self.workloadName = workloadName @@ -2313,6 +2339,8 @@ public struct UpdateApplicationInput: Swift.Sendable { /// The name of the resource group. /// This member is required. public var resourceGroupName: Swift.String? + /// The SNS topic ARN. Allows you to receive SNS notifications for updates and issues with an application. + public var snsNotificationArn: Swift.String? public init( attachMissingPermission: Swift.Bool? = nil, @@ -2321,7 +2349,8 @@ public struct UpdateApplicationInput: Swift.Sendable { opsCenterEnabled: Swift.Bool? = nil, opsItemSNSTopicArn: Swift.String? = nil, removeSNSTopic: Swift.Bool? = nil, - resourceGroupName: Swift.String? = nil + resourceGroupName: Swift.String? = nil, + snsNotificationArn: Swift.String? = nil ) { self.attachMissingPermission = attachMissingPermission @@ -2331,6 +2360,7 @@ public struct UpdateApplicationInput: Swift.Sendable { self.opsItemSNSTopicArn = opsItemSNSTopicArn self.removeSNSTopic = removeSNSTopic self.resourceGroupName = resourceGroupName + self.snsNotificationArn = snsNotificationArn } } @@ -2425,7 +2455,7 @@ public struct UpdateLogPatternInput: Swift.Sendable { /// The name of the log pattern set. /// This member is required. public var patternSetName: Swift.String? - /// Rank of the log pattern. Must be a value between 1 and 1,000,000. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank 1 will be the first to get matched to a log line. A pattern of rank 1,000,000 will be last to get matched. When you configure custom log patterns from the console, a Low severity pattern translates to a 750,000 rank. A Medium severity pattern translates to a 500,000 rank. And a High severity pattern translates to a 250,000 rank. Rank values less than 1 or greater than 1,000,000 are reserved for AWS-provided patterns. + /// Rank of the log pattern. Must be a value between 1 and 1,000,000. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank 1 will be the first to get matched to a log line. A pattern of rank 1,000,000 will be last to get matched. When you configure custom log patterns from the console, a Low severity pattern translates to a 750,000 rank. A Medium severity pattern translates to a 500,000 rank. And a High severity pattern translates to a 250,000 rank. Rank values less than 1 or greater than 1,000,000 are reserved for Amazon Web Services provided patterns. public var rank: Swift.Int? /// The name of the resource group. /// This member is required. @@ -2811,6 +2841,7 @@ extension CreateApplicationInput { try writer["OpsCenterEnabled"].write(value.opsCenterEnabled) try writer["OpsItemSNSTopicArn"].write(value.opsItemSNSTopicArn) try writer["ResourceGroupName"].write(value.resourceGroupName) + try writer["SNSNotificationArn"].write(value.snsNotificationArn) try writer["Tags"].writeList(value.tags, memberWritingClosure: ApplicationInsightsClientTypes.Tag.write(value:to:), memberNodeInfo: "member", isFlattened: false) } } @@ -3086,6 +3117,7 @@ extension UpdateApplicationInput { try writer["OpsItemSNSTopicArn"].write(value.opsItemSNSTopicArn) try writer["RemoveSNSTopic"].write(value.removeSNSTopic) try writer["ResourceGroupName"].write(value.resourceGroupName) + try writer["SNSNotificationArn"].write(value.snsNotificationArn) } } @@ -3297,6 +3329,7 @@ extension DescribeProblemOutput { let reader = responseReader var value = DescribeProblemOutput() value.problem = try reader["Problem"].readIfPresent(with: ApplicationInsightsClientTypes.Problem.read(from:)) + value.snsNotificationArn = try reader["SNSNotificationArn"].readIfPresent() return value } } @@ -4185,6 +4218,7 @@ extension ApplicationInsightsClientTypes.ApplicationInfo { value.resourceGroupName = try reader["ResourceGroupName"].readIfPresent() value.lifeCycle = try reader["LifeCycle"].readIfPresent() value.opsItemSNSTopicArn = try reader["OpsItemSNSTopicArn"].readIfPresent() + value.snsNotificationArn = try reader["SNSNotificationArn"].readIfPresent() value.opsCenterEnabled = try reader["OpsCenterEnabled"].readIfPresent() value.cweMonitorEnabled = try reader["CWEMonitorEnabled"].readIfPresent() value.remarks = try reader["Remarks"].readIfPresent() @@ -4285,6 +4319,7 @@ extension ApplicationInsightsClientTypes.Problem { var value = ApplicationInsightsClientTypes.Problem() value.id = try reader["Id"].readIfPresent() value.title = try reader["Title"].readIfPresent() + value.shortName = try reader["ShortName"].readIfPresent() value.insights = try reader["Insights"].readIfPresent() value.status = try reader["Status"].readIfPresent() value.affectedResource = try reader["AffectedResource"].readIfPresent() @@ -4356,6 +4391,7 @@ extension ApplicationInsightsClientTypes.Workload { value.workloadName = try reader["WorkloadName"].readIfPresent() value.tier = try reader["Tier"].readIfPresent() value.workloadRemarks = try reader["WorkloadRemarks"].readIfPresent() + value.missingWorkloadConfig = try reader["MissingWorkloadConfig"].readIfPresent() return value } } diff --git a/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/AutoScalingClient.swift b/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/AutoScalingClient.swift index 0b16c5a95a3..5f447166def 100644 --- a/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/AutoScalingClient.swift +++ b/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/AutoScalingClient.swift @@ -265,7 +265,7 @@ extension AutoScalingClient { /// Performs the `AttachLoadBalancerTargetGroups` operation on the `AutoScaling_2011_01_01` service. /// - /// This API operation is superseded by [AttachTrafficSources], which can attach multiple traffic sources types. We recommend using AttachTrafficSources to simplify how you manage traffic sources. However, we continue to support AttachLoadBalancerTargetGroups. You can use both the original AttachLoadBalancerTargetGroups API operation and AttachTrafficSources on the same Auto Scaling group. Attaches one or more target groups to the specified Auto Scaling group. This operation is used with the following load balancer types: + /// This API operation is superseded by [AttachTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AttachTrafficSources.html), which can attach multiple traffic sources types. We recommend using AttachTrafficSources to simplify how you manage traffic sources. However, we continue to support AttachLoadBalancerTargetGroups. You can use both the original AttachLoadBalancerTargetGroups API operation and AttachTrafficSources on the same Auto Scaling group. Attaches one or more target groups to the specified Auto Scaling group. This operation is used with the following load balancer types: /// /// * Application Load Balancer - Operates at the application layer (layer 7) and supports HTTP and HTTPS. /// @@ -274,7 +274,7 @@ extension AutoScalingClient { /// * Gateway Load Balancer - Operates at the network layer (layer 3). /// /// - /// To describe the target groups for an Auto Scaling group, call the [DescribeLoadBalancerTargetGroups] API. To detach the target group from the Auto Scaling group, call the [DetachLoadBalancerTargetGroups] API. This operation is additive and does not detach existing target groups or Classic Load Balancers from the Auto Scaling group. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. + /// To describe the target groups for an Auto Scaling group, call the [DescribeLoadBalancerTargetGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeLoadBalancerTargetGroups.html) API. To detach the target group from the Auto Scaling group, call the [DetachLoadBalancerTargetGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DetachLoadBalancerTargetGroups.html) API. This operation is additive and does not detach existing target groups or Classic Load Balancers from the Auto Scaling group. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. /// /// - Parameter AttachLoadBalancerTargetGroupsInput : [no documentation found] /// @@ -344,7 +344,7 @@ extension AutoScalingClient { /// Performs the `AttachLoadBalancers` operation on the `AutoScaling_2011_01_01` service. /// - /// This API operation is superseded by [AttachTrafficSources], which can attach multiple traffic sources types. We recommend using AttachTrafficSources to simplify how you manage traffic sources. However, we continue to support AttachLoadBalancers. You can use both the original AttachLoadBalancers API operation and AttachTrafficSources on the same Auto Scaling group. Attaches one or more Classic Load Balancers to the specified Auto Scaling group. Amazon EC2 Auto Scaling registers the running instances with these Classic Load Balancers. To describe the load balancers for an Auto Scaling group, call the [DescribeLoadBalancers] API. To detach a load balancer from the Auto Scaling group, call the [DetachLoadBalancers] API. This operation is additive and does not detach existing Classic Load Balancers or target groups from the Auto Scaling group. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. + /// This API operation is superseded by [https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AttachTrafficSources.html](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AttachTrafficSources.html), which can attach multiple traffic sources types. We recommend using AttachTrafficSources to simplify how you manage traffic sources. However, we continue to support AttachLoadBalancers. You can use both the original AttachLoadBalancers API operation and AttachTrafficSources on the same Auto Scaling group. Attaches one or more Classic Load Balancers to the specified Auto Scaling group. Amazon EC2 Auto Scaling registers the running instances with these Classic Load Balancers. To describe the load balancers for an Auto Scaling group, call the [DescribeLoadBalancers](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeLoadBalancers.html) API. To detach a load balancer from the Auto Scaling group, call the [DetachLoadBalancers](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DetachLoadBalancers.html) API. This operation is additive and does not detach existing Classic Load Balancers or target groups from the Auto Scaling group. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. /// /// - Parameter AttachLoadBalancersInput : [no documentation found] /// @@ -427,7 +427,7 @@ extension AutoScalingClient { /// * VPC Lattice /// /// - /// This operation is additive and does not detach existing traffic sources from the Auto Scaling group. After the operation completes, use the [DescribeTrafficSources] API to return details about the state of the attachments between traffic sources and your Auto Scaling group. To detach a traffic source from the Auto Scaling group, call the [DetachTrafficSources] API. + /// This operation is additive and does not detach existing traffic sources from the Auto Scaling group. After the operation completes, use the [DescribeTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeTrafficSources.html) API to return details about the state of the attachments between traffic sources and your Auto Scaling group. To detach a traffic source from the Auto Scaling group, call the [DetachTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DetachTrafficSources.html) API. /// /// - Parameter AttachTrafficSourcesInput : [no documentation found] /// @@ -637,7 +637,7 @@ extension AutoScalingClient { /// Performs the `CancelInstanceRefresh` operation on the `AutoScaling_2011_01_01` service. /// - /// Cancels an instance refresh or rollback that is in progress. If an instance refresh or rollback is not in progress, an ActiveInstanceRefreshNotFound error occurs. This operation is part of the [instance refresh feature](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh.html) in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group after you make configuration changes. When you cancel an instance refresh, this does not roll back any changes that it made. Use the [RollbackInstanceRefresh] API to roll back instead. + /// Cancels an instance refresh or rollback that is in progress. If an instance refresh or rollback is not in progress, an ActiveInstanceRefreshNotFound error occurs. This operation is part of the [instance refresh feature](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh.html) in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group after you make configuration changes. When you cancel an instance refresh, this does not roll back any changes that it made. Use the [RollbackInstanceRefresh](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RollbackInstanceRefresh.html) API to roll back instead. /// /// - Parameter CancelInstanceRefreshInput : [no documentation found] /// @@ -720,7 +720,7 @@ extension AutoScalingClient { /// /// * If you need more time, record the lifecycle action heartbeat to keep the instance in a wait state. /// - /// * If you finish before the timeout period ends, send a callback by using the [CompleteLifecycleAction] API call. + /// * If you finish before the timeout period ends, send a callback by using the [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html) API call. /// /// /// For more information, see [Complete a lifecycle action](https://docs.aws.amazon.com/autoscaling/ec2/userguide/completing-lifecycle-hooks.html) in the Amazon EC2 Auto Scaling User Guide. @@ -792,7 +792,7 @@ extension AutoScalingClient { /// Performs the `CreateAutoScalingGroup` operation on the `AutoScaling_2011_01_01` service. /// - /// We strongly recommend using a launch template when calling this operation to ensure full functionality for Amazon EC2 Auto Scaling and Amazon EC2. Creates an Auto Scaling group with the specified name and attributes. If you exceed your maximum limit of Auto Scaling groups, the call fails. To query this limit, call the [DescribeAccountLimits] API. For information about updating this limit, see [Quotas for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-quotas.html) in the Amazon EC2 Auto Scaling User Guide. If you're new to Amazon EC2 Auto Scaling, see the introductory tutorials in [Get started with Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/get-started-with-ec2-auto-scaling.html) in the Amazon EC2 Auto Scaling User Guide. Every Auto Scaling group has three size properties (DesiredCapacity, MaxSize, and MinSize). Usually, you set these sizes based on a specific number of instances. However, if you configure a mixed instances policy that defines weights for the instance types, you must specify these sizes with the same units that you use for weighting instances. + /// We strongly recommend using a launch template when calling this operation to ensure full functionality for Amazon EC2 Auto Scaling and Amazon EC2. Creates an Auto Scaling group with the specified name and attributes. If you exceed your maximum limit of Auto Scaling groups, the call fails. To query this limit, call the [DescribeAccountLimits](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeAccountLimits.html) API. For information about updating this limit, see [Quotas for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-quotas.html) in the Amazon EC2 Auto Scaling User Guide. If you're new to Amazon EC2 Auto Scaling, see the introductory tutorials in [Get started with Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/get-started-with-ec2-auto-scaling.html) in the Amazon EC2 Auto Scaling User Guide. Every Auto Scaling group has three size properties (DesiredCapacity, MaxSize, and MinSize). Usually, you set these sizes based on a specific number of instances. However, if you configure a mixed instances policy that defines weights for the instance types, you must specify these sizes with the same units that you use for weighting instances. /// /// - Parameter CreateAutoScalingGroupInput : [no documentation found] /// @@ -864,7 +864,7 @@ extension AutoScalingClient { /// Performs the `CreateLaunchConfiguration` operation on the `AutoScaling_2011_01_01` service. /// - /// Creates a launch configuration. If you exceed your maximum limit of launch configurations, the call fails. To query this limit, call the [DescribeAccountLimits] API. For information about updating this limit, see [Quotas for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-quotas.html) in the Amazon EC2 Auto Scaling User Guide. For more information, see [Launch configurations](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-configurations.html) in the Amazon EC2 Auto Scaling User Guide. Amazon EC2 Auto Scaling configures instances launched as part of an Auto Scaling group using either a launch template or a launch configuration. We strongly recommend that you do not use launch configurations. They do not provide full functionality for Amazon EC2 Auto Scaling or Amazon EC2. For information about using launch templates, see [Launch templates](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html) in the Amazon EC2 Auto Scaling User Guide. + /// Creates a launch configuration. If you exceed your maximum limit of launch configurations, the call fails. To query this limit, call the [DescribeAccountLimits](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeAccountLimits.html) API. For information about updating this limit, see [Quotas for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-quotas.html) in the Amazon EC2 Auto Scaling User Guide. For more information, see [Launch configurations](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-configurations.html) in the Amazon EC2 Auto Scaling User Guide. Amazon EC2 Auto Scaling configures instances launched as part of an Auto Scaling group using either a launch template or a launch configuration. We strongly recommend that you do not use launch configurations. They do not provide full functionality for Amazon EC2 Auto Scaling or Amazon EC2. For information about using launch templates, see [Launch templates](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html) in the Amazon EC2 Auto Scaling User Guide. /// /// - Parameter CreateLaunchConfigurationInput : [no documentation found] /// @@ -1007,7 +1007,7 @@ extension AutoScalingClient { /// Performs the `DeleteAutoScalingGroup` operation on the `AutoScaling_2011_01_01` service. /// - /// Deletes the specified Auto Scaling group. If the group has instances or scaling activities in progress, you must specify the option to force the deletion in order for it to succeed. The force delete operation will also terminate the EC2 instances. If the group has a warm pool, the force delete option also deletes the warm pool. To remove instances from the Auto Scaling group before deleting it, call the [DetachInstances] API with the list of instances and the option to decrement the desired capacity. This ensures that Amazon EC2 Auto Scaling does not launch replacement instances. To terminate all instances before deleting the Auto Scaling group, call the [UpdateAutoScalingGroup] API and set the minimum size and desired capacity of the Auto Scaling group to zero. If the group has scaling policies, deleting the group deletes the policies, the underlying alarm actions, and any alarm that no longer has an associated action. For more information, see [Delete your Auto Scaling infrastructure](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-process-shutdown.html) in the Amazon EC2 Auto Scaling User Guide. + /// Deletes the specified Auto Scaling group. If the group has instances or scaling activities in progress, you must specify the option to force the deletion in order for it to succeed. The force delete operation will also terminate the EC2 instances. If the group has a warm pool, the force delete option also deletes the warm pool. To remove instances from the Auto Scaling group before deleting it, call the [DetachInstances](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DetachInstances.html) API with the list of instances and the option to decrement the desired capacity. This ensures that Amazon EC2 Auto Scaling does not launch replacement instances. To terminate all instances before deleting the Auto Scaling group, call the [UpdateAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_UpdateAutoScalingGroup.html) API and set the minimum size and desired capacity of the Auto Scaling group to zero. If the group has scaling policies, deleting the group deletes the policies, the underlying alarm actions, and any alarm that no longer has an associated action. For more information, see [Delete your Auto Scaling infrastructure](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-process-shutdown.html) in the Amazon EC2 Auto Scaling User Guide. /// /// - Parameter DeleteAutoScalingGroupInput : [no documentation found] /// @@ -1711,7 +1711,7 @@ extension AutoScalingClient { /// Performs the `DescribeAutoScalingGroups` operation on the `AutoScaling_2011_01_01` service. /// - /// Gets information about the Auto Scaling groups in the account and Region. If you specify Auto Scaling group names, the output includes information for only the specified Auto Scaling groups. If you specify filters, the output includes information for only those Auto Scaling groups that meet the filter criteria. If you do not specify group names or filters, the output includes information for all Auto Scaling groups. This operation also returns information about instances in Auto Scaling groups. To retrieve information about the instances in a warm pool, you must call the [DescribeWarmPool] API. + /// Gets information about the Auto Scaling groups in the account and Region. If you specify Auto Scaling group names, the output includes information for only the specified Auto Scaling groups. If you specify filters, the output includes information for only those Auto Scaling groups that meet the filter criteria. If you do not specify group names or filters, the output includes information for all Auto Scaling groups. This operation also returns information about instances in Auto Scaling groups. To retrieve information about the instances in a warm pool, you must call the [DescribeWarmPool](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeWarmPool.html) API. /// /// - Parameter DescribeAutoScalingGroupsInput : [no documentation found] /// @@ -2202,7 +2202,7 @@ extension AutoScalingClient { /// Performs the `DescribeLoadBalancerTargetGroups` operation on the `AutoScaling_2011_01_01` service. /// - /// This API operation is superseded by [DescribeTrafficSources], which can describe multiple traffic sources types. We recommend using DetachTrafficSources to simplify how you manage traffic sources. However, we continue to support DescribeLoadBalancerTargetGroups. You can use both the original DescribeLoadBalancerTargetGroups API operation and DescribeTrafficSources on the same Auto Scaling group. Gets information about the Elastic Load Balancing target groups for the specified Auto Scaling group. To determine the attachment status of the target group, use the State element in the response. When you attach a target group to an Auto Scaling group, the initial State value is Adding. The state transitions to Added after all Auto Scaling instances are registered with the target group. If Elastic Load Balancing health checks are enabled for the Auto Scaling group, the state transitions to InService after at least one Auto Scaling instance passes the health check. When the target group is in the InService state, Amazon EC2 Auto Scaling can terminate and replace any instances that are reported as unhealthy. If no registered instances pass the health checks, the target group doesn't enter the InService state. Target groups also have an InService state if you attach them in the [CreateAutoScalingGroup] API call. If your target group state is InService, but it is not working properly, check the scaling activities by calling [DescribeScalingActivities] and take any corrective actions necessary. For help with failed health checks, see [Troubleshooting Amazon EC2 Auto Scaling: Health checks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ts-as-healthchecks.html) in the Amazon EC2 Auto Scaling User Guide. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. You can use this operation to describe target groups that were attached by using [AttachLoadBalancerTargetGroups], but not for target groups that were attached by using [AttachTrafficSources]. + /// This API operation is superseded by [DescribeTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeTrafficSources.html), which can describe multiple traffic sources types. We recommend using DetachTrafficSources to simplify how you manage traffic sources. However, we continue to support DescribeLoadBalancerTargetGroups. You can use both the original DescribeLoadBalancerTargetGroups API operation and DescribeTrafficSources on the same Auto Scaling group. Gets information about the Elastic Load Balancing target groups for the specified Auto Scaling group. To determine the attachment status of the target group, use the State element in the response. When you attach a target group to an Auto Scaling group, the initial State value is Adding. The state transitions to Added after all Auto Scaling instances are registered with the target group. If Elastic Load Balancing health checks are enabled for the Auto Scaling group, the state transitions to InService after at least one Auto Scaling instance passes the health check. When the target group is in the InService state, Amazon EC2 Auto Scaling can terminate and replace any instances that are reported as unhealthy. If no registered instances pass the health checks, the target group doesn't enter the InService state. Target groups also have an InService state if you attach them in the [CreateAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CreateAutoScalingGroup.html) API call. If your target group state is InService, but it is not working properly, check the scaling activities by calling [DescribeScalingActivities](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeScalingActivities.html) and take any corrective actions necessary. For help with failed health checks, see [Troubleshooting Amazon EC2 Auto Scaling: Health checks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ts-as-healthchecks.html) in the Amazon EC2 Auto Scaling User Guide. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. You can use this operation to describe target groups that were attached by using [AttachLoadBalancerTargetGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AttachLoadBalancerTargetGroups.html), but not for target groups that were attached by using [AttachTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AttachTrafficSources.html). /// /// - Parameter DescribeLoadBalancerTargetGroupsInput : [no documentation found] /// @@ -2272,7 +2272,7 @@ extension AutoScalingClient { /// Performs the `DescribeLoadBalancers` operation on the `AutoScaling_2011_01_01` service. /// - /// This API operation is superseded by [DescribeTrafficSources], which can describe multiple traffic sources types. We recommend using DescribeTrafficSources to simplify how you manage traffic sources. However, we continue to support DescribeLoadBalancers. You can use both the original DescribeLoadBalancers API operation and DescribeTrafficSources on the same Auto Scaling group. Gets information about the load balancers for the specified Auto Scaling group. This operation describes only Classic Load Balancers. If you have Application Load Balancers, Network Load Balancers, or Gateway Load Balancers, use the [DescribeLoadBalancerTargetGroups] API instead. To determine the attachment status of the load balancer, use the State element in the response. When you attach a load balancer to an Auto Scaling group, the initial State value is Adding. The state transitions to Added after all Auto Scaling instances are registered with the load balancer. If Elastic Load Balancing health checks are enabled for the Auto Scaling group, the state transitions to InService after at least one Auto Scaling instance passes the health check. When the load balancer is in the InService state, Amazon EC2 Auto Scaling can terminate and replace any instances that are reported as unhealthy. If no registered instances pass the health checks, the load balancer doesn't enter the InService state. Load balancers also have an InService state if you attach them in the [CreateAutoScalingGroup] API call. If your load balancer state is InService, but it is not working properly, check the scaling activities by calling [DescribeScalingActivities] and take any corrective actions necessary. For help with failed health checks, see [Troubleshooting Amazon EC2 Auto Scaling: Health checks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ts-as-healthchecks.html) in the Amazon EC2 Auto Scaling User Guide. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. + /// This API operation is superseded by [DescribeTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeTrafficSources.html), which can describe multiple traffic sources types. We recommend using DescribeTrafficSources to simplify how you manage traffic sources. However, we continue to support DescribeLoadBalancers. You can use both the original DescribeLoadBalancers API operation and DescribeTrafficSources on the same Auto Scaling group. Gets information about the load balancers for the specified Auto Scaling group. This operation describes only Classic Load Balancers. If you have Application Load Balancers, Network Load Balancers, or Gateway Load Balancers, use the [DescribeLoadBalancerTargetGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeLoadBalancerTargetGroups.html) API instead. To determine the attachment status of the load balancer, use the State element in the response. When you attach a load balancer to an Auto Scaling group, the initial State value is Adding. The state transitions to Added after all Auto Scaling instances are registered with the load balancer. If Elastic Load Balancing health checks are enabled for the Auto Scaling group, the state transitions to InService after at least one Auto Scaling instance passes the health check. When the load balancer is in the InService state, Amazon EC2 Auto Scaling can terminate and replace any instances that are reported as unhealthy. If no registered instances pass the health checks, the load balancer doesn't enter the InService state. Load balancers also have an InService state if you attach them in the [CreateAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CreateAutoScalingGroup.html) API call. If your load balancer state is InService, but it is not working properly, check the scaling activities by calling [DescribeScalingActivities](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeScalingActivities.html) and take any corrective actions necessary. For help with failed health checks, see [Troubleshooting Amazon EC2 Auto Scaling: Health checks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ts-as-healthchecks.html) in the Amazon EC2 Auto Scaling User Guide. For more information, see [Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) in the Amazon EC2 Auto Scaling User Guide. /// /// - Parameter DescribeLoadBalancersInput : [no documentation found] /// @@ -2622,7 +2622,7 @@ extension AutoScalingClient { /// Performs the `DescribeScalingProcessTypes` operation on the `AutoScaling_2011_01_01` service. /// - /// Describes the scaling process types for use with the [ResumeProcesses] and [SuspendProcesses] APIs. + /// Describes the scaling process types for use with the [ResumeProcesses](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_ResumeProcesses.html) and [SuspendProcesses](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SuspendProcesses.html) APIs. /// /// - Parameter DescribeScalingProcessTypesInput : [no documentation found] /// @@ -2691,7 +2691,7 @@ extension AutoScalingClient { /// Performs the `DescribeScheduledActions` operation on the `AutoScaling_2011_01_01` service. /// - /// Gets information about the scheduled actions that haven't run or that have not reached their end time. To describe the scaling activities for scheduled actions that have already run, call the [DescribeScalingActivities] API. + /// Gets information about the scheduled actions that haven't run or that have not reached their end time. To describe the scaling activities for scheduled actions that have already run, call the [DescribeScalingActivities](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeScalingActivities.html) API. /// /// - Parameter DescribeScheduledActionsInput : [no documentation found] /// @@ -3110,7 +3110,7 @@ extension AutoScalingClient { /// Performs the `DetachLoadBalancerTargetGroups` operation on the `AutoScaling_2011_01_01` service. /// - /// This API operation is superseded by [DetachTrafficSources], which can detach multiple traffic sources types. We recommend using DetachTrafficSources to simplify how you manage traffic sources. However, we continue to support DetachLoadBalancerTargetGroups. You can use both the original DetachLoadBalancerTargetGroups API operation and DetachTrafficSources on the same Auto Scaling group. Detaches one or more target groups from the specified Auto Scaling group. When you detach a target group, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the target group using the [DescribeLoadBalancerTargetGroups] API call. The instances remain running. You can use this operation to detach target groups that were attached by using [AttachLoadBalancerTargetGroups], but not for target groups that were attached by using [AttachTrafficSources]. + /// This API operation is superseded by [DetachTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeTrafficSources.html), which can detach multiple traffic sources types. We recommend using DetachTrafficSources to simplify how you manage traffic sources. However, we continue to support DetachLoadBalancerTargetGroups. You can use both the original DetachLoadBalancerTargetGroups API operation and DetachTrafficSources on the same Auto Scaling group. Detaches one or more target groups from the specified Auto Scaling group. When you detach a target group, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the target group using the [DescribeLoadBalancerTargetGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeLoadBalancerTargetGroups.html) API call. The instances remain running. You can use this operation to detach target groups that were attached by using [AttachLoadBalancerTargetGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AttachLoadBalancerTargetGroups.html), but not for target groups that were attached by using [AttachTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_AttachTrafficSources.html). /// /// - Parameter DetachLoadBalancerTargetGroupsInput : [no documentation found] /// @@ -3179,7 +3179,7 @@ extension AutoScalingClient { /// Performs the `DetachLoadBalancers` operation on the `AutoScaling_2011_01_01` service. /// - /// This API operation is superseded by [DetachTrafficSources], which can detach multiple traffic sources types. We recommend using DetachTrafficSources to simplify how you manage traffic sources. However, we continue to support DetachLoadBalancers. You can use both the original DetachLoadBalancers API operation and DetachTrafficSources on the same Auto Scaling group. Detaches one or more Classic Load Balancers from the specified Auto Scaling group. This operation detaches only Classic Load Balancers. If you have Application Load Balancers, Network Load Balancers, or Gateway Load Balancers, use the [DetachLoadBalancerTargetGroups] API instead. When you detach a load balancer, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the load balancer using the [DescribeLoadBalancers] API call. The instances remain running. + /// This API operation is superseded by [DetachTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DetachTrafficSources.html), which can detach multiple traffic sources types. We recommend using DetachTrafficSources to simplify how you manage traffic sources. However, we continue to support DetachLoadBalancers. You can use both the original DetachLoadBalancers API operation and DetachTrafficSources on the same Auto Scaling group. Detaches one or more Classic Load Balancers from the specified Auto Scaling group. This operation detaches only Classic Load Balancers. If you have Application Load Balancers, Network Load Balancers, or Gateway Load Balancers, use the [DetachLoadBalancerTargetGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DetachLoadBalancerTargetGroups.html) API instead. When you detach a load balancer, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the load balancer using the [DescribeLoadBalancers](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeLoadBalancers.html) API call. The instances remain running. /// /// - Parameter DetachLoadBalancersInput : [no documentation found] /// @@ -3248,7 +3248,7 @@ extension AutoScalingClient { /// Performs the `DetachTrafficSources` operation on the `AutoScaling_2011_01_01` service. /// - /// Detaches one or more traffic sources from the specified Auto Scaling group. When you detach a traffic source, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the traffic source using the [DescribeTrafficSources] API call. The instances continue to run. + /// Detaches one or more traffic sources from the specified Auto Scaling group. When you detach a traffic source, it enters the Removing state while deregistering the instances in the group. When all instances are deregistered, then you can no longer describe the traffic source using the [DescribeTrafficSources](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeTrafficSources.html) API call. The instances continue to run. /// /// - Parameter DetachTrafficSourcesInput : [no documentation found] /// @@ -3742,12 +3742,12 @@ extension AutoScalingClient { /// /// * Create the lifecycle hook. Specify whether the hook is used when the instances launch or terminate. /// - /// * If you need more time, record the lifecycle action heartbeat to keep the instance in a wait state using the [RecordLifecycleActionHeartbeat] API call. + /// * If you need more time, record the lifecycle action heartbeat to keep the instance in a wait state using the [RecordLifecycleActionHeartbeat](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RecordLifecycleActionHeartbeat.html) API call. /// - /// * If you finish before the timeout period ends, send a callback by using the [CompleteLifecycleAction] API call. + /// * If you finish before the timeout period ends, send a callback by using the [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html) API call. /// /// - /// For more information, see [Amazon EC2 Auto Scaling lifecycle hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) in the Amazon EC2 Auto Scaling User Guide. If you exceed your maximum limit of lifecycle hooks, which by default is 50 per Auto Scaling group, the call fails. You can view the lifecycle hooks for an Auto Scaling group using the [DescribeLifecycleHooks] API call. If you are no longer using a lifecycle hook, you can delete it by calling the [DeleteLifecycleHook] API. + /// For more information, see [Amazon EC2 Auto Scaling lifecycle hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) in the Amazon EC2 Auto Scaling User Guide. If you exceed your maximum limit of lifecycle hooks, which by default is 50 per Auto Scaling group, the call fails. You can view the lifecycle hooks for an Auto Scaling group using the [DescribeLifecycleHooks](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeLifecycleHooks.html) API call. If you are no longer using a lifecycle hook, you can delete it by calling the [DeleteLifecycleHook](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DeleteLifecycleHook.html) API. /// /// - Parameter PutLifecycleHookInput : [no documentation found] /// @@ -3888,7 +3888,7 @@ extension AutoScalingClient { /// Performs the `PutScalingPolicy` operation on the `AutoScaling_2011_01_01` service. /// - /// Creates or updates a scaling policy for an Auto Scaling group. Scaling policies are used to scale an Auto Scaling group based on configurable metrics. If no policies are defined, the dynamic scaling and predictive scaling features are not used. For more information about using dynamic scaling, see [Target tracking scaling policies](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html) and [Step and simple scaling policies](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html) in the Amazon EC2 Auto Scaling User Guide. For more information about using predictive scaling, see [Predictive scaling for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-predictive-scaling.html) in the Amazon EC2 Auto Scaling User Guide. You can view the scaling policies for an Auto Scaling group using the [DescribePolicies] API call. If you are no longer using a scaling policy, you can delete it by calling the [DeletePolicy] API. + /// Creates or updates a scaling policy for an Auto Scaling group. Scaling policies are used to scale an Auto Scaling group based on configurable metrics. If no policies are defined, the dynamic scaling and predictive scaling features are not used. For more information about using dynamic scaling, see [Target tracking scaling policies](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html) and [Step and simple scaling policies](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html) in the Amazon EC2 Auto Scaling User Guide. For more information about using predictive scaling, see [Predictive scaling for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-predictive-scaling.html) in the Amazon EC2 Auto Scaling User Guide. You can view the scaling policies for an Auto Scaling group using the [DescribePolicies](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribePolicies.html) API call. If you are no longer using a scaling policy, you can delete it by calling the [DeletePolicy](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DeletePolicy.html) API. /// /// - Parameter PutScalingPolicyInput : [no documentation found] /// @@ -3959,7 +3959,7 @@ extension AutoScalingClient { /// Performs the `PutScheduledUpdateGroupAction` operation on the `AutoScaling_2011_01_01` service. /// - /// Creates or updates a scheduled scaling action for an Auto Scaling group. For more information, see [Scheduled scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scheduled-scaling.html) in the Amazon EC2 Auto Scaling User Guide. You can view the scheduled actions for an Auto Scaling group using the [DescribeScheduledActions] API call. If you are no longer using a scheduled action, you can delete it by calling the [DeleteScheduledAction] API. If you try to schedule your action in the past, Amazon EC2 Auto Scaling returns an error message. + /// Creates or updates a scheduled scaling action for an Auto Scaling group. For more information, see [Scheduled scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scheduled-scaling.html) in the Amazon EC2 Auto Scaling User Guide. You can view the scheduled actions for an Auto Scaling group using the [DescribeScheduledActions](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeScheduledActions.html) API call. If you are no longer using a scheduled action, you can delete it by calling the [DeleteScheduledAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DeleteScheduledAction.html) API. If you try to schedule your action in the past, Amazon EC2 Auto Scaling returns an error message. /// /// - Parameter PutScheduledUpdateGroupActionInput : [no documentation found] /// @@ -4030,7 +4030,7 @@ extension AutoScalingClient { /// Performs the `PutWarmPool` operation on the `AutoScaling_2011_01_01` service. /// - /// Creates or updates a warm pool for the specified Auto Scaling group. A warm pool is a pool of pre-initialized EC2 instances that sits alongside the Auto Scaling group. Whenever your application needs to scale out, the Auto Scaling group can draw on the warm pool to meet its new desired capacity. This operation must be called from the Region in which the Auto Scaling group was created. You can view the instances in the warm pool using the [DescribeWarmPool] API call. If you are no longer using a warm pool, you can delete it by calling the [DeleteWarmPool] API. For more information, see [Warm pools for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html) in the Amazon EC2 Auto Scaling User Guide. + /// Creates or updates a warm pool for the specified Auto Scaling group. A warm pool is a pool of pre-initialized EC2 instances that sits alongside the Auto Scaling group. Whenever your application needs to scale out, the Auto Scaling group can draw on the warm pool to meet its new desired capacity. This operation must be called from the Region in which the Auto Scaling group was created. You can view the instances in the warm pool using the [DescribeWarmPool](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeWarmPool.html) API call. If you are no longer using a warm pool, you can delete it by calling the [DeleteWarmPool](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DeleteWarmPool.html) API. For more information, see [Warm pools for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html) in the Amazon EC2 Auto Scaling User Guide. /// /// - Parameter PutWarmPoolInput : [no documentation found] /// @@ -4100,7 +4100,7 @@ extension AutoScalingClient { /// Performs the `RecordLifecycleActionHeartbeat` operation on the `AutoScaling_2011_01_01` service. /// - /// Records a heartbeat for the lifecycle action associated with the specified token or instance. This extends the timeout by the length of time defined using the [PutLifecycleHook] API call. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: + /// Records a heartbeat for the lifecycle action associated with the specified token or instance. This extends the timeout by the length of time defined using the [PutLifecycleHook](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PutLifecycleHook.html) API call. This step is a part of the procedure for adding a lifecycle hook to an Auto Scaling group: /// /// * (Optional) Create a launch template or launch configuration with a user data script that runs while an instance is in a wait state due to a lifecycle hook. /// @@ -4112,7 +4112,7 @@ extension AutoScalingClient { /// /// * If you need more time, record the lifecycle action heartbeat to keep the instance in a wait state. /// - /// * If you finish before the timeout period ends, send a callback by using the [CompleteLifecycleAction] API call. + /// * If you finish before the timeout period ends, send a callback by using the [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html) API call. /// /// /// For more information, see [Amazon EC2 Auto Scaling lifecycle hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) in the Amazon EC2 Auto Scaling User Guide. @@ -4263,7 +4263,7 @@ extension AutoScalingClient { /// * The Auto Scaling group uses the launch template's $Latest or $Default version. /// /// - /// When you receive a successful response from this operation, Amazon EC2 Auto Scaling immediately begins replacing instances. You can check the status of this operation through the [DescribeInstanceRefreshes] API operation. + /// When you receive a successful response from this operation, Amazon EC2 Auto Scaling immediately begins replacing instances. You can check the status of this operation through the [DescribeInstanceRefreshes](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeInstanceRefreshes.html) API operation. /// /// - Parameter RollbackInstanceRefreshInput : [no documentation found] /// @@ -4544,7 +4544,7 @@ extension AutoScalingClient { /// Performs the `StartInstanceRefresh` operation on the `AutoScaling_2011_01_01` service. /// - /// Starts an instance refresh. This operation is part of the [instance refresh feature](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh.html) in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group. This feature is helpful, for example, when you have a new AMI or a new user data script. You just need to create a new launch template that specifies the new AMI or user data script. Then start an instance refresh to immediately begin the process of updating instances in the group. If successful, the request's response contains a unique ID that you can use to track the progress of the instance refresh. To query its status, call the [DescribeInstanceRefreshes] API. To describe the instance refreshes that have already run, call the [DescribeInstanceRefreshes] API. To cancel an instance refresh that is in progress, use the [CancelInstanceRefresh] API. An instance refresh might fail for several reasons, such as EC2 launch failures, misconfigured health checks, or not ignoring or allowing the termination of instances that are in Standby state or protected from scale in. You can monitor for failed EC2 launches using the scaling activities. To find the scaling activities, call the [DescribeScalingActivities] API. If you enable auto rollback, your Auto Scaling group will be rolled back automatically when the instance refresh fails. You can enable this feature before starting an instance refresh by specifying the AutoRollback property in the instance refresh preferences. Otherwise, to roll back an instance refresh before it finishes, use the [RollbackInstanceRefresh] API. + /// Starts an instance refresh. This operation is part of the [instance refresh feature](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh.html) in Amazon EC2 Auto Scaling, which helps you update instances in your Auto Scaling group. This feature is helpful, for example, when you have a new AMI or a new user data script. You just need to create a new launch template that specifies the new AMI or user data script. Then start an instance refresh to immediately begin the process of updating instances in the group. If successful, the request's response contains a unique ID that you can use to track the progress of the instance refresh. To query its status, call the [DescribeInstanceRefreshes](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeInstanceRefreshes.html) API. To describe the instance refreshes that have already run, call the [DescribeInstanceRefreshes](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeInstanceRefreshes.html) API. To cancel an instance refresh that is in progress, use the [CancelInstanceRefresh](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CancelInstanceRefresh.html) API. An instance refresh might fail for several reasons, such as EC2 launch failures, misconfigured health checks, or not ignoring or allowing the termination of instances that are in Standby state or protected from scale in. You can monitor for failed EC2 launches using the scaling activities. To find the scaling activities, call the [DescribeScalingActivities](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeScalingActivities.html) API. If you enable auto rollback, your Auto Scaling group will be rolled back automatically when the instance refresh fails. You can enable this feature before starting an instance refresh by specifying the AutoRollback property in the instance refresh preferences. Otherwise, to roll back an instance refresh before it finishes, use the [RollbackInstanceRefresh](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RollbackInstanceRefresh.html) API. /// /// - Parameter StartInstanceRefreshInput : [no documentation found] /// @@ -4615,7 +4615,7 @@ extension AutoScalingClient { /// Performs the `SuspendProcesses` operation on the `AutoScaling_2011_01_01` service. /// - /// Suspends the specified auto scaling processes, or all processes, for the specified Auto Scaling group. If you suspend either the Launch or Terminate process types, it can prevent other process types from functioning properly. For more information, see [Suspend and resume Amazon EC2 Auto Scaling processes](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html) in the Amazon EC2 Auto Scaling User Guide. To resume processes that have been suspended, call the [ResumeProcesses] API. + /// Suspends the specified auto scaling processes, or all processes, for the specified Auto Scaling group. If you suspend either the Launch or Terminate process types, it can prevent other process types from functioning properly. For more information, see [Suspend and resume Amazon EC2 Auto Scaling processes](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html) in the Amazon EC2 Auto Scaling User Guide. To resume processes that have been suspended, call the [ResumeProcesses](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_ResumeProcesses.html) API. /// /// - Parameter SuspendProcessesInput : [no documentation found] /// @@ -4764,7 +4764,7 @@ extension AutoScalingClient { /// * If you specify a new value for MaxSize without specifying a value for DesiredCapacity, and the new MaxSize is smaller than the current size of the group, this sets the group's DesiredCapacity to the new MaxSize value. /// /// - /// To see which properties have been set, call the [DescribeAutoScalingGroups] API. To view the scaling policies for an Auto Scaling group, call the [DescribePolicies] API. If the group has scaling policies, you can update them by calling the [PutScalingPolicy] API. + /// To see which properties have been set, call the [DescribeAutoScalingGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeAutoScalingGroups.html) API. To view the scaling policies for an Auto Scaling group, call the [DescribePolicies](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribePolicies.html) API. If the group has scaling policies, you can update them by calling the [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PutScalingPolicy.html) API. /// /// - Parameter UpdateAutoScalingGroupInput : [no documentation found] /// diff --git a/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift b/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift index 9a3c90810de..47fc12e7216 100644 --- a/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift +++ b/Sources/Services/AWSAutoScaling/Sources/AWSAutoScaling/Models.swift @@ -167,7 +167,7 @@ public struct UpdateAutoScalingGroupOutput: Swift.Sendable { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the AcceleratorCount object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the AcceleratorCount object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct AcceleratorCountRequest: Swift.Sendable { /// The maximum value. public var max: Swift.Int? @@ -266,7 +266,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the AcceleratorTotalMemoryMiB object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the AcceleratorTotalMemoryMiB object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct AcceleratorTotalMemoryMiBRequest: Swift.Sendable { /// The memory maximum in MiB. public var max: Swift.Int? @@ -800,7 +800,7 @@ public struct LimitExceededFault: ClientRuntime.ModeledError, AWSClientRuntime.A extension AutoScalingClientTypes { - /// Describes information used for one or more scheduled scaling action updates in a [BatchPutScheduledUpdateGroupAction] operation. + /// Describes information used for one or more scheduled scaling action updates in a [BatchPutScheduledUpdateGroupAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_BatchPutScheduledUpdateGroupAction.html) operation. public struct ScheduledUpdateGroupActionRequest: Swift.Sendable { /// The desired capacity is the initial capacity of the Auto Scaling group after the scheduled action runs and the capacity it attempts to maintain. public var desiredCapacity: Swift.Int? @@ -1028,13 +1028,13 @@ extension AutoScalingClientTypes { /// Use this structure to specify the distribution of On-Demand Instances and Spot Instances and the allocation strategies used to fulfill On-Demand and Spot capacities for a mixed instances policy. public struct InstancesDistribution: Swift.Sendable { - /// The allocation strategy to apply to your On-Demand Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify. The following lists the valid values: lowest-price Uses price to determine which instance types are the highest priority, launching the lowest priced instance types within an Availability Zone first. This is the default value for Auto Scaling groups that specify [InstanceRequirements]. prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling launches your highest priority instance types first. If all your On-Demand capacity cannot be fulfilled using your highest priority instance type, then Amazon EC2 Auto Scaling launches the remaining capacity using the second priority instance type, and so on. This is the default value for Auto Scaling groups that don't specify [InstanceRequirements] and cannot be used for groups that do. + /// The allocation strategy to apply to your On-Demand Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify. The following lists the valid values: lowest-price Uses price to determine which instance types are the highest priority, launching the lowest priced instance types within an Availability Zone first. This is the default value for Auto Scaling groups that specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html). prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling launches your highest priority instance types first. If all your On-Demand capacity cannot be fulfilled using your highest priority instance type, then Amazon EC2 Auto Scaling launches the remaining capacity using the second priority instance type, and so on. This is the default value for Auto Scaling groups that don't specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) and cannot be used for groups that do. public var onDemandAllocationStrategy: Swift.String? /// The minimum amount of the Auto Scaling group's capacity that must be fulfilled by On-Demand Instances. This base portion is launched first as your group scales. This number has the same unit of measurement as the group's desired capacity. If you change the default unit of measurement (number of instances) by specifying weighted capacity values in your launch template overrides list, or by changing the default desired capacity type setting of the group, you must specify this number using the same unit of measurement. Default: 0 public var onDemandBaseCapacity: Swift.Int? /// Controls the percentages of On-Demand Instances and Spot Instances for your additional capacity beyond OnDemandBaseCapacity. Expressed as a number (for example, 20 specifies 20% On-Demand Instances, 80% Spot Instances). If set to 100, only On-Demand Instances are used. Default: 100 public var onDemandPercentageAboveBaseCapacity: Swift.Int? - /// The allocation strategy to apply to your Spot Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify. The following lists the valid values: capacity-optimized Requests Spot Instances using pools that are optimally chosen based on the available Spot capacity. This strategy has the lowest risk of interruption. To give certain instance types a higher chance of launching first, use capacity-optimized-prioritized. capacity-optimized-prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling honors the instance type priorities on a best effort basis but optimizes for capacity first. Note that if the On-Demand allocation strategy is set to prioritized, the same priority is applied when fulfilling On-Demand capacity. This is not a valid value for Auto Scaling groups that specify [InstanceRequirements]. lowest-price Requests Spot Instances using the lowest priced pools within an Availability Zone, across the number of Spot pools that you specify for the SpotInstancePools property. To ensure that your desired capacity is met, you might receive Spot Instances from several pools. This is the default value, but it might lead to high interruption rates because this strategy only considers instance price and not available capacity. price-capacity-optimized (recommended) The price and capacity optimized allocation strategy looks at both price and capacity to select the Spot Instance pools that are the least likely to be interrupted and have the lowest possible price. + /// The allocation strategy to apply to your Spot Instances when they are launched. Possible instance types are determined by the launch template overrides that you specify. The following lists the valid values: capacity-optimized Requests Spot Instances using pools that are optimally chosen based on the available Spot capacity. This strategy has the lowest risk of interruption. To give certain instance types a higher chance of launching first, use capacity-optimized-prioritized. capacity-optimized-prioritized You set the order of instance types for the launch template overrides from highest to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling honors the instance type priorities on a best effort basis but optimizes for capacity first. Note that if the On-Demand allocation strategy is set to prioritized, the same priority is applied when fulfilling On-Demand capacity. This is not a valid value for Auto Scaling groups that specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html). lowest-price Requests Spot Instances using the lowest priced pools within an Availability Zone, across the number of Spot pools that you specify for the SpotInstancePools property. To ensure that your desired capacity is met, you might receive Spot Instances from several pools. This is the default value, but it might lead to high interruption rates because this strategy only considers instance price and not available capacity. price-capacity-optimized (recommended) The price and capacity optimized allocation strategy looks at both price and capacity to select the Spot Instance pools that are the least likely to be interrupted and have the lowest possible price. public var spotAllocationStrategy: Swift.String? /// The number of Spot Instance pools across which to allocate your Spot Instances. The Spot pools are determined from the different instance types in the overrides. Valid only when the SpotAllocationStrategy is lowest-price. Value must be in the range of 1–20. Default: 2 public var spotInstancePools: Swift.Int? @@ -1094,7 +1094,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the BaselineEbsBandwidthMbps object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the BaselineEbsBandwidthMbps object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct BaselineEbsBandwidthMbpsRequest: Swift.Sendable { /// The maximum value in Mbps. public var max: Swift.Int? @@ -1268,7 +1268,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the MemoryGiBPerVCpu object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the MemoryGiBPerVCpu object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct MemoryGiBPerVCpuRequest: Swift.Sendable { /// The memory maximum in GiB. public var max: Swift.Double? @@ -1288,7 +1288,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the MemoryMiB object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the MemoryMiB object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct MemoryMiBRequest: Swift.Sendable { /// The memory maximum in MiB. public var max: Swift.Int? @@ -1309,7 +1309,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the NetworkBandwidthGbps object when you specify [InstanceRequirements] for an Auto Scaling group. Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the Amazon EC2 User Guide for Linux Instances. + /// Specifies the minimum and maximum for the NetworkBandwidthGbps object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the Amazon EC2 User Guide for Linux Instances. public struct NetworkBandwidthGbpsRequest: Swift.Sendable { /// The maximum amount of network bandwidth, in gigabits per second (Gbps). public var max: Swift.Double? @@ -1329,7 +1329,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the NetworkInterfaceCount object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the NetworkInterfaceCount object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct NetworkInterfaceCountRequest: Swift.Sendable { /// The maximum number of network interfaces. public var max: Swift.Int? @@ -1349,7 +1349,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the TotalLocalStorageGB object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the TotalLocalStorageGB object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct TotalLocalStorageGBRequest: Swift.Sendable { /// The storage maximum in GB. public var max: Swift.Double? @@ -1369,7 +1369,7 @@ extension AutoScalingClientTypes { extension AutoScalingClientTypes { - /// Specifies the minimum and maximum for the VCpuCount object when you specify [InstanceRequirements] for an Auto Scaling group. + /// Specifies the minimum and maximum for the VCpuCount object when you specify [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html) for an Auto Scaling group. public struct VCpuCountRequest: Swift.Sendable { /// The maximum number of vCPUs. public var max: Swift.Int? @@ -2335,7 +2335,7 @@ extension AutoScalingClientTypes { /// Describes a filter that is used to return a more specific list of results from a describe operation. If you specify multiple filters, the filters are automatically logically joined with an AND, and the request returns only the results that match all of the specified filters. For more information, see [Tag Auto Scaling groups and instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-tagging.html) in the Amazon EC2 Auto Scaling User Guide. public struct Filter: Swift.Sendable { - /// The name of the filter. The valid values for Name depend on which API operation you're using with the filter ([DescribeAutoScalingGroups] or [DescribeTags]). DescribeAutoScalingGroups Valid values for Name include the following: + /// The name of the filter. The valid values for Name depend on which API operation you're using with the filter ([DescribeAutoScalingGroups](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeAutoScalingGroups.html) or [DescribeTags](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeTags.html)). DescribeAutoScalingGroups Valid values for Name include the following: /// /// * tag-key - Accepts tag keys. The results only include information about the Auto Scaling groups associated with these tag keys. /// @@ -2822,7 +2822,7 @@ extension AutoScalingClientTypes { public var predictedCapacity: Swift.Int? /// The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other Amazon Web Services on your behalf. public var serviceLinkedRoleARN: Swift.String? - /// The current state of the group when the [DeleteAutoScalingGroup] operation is in progress. + /// The current state of the group when the [DeleteAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DeleteAutoScalingGroup.html) operation is in progress. public var status: Swift.String? /// The suspended processes associated with the group. public var suspendedProcesses: [AutoScalingClientTypes.SuspendedProcess]? @@ -5734,7 +5734,7 @@ public struct PutNotificationConfigurationInput: Swift.Sendable { /// The name of the Auto Scaling group. /// This member is required. public var autoScalingGroupName: Swift.String? - /// The type of event that causes the notification to be sent. To query the notification types supported by Amazon EC2 Auto Scaling, call the [DescribeAutoScalingNotificationTypes] API. + /// The type of event that causes the notification to be sent. To query the notification types supported by Amazon EC2 Auto Scaling, call the [DescribeAutoScalingNotificationTypes](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_DescribeAutoScalingNotificationTypes.html) API. /// This member is required. public var notificationTypes: [Swift.String]? /// The Amazon Resource Name (ARN) of the Amazon SNS topic. @@ -6331,7 +6331,7 @@ public struct UpdateAutoScalingGroupInput: Swift.Sendable { public var mixedInstancesPolicy: AutoScalingClientTypes.MixedInstancesPolicy? /// Indicates whether newly launched instances are protected from termination by Amazon EC2 Auto Scaling when scaling in. For more information about preventing instances from terminating on scale in, see [Use instance scale-in protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) in the Amazon EC2 Auto Scaling User Guide. public var newInstancesProtectedFromScaleIn: Swift.Bool? - /// The name of an existing placement group into which to launch your instances. For more information, see [Placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the Amazon EC2 User Guide for Linux Instances. A cluster placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a cluster placement group. + /// The name of an existing placement group into which to launch your instances. To remove the placement group setting, pass an empty string for placement-group. For more information about placement groups, see [Placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the Amazon EC2 User Guide for Linux Instances. A cluster placement group is a logical grouping of instances within a single Availability Zone. You cannot specify multiple Availability Zones and a cluster placement group. public var placementGroup: Swift.String? /// The Amazon Resource Name (ARN) of the service-linked role that the Auto Scaling group uses to call other Amazon Web Services on your behalf. For more information, see [Service-linked roles](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html) in the Amazon EC2 Auto Scaling User Guide. public var serviceLinkedRoleARN: Swift.String? diff --git a/Sources/Services/AWSBedrockAgentRuntime/Sources/AWSBedrockAgentRuntime/Models.swift b/Sources/Services/AWSBedrockAgentRuntime/Sources/AWSBedrockAgentRuntime/Models.swift index 826e9f192ea..24fc7022684 100644 --- a/Sources/Services/AWSBedrockAgentRuntime/Sources/AWSBedrockAgentRuntime/Models.swift +++ b/Sources/Services/AWSBedrockAgentRuntime/Sources/AWSBedrockAgentRuntime/Models.swift @@ -2771,7 +2771,7 @@ extension BedrockAgentRuntimeClientTypes { /// The foundation model output from the orchestration step. public struct OrchestrationModelInvocationOutput: Swift.Sendable { - /// Contains information about the foundation model output. + /// Contains information about the foundation model output from the orchestration step. public var metadata: BedrockAgentRuntimeClientTypes.Metadata? /// Contains details of the raw response from the foundation model output. public var rawResponse: BedrockAgentRuntimeClientTypes.RawResponse? @@ -3090,11 +3090,11 @@ extension BedrockAgentRuntimeClientTypes { /// The foundation model output from the post-processing step. public struct PostProcessingModelInvocationOutput: Swift.Sendable { - /// Provides details of the foundation model. + /// Contains information about the foundation model output from the post-processing step. public var metadata: BedrockAgentRuntimeClientTypes.Metadata? /// Details about the response from the Lambda parsing of the output of the post-processing step. public var parsedResponse: BedrockAgentRuntimeClientTypes.PostProcessingParsedResponse? - /// Contains the raw output from the foundation model. + /// Details of the raw response from the foundation model output. public var rawResponse: BedrockAgentRuntimeClientTypes.RawResponse? /// The unique identifier of the trace. public var traceId: Swift.String? @@ -3168,11 +3168,11 @@ extension BedrockAgentRuntimeClientTypes { /// The foundation model output from the pre-processing step. public struct PreProcessingModelInvocationOutput: Swift.Sendable { - /// Provides details of the foundation model. + /// Contains information about the foundation model output from the pre-processing step. public var metadata: BedrockAgentRuntimeClientTypes.Metadata? /// Details about the response from the Lambda parsing of the output of the pre-processing step. public var parsedResponse: BedrockAgentRuntimeClientTypes.PreProcessingParsedResponse? - /// Contains the raw output from the foundation model. + /// Details of the raw response from the foundation model output. public var rawResponse: BedrockAgentRuntimeClientTypes.RawResponse? /// The unique identifier of the trace. public var traceId: Swift.String? @@ -3814,14 +3814,25 @@ extension BedrockAgentRuntimeClientTypes { /// Settings for how the model processes the prompt prior to retrieval and generation. public struct OrchestrationConfiguration: Swift.Sendable { + /// Additional model parameters and corresponding values not included in the textInferenceConfig structure for a knowledge base. This allows users to provide custom model parameters specific to the language model being used. + public var additionalModelRequestFields: [Swift.String: Smithy.Document]? + /// Configuration settings for inference when using RetrieveAndGenerate to generate responses while using a knowledge base as a source. + public var inferenceConfig: BedrockAgentRuntimeClientTypes.InferenceConfig? + /// Contains the template for the prompt that's sent to the model for response generation. + public var promptTemplate: BedrockAgentRuntimeClientTypes.PromptTemplate? /// To split up the prompt and retrieve multiple sources, set the transformation type to QUERY_DECOMPOSITION. - /// This member is required. public var queryTransformationConfiguration: BedrockAgentRuntimeClientTypes.QueryTransformationConfiguration? public init( + additionalModelRequestFields: [Swift.String: Smithy.Document]? = nil, + inferenceConfig: BedrockAgentRuntimeClientTypes.InferenceConfig? = nil, + promptTemplate: BedrockAgentRuntimeClientTypes.PromptTemplate? = nil, queryTransformationConfiguration: BedrockAgentRuntimeClientTypes.QueryTransformationConfiguration? = nil ) { + self.additionalModelRequestFields = additionalModelRequestFields + self.inferenceConfig = inferenceConfig + self.promptTemplate = promptTemplate self.queryTransformationConfiguration = queryTransformationConfiguration } } @@ -6278,6 +6289,9 @@ extension BedrockAgentRuntimeClientTypes.OrchestrationConfiguration { static func write(value: BedrockAgentRuntimeClientTypes.OrchestrationConfiguration?, to writer: SmithyJSON.Writer) throws { guard let value else { return } + try writer["additionalModelRequestFields"].writeMap(value.additionalModelRequestFields, valueWritingClosure: SmithyReadWrite.WritingClosures.writeDocument(value:to:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + try writer["inferenceConfig"].write(value.inferenceConfig, with: BedrockAgentRuntimeClientTypes.InferenceConfig.write(value:to:)) + try writer["promptTemplate"].write(value.promptTemplate, with: BedrockAgentRuntimeClientTypes.PromptTemplate.write(value:to:)) try writer["queryTransformationConfiguration"].write(value.queryTransformationConfiguration, with: BedrockAgentRuntimeClientTypes.QueryTransformationConfiguration.write(value:to:)) } } diff --git a/Sources/Services/AWSDatabaseMigrationService/Sources/AWSDatabaseMigrationService/Models.swift b/Sources/Services/AWSDatabaseMigrationService/Sources/AWSDatabaseMigrationService/Models.swift index 8d2d3f1c65a..1c26f0d9ed0 100644 --- a/Sources/Services/AWSDatabaseMigrationService/Sources/AWSDatabaseMigrationService/Models.swift +++ b/Sources/Services/AWSDatabaseMigrationService/Sources/AWSDatabaseMigrationService/Models.swift @@ -421,6 +421,38 @@ extension DatabaseMigrationClientTypes { } } +extension DatabaseMigrationClientTypes { + + /// The object containing the result statistics for a completed assessment run. + public struct ReplicationTaskAssessmentRunResultStatistic: Swift.Sendable { + /// The number of individual assessments that were cancelled during the assessment run. + public var cancelled: Swift.Int + /// The number of individual assessments that encountered a critical error and could not complete properly. + public var error: Swift.Int + /// The number of individual assessments that failed to meet the criteria defined in the assessment run. + public var failed: Swift.Int + /// The number of individual assessments that successfully passed all checks in the assessment run. + public var passed: Swift.Int + /// Indicates that the recent completed AssessmentRun triggered a warning. + public var warning: Swift.Int + + public init( + cancelled: Swift.Int = 0, + error: Swift.Int = 0, + failed: Swift.Int = 0, + passed: Swift.Int = 0, + warning: Swift.Int = 0 + ) + { + self.cancelled = cancelled + self.error = error + self.failed = failed + self.passed = passed + self.warning = warning + } + } +} + extension DatabaseMigrationClientTypes { /// Provides information that describes a premigration assessment run that you have started using the StartReplicationTaskAssessmentRun operation. Some of the information appears based on other operations that can return the ReplicationTaskAssessmentRun object. @@ -429,6 +461,8 @@ extension DatabaseMigrationClientTypes { public var assessmentProgress: DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunProgress? /// Unique name of the assessment run. public var assessmentRunName: Swift.String? + /// Indicates that the following PreflightAssessmentRun is the latest for the ReplicationTask. The status is either true or false. + public var isLatestTaskAssessmentRun: Swift.Bool /// Last message generated by an individual assessment failure. public var lastFailureMessage: Swift.String? /// ARN of the migration task associated with this premigration assessment run. @@ -445,6 +479,8 @@ extension DatabaseMigrationClientTypes { public var resultLocationBucket: Swift.String? /// Folder in an Amazon S3 bucket where DMS stores the results of this assessment run. public var resultLocationFolder: Swift.String? + /// Result statistics for a completed assessment run, showing aggregated statistics of IndividualAssessments for how many assessments were passed, failed, or encountered issues such as errors or warnings. + public var resultStatistic: DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunResultStatistic? /// ARN of the service role used to start the assessment run using the StartReplicationTaskAssessmentRun operation. The role must allow the iam:PassRole action. public var serviceAccessRoleArn: Swift.String? /// Assessment run status. This status can have one of the following values: @@ -473,6 +509,7 @@ extension DatabaseMigrationClientTypes { public init( assessmentProgress: DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunProgress? = nil, assessmentRunName: Swift.String? = nil, + isLatestTaskAssessmentRun: Swift.Bool = false, lastFailureMessage: Swift.String? = nil, replicationTaskArn: Swift.String? = nil, replicationTaskAssessmentRunArn: Swift.String? = nil, @@ -481,12 +518,14 @@ extension DatabaseMigrationClientTypes { resultKmsKeyArn: Swift.String? = nil, resultLocationBucket: Swift.String? = nil, resultLocationFolder: Swift.String? = nil, + resultStatistic: DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunResultStatistic? = nil, serviceAccessRoleArn: Swift.String? = nil, status: Swift.String? = nil ) { self.assessmentProgress = assessmentProgress self.assessmentRunName = assessmentRunName + self.isLatestTaskAssessmentRun = isLatestTaskAssessmentRun self.lastFailureMessage = lastFailureMessage self.replicationTaskArn = replicationTaskArn self.replicationTaskAssessmentRunArn = replicationTaskAssessmentRunArn @@ -495,6 +534,7 @@ extension DatabaseMigrationClientTypes { self.resultKmsKeyArn = resultKmsKeyArn self.resultLocationBucket = resultLocationBucket self.resultLocationFolder = resultLocationFolder + self.resultStatistic = resultStatistic self.serviceAccessRoleArn = serviceAccessRoleArn self.status = status } @@ -817,6 +857,8 @@ extension DatabaseMigrationClientTypes { public struct DataMigration: Swift.Sendable { /// The Amazon Resource Name (ARN) that identifies this replication. public var dataMigrationArn: Swift.String? + /// The CIDR blocks of the endpoints for the data migration. + public var dataMigrationCidrBlocks: [Swift.String]? /// The UTC time when DMS created the data migration. public var dataMigrationCreateTime: Foundation.Date? /// The UTC time when data migration ended. @@ -848,6 +890,7 @@ extension DatabaseMigrationClientTypes { public init( dataMigrationArn: Swift.String? = nil, + dataMigrationCidrBlocks: [Swift.String]? = nil, dataMigrationCreateTime: Foundation.Date? = nil, dataMigrationEndTime: Foundation.Date? = nil, dataMigrationName: Swift.String? = nil, @@ -865,6 +908,7 @@ extension DatabaseMigrationClientTypes { ) { self.dataMigrationArn = dataMigrationArn + self.dataMigrationCidrBlocks = dataMigrationCidrBlocks self.dataMigrationCreateTime = dataMigrationCreateTime self.dataMigrationEndTime = dataMigrationEndTime self.dataMigrationName = dataMigrationName @@ -885,7 +929,7 @@ extension DatabaseMigrationClientTypes { extension DatabaseMigrationClientTypes.DataMigration: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "DataMigration(dataMigrationArn: \(Swift.String(describing: dataMigrationArn)), dataMigrationCreateTime: \(Swift.String(describing: dataMigrationCreateTime)), dataMigrationEndTime: \(Swift.String(describing: dataMigrationEndTime)), dataMigrationName: \(Swift.String(describing: dataMigrationName)), dataMigrationSettings: \(Swift.String(describing: dataMigrationSettings)), dataMigrationStartTime: \(Swift.String(describing: dataMigrationStartTime)), dataMigrationStatistics: \(Swift.String(describing: dataMigrationStatistics)), dataMigrationStatus: \(Swift.String(describing: dataMigrationStatus)), dataMigrationType: \(Swift.String(describing: dataMigrationType)), lastFailureMessage: \(Swift.String(describing: lastFailureMessage)), migrationProjectArn: \(Swift.String(describing: migrationProjectArn)), serviceAccessRoleArn: \(Swift.String(describing: serviceAccessRoleArn)), sourceDataSettings: \(Swift.String(describing: sourceDataSettings)), stopReason: \(Swift.String(describing: stopReason)), publicIpAddresses: \"CONTENT_REDACTED\")"} + "DataMigration(dataMigrationArn: \(Swift.String(describing: dataMigrationArn)), dataMigrationCidrBlocks: \(Swift.String(describing: dataMigrationCidrBlocks)), dataMigrationCreateTime: \(Swift.String(describing: dataMigrationCreateTime)), dataMigrationEndTime: \(Swift.String(describing: dataMigrationEndTime)), dataMigrationName: \(Swift.String(describing: dataMigrationName)), dataMigrationSettings: \(Swift.String(describing: dataMigrationSettings)), dataMigrationStartTime: \(Swift.String(describing: dataMigrationStartTime)), dataMigrationStatistics: \(Swift.String(describing: dataMigrationStatistics)), dataMigrationStatus: \(Swift.String(describing: dataMigrationStatus)), dataMigrationType: \(Swift.String(describing: dataMigrationType)), lastFailureMessage: \(Swift.String(describing: lastFailureMessage)), migrationProjectArn: \(Swift.String(describing: migrationProjectArn)), serviceAccessRoleArn: \(Swift.String(describing: serviceAccessRoleArn)), sourceDataSettings: \(Swift.String(describing: sourceDataSettings)), stopReason: \(Swift.String(describing: stopReason)), publicIpAddresses: \"CONTENT_REDACTED\")"} } public struct CreateDataMigrationOutput: Swift.Sendable { @@ -11141,6 +11185,8 @@ public struct StartReplicationTaskAssessmentRunInput: Swift.Sendable { /// ARN of the service role needed to start the assessment run. The role must allow the iam:PassRole action. /// This member is required. public var serviceAccessRoleArn: Swift.String? + /// One or more tags to be assigned to the premigration assessment run that you want to start. + public var tags: [DatabaseMigrationClientTypes.Tag]? public init( assessmentRunName: Swift.String? = nil, @@ -11151,7 +11197,8 @@ public struct StartReplicationTaskAssessmentRunInput: Swift.Sendable { resultKmsKeyArn: Swift.String? = nil, resultLocationBucket: Swift.String? = nil, resultLocationFolder: Swift.String? = nil, - serviceAccessRoleArn: Swift.String? = nil + serviceAccessRoleArn: Swift.String? = nil, + tags: [DatabaseMigrationClientTypes.Tag]? = nil ) { self.assessmentRunName = assessmentRunName @@ -11163,6 +11210,7 @@ public struct StartReplicationTaskAssessmentRunInput: Swift.Sendable { self.resultLocationBucket = resultLocationBucket self.resultLocationFolder = resultLocationFolder self.serviceAccessRoleArn = serviceAccessRoleArn + self.tags = tags } } @@ -13304,6 +13352,7 @@ extension StartReplicationTaskAssessmentRunInput { try writer["ResultLocationBucket"].write(value.resultLocationBucket) try writer["ResultLocationFolder"].write(value.resultLocationFolder) try writer["ServiceAccessRoleArn"].write(value.serviceAccessRoleArn) + try writer["Tags"].writeList(value.tags, memberWritingClosure: DatabaseMigrationClientTypes.Tag.write(value:to:), memberNodeInfo: "member", isFlattened: false) } } @@ -16925,6 +16974,22 @@ extension DatabaseMigrationClientTypes.ReplicationTaskAssessmentRun { value.resultEncryptionMode = try reader["ResultEncryptionMode"].readIfPresent() value.resultKmsKeyArn = try reader["ResultKmsKeyArn"].readIfPresent() value.assessmentRunName = try reader["AssessmentRunName"].readIfPresent() + value.isLatestTaskAssessmentRun = try reader["IsLatestTaskAssessmentRun"].readIfPresent() ?? false + value.resultStatistic = try reader["ResultStatistic"].readIfPresent(with: DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunResultStatistic.read(from:)) + return value + } +} + +extension DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunResultStatistic { + + static func read(from reader: SmithyJSON.Reader) throws -> DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunResultStatistic { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = DatabaseMigrationClientTypes.ReplicationTaskAssessmentRunResultStatistic() + value.passed = try reader["Passed"].readIfPresent() ?? 0 + value.failed = try reader["Failed"].readIfPresent() ?? 0 + value.error = try reader["Error"].readIfPresent() ?? 0 + value.warning = try reader["Warning"].readIfPresent() ?? 0 + value.cancelled = try reader["Cancelled"].readIfPresent() ?? 0 return value } } @@ -16958,6 +17023,7 @@ extension DatabaseMigrationClientTypes.DataMigration { value.dataMigrationStatistics = try reader["DataMigrationStatistics"].readIfPresent(with: DatabaseMigrationClientTypes.DataMigrationStatistics.read(from:)) value.dataMigrationStatus = try reader["DataMigrationStatus"].readIfPresent() value.publicIpAddresses = try reader["PublicIpAddresses"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) + value.dataMigrationCidrBlocks = try reader["DataMigrationCidrBlocks"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) value.lastFailureMessage = try reader["LastFailureMessage"].readIfPresent() value.stopReason = try reader["StopReason"].readIfPresent() return value diff --git a/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift b/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift index 2e4b2d39cfd..ed92641c336 100644 --- a/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift +++ b/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift @@ -1157,7 +1157,7 @@ extension EC2Client { /// Performs the `AssignPrivateNatGatewayAddress` operation on the `AmazonEC2` service. /// - /// Assigns private IPv4 addresses to a private NAT gateway. For more information, see [Work with NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-working-with) in the Amazon VPC User Guide. + /// Assigns private IPv4 addresses to a private NAT gateway. For more information, see [Work with NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the Amazon VPC User Guide. /// /// - Parameter AssignPrivateNatGatewayAddressInput : [no documentation found] /// @@ -1799,7 +1799,7 @@ extension EC2Client { /// Performs the `AssociateNatGatewayAddress` operation on the `AmazonEC2` service. /// - /// Associates Elastic IP addresses (EIPs) and private IPv4 addresses with a public NAT gateway. For more information, see [Work with NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-working-with) in the Amazon VPC User Guide. By default, you can associate up to 2 Elastic IP addresses per public NAT gateway. You can increase the limit by requesting a quota adjustment. For more information, see [Elastic IP address quotas](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-eips) in the Amazon VPC User Guide. When you associate an EIP or secondary EIPs with a public NAT gateway, the network border group of the EIPs must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. If it's not the same, the EIP will fail to associate. You can see the network border group for the subnet's AZ by viewing the details of the subnet. Similarly, you can view the network border group of an EIP by viewing the details of the EIP address. For more information about network border groups and EIPs, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#allocate-eip) in the Amazon VPC User Guide. + /// Associates Elastic IP addresses (EIPs) and private IPv4 addresses with a public NAT gateway. For more information, see [Work with NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the Amazon VPC User Guide. By default, you can associate up to 2 Elastic IP addresses per public NAT gateway. You can increase the limit by requesting a quota adjustment. For more information, see [Elastic IP address quotas](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-eips) in the Amazon VPC User Guide. When you associate an EIP or secondary EIPs with a public NAT gateway, the network border group of the EIPs must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. If it's not the same, the EIP will fail to associate. You can see the network border group for the subnet's AZ by viewing the details of the subnet. Similarly, you can view the network border group of an EIP by viewing the details of the EIP address. For more information about network border groups and EIPs, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithEIPs.html) in the Amazon VPC User Guide. /// /// - Parameter AssociateNatGatewayAddressInput : [no documentation found] /// @@ -4450,7 +4450,7 @@ extension EC2Client { /// Performs the `CreateDefaultSubnet` operation on the `AmazonEC2` service. /// - /// Creates a default subnet with a size /20 IPv4 CIDR block in the specified Availability Zone in your default VPC. You can have only one default subnet per Availability Zone. For more information, see [Create a default subnet](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html#create-default-subnet) in the Amazon VPC User Guide. + /// Creates a default subnet with a size /20 IPv4 CIDR block in the specified Availability Zone in your default VPC. You can have only one default subnet per Availability Zone. For more information, see [Create a default subnet](https://docs.aws.amazon.com/vpc/latest/userguide/work-with-default-vpc.html#create-default-subnet) in the Amazon VPC User Guide. /// /// - Parameter CreateDefaultSubnetInput : [no documentation found] /// @@ -4782,7 +4782,7 @@ extension EC2Client { /// Performs the `CreateFlowLogs` operation on the `AmazonEC2` service. /// - /// Creates one or more flow logs to capture information about IP traffic for a specific network interface, subnet, or VPC. Flow log data for a monitored network interface is recorded as flow log records, which are log events consisting of fields that describe the traffic flow. For more information, see [Flow log records](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records) in the Amazon VPC User Guide. When publishing to CloudWatch Logs, flow log records are published to a log group, and each network interface has a unique log stream in the log group. When publishing to Amazon S3, flow log records for all of the monitored network interfaces are published to a single log file object that is stored in the specified bucket. For more information, see [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) in the Amazon VPC User Guide. + /// Creates one or more flow logs to capture information about IP traffic for a specific network interface, subnet, or VPC. Flow log data for a monitored network interface is recorded as flow log records, which are log events consisting of fields that describe the traffic flow. For more information, see [Flow log records](https://docs.aws.amazon.com/vpc/latest/userguide/flow-log-records.html) in the Amazon VPC User Guide. When publishing to CloudWatch Logs, flow log records are published to a log group, and each network interface has a unique log stream in the log group. When publishing to Amazon S3, flow log records for all of the monitored network interfaces are published to a single log file object that is stored in the specified bucket. For more information, see [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) in the Amazon VPC User Guide. /// /// - Parameter CreateFlowLogsInput : [no documentation found] /// @@ -6080,7 +6080,7 @@ extension EC2Client { /// Performs the `CreateNatGateway` operation on the `AmazonEC2` service. /// - /// Creates a NAT gateway in the specified subnet. This action creates a network interface in the specified subnet with a private IP address from the IP address range of the subnet. You can create either a public NAT gateway or a private NAT gateway. With a public NAT gateway, internet-bound traffic from a private subnet can be routed to the NAT gateway, so that instances in a private subnet can connect to the internet. With a private NAT gateway, private communication is routed across VPCs and on-premises networks through a transit gateway or virtual private gateway. Common use cases include running large workloads behind a small pool of allowlisted IPv4 addresses, preserving private IPv4 addresses, and communicating between overlapping networks. For more information, see [NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) in the Amazon VPC User Guide. When you create a public NAT gateway and assign it an EIP or secondary EIPs, the network border group of the EIPs must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. If it's not the same, the NAT gateway will fail to launch. You can see the network border group for the subnet's AZ by viewing the details of the subnet. Similarly, you can view the network border group of an EIP by viewing the details of the EIP address. For more information about network border groups and EIPs, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-eips.html#allocate-eip) in the Amazon VPC User Guide. + /// Creates a NAT gateway in the specified subnet. This action creates a network interface in the specified subnet with a private IP address from the IP address range of the subnet. You can create either a public NAT gateway or a private NAT gateway. With a public NAT gateway, internet-bound traffic from a private subnet can be routed to the NAT gateway, so that instances in a private subnet can connect to the internet. With a private NAT gateway, private communication is routed across VPCs and on-premises networks through a transit gateway or virtual private gateway. Common use cases include running large workloads behind a small pool of allowlisted IPv4 addresses, preserving private IPv4 addresses, and communicating between overlapping networks. For more information, see [NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) in the Amazon VPC User Guide. When you create a public NAT gateway and assign it an EIP or secondary EIPs, the network border group of the EIPs must match the network border group of the Availability Zone (AZ) that the public NAT gateway is in. If it's not the same, the NAT gateway will fail to launch. You can see the network border group for the subnet's AZ by viewing the details of the subnet. Similarly, you can view the network border group of an EIP by viewing the details of the EIP address. For more information about network border groups and EIPs, see [Allocate an Elastic IP address](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithEIPs.html) in the Amazon VPC User Guide. /// /// - Parameter CreateNatGatewayInput : [no documentation found] /// @@ -7374,7 +7374,7 @@ extension EC2Client { /// Performs the `CreateSubnetCidrReservation` operation on the `AmazonEC2` service. /// - /// Creates a subnet CIDR reservation. For more information, see [Subnet CIDR reservations](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-cidr-reservation.html) in the Amazon VPC User Guide and [Assign prefixes to network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html) in the Amazon EC2 User Guide. + /// Creates a subnet CIDR reservation. For more information, see [Subnet CIDR reservations](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-cidr-reservation.html) in the Amazon VPC User Guide and [Manage prefixes for your network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/work-with-prefixes.html) in the Amazon EC2 User Guide. /// /// - Parameter CreateSubnetCidrReservationInput : [no documentation found] /// @@ -13613,7 +13613,7 @@ extension EC2Client { /// Performs the `DeleteVpc` operation on the `AmazonEC2` service. /// - /// Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on. When you delete the VPC, it deletes the VPC's default security group, network ACL, and route table. + /// Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on. When you delete the VPC, it deletes the default security group, network ACL, and route table for the VPC. If you created a flow log for the VPC that you are deleting, note that flow logs for deleted VPCs are eventually automatically removed. /// /// - Parameter DeleteVpcInput : [no documentation found] /// @@ -25190,7 +25190,7 @@ extension EC2Client { /// Performs the `DisableImage` operation on the `AmazonEC2` service. /// - /// Sets the AMI state to disabled and removes all launch permissions from the AMI. A disabled AMI can't be used for instance launches. A disabled AMI can't be shared. If an AMI was public or previously shared, it is made private. If an AMI was shared with an Amazon Web Services account, organization, or Organizational Unit, they lose access to the disabled AMI. A disabled AMI does not appear in [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API calls by default. Only the AMI owner can disable an AMI. You can re-enable a disabled AMI using [EnableImage](http://amazonaws.com/AWSEC2/latest/APIReference/API_EnableImage.html). For more information, see [Disable an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/disable-an-ami.html) in the Amazon EC2 User Guide. + /// Sets the AMI state to disabled and removes all launch permissions from the AMI. A disabled AMI can't be used for instance launches. A disabled AMI can't be shared. If an AMI was public or previously shared, it is made private. If an AMI was shared with an Amazon Web Services account, organization, or Organizational Unit, they lose access to the disabled AMI. A disabled AMI does not appear in [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API calls by default. Only the AMI owner can disable an AMI. You can re-enable a disabled AMI using [EnableImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EnableImage.html). For more information, see [Disable an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/disable-an-ami.html) in the Amazon EC2 User Guide. /// /// - Parameter DisableImageInput : [no documentation found] /// @@ -26414,7 +26414,7 @@ extension EC2Client { /// Performs the `DisassociateNatGatewayAddress` operation on the `AmazonEC2` service. /// - /// Disassociates secondary Elastic IP addresses (EIPs) from a public NAT gateway. You cannot disassociate your primary EIP. For more information, see [Edit secondary IP address associations](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-edit-secondary) in the Amazon VPC User Guide. While disassociating is in progress, you cannot associate/disassociate additional EIPs while the connections are being drained. You are, however, allowed to delete the NAT gateway. An EIP is released only at the end of MaxDrainDurationSeconds. It stays associated and supports the existing connections but does not support any new connections (new connections are distributed across the remaining associated EIPs). As the existing connections drain out, the EIPs (and the corresponding private IP addresses mapped to them) are released. + /// Disassociates secondary Elastic IP addresses (EIPs) from a public NAT gateway. You cannot disassociate your primary EIP. For more information, see [Edit secondary IP address associations](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html#nat-gateway-edit-secondary) in the Amazon VPC User Guide. While disassociating is in progress, you cannot associate/disassociate additional EIPs while the connections are being drained. You are, however, allowed to delete the NAT gateway. An EIP is released only at the end of MaxDrainDurationSeconds. It stays associated and supports the existing connections but does not support any new connections (new connections are distributed across the remaining associated EIPs). As the existing connections drain out, the EIPs (and the corresponding private IP addresses mapped to them) are released. /// /// - Parameter DisassociateNatGatewayAddressInput : [no documentation found] /// @@ -29371,7 +29371,7 @@ extension EC2Client { /// Performs the `GetInstanceTypesFromInstanceRequirements` operation on the `AmazonEC2` service. /// - /// Returns a list of instance types with the specified instance attributes. You can use the response to preview the instance types without launching instances. Note that the response does not consider capacity. When you specify multiple parameters, you get instance types that satisfy all of the specified parameters. If you specify multiple values for a parameter, you get instance types that satisfy any of the specified values. For more information, see [Preview instance types with specified attributes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html#spotfleet-get-instance-types-from-instance-requirements), [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide, and [Creating an Auto Scaling group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-instance-type-requirements.html) in the Amazon EC2 Auto Scaling User Guide. + /// Returns a list of instance types with the specified instance attributes. You can use the response to preview the instance types without launching instances. Note that the response does not consider capacity. When you specify multiple parameters, you get instance types that satisfy all of the specified parameters. If you specify multiple values for a parameter, you get instance types that satisfy any of the specified values. For more information, see [Preview instance types with specified attributes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-get-instance-types-from-instance-requirements), [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide, and [Creating mixed instance groups using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-instance-type-requirements.html) in the Amazon EC2 Auto Scaling User Guide. /// /// - Parameter GetInstanceTypesFromInstanceRequirementsInput : [no documentation found] /// @@ -40610,7 +40610,7 @@ extension EC2Client { /// Performs the `UnassignPrivateNatGatewayAddress` operation on the `AmazonEC2` service. /// - /// Unassigns secondary private IPv4 addresses from a private NAT gateway. You cannot unassign your primary private IP. For more information, see [Edit secondary IP address associations](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-edit-secondary) in the Amazon VPC User Guide. While unassigning is in progress, you cannot assign/unassign additional IP addresses while the connections are being drained. You are, however, allowed to delete the NAT gateway. A private IP address will only be released at the end of MaxDrainDurationSeconds. The private IP addresses stay associated and support the existing connections, but do not support any new connections (new connections are distributed across the remaining assigned private IP address). After the existing connections drain out, the private IP addresses are released. + /// Unassigns secondary private IPv4 addresses from a private NAT gateway. You cannot unassign your primary private IP. For more information, see [Edit secondary IP address associations](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html#nat-gateway-edit-secondary) in the Amazon VPC User Guide. While unassigning is in progress, you cannot assign/unassign additional IP addresses while the connections are being drained. You are, however, allowed to delete the NAT gateway. A private IP address will only be released at the end of MaxDrainDurationSeconds. The private IP addresses stay associated and support the existing connections, but do not support any new connections (new connections are distributed across the remaining assigned private IP address). After the existing connections drain out, the private IP addresses are released. /// /// - Parameter UnassignPrivateNatGatewayAddressInput : [no documentation found] /// diff --git a/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift b/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift index 294381de4d6..18b513c3c56 100644 --- a/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift +++ b/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift @@ -4732,7 +4732,7 @@ public struct AssociateCapacityReservationBillingOwnerInput: Swift.Sendable { public var capacityReservationId: Swift.String? /// Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. public var dryRun: Swift.Bool? - /// The ID of the consumer account to which assign billing. + /// The ID of the consumer account to which to assign billing. /// This member is required. public var unusedReservationBillingOwnerId: Swift.String? @@ -13935,7 +13935,7 @@ extension EC2ClientTypes { /// * ExcludedInstanceTypes - The instance types to exclude from the list, even if they match your specified attributes. /// /// - /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) Amazon Web Services CloudFormation resource, you can't specify InstanceRequirements. For more information, see [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. + /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) Amazon Web Services CloudFormation resource, you can't specify InstanceRequirements. For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. public struct InstanceRequirementsRequest: Swift.Sendable { /// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web Services Inferentia chips) on an instance. To exclude accelerator-enabled instance types, set Max to 0. Default: No minimum or maximum limits public var acceleratorCount: EC2ClientTypes.AcceleratorCountRequest? @@ -14941,7 +14941,7 @@ extension EC2ClientTypes { /// * ExcludedInstanceTypes - The instance types to exclude from the list, even if they match your specified attributes. /// /// - /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) or with the [RunInstances API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), you can't specify InstanceRequirements. For more information, see [Create a mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html) in the Amazon EC2 Auto Scaling User Guide, and also [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. + /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) or with the [RunInstances API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), you can't specify InstanceRequirements. For more information, see [Create mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html) in the Amazon EC2 Auto Scaling User Guide, and also [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. public struct InstanceRequirements: Swift.Sendable { /// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web Services Inferentia chips) on an instance. To exclude accelerator-enabled instance types, set Max to 0. Default: No minimum or maximum limits public var acceleratorCount: EC2ClientTypes.AcceleratorCount? @@ -15555,7 +15555,7 @@ public struct CreateFlowLogsInput: Swift.Sendable { public var logDestination: Swift.String? /// The type of destination for the flow log data. Default: cloud-watch-logs public var logDestinationType: EC2ClientTypes.LogDestinationType? - /// The fields to include in the flow log record. List the fields in the order in which they should appear. If you omit this parameter, the flow log is created using the default format. If you specify this parameter, you must include at least one field. For more information about the available fields, see [Flow log records](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records) in the Amazon VPC User Guide or [Transit Gateway Flow Log records](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-flow-logs.html#flow-log-records) in the Amazon Web Services Transit Gateway Guide. Specify the fields using the ${field-id} format, separated by spaces. + /// The fields to include in the flow log record. List the fields in the order in which they should appear. If you omit this parameter, the flow log is created using the default format. If you specify this parameter, you must include at least one field. For more information about the available fields, see [Flow log records](https://docs.aws.amazon.com/vpc/latest/userguide/flow-log-records.html) in the Amazon VPC User Guide or [Transit Gateway Flow Log records](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-flow-logs.html#flow-log-records) in the Amazon Web Services Transit Gateway Guide. Specify the fields using the ${field-id} format, separated by spaces. public var logFormat: Swift.String? /// The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs. This parameter is valid only if the destination type is cloud-watch-logs. public var logGroupName: Swift.String? @@ -15770,7 +15770,7 @@ extension EC2ClientTypes { /// /// For io2 volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). On other instances, you can achieve performance up to 32,000 IOPS. This parameter is required for io1 and io2 volumes. The default for gp3 volumes is 3,000 IOPS. public var iops: Swift.Int? - /// Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed CMK under which the EBS volume is encrypted. This parameter is only supported on BlockDeviceMapping objects called by [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), [RequestSpotFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html), and [RequestSpotInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html). + /// Identifier (key ID, key alias, key ARN, or alias ARN) of the customer managed KMS key to use for EBS encryption. This parameter is only supported on BlockDeviceMapping objects called by [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), [RequestSpotFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html), and [RequestSpotInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html). public var kmsKeyId: Swift.String? /// The ARN of the Outpost on which the snapshot is stored. This parameter is not supported when using [CreateImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateImage.html). public var outpostArn: Swift.String? @@ -18959,7 +18959,7 @@ extension EC2ClientTypes { /// * ExcludedInstanceTypes - The instance types to exclude from the list, even if they match your specified attributes. /// /// - /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) Amazon Web Services CloudFormation resource, you can't specify InstanceRequirements. For more information, see [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. + /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html) Amazon Web Services CloudFormation resource, you can't specify InstanceRequirements. For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. public var instanceRequirements: EC2ClientTypes.InstanceRequirementsRequest? /// The instance type. For more information, see [Amazon EC2 instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the Amazon EC2 User Guide. If you specify InstanceType, you can't specify InstanceRequirements. public var instanceType: EC2ClientTypes.InstanceType? @@ -20852,11 +20852,11 @@ public struct CreateNatGatewayInput: Swift.Sendable { public var dryRun: Swift.Bool? /// The private IPv4 address to assign to the NAT gateway. If you don't provide an address, a private IPv4 address will be automatically assigned. public var privateIpAddress: Swift.String? - /// Secondary EIP allocation IDs. For more information, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the Amazon VPC User Guide. + /// Secondary EIP allocation IDs. For more information, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the Amazon VPC User Guide. public var secondaryAllocationIds: [Swift.String]? - /// [Private NAT gateway only] The number of secondary private IPv4 addresses you want to assign to the NAT gateway. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the Amazon VPC User Guide. + /// [Private NAT gateway only] The number of secondary private IPv4 addresses you want to assign to the NAT gateway. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the Amazon VPC User Guide. public var secondaryPrivateIpAddressCount: Swift.Int? - /// Secondary private IPv4 addresses. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) in the Amazon VPC User Guide. + /// Secondary private IPv4 addresses. For more information about secondary addresses, see [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html) in the Amazon VPC User Guide. public var secondaryPrivateIpAddresses: [Swift.String]? /// The ID of the subnet in which to create the NAT gateway. /// This member is required. @@ -21646,6 +21646,7 @@ extension EC2ClientTypes { public enum NetworkInterfaceCreationType: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { case branch case efa + case efaOnly case trunk case sdkUnknown(Swift.String) @@ -21653,6 +21654,7 @@ extension EC2ClientTypes { return [ .branch, .efa, + .efaOnly, .trunk ] } @@ -21666,6 +21668,7 @@ extension EC2ClientTypes { switch self { case .branch: return "branch" case .efa: return "efa" + case .efaOnly: return "efa-only" case .trunk: return "trunk" case let .sdkUnknown(s): return s } @@ -21929,6 +21932,7 @@ extension EC2ClientTypes { case awsCodestarConnectionsManaged case branch case efa + case efaOnly case gatewayLoadBalancer case gatewayLoadBalancerEndpoint case globalAcceleratorManaged @@ -21950,6 +21954,7 @@ extension EC2ClientTypes { .awsCodestarConnectionsManaged, .branch, .efa, + .efaOnly, .gatewayLoadBalancer, .gatewayLoadBalancerEndpoint, .globalAcceleratorManaged, @@ -21977,6 +21982,7 @@ extension EC2ClientTypes { case .awsCodestarConnectionsManaged: return "aws_codestar_connections_managed" case .branch: return "branch" case .efa: return "efa" + case .efaOnly: return "efa-only" case .gatewayLoadBalancer: return "gateway_load_balancer" case .gatewayLoadBalancerEndpoint: return "gateway_load_balancer_endpoint" case .globalAcceleratorManaged: return "global_accelerator_managed" diff --git a/Sources/Services/AWSEKS/Sources/AWSEKS/EKSClient.swift b/Sources/Services/AWSEKS/Sources/AWSEKS/EKSClient.swift index 21ffd5caac6..d054c58eb95 100644 --- a/Sources/Services/AWSEKS/Sources/AWSEKS/EKSClient.swift +++ b/Sources/Services/AWSEKS/Sources/AWSEKS/EKSClient.swift @@ -3750,7 +3750,7 @@ extension EKSClient { /// Performs the `UpdateClusterConfig` operation on the `AWSWesleyFrontend` service. /// - /// Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with DescribeUpdate"/>. You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS Cluster control plane logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . You can also use this API operation to choose different subnets and security groups for the cluster. You must specify at least two subnets that are in different Availability Zones. You can't change which VPC the subnets are from, the subnets must be in the same VPC as the subnets that the cluster was created with. For more information about the VPC requirements, see [https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) in the Amazon EKS User Guide . Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active. + /// Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with DescribeUpdate"/>. You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS Cluster control plane logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . You can also use this API operation to choose different subnets and security groups for the cluster. You must specify at least two subnets that are in different Availability Zones. You can't change which VPC the subnets are from, the subnets must be in the same VPC as the subnets that the cluster was created with. For more information about the VPC requirements, see [https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) in the Amazon EKS User Guide . You can also use this API operation to enable or disable ARC zonal shift. If zonal shift is enabled, Amazon Web Services configures zonal autoshift for the cluster. Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active. /// /// - Parameter UpdateClusterConfigInput : [no documentation found] /// diff --git a/Sources/Services/AWSEKS/Sources/AWSEKS/Models.swift b/Sources/Services/AWSEKS/Sources/AWSEKS/Models.swift index fecfa43da80..b57c6353e51 100644 --- a/Sources/Services/AWSEKS/Sources/AWSEKS/Models.swift +++ b/Sources/Services/AWSEKS/Sources/AWSEKS/Models.swift @@ -1188,6 +1188,7 @@ extension EKSClientTypes { case taintsToRemove case upgradePolicy case version + case zonalShiftConfig case sdkUnknown(Swift.String) public static var allCases: [UpdateParamType] { @@ -1220,7 +1221,8 @@ extension EKSClientTypes { .taintsToAdd, .taintsToRemove, .upgradePolicy, - .version + .version, + .zonalShiftConfig ] } @@ -1260,6 +1262,7 @@ extension EKSClientTypes { case .taintsToRemove: return "TaintsToRemove" case .upgradePolicy: return "UpgradePolicy" case .version: return "Version" + case .zonalShiftConfig: return "ZonalShiftConfig" case let .sdkUnknown(s): return s } } @@ -1335,6 +1338,7 @@ extension EKSClientTypes { case upgradePolicyUpdate case versionUpdate case vpcConfigUpdate + case zonalShiftConfigUpdate case sdkUnknown(Swift.String) public static var allCases: [UpdateType] { @@ -1349,7 +1353,8 @@ extension EKSClientTypes { .loggingUpdate, .upgradePolicyUpdate, .versionUpdate, - .vpcConfigUpdate + .vpcConfigUpdate, + .zonalShiftConfigUpdate ] } @@ -1371,6 +1376,7 @@ extension EKSClientTypes { case .upgradePolicyUpdate: return "UpgradePolicyUpdate" case .versionUpdate: return "VersionUpdate" case .vpcConfigUpdate: return "VpcConfigUpdate" + case .zonalShiftConfigUpdate: return "ZonalShiftConfigUpdate" case let .sdkUnknown(s): return s } } @@ -2049,6 +2055,22 @@ extension EKSClientTypes { } } +extension EKSClientTypes { + + /// The configuration for zonal shift for the cluster. + public struct ZonalShiftConfigRequest: Swift.Sendable { + /// If zonal shift is enabled, Amazon Web Services configures zonal autoshift for the cluster. + public var enabled: Swift.Bool? + + public init( + enabled: Swift.Bool? = nil + ) + { + self.enabled = enabled + } + } +} + public struct CreateClusterInput: Swift.Sendable { /// The access configuration for the cluster. public var accessConfig: EKSClientTypes.CreateAccessConfigRequest? @@ -2062,7 +2084,7 @@ public struct CreateClusterInput: Swift.Sendable { public var kubernetesNetworkConfig: EKSClientTypes.KubernetesNetworkConfigRequest? /// Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS Cluster control plane logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). public var logging: EKSClientTypes.Logging? - /// The unique name to give to your cluster. + /// The unique name to give to your cluster. The name can contain only alphanumeric characters (case-sensitive), hyphens, and underscores. It must start with an alphanumeric character and can't be longer than 100 characters. The name must be unique within the Amazon Web Services Region and Amazon Web Services account that you're creating the cluster in. /// This member is required. public var name: Swift.String? /// An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. Before creating a local cluster on an Outpost, review [Local clusters for Amazon EKS on Amazon Web Services Outposts](https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-local-cluster-overview.html) in the Amazon EKS User Guide. This object isn't available for creating Amazon EKS clusters on the Amazon Web Services cloud. @@ -2079,6 +2101,8 @@ public struct CreateClusterInput: Swift.Sendable { public var upgradePolicy: EKSClientTypes.UpgradePolicyRequest? /// The desired Kubernetes version for your cluster. If you don't specify a value here, the default version available in Amazon EKS is used. The default version might not be the latest version available. public var version: Swift.String? + /// Enable or disable ARC zonal shift for the cluster. If zonal shift is enabled, Amazon Web Services configures zonal autoshift for the cluster. Zonal shift is a feature of Amazon Application Recovery Controller (ARC). ARC zonal shift is designed to be a temporary measure that allows you to move traffic for a resource away from an impaired AZ until the zonal shift expires or you cancel it. You can extend the zonal shift if necessary. You can start a zonal shift for an EKS cluster, or you can allow Amazon Web Services to do it for you by enabling zonal autoshift. This shift updates the flow of east-to-west network traffic in your cluster to only consider network endpoints for Pods running on worker nodes in healthy AZs. Additionally, any ALB or NLB handling ingress traffic for applications in your EKS cluster will automatically route traffic to targets in the healthy AZs. For more information about zonal shift in EKS, see [Learn about Amazon Application Recovery Controller (ARC) Zonal Shift in Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/zone-shift.html) in the Amazon EKS User Guide . + public var zonalShiftConfig: EKSClientTypes.ZonalShiftConfigRequest? public init( accessConfig: EKSClientTypes.CreateAccessConfigRequest? = nil, @@ -2093,7 +2117,8 @@ public struct CreateClusterInput: Swift.Sendable { roleArn: Swift.String? = nil, tags: [Swift.String: Swift.String]? = nil, upgradePolicy: EKSClientTypes.UpgradePolicyRequest? = nil, - version: Swift.String? = nil + version: Swift.String? = nil, + zonalShiftConfig: EKSClientTypes.ZonalShiftConfigRequest? = nil ) { self.accessConfig = accessConfig @@ -2109,6 +2134,7 @@ public struct CreateClusterInput: Swift.Sendable { self.tags = tags self.upgradePolicy = upgradePolicy self.version = version + self.zonalShiftConfig = zonalShiftConfig } } @@ -2475,6 +2501,22 @@ extension EKSClientTypes { } } +extension EKSClientTypes { + + /// The status of zonal shift configuration for the cluster + public struct ZonalShiftConfigResponse: Swift.Sendable { + /// Whether the zonal shift is enabled. + public var enabled: Swift.Bool? + + public init( + enabled: Swift.Bool? = nil + ) + { + self.enabled = enabled + } + } +} + extension EKSClientTypes { /// An object representing an Amazon EKS cluster. @@ -2523,6 +2565,8 @@ extension EKSClientTypes { public var upgradePolicy: EKSClientTypes.UpgradePolicyResponse? /// The Kubernetes server version for the cluster. public var version: Swift.String? + /// The configuration for zonal shift for the cluster. + public var zonalShiftConfig: EKSClientTypes.ZonalShiftConfigResponse? public init( accessConfig: EKSClientTypes.AccessConfigResponse? = nil, @@ -2546,7 +2590,8 @@ extension EKSClientTypes { status: EKSClientTypes.ClusterStatus? = nil, tags: [Swift.String: Swift.String]? = nil, upgradePolicy: EKSClientTypes.UpgradePolicyResponse? = nil, - version: Swift.String? = nil + version: Swift.String? = nil, + zonalShiftConfig: EKSClientTypes.ZonalShiftConfigResponse? = nil ) { self.accessConfig = accessConfig @@ -2571,6 +2616,7 @@ extension EKSClientTypes { self.tags = tags self.upgradePolicy = upgradePolicy self.version = version + self.zonalShiftConfig = zonalShiftConfig } } } @@ -5838,6 +5884,8 @@ public struct UpdateClusterConfigInput: Swift.Sendable { public var resourcesVpcConfig: EKSClientTypes.VpcConfigRequest? /// You can enable or disable extended support for clusters currently on standard support. You cannot disable extended support once it starts. You must enable extended support before your cluster exits standard support. public var upgradePolicy: EKSClientTypes.UpgradePolicyRequest? + /// Enable or disable ARC zonal shift for the cluster. If zonal shift is enabled, Amazon Web Services configures zonal autoshift for the cluster. Zonal shift is a feature of Amazon Application Recovery Controller (ARC). ARC zonal shift is designed to be a temporary measure that allows you to move traffic for a resource away from an impaired AZ until the zonal shift expires or you cancel it. You can extend the zonal shift if necessary. You can start a zonal shift for an EKS cluster, or you can allow Amazon Web Services to do it for you by enabling zonal autoshift. This shift updates the flow of east-to-west network traffic in your cluster to only consider network endpoints for Pods running on worker nodes in healthy AZs. Additionally, any ALB or NLB handling ingress traffic for applications in your EKS cluster will automatically route traffic to targets in the healthy AZs. For more information about zonal shift in EKS, see [Learn about Amazon Application Recovery Controller (ARC) Zonal Shift in Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/zone-shift.html) in the Amazon EKS User Guide . + public var zonalShiftConfig: EKSClientTypes.ZonalShiftConfigRequest? public init( accessConfig: EKSClientTypes.UpdateAccessConfigRequest? = nil, @@ -5845,7 +5893,8 @@ public struct UpdateClusterConfigInput: Swift.Sendable { logging: EKSClientTypes.Logging? = nil, name: Swift.String? = nil, resourcesVpcConfig: EKSClientTypes.VpcConfigRequest? = nil, - upgradePolicy: EKSClientTypes.UpgradePolicyRequest? = nil + upgradePolicy: EKSClientTypes.UpgradePolicyRequest? = nil, + zonalShiftConfig: EKSClientTypes.ZonalShiftConfigRequest? = nil ) { self.accessConfig = accessConfig @@ -5854,6 +5903,7 @@ public struct UpdateClusterConfigInput: Swift.Sendable { self.name = name self.resourcesVpcConfig = resourcesVpcConfig self.upgradePolicy = upgradePolicy + self.zonalShiftConfig = zonalShiftConfig } } @@ -7101,6 +7151,7 @@ extension CreateClusterInput { try writer["tags"].writeMap(value.tags, valueWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) try writer["upgradePolicy"].write(value.upgradePolicy, with: EKSClientTypes.UpgradePolicyRequest.write(value:to:)) try writer["version"].write(value.version) + try writer["zonalShiftConfig"].write(value.zonalShiftConfig, with: EKSClientTypes.ZonalShiftConfigRequest.write(value:to:)) } } @@ -7245,6 +7296,7 @@ extension UpdateClusterConfigInput { try writer["logging"].write(value.logging, with: EKSClientTypes.Logging.write(value:to:)) try writer["resourcesVpcConfig"].write(value.resourcesVpcConfig, with: EKSClientTypes.VpcConfigRequest.write(value:to:)) try writer["upgradePolicy"].write(value.upgradePolicy, with: EKSClientTypes.UpgradePolicyRequest.write(value:to:)) + try writer["zonalShiftConfig"].write(value.zonalShiftConfig, with: EKSClientTypes.ZonalShiftConfigRequest.write(value:to:)) } } @@ -9327,6 +9379,17 @@ extension EKSClientTypes.Cluster { value.outpostConfig = try reader["outpostConfig"].readIfPresent(with: EKSClientTypes.OutpostConfigResponse.read(from:)) value.accessConfig = try reader["accessConfig"].readIfPresent(with: EKSClientTypes.AccessConfigResponse.read(from:)) value.upgradePolicy = try reader["upgradePolicy"].readIfPresent(with: EKSClientTypes.UpgradePolicyResponse.read(from:)) + value.zonalShiftConfig = try reader["zonalShiftConfig"].readIfPresent(with: EKSClientTypes.ZonalShiftConfigResponse.read(from:)) + return value + } +} + +extension EKSClientTypes.ZonalShiftConfigResponse { + + static func read(from reader: SmithyJSON.Reader) throws -> EKSClientTypes.ZonalShiftConfigResponse { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = EKSClientTypes.ZonalShiftConfigResponse() + value.enabled = try reader["enabled"].readIfPresent() return value } } @@ -10116,6 +10179,14 @@ extension EKSClientTypes.UpgradePolicyRequest { } } +extension EKSClientTypes.ZonalShiftConfigRequest { + + static func write(value: EKSClientTypes.ZonalShiftConfigRequest?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["enabled"].write(value.enabled) + } +} + extension EKSClientTypes.InsightsFilter { static func write(value: EKSClientTypes.InsightsFilter?, to writer: SmithyJSON.Writer) throws { diff --git a/Sources/Services/AWSFMS/Sources/AWSFMS/Models.swift b/Sources/Services/AWSFMS/Sources/AWSFMS/Models.swift index cc55d7ea427..478a389ed74 100644 --- a/Sources/Services/AWSFMS/Sources/AWSFMS/Models.swift +++ b/Sources/Services/AWSFMS/Sources/AWSFMS/Models.swift @@ -1159,6 +1159,7 @@ extension FMSClientTypes { case trafficinspectioncrossesazboundary case unexpectedfirewallroutes case unexpectedtargetgatewayroutes + case webaclconfigurationorscopeofuse case webaclmissingrulegroup case sdkUnknown(Swift.String) @@ -1192,6 +1193,7 @@ extension FMSClientTypes { .trafficinspectioncrossesazboundary, .unexpectedfirewallroutes, .unexpectedtargetgatewayroutes, + .webaclconfigurationorscopeofuse, .webaclmissingrulegroup ] } @@ -1231,6 +1233,7 @@ extension FMSClientTypes { case .trafficinspectioncrossesazboundary: return "TRAFFIC_INSPECTION_CROSSES_AZ_BOUNDARY" case .unexpectedfirewallroutes: return "UNEXPECTED_FIREWALL_ROUTES" case .unexpectedtargetgatewayroutes: return "UNEXPECTED_TARGET_GATEWAY_ROUTES" + case .webaclconfigurationorscopeofuse: return "WEB_ACL_CONFIGURATION_OR_SCOPE_OF_USE" case .webaclmissingrulegroup: return "WEB_ACL_MISSING_RULE_GROUP" case let .sdkUnknown(s): return s } @@ -1719,15 +1722,15 @@ extension FMSClientTypes { /// /// * Example: NETWORK_FIREWALL - Distributed deployment model with custom Availability Zone configuration and route management "{\"type\":\"NETWORK_FIREWALL\",\"networkFirewallStatelessRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test\",\"priority\":1}],\"networkFirewallStatelessDefaultActions\":[\"aws:forward_to_sfe\",\"customActionName\"],\"networkFirewallStatelessFragmentDefaultActions\":[\"aws:forward_to_sfe\",\"fragmentcustomactionname\"],\"networkFirewallStatelessCustomActions\":[{\"actionName\":\"customActionName\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"metricdimensionvalue\"}]}}},{\"actionName\":\"fragmentcustomactionname\",\"actionDefinition\":{\"publishMetricAction\":{\"dimensions\":[{\"value\":\"fragmentmetricdimensionvalue\"}]}}}],\"networkFirewallStatefulRuleGroupReferences\":[{\"resourceARN\":\"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test\"}],\"networkFirewallOrchestrationConfig\":{\"firewallCreationConfig\":{\"endpointLocation\":{\"availabilityZoneConfigList\":[{\"availabilityZoneName\":\"us-east-1a\",\"allowedIPV4CidrList\":[\"10.0.0.0/28\"]},{\"availabilityZoneName\":\"us-east-1b\",\"allowedIPV4CidrList\":[\"10.0.0.0/28\"]}]}},\"singleFirewallEndpointPerVPC\":false,\"allowedIPV4CidrList\":null,\"routeManagementAction\":\"MONITOR\",\"routeManagementTargetTypes\":[\"InternetGateway\"],\"routeManagementConfig\":{\"allowCrossAZTrafficIfNoEndpoint\":true}},\"networkFirewallLoggingConfiguration\":{\"logDestinationConfigs\":[{\"logDestinationType\":\"S3\",\"logType\":\"ALERT\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}},{\"logDestinationType\":\"S3\",\"logType\":\"FLOW\",\"logDestination\":{\"bucketName\":\"s3-bucket-name\"}}],\"overrideExistingConfig\":boolean}}" To use the distributed deployment model, you must set [PolicyOption](https://docs.aws.amazon.com/fms/2018-01-01/APIReference/API_PolicyOption.html) to NULL. /// - /// * Example: SECURITY_GROUPS_COMMON"{\"type\":\"SECURITY_GROUPS_COMMON\",\"revertManualSecurityGroupChanges\":false,\"exclusiveResourceSecurityGroupManagement\":false, \"applyToAllEC2InstanceENIs\":false,\"securityGroups\":[{\"id\":\" sg-000e55995d61a06bd\"}]}" + /// * Example: SECURITY_GROUPS_COMMON"{\"type\":\"SECURITY_GROUPS_COMMON\",\"securityGroups\":[{\"id\":\"sg-03b1f67d69ed00197\"}],\"revertManualSecurityGroupChanges\":true,\"exclusiveResourceSecurityGroupManagement\":true,\"applyToAllEC2InstanceENIs\":false,\"includeSharedVPC\":true,\"enableSecurityGroupReferencesDistribution\":true}" /// /// * Example: SECURITY_GROUPS_COMMON - Security group tag distribution ""{\"type\":\"SECURITY_GROUPS_COMMON\",\"securityGroups\":[{\"id\":\"sg-000e55995d61a06bd\"}],\"revertManualSecurityGroupChanges\":true,\"exclusiveResourceSecurityGroupManagement\":false,\"applyToAllEC2InstanceENIs\":false,\"includeSharedVPC\":false,\"enableTagDistribution\":true}"" Firewall Manager automatically distributes tags from the primary group to the security groups created by this policy. To use security group tag distribution, you must also set revertManualSecurityGroupChanges to true, otherwise Firewall Manager won't be able to create the policy. When you enable revertManualSecurityGroupChanges, Firewall Manager identifies and reports when the security groups created by this policy become non-compliant. Firewall Manager won't distribute system tags added by Amazon Web Services services into the replica security groups. System tags begin with the aws: prefix. /// /// * Example: Shared VPCs. Apply the preceding policy to resources in shared VPCs as well as to those in VPCs that the account owns "{\"type\":\"SECURITY_GROUPS_COMMON\",\"revertManualSecurityGroupChanges\":false,\"exclusiveResourceSecurityGroupManagement\":false, \"applyToAllEC2InstanceENIs\":false,\"includeSharedVPC\":true,\"securityGroups\":[{\"id\":\" sg-000e55995d61a06bd\"}]}" /// - /// * Example: SECURITY_GROUPS_CONTENT_AUDIT"{\"type\":\"SECURITY_GROUPS_CONTENT_AUDIT\",\"securityGroups\":[{\"id\":\"sg-000e55995d61a06bd\"}],\"securityGroupAction\":{\"type\":\"ALLOW\"}}" The security group action for content audit can be ALLOW or DENY. For ALLOW, all in-scope security group rules must be within the allowed range of the policy's security group rules. For DENY, all in-scope security group rules must not contain a value or a range that matches a rule value or range in the policy security group. + /// * Example: SECURITY_GROUPS_CONTENT_AUDIT"{\"type\":\"SECURITY_GROUPS_CONTENT_AUDIT\",\"preManagedOptions\":[{\"denyProtocolAllValue\":true},{\"auditSgDirection\":{\"type\":\"ALL\"}}],\"securityGroups\":[{\"id\":\"sg-049b2393a25468971\"}],\"securityGroupAction\":{\"type\":\"ALLOW\"}}" The security group action for content audit can be ALLOW or DENY. For ALLOW, all in-scope security group rules must be within the allowed range of the policy's security group rules. For DENY, all in-scope security group rules must not contain a value or a range that matches a rule value or range in the policy security group. /// - /// * Example: SECURITY_GROUPS_USAGE_AUDIT"{\"type\":\"SECURITY_GROUPS_USAGE_AUDIT\",\"deleteUnusedSecurityGroups\":true,\"coalesceRedundantSecurityGroups\":true}" + /// * Example: SECURITY_GROUPS_USAGE_AUDIT"{\"type\":\"SECURITY_GROUPS_USAGE_AUDIT\",\"deleteUnusedSecurityGroups\":true,\"coalesceRedundantSecurityGroups\":true,\"optionalDelayForUnusedInMinutes\":60}" /// /// * Example: SHIELD_ADVANCED with web ACL management "{\"type\":\"SHIELD_ADVANCED\",\"optimizeUnassociatedWebACL\":true}" If you set optimizeUnassociatedWebACL to true, Firewall Manager creates web ACLs in accounts within the policy scope if the web ACLs will be used by at least one resource. Firewall Manager creates web ACLs in the accounts within policy scope only if the web ACLs will be used by at least one resource. If at any time an account comes into policy scope, Firewall Manager automatically creates a web ACL in the account if at least one resource will use the web ACL. Upon enablement, Firewall Manager performs a one-time cleanup of unused web ACLs in your account. The cleanup process can take several hours. If a resource leaves policy scope after Firewall Manager creates a web ACL, Firewall Manager doesn't disassociate the resource from the web ACL. If you want Firewall Manager to clean up the web ACL, you must first manually disassociate the resources from the web ACL, and then enable the manage unused web ACLs option in your policy. If you set optimizeUnassociatedWebACL to false, and Firewall Manager automatically creates an empty web ACL in each account that's within policy scope. /// @@ -1757,11 +1760,11 @@ extension FMSClientTypes { /// /// /// - /// * Example: WAFV2 - Firewall Manager support for WAF managed rule group versioning "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"ruleGroupArn\":null,\"overrideAction\":{\"type\":\"NONE\"},\"managedRuleGroupIdentifier\":{\"versionEnabled\":true,\"version\":\"Version_2.0\",\"vendorName\":\"AWS\",\"managedRuleGroupName\":\"AWSManagedRulesCommonRuleSet\"},\"ruleGroupType\":\"ManagedRuleGroup\",\"excludeRules\":[{\"name\":\"NoUserAgent_HEADER\"}]}],\"postProcessRuleGroups\":[],\"defaultAction\":{\"type\":\"ALLOW\"},\"overrideCustomerWebACLAssociation\":false,\"loggingConfiguration\":{\"logDestinationConfigs\":[\"arn:aws:firehose:us-west-2:12345678912:deliverystream/aws-waf-logs-fms-admin-destination\"],\"redactedFields\":[{\"redactedFieldType\":\"SingleHeader\",\"redactedFieldValue\":\"Cookies\"},{\"redactedFieldType\":\"Method\"}]}}" To use a specific version of a WAF managed rule group in your Firewall Manager policy, you must set versionEnabled to true, and set version to the version you'd like to use. If you don't set versionEnabled to true, or if you omit versionEnabled, then Firewall Manager uses the default version of the WAF managed rule group. + /// * Example: WAFV2 - Firewall Manager support for WAF managed rule group versioning "{\"preProcessRuleGroups\":[{\"ruleGroupType\":\"ManagedRuleGroup\",\"overrideAction\":{\"type\":\"NONE\"},\"sampledRequestsEnabled\":true,\"managedRuleGroupIdentifier\":{\"managedRuleGroupName\":\"AWSManagedRulesAdminProtectionRuleSet\",\"vendorName\":\"AWS\",\"managedRuleGroupConfigs\":null}}],\"postProcessRuleGroups\":[],\"defaultAction\":{\"type\":\"ALLOW\"},\"customRequestHandling\":null,\"tokenDomains\":null,\"customResponse\":null,\"type\":\"WAFV2\",\"overrideCustomerWebACLAssociation\":false,\"sampledRequestsEnabledForDefaultActions\":true,\"optimizeUnassociatedWebACL\":true,\"webACLSource\":\"RETROFIT_EXISTING\"}" To use a specific version of a WAF managed rule group in your Firewall Manager policy, you must set versionEnabled to true, and set version to the version you'd like to use. If you don't set versionEnabled to true, or if you omit versionEnabled, then Firewall Manager uses the default version of the WAF managed rule group. /// /// * Example: WAFV2 - Logging configurations "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"ruleGroupArn\":null, \"overrideAction\":{\"type\":\"NONE\"},\"managedRuleGroupIdentifier\": {\"versionEnabled\":null,\"version\":null,\"vendorName\":\"AWS\", \"managedRuleGroupName\":\"AWSManagedRulesAdminProtectionRuleSet\"} ,\"ruleGroupType\":\"ManagedRuleGroup\",\"excludeRules\":[], \"sampledRequestsEnabled\":true}],\"postProcessRuleGroups\":[], \"defaultAction\":{\"type\":\"ALLOW\"},\"customRequestHandling\" :null,\"customResponse\":null,\"overrideCustomerWebACLAssociation\" :false,\"loggingConfiguration\":{\"logDestinationConfigs\": [\"arn:aws:s3:::aws-waf-logs-example-bucket\"] ,\"redactedFields\":[],\"loggingFilterConfigs\":{\"defaultBehavior\":\"KEEP\", \"filters\":[{\"behavior\":\"KEEP\",\"requirement\":\"MEETS_ALL\", \"conditions\":[{\"actionCondition\":\"CAPTCHA\"},{\"actionCondition\": \"CHALLENGE\"}, {\"actionCondition\":\"EXCLUDED_AS_COUNT\"}]}]}},\"sampledRequestsEnabledForDefaultActions\":true}" Firewall Manager supports Amazon Kinesis Data Firehose and Amazon S3 as the logDestinationConfigs in your loggingConfiguration. For information about WAF logging configurations, see [LoggingConfiguration](https://docs.aws.amazon.com/waf/latest/APIReference/API_LoggingConfiguration.html) in the WAF API Reference In the loggingConfiguration, you can specify one logDestinationConfigs. Optionally provide as many as 20 redactedFields. The RedactedFieldType must be one of URI, QUERY_STRING, HEADER, or METHOD. /// - /// * Example: WAF Classic"{\"type\": \"WAF\", \"ruleGroups\": [{\"id\":\"12345678-1bcd-9012-efga-0987654321ab\", \"overrideAction\" : {\"type\": \"COUNT\"}}], \"defaultAction\": {\"type\": \"BLOCK\"}}" + /// * Example: WAF Classic"{\"ruleGroups\":[{\"id\":\"78cb36c0-1b5e-4d7d-82b2-cf48d3ad9659\",\"overrideAction\":{\"type\":\"NONE\"}}],\"overrideCustomerWebACLAssociation\":true,\"defaultAction\":{\"type\":\"ALLOW\"},\"type\":\"WAF\"}" public var managedServiceData: Swift.String? /// Contains the settings to configure a network ACL policy, a Network Firewall firewall policy deployment model, or a third-party firewall policy. public var policyOption: FMSClientTypes.PolicyOption? @@ -2239,6 +2242,8 @@ public struct GetViolationDetailsInput: Swift.Sendable { public var memberAccount: Swift.String? /// The ID of the Firewall Manager policy that you want the details for. You can get violation details for the following policy types: /// + /// * WAF + /// /// * DNS Firewall /// /// * Imported Network Firewall @@ -2255,7 +2260,7 @@ public struct GetViolationDetailsInput: Swift.Sendable { /// The ID of the resource that has violations. /// This member is required. public var resourceId: Swift.String? - /// The resource type. This is in the format shown in the [Amazon Web Services Resource Types Reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html). Supported resource types are: AWS::EC2::Instance, AWS::EC2::NetworkInterface, AWS::EC2::SecurityGroup, AWS::NetworkFirewall::FirewallPolicy, and AWS::EC2::Subnet. + /// The resource type. This is in the format shown in the [Amazon Web Services Resource Types Reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html). Supported resource types are: AWS::WAFv2::WebACL, AWS::EC2::Instance, AWS::EC2::NetworkInterface, AWS::EC2::SecurityGroup, AWS::NetworkFirewall::FirewallPolicy, and AWS::EC2::Subnet. /// This member is required. public var resourceType: Swift.String? @@ -4104,6 +4109,46 @@ extension FMSClientTypes { } } +extension FMSClientTypes { + + /// The violation details for a web ACL whose configuration is incompatible with the Firewall Manager policy. + public struct WebACLHasIncompatibleConfigurationViolation: Swift.Sendable { + /// Information about the problems that Firewall Manager encountered with the web ACL configuration. + public var description: Swift.String? + /// The Amazon Resource Name (ARN) of the web ACL. + public var webACLArn: Swift.String? + + public init( + description: Swift.String? = nil, + webACLArn: Swift.String? = nil + ) + { + self.description = description + self.webACLArn = webACLArn + } + } +} + +extension FMSClientTypes { + + /// The violation details for a web ACL that's associated with at least one resource that's out of scope of the Firewall Manager policy. + public struct WebACLHasOutOfScopeResourcesViolation: Swift.Sendable { + /// An array of Amazon Resource Name (ARN) for the resources that are out of scope of the policy and are associated with the web ACL. + public var outOfScopeResourceList: [Swift.String]? + /// The Amazon Resource Name (ARN) of the web ACL. + public var webACLArn: Swift.String? + + public init( + outOfScopeResourceList: [Swift.String]? = nil, + webACLArn: Swift.String? = nil + ) + { + self.outOfScopeResourceList = outOfScopeResourceList + self.webACLArn = webACLArn + } + } +} + extension FMSClientTypes { /// Violation detail based on resource type. @@ -4156,6 +4201,10 @@ extension FMSClientTypes { public var thirdPartyFirewallMissingFirewallViolation: FMSClientTypes.ThirdPartyFirewallMissingFirewallViolation? /// The violation details for a third-party firewall's subnet that's been deleted. public var thirdPartyFirewallMissingSubnetViolation: FMSClientTypes.ThirdPartyFirewallMissingSubnetViolation? + /// The violation details for a web ACL whose configuration is incompatible with the Firewall Manager policy. + public var webACLHasIncompatibleConfigurationViolation: FMSClientTypes.WebACLHasIncompatibleConfigurationViolation? + /// The violation details for a web ACL that's associated with at least one resource that's out of scope of the Firewall Manager policy. + public var webACLHasOutOfScopeResourcesViolation: FMSClientTypes.WebACLHasOutOfScopeResourcesViolation? public init( awsEc2InstanceViolation: FMSClientTypes.AwsEc2InstanceViolation? = nil, @@ -4181,7 +4230,9 @@ extension FMSClientTypes { routeHasOutOfScopeEndpointViolation: FMSClientTypes.RouteHasOutOfScopeEndpointViolation? = nil, thirdPartyFirewallMissingExpectedRouteTableViolation: FMSClientTypes.ThirdPartyFirewallMissingExpectedRouteTableViolation? = nil, thirdPartyFirewallMissingFirewallViolation: FMSClientTypes.ThirdPartyFirewallMissingFirewallViolation? = nil, - thirdPartyFirewallMissingSubnetViolation: FMSClientTypes.ThirdPartyFirewallMissingSubnetViolation? = nil + thirdPartyFirewallMissingSubnetViolation: FMSClientTypes.ThirdPartyFirewallMissingSubnetViolation? = nil, + webACLHasIncompatibleConfigurationViolation: FMSClientTypes.WebACLHasIncompatibleConfigurationViolation? = nil, + webACLHasOutOfScopeResourcesViolation: FMSClientTypes.WebACLHasOutOfScopeResourcesViolation? = nil ) { self.awsEc2InstanceViolation = awsEc2InstanceViolation @@ -4208,6 +4259,8 @@ extension FMSClientTypes { self.thirdPartyFirewallMissingExpectedRouteTableViolation = thirdPartyFirewallMissingExpectedRouteTableViolation self.thirdPartyFirewallMissingFirewallViolation = thirdPartyFirewallMissingFirewallViolation self.thirdPartyFirewallMissingSubnetViolation = thirdPartyFirewallMissingSubnetViolation + self.webACLHasIncompatibleConfigurationViolation = webACLHasIncompatibleConfigurationViolation + self.webACLHasOutOfScopeResourcesViolation = webACLHasOutOfScopeResourcesViolation } } } @@ -7621,6 +7674,30 @@ extension FMSClientTypes.ResourceViolation { value.firewallSubnetMissingVPCEndpointViolation = try reader["FirewallSubnetMissingVPCEndpointViolation"].readIfPresent(with: FMSClientTypes.FirewallSubnetMissingVPCEndpointViolation.read(from:)) value.invalidNetworkAclEntriesViolation = try reader["InvalidNetworkAclEntriesViolation"].readIfPresent(with: FMSClientTypes.InvalidNetworkAclEntriesViolation.read(from:)) value.possibleRemediationActions = try reader["PossibleRemediationActions"].readIfPresent(with: FMSClientTypes.PossibleRemediationActions.read(from:)) + value.webACLHasIncompatibleConfigurationViolation = try reader["WebACLHasIncompatibleConfigurationViolation"].readIfPresent(with: FMSClientTypes.WebACLHasIncompatibleConfigurationViolation.read(from:)) + value.webACLHasOutOfScopeResourcesViolation = try reader["WebACLHasOutOfScopeResourcesViolation"].readIfPresent(with: FMSClientTypes.WebACLHasOutOfScopeResourcesViolation.read(from:)) + return value + } +} + +extension FMSClientTypes.WebACLHasOutOfScopeResourcesViolation { + + static func read(from reader: SmithyJSON.Reader) throws -> FMSClientTypes.WebACLHasOutOfScopeResourcesViolation { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = FMSClientTypes.WebACLHasOutOfScopeResourcesViolation() + value.webACLArn = try reader["WebACLArn"].readIfPresent() + value.outOfScopeResourceList = try reader["OutOfScopeResourceList"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + +extension FMSClientTypes.WebACLHasIncompatibleConfigurationViolation { + + static func read(from reader: SmithyJSON.Reader) throws -> FMSClientTypes.WebACLHasIncompatibleConfigurationViolation { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = FMSClientTypes.WebACLHasIncompatibleConfigurationViolation() + value.webACLArn = try reader["WebACLArn"].readIfPresent() + value.description = try reader["Description"].readIfPresent() return value } } diff --git a/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/Models.swift b/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/Models.swift index f90b42cc61f..728a1f5952a 100644 --- a/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/Models.swift +++ b/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/Models.swift @@ -45,6 +45,108 @@ public struct AccessDeniedException: ClientRuntime.ModeledError, AWSClientRuntim } } +extension PaymentCryptographyDataClientTypes { + + /// The parameter values of the current PIN to be changed on the EMV chip card. + public struct CurrentPinAttributes: Swift.Sendable { + /// The encrypted pinblock of the current pin stored on the chip card. + /// This member is required. + public var currentEncryptedPinBlock: Swift.String? + /// The keyArn of the current PIN PEK. + /// This member is required. + public var currentPinPekIdentifier: Swift.String? + + public init( + currentEncryptedPinBlock: Swift.String? = nil, + currentPinPekIdentifier: Swift.String? = nil + ) + { + self.currentEncryptedPinBlock = currentEncryptedPinBlock + self.currentPinPekIdentifier = currentPinPekIdentifier + } + } +} + +extension PaymentCryptographyDataClientTypes.CurrentPinAttributes: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "CurrentPinAttributes(currentPinPekIdentifier: \(Swift.String(describing: currentPinPekIdentifier)), currentEncryptedPinBlock: \"CONTENT_REDACTED\")"} +} + +extension PaymentCryptographyDataClientTypes { + + public enum MajorKeyDerivationMode: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case emvOptionA + case emvOptionB + case sdkUnknown(Swift.String) + + public static var allCases: [MajorKeyDerivationMode] { + return [ + .emvOptionA, + .emvOptionB + ] + } + + 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 .emvOptionA: return "EMV_OPTION_A" + case .emvOptionB: return "EMV_OPTION_B" + case let .sdkUnknown(s): return s + } + } + } +} + +extension PaymentCryptographyDataClientTypes { + + /// Parameters to derive the confidentiality and integrity keys for a payment card using Amex derivation method. + public struct AmexAttributes: Swift.Sendable { + /// The transaction counter of the current transaction that is provided by the terminal during transaction processing. + /// This member is required. + public var applicationTransactionCounter: Swift.String? + /// The keyArn of the issuer master key for cryptogram (IMK-AC) for the payment card. + /// This member is required. + public var authorizationRequestKeyIdentifier: Swift.String? + /// The encrypted pinblock of the old pin stored on the chip card. + public var currentPinAttributes: PaymentCryptographyDataClientTypes.CurrentPinAttributes? + /// The method to use when deriving the master key for a payment card using Amex derivation. + /// This member is required. + public var majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? + /// A number that identifies and differentiates payment cards with the same Primary Account Number (PAN). Typically 00 is used, if no value is provided by the terminal. + /// This member is required. + public var panSequenceNumber: Swift.String? + /// The Primary Account Number (PAN) of the cardholder. + /// This member is required. + public var primaryAccountNumber: Swift.String? + + public init( + applicationTransactionCounter: Swift.String? = nil, + authorizationRequestKeyIdentifier: Swift.String? = nil, + currentPinAttributes: PaymentCryptographyDataClientTypes.CurrentPinAttributes? = nil, + majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? = nil, + panSequenceNumber: Swift.String? = nil, + primaryAccountNumber: Swift.String? = nil + ) + { + self.applicationTransactionCounter = applicationTransactionCounter + self.authorizationRequestKeyIdentifier = authorizationRequestKeyIdentifier + self.currentPinAttributes = currentPinAttributes + self.majorKeyDerivationMode = majorKeyDerivationMode + self.panSequenceNumber = panSequenceNumber + self.primaryAccountNumber = primaryAccountNumber + } + } +} + +extension PaymentCryptographyDataClientTypes.AmexAttributes: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "AmexAttributes(applicationTransactionCounter: \(Swift.String(describing: applicationTransactionCounter)), authorizationRequestKeyIdentifier: \(Swift.String(describing: authorizationRequestKeyIdentifier)), currentPinAttributes: \(Swift.String(describing: currentPinAttributes)), majorKeyDerivationMode: \(Swift.String(describing: majorKeyDerivationMode)), panSequenceNumber: \(Swift.String(describing: panSequenceNumber)), primaryAccountNumber: \"CONTENT_REDACTED\")"} +} + extension PaymentCryptographyDataClientTypes { /// Card data parameters that are required to generate a Card Security Code (CSC2) for an AMEX payment card. @@ -758,7 +860,7 @@ extension PaymentCryptographyDataClientTypes { public var majorKeyDerivationMode: PaymentCryptographyDataClientTypes.EmvMajorKeyDerivationMode? /// The block cipher method to use for encryption. public var mode: PaymentCryptographyDataClientTypes.EmvEncryptionMode? - /// A number that identifies and differentiates payment cards with the same Primary Account Number (PAN). + /// A number that identifies and differentiates payment cards with the same Primary Account Number (PAN). Typically 00 is used, if no value is provided by the terminal. /// This member is required. public var panSequenceNumber: Swift.String? /// The Primary Account Number (PAN), a unique identifier for a payment credit or debit card and associates the card to a specific account holder. @@ -1005,6 +1107,254 @@ extension DecryptDataOutput: Swift.CustomDebugStringConvertible { "DecryptDataOutput(keyArn: \(Swift.String(describing: keyArn)), keyCheckValue: \(Swift.String(describing: keyCheckValue)), plainText: \"CONTENT_REDACTED\")"} } +extension PaymentCryptographyDataClientTypes { + + /// Parameters to derive the confidentiality and integrity keys for a payment card using EMV2000 deruv. + public struct Emv2000Attributes: Swift.Sendable { + /// The transaction counter of the current transaction that is provided by the terminal during transaction processing. + /// This member is required. + public var applicationTransactionCounter: Swift.String? + /// The method to use when deriving the master key for the payment card. + /// This member is required. + public var majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? + /// A number that identifies and differentiates payment cards with the same Primary Account Number (PAN). Typically 00 is used, if no value is provided by the terminal. + /// This member is required. + public var panSequenceNumber: Swift.String? + /// The Primary Account Number (PAN) of the cardholder. + /// This member is required. + public var primaryAccountNumber: Swift.String? + + public init( + applicationTransactionCounter: Swift.String? = nil, + majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? = nil, + panSequenceNumber: Swift.String? = nil, + primaryAccountNumber: Swift.String? = nil + ) + { + self.applicationTransactionCounter = applicationTransactionCounter + self.majorKeyDerivationMode = majorKeyDerivationMode + self.panSequenceNumber = panSequenceNumber + self.primaryAccountNumber = primaryAccountNumber + } + } +} + +extension PaymentCryptographyDataClientTypes.Emv2000Attributes: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "Emv2000Attributes(applicationTransactionCounter: \(Swift.String(describing: applicationTransactionCounter)), majorKeyDerivationMode: \(Swift.String(describing: majorKeyDerivationMode)), panSequenceNumber: \(Swift.String(describing: panSequenceNumber)), primaryAccountNumber: \"CONTENT_REDACTED\")"} +} + +extension PaymentCryptographyDataClientTypes { + + public enum PinBlockLengthPosition: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case frontOfPinBlock + case `none` + case sdkUnknown(Swift.String) + + public static var allCases: [PinBlockLengthPosition] { + return [ + .frontOfPinBlock, + .none + ] + } + + 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 .frontOfPinBlock: return "FRONT_OF_PIN_BLOCK" + case .none: return "NONE" + case let .sdkUnknown(s): return s + } + } + } +} + +extension PaymentCryptographyDataClientTypes { + + public enum PinBlockPaddingType: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case isoIec78164 + case noPadding + case sdkUnknown(Swift.String) + + public static var allCases: [PinBlockPaddingType] { + return [ + .isoIec78164, + .noPadding + ] + } + + 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 .isoIec78164: return "ISO_IEC_7816_4" + case .noPadding: return "NO_PADDING" + case let .sdkUnknown(s): return s + } + } + } +} + +extension PaymentCryptographyDataClientTypes { + + /// Parameters to derive the confidentiality and integrity keys for an Emv common payment card. + public struct EmvCommonAttributes: Swift.Sendable { + /// The application cryptogram for the current transaction that is provided by the terminal during transaction processing. + /// This member is required. + public var applicationCryptogram: Swift.String? + /// The method to use when deriving the master key for the payment card. + /// This member is required. + public var majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? + /// The block cipher method to use for encryption. + /// This member is required. + public var mode: PaymentCryptographyDataClientTypes.EmvEncryptionMode? + /// A number that identifies and differentiates payment cards with the same Primary Account Number (PAN). Typically 00 is used, if no value is provided by the terminal. + /// This member is required. + public var panSequenceNumber: Swift.String? + /// Specifies if PIN block length should be added to front of the pin block. If value is set to FRONT_OF_PIN_BLOCK, then PIN block padding type should be ISO_IEC_7816_4. + /// This member is required. + public var pinBlockLengthPosition: PaymentCryptographyDataClientTypes.PinBlockLengthPosition? + /// The padding to be added to the PIN block prior to encryption. Padding type should be ISO_IEC_7816_4, if PinBlockLengthPosition is set to FRONT_OF_PIN_BLOCK. No padding is required, if PinBlockLengthPosition is set to NONE. + /// This member is required. + public var pinBlockPaddingType: PaymentCryptographyDataClientTypes.PinBlockPaddingType? + /// The Primary Account Number (PAN) of the cardholder. + /// This member is required. + public var primaryAccountNumber: Swift.String? + + public init( + applicationCryptogram: Swift.String? = nil, + majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? = nil, + mode: PaymentCryptographyDataClientTypes.EmvEncryptionMode? = nil, + panSequenceNumber: Swift.String? = nil, + pinBlockLengthPosition: PaymentCryptographyDataClientTypes.PinBlockLengthPosition? = nil, + pinBlockPaddingType: PaymentCryptographyDataClientTypes.PinBlockPaddingType? = nil, + primaryAccountNumber: Swift.String? = nil + ) + { + self.applicationCryptogram = applicationCryptogram + self.majorKeyDerivationMode = majorKeyDerivationMode + self.mode = mode + self.panSequenceNumber = panSequenceNumber + self.pinBlockLengthPosition = pinBlockLengthPosition + self.pinBlockPaddingType = pinBlockPaddingType + self.primaryAccountNumber = primaryAccountNumber + } + } +} + +extension PaymentCryptographyDataClientTypes.EmvCommonAttributes: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "EmvCommonAttributes(majorKeyDerivationMode: \(Swift.String(describing: majorKeyDerivationMode)), mode: \(Swift.String(describing: mode)), panSequenceNumber: \(Swift.String(describing: panSequenceNumber)), pinBlockLengthPosition: \(Swift.String(describing: pinBlockLengthPosition)), pinBlockPaddingType: \(Swift.String(describing: pinBlockPaddingType)), applicationCryptogram: \"CONTENT_REDACTED\", primaryAccountNumber: \"CONTENT_REDACTED\")"} +} + +extension PaymentCryptographyDataClientTypes { + + /// Parameters to derive the confidentiality and integrity keys for a Mastercard payment card. + public struct MasterCardAttributes: Swift.Sendable { + /// The application cryptogram for the current transaction that is provided by the terminal during transaction processing. + /// This member is required. + public var applicationCryptogram: Swift.String? + /// The method to use when deriving the master key for the payment card. + /// This member is required. + public var majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? + /// A number that identifies and differentiates payment cards with the same Primary Account Number (PAN). Typically 00 is used, if no value is provided by the terminal. + /// This member is required. + public var panSequenceNumber: Swift.String? + /// The Primary Account Number (PAN) of the cardholder. + /// This member is required. + public var primaryAccountNumber: Swift.String? + + public init( + applicationCryptogram: Swift.String? = nil, + majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? = nil, + panSequenceNumber: Swift.String? = nil, + primaryAccountNumber: Swift.String? = nil + ) + { + self.applicationCryptogram = applicationCryptogram + self.majorKeyDerivationMode = majorKeyDerivationMode + self.panSequenceNumber = panSequenceNumber + self.primaryAccountNumber = primaryAccountNumber + } + } +} + +extension PaymentCryptographyDataClientTypes.MasterCardAttributes: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "MasterCardAttributes(majorKeyDerivationMode: \(Swift.String(describing: majorKeyDerivationMode)), panSequenceNumber: \(Swift.String(describing: panSequenceNumber)), applicationCryptogram: \"CONTENT_REDACTED\", primaryAccountNumber: \"CONTENT_REDACTED\")"} +} + +extension PaymentCryptographyDataClientTypes { + + /// Parameters to derive the confidentiality and integrity keys for a Visa payment card. + public struct VisaAttributes: Swift.Sendable { + /// The transaction counter of the current transaction that is provided by the terminal during transaction processing. + /// This member is required. + public var applicationTransactionCounter: Swift.String? + /// The keyArn of the issuer master key for cryptogram (IMK-AC) for the payment card. + /// This member is required. + public var authorizationRequestKeyIdentifier: Swift.String? + /// The encrypted pinblock of the old pin stored on the chip card. + public var currentPinAttributes: PaymentCryptographyDataClientTypes.CurrentPinAttributes? + /// The method to use when deriving the master key for the payment card. + /// This member is required. + public var majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? + /// A number that identifies and differentiates payment cards with the same Primary Account Number (PAN). Typically 00 is used, if no value is provided by the terminal. + /// This member is required. + public var panSequenceNumber: Swift.String? + /// The Primary Account Number (PAN) of the cardholder. + /// This member is required. + public var primaryAccountNumber: Swift.String? + + public init( + applicationTransactionCounter: Swift.String? = nil, + authorizationRequestKeyIdentifier: Swift.String? = nil, + currentPinAttributes: PaymentCryptographyDataClientTypes.CurrentPinAttributes? = nil, + majorKeyDerivationMode: PaymentCryptographyDataClientTypes.MajorKeyDerivationMode? = nil, + panSequenceNumber: Swift.String? = nil, + primaryAccountNumber: Swift.String? = nil + ) + { + self.applicationTransactionCounter = applicationTransactionCounter + self.authorizationRequestKeyIdentifier = authorizationRequestKeyIdentifier + self.currentPinAttributes = currentPinAttributes + self.majorKeyDerivationMode = majorKeyDerivationMode + self.panSequenceNumber = panSequenceNumber + self.primaryAccountNumber = primaryAccountNumber + } + } +} + +extension PaymentCryptographyDataClientTypes.VisaAttributes: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "VisaAttributes(applicationTransactionCounter: \(Swift.String(describing: applicationTransactionCounter)), authorizationRequestKeyIdentifier: \(Swift.String(describing: authorizationRequestKeyIdentifier)), currentPinAttributes: \(Swift.String(describing: currentPinAttributes)), majorKeyDerivationMode: \(Swift.String(describing: majorKeyDerivationMode)), panSequenceNumber: \(Swift.String(describing: panSequenceNumber)), primaryAccountNumber: \"CONTENT_REDACTED\")"} +} + +extension PaymentCryptographyDataClientTypes { + + /// Parameters to derive the payment card specific confidentiality and integrity keys. + public enum DerivationMethodAttributes: Swift.Sendable { + /// Parameters to derive the confidentiality and integrity keys for a payment card using Emv common derivation method. + case emvcommon(PaymentCryptographyDataClientTypes.EmvCommonAttributes) + /// Parameters to derive the confidentiality and integrity keys for a payment card using Amex derivation method. + case amex(PaymentCryptographyDataClientTypes.AmexAttributes) + /// Parameters to derive the confidentiality and integrity keys for a a payment card using Visa derivation method. + case visa(PaymentCryptographyDataClientTypes.VisaAttributes) + /// Parameters to derive the confidentiality and integrity keys for a payment card using Emv2000 derivation method. + case emv2000(PaymentCryptographyDataClientTypes.Emv2000Attributes) + /// Parameters to derive the confidentiality and integrity keys for a payment card using Mastercard derivation method. + case mastercard(PaymentCryptographyDataClientTypes.MasterCardAttributes) + case sdkUnknown(Swift.String) + } +} + extension PaymentCryptographyDataClientTypes { /// Parameters that are used for Derived Unique Key Per Transaction (DUKPT) derivation algorithm. @@ -1241,35 +1591,6 @@ extension PaymentCryptographyDataClientTypes { } } -extension PaymentCryptographyDataClientTypes { - - public enum MajorKeyDerivationMode: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { - case emvOptionA - case emvOptionB - case sdkUnknown(Swift.String) - - public static var allCases: [MajorKeyDerivationMode] { - return [ - .emvOptionA, - .emvOptionB - ] - } - - 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 .emvOptionA: return "EMV_OPTION_A" - case .emvOptionB: return "EMV_OPTION_B" - case let .sdkUnknown(s): return s - } - } - } -} - extension PaymentCryptographyDataClientTypes { public enum SessionKeyDerivationMode: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -1440,6 +1761,173 @@ extension GenerateMacOutput: Swift.CustomDebugStringConvertible { "GenerateMacOutput(keyArn: \(Swift.String(describing: keyArn)), keyCheckValue: \(Swift.String(describing: keyCheckValue)), mac: \"CONTENT_REDACTED\")"} } +extension PaymentCryptographyDataClientTypes { + + public enum PinBlockFormatForEmvPinChange: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case isoFormat0 + case isoFormat1 + case isoFormat3 + case sdkUnknown(Swift.String) + + public static var allCases: [PinBlockFormatForEmvPinChange] { + return [ + .isoFormat0, + .isoFormat1, + .isoFormat3 + ] + } + + 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 .isoFormat0: return "ISO_FORMAT_0" + case .isoFormat1: return "ISO_FORMAT_1" + case .isoFormat3: return "ISO_FORMAT_3" + case let .sdkUnknown(s): return s + } + } + } +} + +public struct GenerateMacEmvPinChangeInput: Swift.Sendable { + /// The attributes and data values to derive payment card specific confidentiality and integrity keys. + /// This member is required. + public var derivationMethodAttributes: PaymentCryptographyDataClientTypes.DerivationMethodAttributes? + /// The message data is the APDU command from the card reader or terminal. The target encrypted PIN block, after translation to ISO2 format, is appended to this message data to generate an issuer script response. + /// This member is required. + public var messageData: Swift.String? + /// The incoming new encrypted PIN block data for offline pin change on an EMV card. + /// This member is required. + public var newEncryptedPinBlock: Swift.String? + /// The keyARN of the PEK protecting the incoming new encrypted PIN block. + /// This member is required. + public var newPinPekIdentifier: Swift.String? + /// The PIN encoding format of the incoming new encrypted PIN block as specified in ISO 9564. + /// This member is required. + public var pinBlockFormat: PaymentCryptographyDataClientTypes.PinBlockFormatForEmvPinChange? + /// The keyARN of the issuer master key (IMK-SMC) used to protect the PIN block data in the issuer script response. + /// This member is required. + public var secureMessagingConfidentialityKeyIdentifier: Swift.String? + /// The keyARN of the issuer master key (IMK-SMI) used to authenticate the issuer script response. + /// This member is required. + public var secureMessagingIntegrityKeyIdentifier: Swift.String? + + public init( + derivationMethodAttributes: PaymentCryptographyDataClientTypes.DerivationMethodAttributes? = nil, + messageData: Swift.String? = nil, + newEncryptedPinBlock: Swift.String? = nil, + newPinPekIdentifier: Swift.String? = nil, + pinBlockFormat: PaymentCryptographyDataClientTypes.PinBlockFormatForEmvPinChange? = nil, + secureMessagingConfidentialityKeyIdentifier: Swift.String? = nil, + secureMessagingIntegrityKeyIdentifier: Swift.String? = nil + ) + { + self.derivationMethodAttributes = derivationMethodAttributes + self.messageData = messageData + self.newEncryptedPinBlock = newEncryptedPinBlock + self.newPinPekIdentifier = newPinPekIdentifier + self.pinBlockFormat = pinBlockFormat + self.secureMessagingConfidentialityKeyIdentifier = secureMessagingConfidentialityKeyIdentifier + self.secureMessagingIntegrityKeyIdentifier = secureMessagingIntegrityKeyIdentifier + } +} + +extension GenerateMacEmvPinChangeInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "GenerateMacEmvPinChangeInput(derivationMethodAttributes: \(Swift.String(describing: derivationMethodAttributes)), newPinPekIdentifier: \(Swift.String(describing: newPinPekIdentifier)), pinBlockFormat: \(Swift.String(describing: pinBlockFormat)), secureMessagingConfidentialityKeyIdentifier: \(Swift.String(describing: secureMessagingConfidentialityKeyIdentifier)), secureMessagingIntegrityKeyIdentifier: \(Swift.String(describing: secureMessagingIntegrityKeyIdentifier)), messageData: \"CONTENT_REDACTED\", newEncryptedPinBlock: \"CONTENT_REDACTED\")"} +} + +extension PaymentCryptographyDataClientTypes { + + /// The attributes values used for Amex and Visa derivation methods. + public struct VisaAmexDerivationOutputs: Swift.Sendable { + /// The keyArn of the issuer master key for cryptogram (IMK-AC) used by the operation. + /// This member is required. + public var authorizationRequestKeyArn: Swift.String? + /// The key check value (KCV) of the issuer master key for cryptogram (IMK-AC) used by the operation. + /// This member is required. + public var authorizationRequestKeyCheckValue: Swift.String? + /// The keyArn of the current PIN PEK. + public var currentPinPekArn: Swift.String? + /// The key check value (KCV) of the current PIN PEK. + public var currentPinPekKeyCheckValue: Swift.String? + + public init( + authorizationRequestKeyArn: Swift.String? = nil, + authorizationRequestKeyCheckValue: Swift.String? = nil, + currentPinPekArn: Swift.String? = nil, + currentPinPekKeyCheckValue: Swift.String? = nil + ) + { + self.authorizationRequestKeyArn = authorizationRequestKeyArn + self.authorizationRequestKeyCheckValue = authorizationRequestKeyCheckValue + self.currentPinPekArn = currentPinPekArn + self.currentPinPekKeyCheckValue = currentPinPekKeyCheckValue + } + } +} + +public struct GenerateMacEmvPinChangeOutput: Swift.Sendable { + /// Returns the incoming new encrpted PIN block. + /// This member is required. + public var encryptedPinBlock: Swift.String? + /// Returns the mac of the issuer script containing message data and appended target encrypted pin block in ISO2 format. + /// This member is required. + public var mac: Swift.String? + /// Returns the keyArn of the PEK protecting the incoming new encrypted PIN block. + /// This member is required. + public var newPinPekArn: Swift.String? + /// The key check value (KCV) of the PEK uprotecting the incoming new encrypted PIN block. + /// This member is required. + public var newPinPekKeyCheckValue: Swift.String? + /// Returns the keyArn of the IMK-SMC used by the operation. + /// This member is required. + public var secureMessagingConfidentialityKeyArn: Swift.String? + /// The key check value (KCV) of the SMC issuer master key used by the operation. + /// This member is required. + public var secureMessagingConfidentialityKeyCheckValue: Swift.String? + /// Returns the keyArn of the IMK-SMI used by the operation. + /// This member is required. + public var secureMessagingIntegrityKeyArn: Swift.String? + /// The key check value (KCV) of the SMI issuer master key used by the operation. + /// This member is required. + public var secureMessagingIntegrityKeyCheckValue: Swift.String? + /// The attribute values used for Amex and Visa derivation methods. + public var visaAmexDerivationOutputs: PaymentCryptographyDataClientTypes.VisaAmexDerivationOutputs? + + public init( + encryptedPinBlock: Swift.String? = nil, + mac: Swift.String? = nil, + newPinPekArn: Swift.String? = nil, + newPinPekKeyCheckValue: Swift.String? = nil, + secureMessagingConfidentialityKeyArn: Swift.String? = nil, + secureMessagingConfidentialityKeyCheckValue: Swift.String? = nil, + secureMessagingIntegrityKeyArn: Swift.String? = nil, + secureMessagingIntegrityKeyCheckValue: Swift.String? = nil, + visaAmexDerivationOutputs: PaymentCryptographyDataClientTypes.VisaAmexDerivationOutputs? = nil + ) + { + self.encryptedPinBlock = encryptedPinBlock + self.mac = mac + self.newPinPekArn = newPinPekArn + self.newPinPekKeyCheckValue = newPinPekKeyCheckValue + self.secureMessagingConfidentialityKeyArn = secureMessagingConfidentialityKeyArn + self.secureMessagingConfidentialityKeyCheckValue = secureMessagingConfidentialityKeyCheckValue + self.secureMessagingIntegrityKeyArn = secureMessagingIntegrityKeyArn + self.secureMessagingIntegrityKeyCheckValue = secureMessagingIntegrityKeyCheckValue + self.visaAmexDerivationOutputs = visaAmexDerivationOutputs + } +} + +extension GenerateMacEmvPinChangeOutput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "GenerateMacEmvPinChangeOutput(newPinPekArn: \(Swift.String(describing: newPinPekArn)), newPinPekKeyCheckValue: \(Swift.String(describing: newPinPekKeyCheckValue)), secureMessagingConfidentialityKeyArn: \(Swift.String(describing: secureMessagingConfidentialityKeyArn)), secureMessagingConfidentialityKeyCheckValue: \(Swift.String(describing: secureMessagingConfidentialityKeyCheckValue)), secureMessagingIntegrityKeyArn: \(Swift.String(describing: secureMessagingIntegrityKeyArn)), secureMessagingIntegrityKeyCheckValue: \(Swift.String(describing: secureMessagingIntegrityKeyCheckValue)), visaAmexDerivationOutputs: \(Swift.String(describing: visaAmexDerivationOutputs)), encryptedPinBlock: \"CONTENT_REDACTED\", mac: \"CONTENT_REDACTED\")"} +} + extension PaymentCryptographyDataClientTypes { /// Parameters that are required to generate or verify Ibm3624 natural PIN. @@ -2585,6 +3073,13 @@ extension GenerateMacInput { } } +extension GenerateMacEmvPinChangeInput { + + static func urlPathProvider(_ value: GenerateMacEmvPinChangeInput) -> Swift.String? { + return "/macemvpinchange/generate" + } +} + extension GeneratePinDataInput { static func urlPathProvider(_ value: GeneratePinDataInput) -> Swift.String? { @@ -2679,6 +3174,20 @@ extension GenerateMacInput { } } +extension GenerateMacEmvPinChangeInput { + + static func write(value: GenerateMacEmvPinChangeInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["DerivationMethodAttributes"].write(value.derivationMethodAttributes, with: PaymentCryptographyDataClientTypes.DerivationMethodAttributes.write(value:to:)) + try writer["MessageData"].write(value.messageData) + try writer["NewEncryptedPinBlock"].write(value.newEncryptedPinBlock) + try writer["NewPinPekIdentifier"].write(value.newPinPekIdentifier) + try writer["PinBlockFormat"].write(value.pinBlockFormat) + try writer["SecureMessagingConfidentialityKeyIdentifier"].write(value.secureMessagingConfidentialityKeyIdentifier) + try writer["SecureMessagingIntegrityKeyIdentifier"].write(value.secureMessagingIntegrityKeyIdentifier) + } +} + extension GeneratePinDataInput { static func write(value: GeneratePinDataInput?, to writer: SmithyJSON.Writer) throws { @@ -2828,6 +3337,26 @@ extension GenerateMacOutput { } } +extension GenerateMacEmvPinChangeOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GenerateMacEmvPinChangeOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = GenerateMacEmvPinChangeOutput() + value.encryptedPinBlock = try reader["EncryptedPinBlock"].readIfPresent() ?? "" + value.mac = try reader["Mac"].readIfPresent() ?? "" + value.newPinPekArn = try reader["NewPinPekArn"].readIfPresent() ?? "" + value.newPinPekKeyCheckValue = try reader["NewPinPekKeyCheckValue"].readIfPresent() ?? "" + value.secureMessagingConfidentialityKeyArn = try reader["SecureMessagingConfidentialityKeyArn"].readIfPresent() ?? "" + value.secureMessagingConfidentialityKeyCheckValue = try reader["SecureMessagingConfidentialityKeyCheckValue"].readIfPresent() ?? "" + value.secureMessagingIntegrityKeyArn = try reader["SecureMessagingIntegrityKeyArn"].readIfPresent() ?? "" + value.secureMessagingIntegrityKeyCheckValue = try reader["SecureMessagingIntegrityKeyCheckValue"].readIfPresent() ?? "" + value.visaAmexDerivationOutputs = try reader["VisaAmexDerivationOutputs"].readIfPresent(with: PaymentCryptographyDataClientTypes.VisaAmexDerivationOutputs.read(from:)) + return value + } +} + extension GeneratePinDataOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GeneratePinDataOutput { @@ -3000,6 +3529,24 @@ enum GenerateMacOutputError { } } +enum GenerateMacEmvPinChangeOutputError { + + 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 "InternalServerException": return try InternalServerException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.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 GeneratePinDataOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -3210,6 +3757,19 @@ extension VerificationFailedException { } } +extension PaymentCryptographyDataClientTypes.VisaAmexDerivationOutputs { + + static func read(from reader: SmithyJSON.Reader) throws -> PaymentCryptographyDataClientTypes.VisaAmexDerivationOutputs { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = PaymentCryptographyDataClientTypes.VisaAmexDerivationOutputs() + value.authorizationRequestKeyArn = try reader["AuthorizationRequestKeyArn"].readIfPresent() ?? "" + value.authorizationRequestKeyCheckValue = try reader["AuthorizationRequestKeyCheckValue"].readIfPresent() ?? "" + value.currentPinPekArn = try reader["CurrentPinPekArn"].readIfPresent() + value.currentPinPekKeyCheckValue = try reader["CurrentPinPekKeyCheckValue"].readIfPresent() + return value + } +} + extension PaymentCryptographyDataClientTypes.PinData { static func read(from reader: SmithyJSON.Reader) throws -> PaymentCryptographyDataClientTypes.PinData { @@ -3470,6 +4030,98 @@ extension PaymentCryptographyDataClientTypes.SessionKeyDerivationValue { } } +extension PaymentCryptographyDataClientTypes.DerivationMethodAttributes { + + static func write(value: PaymentCryptographyDataClientTypes.DerivationMethodAttributes?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + switch value { + case let .amex(amex): + try writer["Amex"].write(amex, with: PaymentCryptographyDataClientTypes.AmexAttributes.write(value:to:)) + case let .emv2000(emv2000): + try writer["Emv2000"].write(emv2000, with: PaymentCryptographyDataClientTypes.Emv2000Attributes.write(value:to:)) + case let .emvcommon(emvcommon): + try writer["EmvCommon"].write(emvcommon, with: PaymentCryptographyDataClientTypes.EmvCommonAttributes.write(value:to:)) + case let .mastercard(mastercard): + try writer["Mastercard"].write(mastercard, with: PaymentCryptographyDataClientTypes.MasterCardAttributes.write(value:to:)) + case let .visa(visa): + try writer["Visa"].write(visa, with: PaymentCryptographyDataClientTypes.VisaAttributes.write(value:to:)) + case let .sdkUnknown(sdkUnknown): + try writer["sdkUnknown"].write(sdkUnknown) + } + } +} + +extension PaymentCryptographyDataClientTypes.MasterCardAttributes { + + static func write(value: PaymentCryptographyDataClientTypes.MasterCardAttributes?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ApplicationCryptogram"].write(value.applicationCryptogram) + try writer["MajorKeyDerivationMode"].write(value.majorKeyDerivationMode) + try writer["PanSequenceNumber"].write(value.panSequenceNumber) + try writer["PrimaryAccountNumber"].write(value.primaryAccountNumber) + } +} + +extension PaymentCryptographyDataClientTypes.Emv2000Attributes { + + static func write(value: PaymentCryptographyDataClientTypes.Emv2000Attributes?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ApplicationTransactionCounter"].write(value.applicationTransactionCounter) + try writer["MajorKeyDerivationMode"].write(value.majorKeyDerivationMode) + try writer["PanSequenceNumber"].write(value.panSequenceNumber) + try writer["PrimaryAccountNumber"].write(value.primaryAccountNumber) + } +} + +extension PaymentCryptographyDataClientTypes.VisaAttributes { + + static func write(value: PaymentCryptographyDataClientTypes.VisaAttributes?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ApplicationTransactionCounter"].write(value.applicationTransactionCounter) + try writer["AuthorizationRequestKeyIdentifier"].write(value.authorizationRequestKeyIdentifier) + try writer["CurrentPinAttributes"].write(value.currentPinAttributes, with: PaymentCryptographyDataClientTypes.CurrentPinAttributes.write(value:to:)) + try writer["MajorKeyDerivationMode"].write(value.majorKeyDerivationMode) + try writer["PanSequenceNumber"].write(value.panSequenceNumber) + try writer["PrimaryAccountNumber"].write(value.primaryAccountNumber) + } +} + +extension PaymentCryptographyDataClientTypes.CurrentPinAttributes { + + static func write(value: PaymentCryptographyDataClientTypes.CurrentPinAttributes?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["CurrentEncryptedPinBlock"].write(value.currentEncryptedPinBlock) + try writer["CurrentPinPekIdentifier"].write(value.currentPinPekIdentifier) + } +} + +extension PaymentCryptographyDataClientTypes.AmexAttributes { + + static func write(value: PaymentCryptographyDataClientTypes.AmexAttributes?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ApplicationTransactionCounter"].write(value.applicationTransactionCounter) + try writer["AuthorizationRequestKeyIdentifier"].write(value.authorizationRequestKeyIdentifier) + try writer["CurrentPinAttributes"].write(value.currentPinAttributes, with: PaymentCryptographyDataClientTypes.CurrentPinAttributes.write(value:to:)) + try writer["MajorKeyDerivationMode"].write(value.majorKeyDerivationMode) + try writer["PanSequenceNumber"].write(value.panSequenceNumber) + try writer["PrimaryAccountNumber"].write(value.primaryAccountNumber) + } +} + +extension PaymentCryptographyDataClientTypes.EmvCommonAttributes { + + static func write(value: PaymentCryptographyDataClientTypes.EmvCommonAttributes?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ApplicationCryptogram"].write(value.applicationCryptogram) + try writer["MajorKeyDerivationMode"].write(value.majorKeyDerivationMode) + try writer["Mode"].write(value.mode) + try writer["PanSequenceNumber"].write(value.panSequenceNumber) + try writer["PinBlockLengthPosition"].write(value.pinBlockLengthPosition) + try writer["PinBlockPaddingType"].write(value.pinBlockPaddingType) + try writer["PrimaryAccountNumber"].write(value.primaryAccountNumber) + } +} + extension PaymentCryptographyDataClientTypes.PinGenerationAttributes { static func write(value: PaymentCryptographyDataClientTypes.PinGenerationAttributes?, to writer: SmithyJSON.Writer) throws { diff --git a/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/PaymentCryptographyDataClient.swift b/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/PaymentCryptographyDataClient.swift index e85852bf8da..1f9f29ae7dd 100644 --- a/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/PaymentCryptographyDataClient.swift +++ b/Sources/Services/AWSPaymentCryptographyData/Sources/AWSPaymentCryptographyData/PaymentCryptographyDataClient.swift @@ -194,7 +194,7 @@ extension PaymentCryptographyDataClient { extension PaymentCryptographyDataClient { /// Performs the `DecryptData` operation on the `PaymentCryptographyDataPlane` service. /// - /// Decrypts ciphertext data to plaintext using a symmetric (TDES, AES), asymmetric (RSA), or derived (DUKPT or EMV) encryption key scheme. For more information, see [Decrypt data](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/decrypt-data.html) in the Amazon Web Services Payment Cryptography User Guide. You can use an encryption key generated within Amazon Web Services Payment Cryptography, or you can import your own encryption key by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). For this operation, the key must have KeyModesOfUse set to Decrypt. In asymmetric decryption, Amazon Web Services Payment Cryptography decrypts the ciphertext using the private component of the asymmetric encryption key pair. For data encryption outside of Amazon Web Services Payment Cryptography, you can export the public component of the asymmetric key pair by calling [GetPublicCertificate](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_GetPublicKeyCertificate.html). For symmetric and DUKPT decryption, Amazon Web Services Payment Cryptography supports TDES and AES algorithms. For EMV decryption, Amazon Web Services Payment Cryptography supports TDES algorithms. For asymmetric decryption, Amazon Web Services Payment Cryptography supports RSA. When you use TDES or TDES DUKPT, the ciphertext data length must be a multiple of 8 bytes. For AES or AES DUKPT, the ciphertext data length must be a multiple of 16 bytes. For RSA, it sould be equal to the key size unless padding is enabled. For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Decrypts ciphertext data to plaintext using a symmetric (TDES, AES), asymmetric (RSA), or derived (DUKPT or EMV) encryption key scheme. For more information, see [Decrypt data](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/decrypt-data.html) in the Amazon Web Services Payment Cryptography User Guide. You can use an decryption key generated within Amazon Web Services Payment Cryptography, or you can import your own decryption key by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). For this operation, the key must have KeyModesOfUse set to Decrypt. In asymmetric decryption, Amazon Web Services Payment Cryptography decrypts the ciphertext using the private component of the asymmetric encryption key pair. For data encryption outside of Amazon Web Services Payment Cryptography, you can export the public component of the asymmetric key pair by calling [GetPublicCertificate](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_GetPublicKeyCertificate.html). This operation also supports dynamic keys, allowing you to pass a dynamic decryption key as a TR-31 WrappedKeyBlock. This can be used when key material is frequently rotated, such as during every card transaction, and there is need to avoid importing short-lived keys into Amazon Web Services Payment Cryptography. To decrypt using dynamic keys, the keyARN is the Key Encryption Key (KEK) of the TR-31 wrapped decryption key material. The incoming wrapped key shall have a key purpose of D0 with a mode of use of B or D. For more information, see [Using Dynamic Keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/use-cases-acquirers-dynamickeys.html) in the Amazon Web Services Payment Cryptography User Guide. For symmetric and DUKPT decryption, Amazon Web Services Payment Cryptography supports TDES and AES algorithms. For EMV decryption, Amazon Web Services Payment Cryptography supports TDES algorithms. For asymmetric decryption, Amazon Web Services Payment Cryptography supports RSA. When you use TDES or TDES DUKPT, the ciphertext data length must be a multiple of 8 bytes. For AES or AES DUKPT, the ciphertext data length must be a multiple of 16 bytes. For RSA, it sould be equal to the key size unless padding is enabled. For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [EncryptData] /// @@ -273,7 +273,7 @@ extension PaymentCryptographyDataClient { /// Performs the `EncryptData` operation on the `PaymentCryptographyDataPlane` service. /// - /// Encrypts plaintext data to ciphertext using a symmetric (TDES, AES), asymmetric (RSA), or derived (DUKPT or EMV) encryption key scheme. For more information, see [Encrypt data](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/encrypt-data.html) in the Amazon Web Services Payment Cryptography User Guide. You can generate an encryption key within Amazon Web Services Payment Cryptography by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). You can import your own encryption key by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). For this operation, the key must have KeyModesOfUse set to Encrypt. In asymmetric encryption, plaintext is encrypted using public component. You can import the public component of an asymmetric key pair created outside Amazon Web Services Payment Cryptography by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). For symmetric and DUKPT encryption, Amazon Web Services Payment Cryptography supports TDES and AES algorithms. For EMV encryption, Amazon Web Services Payment Cryptography supports TDES algorithms.For asymmetric encryption, Amazon Web Services Payment Cryptography supports RSA. When you use TDES or TDES DUKPT, the plaintext data length must be a multiple of 8 bytes. For AES or AES DUKPT, the plaintext data length must be a multiple of 16 bytes. For RSA, it sould be equal to the key size unless padding is enabled. To encrypt using DUKPT, you must already have a BDK (Base Derivation Key) key in your account with KeyModesOfUse set to DeriveKey, or you can generate a new DUKPT key by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). To encrypt using EMV, you must already have an IMK (Issuer Master Key) key in your account with KeyModesOfUse set to DeriveKey. For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Encrypts plaintext data to ciphertext using a symmetric (TDES, AES), asymmetric (RSA), or derived (DUKPT or EMV) encryption key scheme. For more information, see [Encrypt data](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/encrypt-data.html) in the Amazon Web Services Payment Cryptography User Guide. You can generate an encryption key within Amazon Web Services Payment Cryptography by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). You can import your own encryption key by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). For this operation, the key must have KeyModesOfUse set to Encrypt. In asymmetric encryption, plaintext is encrypted using public component. You can import the public component of an asymmetric key pair created outside Amazon Web Services Payment Cryptography by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). This operation also supports dynamic keys, allowing you to pass a dynamic encryption key as a TR-31 WrappedKeyBlock. This can be used when key material is frequently rotated, such as during every card transaction, and there is need to avoid importing short-lived keys into Amazon Web Services Payment Cryptography. To encrypt using dynamic keys, the keyARN is the Key Encryption Key (KEK) of the TR-31 wrapped encryption key material. The incoming wrapped key shall have a key purpose of D0 with a mode of use of B or D. For more information, see [Using Dynamic Keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/use-cases-acquirers-dynamickeys.html) in the Amazon Web Services Payment Cryptography User Guide. For symmetric and DUKPT encryption, Amazon Web Services Payment Cryptography supports TDES and AES algorithms. For EMV encryption, Amazon Web Services Payment Cryptography supports TDES algorithms.For asymmetric encryption, Amazon Web Services Payment Cryptography supports RSA. When you use TDES or TDES DUKPT, the plaintext data length must be a multiple of 8 bytes. For AES or AES DUKPT, the plaintext data length must be a multiple of 16 bytes. For RSA, it sould be equal to the key size unless padding is enabled. To encrypt using DUKPT, you must already have a BDK (Base Derivation Key) key in your account with KeyModesOfUse set to DeriveKey, or you can generate a new DUKPT key by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). To encrypt using EMV, you must already have an IMK (Issuer Master Key) key in your account with KeyModesOfUse set to DeriveKey. For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [DecryptData] /// @@ -504,6 +504,83 @@ extension PaymentCryptographyDataClient { return try await op.execute(input: input) } + /// Performs the `GenerateMacEmvPinChange` operation on the `PaymentCryptographyDataPlane` service. + /// + /// Generates an issuer script mac for EMV payment cards that use offline PINs as the cardholder verification method (CVM). This operation generates an authenticated issuer script response by appending the incoming message data (APDU command) with the target encrypted PIN block in ISO2 format. The command structure and method to send the issuer script update to the card is not defined by this operation and is typically determined by the applicable payment card scheme. The primary inputs to this operation include the incoming new encrypted pinblock, PIN encryption key (PEK), issuer master key (IMK), primary account number (PAN), and the payment card derivation method. The operation uses two issuer master keys - secure messaging for confidentiality (IMK-SMC) and secure messaging for integrity (IMK-SMI). The SMC key is used to internally derive a key to secure the pin, while SMI key is used to internally derive a key to authenticate the script reponse as per the [EMV 4.4 - Book 2 - Security and Key Management](https://www.emvco.com/specifications/) specification. This operation supports Amex, EMV2000, EMVCommon, Mastercard and Visa derivation methods, each requiring specific input parameters. Users must follow the specific derivation method and input parameters defined by the respective payment card scheme. Use [GenerateMac] operation when sending a script update to an EMV card that does not involve PIN change. When assigning IAM permissions, it is important to understand that [EncryptData] using EMV keys and [GenerateMac] perform similar functions to this command. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// + /// * [EncryptData] + /// + /// * [GenerateMac] + /// + /// - Parameter GenerateMacEmvPinChangeInput : [no documentation found] + /// + /// - Returns: `GenerateMacEmvPinChangeOutput` : [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. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception, or failure. + /// - `ResourceNotFoundException` : The request was denied due to an invalid resource error. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The request was denied due to an invalid request error. + public func generateMacEmvPinChange(input: GenerateMacEmvPinChangeInput) async throws -> GenerateMacEmvPinChangeOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "generateMacEmvPinChange") + .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: "payment-cryptography") + .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(GenerateMacEmvPinChangeInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/json")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: GenerateMacEmvPinChangeInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(GenerateMacEmvPinChangeOutput.httpOutput(from:), GenerateMacEmvPinChangeOutputError.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: "PaymentCryptographyData") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "GenerateMacEmvPinChange") + 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 `GeneratePinData` operation on the `PaymentCryptographyDataPlane` service. /// /// Generates pin-related data such as PIN, PIN Verification Value (PVV), PIN Block, and PIN Offset during new card issuance or reissuance. For more information, see [Generate PIN data](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/generate-pin-data.html) in the Amazon Web Services Payment Cryptography User Guide. PIN data is never transmitted in clear to or from Amazon Web Services Payment Cryptography. This operation generates PIN, PVV, or PIN Offset and then encrypts it using Pin Encryption Key (PEK) to create an EncryptedPinBlock for transmission from Amazon Web Services Payment Cryptography. This operation uses a separate Pin Verification Key (PVK) for VISA PVV generation. For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: @@ -585,7 +662,7 @@ extension PaymentCryptographyDataClient { /// Performs the `ReEncryptData` operation on the `PaymentCryptographyDataPlane` service. /// - /// Re-encrypt ciphertext using DUKPT or Symmetric data encryption keys. You can either generate an encryption key within Amazon Web Services Payment Cryptography by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) or import your own encryption key by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). The KeyArn for use with this operation must be in a compatible key state with KeyModesOfUse set to Encrypt. For symmetric and DUKPT encryption, Amazon Web Services Payment Cryptography supports TDES and AES algorithms. To encrypt using DUKPT, a DUKPT key must already exist within your account with KeyModesOfUse set to DeriveKey or a new DUKPT can be generated by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Re-encrypt ciphertext using DUKPT or Symmetric data encryption keys. You can either generate an encryption key within Amazon Web Services Payment Cryptography by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) or import your own encryption key by calling [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). The KeyArn for use with this operation must be in a compatible key state with KeyModesOfUse set to Encrypt. This operation also supports dynamic keys, allowing you to pass a dynamic encryption key as a TR-31 WrappedKeyBlock. This can be used when key material is frequently rotated, such as during every card transaction, and there is need to avoid importing short-lived keys into Amazon Web Services Payment Cryptography. To re-encrypt using dynamic keys, the keyARN is the Key Encryption Key (KEK) of the TR-31 wrapped encryption key material. The incoming wrapped key shall have a key purpose of D0 with a mode of use of B or D. For more information, see [Using Dynamic Keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/use-cases-acquirers-dynamickeys.html) in the Amazon Web Services Payment Cryptography User Guide. For symmetric and DUKPT encryption, Amazon Web Services Payment Cryptography supports TDES and AES algorithms. To encrypt using DUKPT, a DUKPT key must already exist within your account with KeyModesOfUse set to DeriveKey or a new DUKPT can be generated by calling [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html). For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [DecryptData] /// @@ -666,7 +743,7 @@ extension PaymentCryptographyDataClient { /// Performs the `TranslatePinData` operation on the `PaymentCryptographyDataPlane` service. /// - /// Translates encrypted PIN block from and to ISO 9564 formats 0,1,3,4. For more information, see [Translate PIN data](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/translate-pin-data.html) in the Amazon Web Services Payment Cryptography User Guide. PIN block translation involves changing the encrytion of PIN block from one encryption key to another encryption key and changing PIN block format from one to another without PIN block data leaving Amazon Web Services Payment Cryptography. The encryption key transformation can be from PEK (Pin Encryption Key) to BDK (Base Derivation Key) for DUKPT or from BDK for DUKPT to PEK. Amazon Web Services Payment Cryptography supports TDES and AES key derivation type for DUKPT translations. The allowed combinations of PIN block format translations are guided by PCI. It is important to note that not all encrypted PIN block formats (example, format 1) require PAN (Primary Account Number) as input. And as such, PIN block format that requires PAN (example, formats 0,3,4) cannot be translated to a format (format 1) that does not require a PAN for generation. For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Amazon Web Services Payment Cryptography currently supports ISO PIN block 4 translation for PIN block built using legacy PAN length. That is, PAN is the right most 12 digits excluding the check digits. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Translates encrypted PIN block from and to ISO 9564 formats 0,1,3,4. For more information, see [Translate PIN data](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/translate-pin-data.html) in the Amazon Web Services Payment Cryptography User Guide. PIN block translation involves changing the encrytion of PIN block from one encryption key to another encryption key and changing PIN block format from one to another without PIN block data leaving Amazon Web Services Payment Cryptography. The encryption key transformation can be from PEK (Pin Encryption Key) to BDK (Base Derivation Key) for DUKPT or from BDK for DUKPT to PEK. Amazon Web Services Payment Cryptography supports TDES and AES key derivation type for DUKPT translations. This operation also supports dynamic keys, allowing you to pass a dynamic PEK as a TR-31 WrappedKeyBlock. This can be used when key material is frequently rotated, such as during every card transaction, and there is need to avoid importing short-lived keys into Amazon Web Services Payment Cryptography. To translate PIN block using dynamic keys, the keyARN is the Key Encryption Key (KEK) of the TR-31 wrapped PEK. The incoming wrapped key shall have a key purpose of P0 with a mode of use of B or D. For more information, see [Using Dynamic Keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/use-cases-acquirers-dynamickeys.html) in the Amazon Web Services Payment Cryptography User Guide. The allowed combinations of PIN block format translations are guided by PCI. It is important to note that not all encrypted PIN block formats (example, format 1) require PAN (Primary Account Number) as input. And as such, PIN block format that requires PAN (example, formats 0,3,4) cannot be translated to a format (format 1) that does not require a PAN for generation. For information about valid keys for this operation, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) and [Key types for specific data operations](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) in the Amazon Web Services Payment Cryptography User Guide. Amazon Web Services Payment Cryptography currently supports ISO PIN block 4 translation for PIN block built using legacy PAN length. That is, PAN is the right most 12 digits excluding the check digits. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [GeneratePinData] /// diff --git a/Sources/Services/AWSSESv2/Sources/AWSSESv2/AuthSchemeResolver.swift b/Sources/Services/AWSSESv2/Sources/AWSSESv2/AuthSchemeResolver.swift index bb6e69bc26f..1bbf9bbf4dd 100644 --- a/Sources/Services/AWSSESv2/Sources/AWSSESv2/AuthSchemeResolver.swift +++ b/Sources/Services/AWSSESv2/Sources/AWSSESv2/AuthSchemeResolver.swift @@ -8,16 +8,24 @@ // Code generated by smithy-swift-codegen. DO NOT EDIT! import class Smithy.Context +import enum ClientRuntime.EndpointsAuthScheme import enum Smithy.ClientError import enum SmithyHTTPAuthAPI.SigningPropertyKeys import protocol SmithyHTTPAuthAPI.AuthSchemeResolver import protocol SmithyHTTPAuthAPI.AuthSchemeResolverParameters +import struct Smithy.AttributeKey import struct SmithyHTTPAuthAPI.AuthOption public struct SESv2AuthSchemeResolverParameters: SmithyHTTPAuthAPI.AuthSchemeResolverParameters { public let operation: Swift.String - // Region is used for SigV4 auth scheme + /// Override the endpoint used to send this request + public let endpoint: Swift.String? + /// The AWS region used to dispatch the request. public let region: Swift.String? + /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error. + public let useDualStack: Swift.Bool + /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error. + public let useFIPS: Swift.Bool } public protocol SESv2AuthSchemeResolver: SmithyHTTPAuthAPI.AuthSchemeResolver { @@ -26,7 +34,7 @@ public protocol SESv2AuthSchemeResolver: SmithyHTTPAuthAPI.AuthSchemeResolver { // the service SESv2 must conform to. } -public struct DefaultSESv2AuthSchemeResolver: SESv2AuthSchemeResolver { +private struct InternalModeledSESv2AuthSchemeResolver: SESv2AuthSchemeResolver { public func resolveAuthScheme(params: SmithyHTTPAuthAPI.AuthSchemeResolverParameters) throws -> [SmithyHTTPAuthAPI.AuthOption] { var validAuthOptions = [SmithyHTTPAuthAPI.AuthOption]() @@ -46,11 +54,50 @@ public struct DefaultSESv2AuthSchemeResolver: SESv2AuthSchemeResolver { return validAuthOptions } + public func constructParameters(context: Smithy.Context) throws -> SmithyHTTPAuthAPI.AuthSchemeResolverParameters { + return try DefaultSESv2AuthSchemeResolver().constructParameters(context: context) + } +} + +public struct DefaultSESv2AuthSchemeResolver: SESv2AuthSchemeResolver { + + public func resolveAuthScheme(params: SmithyHTTPAuthAPI.AuthSchemeResolverParameters) throws -> [SmithyHTTPAuthAPI.AuthOption] { + var validAuthOptions = [SmithyHTTPAuthAPI.AuthOption]() + guard let serviceParams = params as? SESv2AuthSchemeResolverParameters else { + throw Smithy.ClientError.authError("Service specific auth scheme parameters type must be passed to auth scheme resolver.") + } + let endpointParams = EndpointParams(authSchemeParams: serviceParams) + let endpoint = try DefaultEndpointResolver().resolve(params: endpointParams) + guard let authSchemes = endpoint.authSchemes() else { + return try InternalModeledSESv2AuthSchemeResolver().resolveAuthScheme(params: params) + } + let schemes = try authSchemes.map { (input) -> ClientRuntime.EndpointsAuthScheme in try ClientRuntime.EndpointsAuthScheme(from: input) } + for scheme in schemes { + switch scheme { + case .sigV4(let param): + var sigV4Option = SmithyHTTPAuthAPI.AuthOption(schemeID: "aws.auth#sigv4") + sigV4Option.signingProperties.set(key: SmithyHTTPAuthAPI.SigningPropertyKeys.signingName, value: param.signingName) + sigV4Option.signingProperties.set(key: SmithyHTTPAuthAPI.SigningPropertyKeys.signingRegion, value: param.signingRegion) + validAuthOptions.append(sigV4Option) + case .sigV4A(let param): + var sigV4Option = SmithyHTTPAuthAPI.AuthOption(schemeID: "aws.auth#sigv4a") + sigV4Option.signingProperties.set(key: SmithyHTTPAuthAPI.SigningPropertyKeys.signingName, value: param.signingName) + sigV4Option.signingProperties.set(key: SmithyHTTPAuthAPI.SigningPropertyKeys.signingRegion, value: param.signingRegionSet?[0]) + validAuthOptions.append(sigV4Option) + default: + throw Smithy.ClientError.authError("Unknown auth scheme name: \(scheme.name)") + } + } + return validAuthOptions + } + public func constructParameters(context: Smithy.Context) throws -> SmithyHTTPAuthAPI.AuthSchemeResolverParameters { guard let opName = context.getOperation() else { throw Smithy.ClientError.dataNotFound("Operation name not configured in middleware context for auth scheme resolver params construction.") } - let opRegion = context.getRegion() - return SESv2AuthSchemeResolverParameters(operation: opName, region: opRegion) + guard let endpointParam = context.attributes.get(key: Smithy.AttributeKey(name: "EndpointParams")) else { + throw Smithy.ClientError.dataNotFound("Endpoint param not configured in middleware context for rules-based auth scheme resolver params construction.") + } + return SESv2AuthSchemeResolverParameters(operation: opName, endpoint: endpointParam.endpoint, region: endpointParam.region, useDualStack: endpointParam.useDualStack, useFIPS: endpointParam.useFIPS) } } diff --git a/Sources/Services/AWSSESv2/Sources/AWSSESv2/Endpoints.swift b/Sources/Services/AWSSESv2/Sources/AWSSESv2/Endpoints.swift index f2eeefd56a9..e65383f4a46 100644 --- a/Sources/Services/AWSSESv2/Sources/AWSSESv2/Endpoints.swift +++ b/Sources/Services/AWSSESv2/Sources/AWSSESv2/Endpoints.swift @@ -36,6 +36,12 @@ public struct EndpointParams { self.useDualStack = useDualStack self.useFIPS = useFIPS } + public init (authSchemeParams: SESv2AuthSchemeResolverParameters) { + self.endpoint = authSchemeParams.endpoint + self.region = authSchemeParams.region + self.useDualStack = authSchemeParams.useDualStack + self.useFIPS = authSchemeParams.useFIPS + } } extension EndpointParams: ClientRuntime.EndpointsRequestContextProviding { diff --git a/Sources/Services/AWSSESv2/Sources/AWSSESv2/Plugins.swift b/Sources/Services/AWSSESv2/Sources/AWSSESv2/Plugins.swift index 86201c2bce6..3e074ca599f 100644 --- a/Sources/Services/AWSSESv2/Sources/AWSSESv2/Plugins.swift +++ b/Sources/Services/AWSSESv2/Sources/AWSSESv2/Plugins.swift @@ -13,6 +13,7 @@ import protocol ClientRuntime.Plugin import protocol SmithyHTTPAuthAPI.AuthSchemeResolver import protocol SmithyIdentity.AWSCredentialIdentityResolver import protocol SmithyIdentity.BearerTokenIdentityResolver +import struct AWSSDKHTTPAuth.SigV4AAuthScheme import struct AWSSDKHTTPAuth.SigV4AuthScheme import struct SmithyIdentity.BearerTokenIdentity import struct SmithyIdentity.StaticBearerTokenIdentityResolver @@ -43,7 +44,7 @@ public class DefaultAWSAuthSchemePlugin: ClientRuntime.Plugin { public func configureClient(clientConfiguration: ClientRuntime.ClientConfiguration) throws { if let config = clientConfiguration as? SESv2Client.SESv2ClientConfiguration { config.authSchemeResolver = DefaultSESv2AuthSchemeResolver() - config.authSchemes = [AWSSDKHTTPAuth.SigV4AuthScheme()] + config.authSchemes = [AWSSDKHTTPAuth.SigV4AuthScheme(), AWSSDKHTTPAuth.SigV4AAuthScheme()] config.awsCredentialIdentityResolver = try AWSClientRuntime.AWSClientConfigDefaultsProvider.awsCredentialIdentityResolver() config.bearerTokenIdentityResolver = SmithyIdentity.StaticBearerTokenIdentityResolver(token: SmithyIdentity.BearerTokenIdentity(token: "")) } diff --git a/Sources/Services/AWSSESv2/Sources/AWSSESv2/SESv2Client.swift b/Sources/Services/AWSSESv2/Sources/AWSSESv2/SESv2Client.swift index 6518665b2f9..9f90fcc199e 100644 --- a/Sources/Services/AWSSESv2/Sources/AWSSESv2/SESv2Client.swift +++ b/Sources/Services/AWSSESv2/Sources/AWSSESv2/SESv2Client.swift @@ -44,6 +44,7 @@ import protocol SmithyIdentity.BearerTokenIdentityResolver import struct AWSClientRuntime.AmzSdkInvocationIdMiddleware import struct AWSClientRuntime.EndpointResolverMiddleware import struct AWSClientRuntime.UserAgentMiddleware +import struct AWSSDKHTTPAuth.SigV4AAuthScheme import struct AWSSDKHTTPAuth.SigV4AuthScheme import struct ClientRuntime.AuthSchemeMiddleware @_spi(SmithyReadWrite) import struct ClientRuntime.BodyMiddleware @@ -55,6 +56,7 @@ import struct ClientRuntime.QueryItemMiddleware import struct ClientRuntime.SignerMiddleware import struct ClientRuntime.URLHostMiddleware import struct ClientRuntime.URLPathMiddleware +import struct Smithy.AttributeKey import struct Smithy.Attributes import struct SmithyIdentity.BearerTokenIdentity import struct SmithyIdentity.StaticBearerTokenIdentityResolver @@ -156,11 +158,11 @@ extension SESv2Client { } public convenience init(useFIPS: Swift.Bool? = nil, useDualStack: Swift.Bool? = nil, appID: Swift.String? = nil, awsCredentialIdentityResolver: (any SmithyIdentity.AWSCredentialIdentityResolver)? = nil, awsRetryMode: AWSClientRuntime.AWSRetryMode? = nil, maxAttempts: Swift.Int? = nil, region: Swift.String? = nil, signingRegion: Swift.String? = nil, endpointResolver: EndpointResolver? = nil, telemetryProvider: ClientRuntime.TelemetryProvider? = nil, retryStrategyOptions: SmithyRetriesAPI.RetryStrategyOptions? = nil, clientLogMode: ClientRuntime.ClientLogMode? = nil, endpoint: Swift.String? = nil, idempotencyTokenGenerator: ClientRuntime.IdempotencyTokenGenerator? = nil, httpClientEngine: SmithyHTTPAPI.HTTPClient? = nil, httpClientConfiguration: ClientRuntime.HttpClientConfiguration? = nil, authSchemes: SmithyHTTPAuthAPI.AuthSchemes? = nil, authSchemeResolver: SmithyHTTPAuthAPI.AuthSchemeResolver? = nil, bearerTokenIdentityResolver: (any SmithyIdentity.BearerTokenIdentityResolver)? = nil, interceptorProviders: [ClientRuntime.InterceptorProvider]? = nil, httpInterceptorProviders: [ClientRuntime.HttpInterceptorProvider]? = nil) throws { - self.init(useFIPS, useDualStack, try appID ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.appID(), try awsCredentialIdentityResolver ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.awsCredentialIdentityResolver(awsCredentialIdentityResolver), try awsRetryMode ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.retryMode(), maxAttempts, region, signingRegion, try endpointResolver ?? DefaultEndpointResolver(), telemetryProvider ?? ClientRuntime.DefaultTelemetry.provider, try retryStrategyOptions ?? AWSClientConfigDefaultsProvider.retryStrategyOptions(awsRetryMode, maxAttempts), clientLogMode ?? AWSClientConfigDefaultsProvider.clientLogMode(), endpoint, idempotencyTokenGenerator ?? AWSClientConfigDefaultsProvider.idempotencyTokenGenerator(), httpClientEngine ?? AWSClientConfigDefaultsProvider.httpClientEngine(), httpClientConfiguration ?? AWSClientConfigDefaultsProvider.httpClientConfiguration(), authSchemes ?? [AWSSDKHTTPAuth.SigV4AuthScheme()], authSchemeResolver ?? DefaultSESv2AuthSchemeResolver(), bearerTokenIdentityResolver ?? SmithyIdentity.StaticBearerTokenIdentityResolver(token: SmithyIdentity.BearerTokenIdentity(token: "")), interceptorProviders ?? [], httpInterceptorProviders ?? []) + self.init(useFIPS, useDualStack, try appID ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.appID(), try awsCredentialIdentityResolver ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.awsCredentialIdentityResolver(awsCredentialIdentityResolver), try awsRetryMode ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.retryMode(), maxAttempts, region, signingRegion, try endpointResolver ?? DefaultEndpointResolver(), telemetryProvider ?? ClientRuntime.DefaultTelemetry.provider, try retryStrategyOptions ?? AWSClientConfigDefaultsProvider.retryStrategyOptions(awsRetryMode, maxAttempts), clientLogMode ?? AWSClientConfigDefaultsProvider.clientLogMode(), endpoint, idempotencyTokenGenerator ?? AWSClientConfigDefaultsProvider.idempotencyTokenGenerator(), httpClientEngine ?? AWSClientConfigDefaultsProvider.httpClientEngine(), httpClientConfiguration ?? AWSClientConfigDefaultsProvider.httpClientConfiguration(), authSchemes ?? [AWSSDKHTTPAuth.SigV4AuthScheme(), AWSSDKHTTPAuth.SigV4AAuthScheme()], authSchemeResolver ?? DefaultSESv2AuthSchemeResolver(), bearerTokenIdentityResolver ?? SmithyIdentity.StaticBearerTokenIdentityResolver(token: SmithyIdentity.BearerTokenIdentity(token: "")), interceptorProviders ?? [], httpInterceptorProviders ?? []) } public convenience init(useFIPS: Swift.Bool? = nil, useDualStack: Swift.Bool? = nil, appID: Swift.String? = nil, awsCredentialIdentityResolver: (any SmithyIdentity.AWSCredentialIdentityResolver)? = nil, awsRetryMode: AWSClientRuntime.AWSRetryMode? = nil, maxAttempts: Swift.Int? = nil, region: Swift.String? = nil, signingRegion: Swift.String? = nil, endpointResolver: EndpointResolver? = nil, telemetryProvider: ClientRuntime.TelemetryProvider? = nil, retryStrategyOptions: SmithyRetriesAPI.RetryStrategyOptions? = nil, clientLogMode: ClientRuntime.ClientLogMode? = nil, endpoint: Swift.String? = nil, idempotencyTokenGenerator: ClientRuntime.IdempotencyTokenGenerator? = nil, httpClientEngine: SmithyHTTPAPI.HTTPClient? = nil, httpClientConfiguration: ClientRuntime.HttpClientConfiguration? = nil, authSchemes: SmithyHTTPAuthAPI.AuthSchemes? = nil, authSchemeResolver: SmithyHTTPAuthAPI.AuthSchemeResolver? = nil, bearerTokenIdentityResolver: (any SmithyIdentity.BearerTokenIdentityResolver)? = nil, interceptorProviders: [ClientRuntime.InterceptorProvider]? = nil, httpInterceptorProviders: [ClientRuntime.HttpInterceptorProvider]? = nil) async throws { - self.init(useFIPS, useDualStack, try appID ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.appID(), try awsCredentialIdentityResolver ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.awsCredentialIdentityResolver(awsCredentialIdentityResolver), try awsRetryMode ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.retryMode(), maxAttempts, try await AWSClientRuntime.AWSClientConfigDefaultsProvider.region(region), try await AWSClientRuntime.AWSClientConfigDefaultsProvider.region(region), try endpointResolver ?? DefaultEndpointResolver(), telemetryProvider ?? ClientRuntime.DefaultTelemetry.provider, try retryStrategyOptions ?? AWSClientConfigDefaultsProvider.retryStrategyOptions(awsRetryMode, maxAttempts), clientLogMode ?? AWSClientConfigDefaultsProvider.clientLogMode(), endpoint, idempotencyTokenGenerator ?? AWSClientConfigDefaultsProvider.idempotencyTokenGenerator(), httpClientEngine ?? AWSClientConfigDefaultsProvider.httpClientEngine(), httpClientConfiguration ?? AWSClientConfigDefaultsProvider.httpClientConfiguration(), authSchemes ?? [AWSSDKHTTPAuth.SigV4AuthScheme()], authSchemeResolver ?? DefaultSESv2AuthSchemeResolver(), bearerTokenIdentityResolver ?? SmithyIdentity.StaticBearerTokenIdentityResolver(token: SmithyIdentity.BearerTokenIdentity(token: "")), interceptorProviders ?? [], httpInterceptorProviders ?? []) + self.init(useFIPS, useDualStack, try appID ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.appID(), try awsCredentialIdentityResolver ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.awsCredentialIdentityResolver(awsCredentialIdentityResolver), try awsRetryMode ?? AWSClientRuntime.AWSClientConfigDefaultsProvider.retryMode(), maxAttempts, try await AWSClientRuntime.AWSClientConfigDefaultsProvider.region(region), try await AWSClientRuntime.AWSClientConfigDefaultsProvider.region(region), try endpointResolver ?? DefaultEndpointResolver(), telemetryProvider ?? ClientRuntime.DefaultTelemetry.provider, try retryStrategyOptions ?? AWSClientConfigDefaultsProvider.retryStrategyOptions(awsRetryMode, maxAttempts), clientLogMode ?? AWSClientConfigDefaultsProvider.clientLogMode(), endpoint, idempotencyTokenGenerator ?? AWSClientConfigDefaultsProvider.idempotencyTokenGenerator(), httpClientEngine ?? AWSClientConfigDefaultsProvider.httpClientEngine(), httpClientConfiguration ?? AWSClientConfigDefaultsProvider.httpClientConfiguration(), authSchemes ?? [AWSSDKHTTPAuth.SigV4AuthScheme(), AWSSDKHTTPAuth.SigV4AAuthScheme()], authSchemeResolver ?? DefaultSESv2AuthSchemeResolver(), bearerTokenIdentityResolver ?? SmithyIdentity.StaticBearerTokenIdentityResolver(token: SmithyIdentity.BearerTokenIdentity(token: "")), interceptorProviders ?? [], httpInterceptorProviders ?? []) } public convenience required init() async throws { @@ -168,7 +170,7 @@ extension SESv2Client { } public convenience init(region: String) throws { - self.init(nil, nil, try AWSClientRuntime.AWSClientConfigDefaultsProvider.appID(), try AWSClientConfigDefaultsProvider.awsCredentialIdentityResolver(), try AWSClientRuntime.AWSClientConfigDefaultsProvider.retryMode(), nil, region, region, try DefaultEndpointResolver(), ClientRuntime.DefaultTelemetry.provider, try AWSClientConfigDefaultsProvider.retryStrategyOptions(), AWSClientConfigDefaultsProvider.clientLogMode(), nil, AWSClientConfigDefaultsProvider.idempotencyTokenGenerator(), AWSClientConfigDefaultsProvider.httpClientEngine(), AWSClientConfigDefaultsProvider.httpClientConfiguration(), [AWSSDKHTTPAuth.SigV4AuthScheme()], DefaultSESv2AuthSchemeResolver(), SmithyIdentity.StaticBearerTokenIdentityResolver(token: SmithyIdentity.BearerTokenIdentity(token: "")), [], []) + self.init(nil, nil, try AWSClientRuntime.AWSClientConfigDefaultsProvider.appID(), try AWSClientConfigDefaultsProvider.awsCredentialIdentityResolver(), try AWSClientRuntime.AWSClientConfigDefaultsProvider.retryMode(), nil, region, region, try DefaultEndpointResolver(), ClientRuntime.DefaultTelemetry.provider, try AWSClientConfigDefaultsProvider.retryStrategyOptions(), AWSClientConfigDefaultsProvider.clientLogMode(), nil, AWSClientConfigDefaultsProvider.idempotencyTokenGenerator(), AWSClientConfigDefaultsProvider.httpClientEngine(), AWSClientConfigDefaultsProvider.httpClientConfiguration(), [AWSSDKHTTPAuth.SigV4AuthScheme(), AWSSDKHTTPAuth.SigV4AAuthScheme()], DefaultSESv2AuthSchemeResolver(), SmithyIdentity.StaticBearerTokenIdentityResolver(token: SmithyIdentity.BearerTokenIdentity(token: "")), [], []) } public var partitionID: String? { @@ -246,6 +248,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -314,6 +317,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -388,6 +392,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -461,6 +466,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -533,6 +539,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -605,6 +612,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -678,6 +686,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -751,6 +760,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -828,6 +838,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -902,6 +913,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -975,6 +987,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1047,6 +1060,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1119,6 +1133,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1190,6 +1205,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1259,6 +1275,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1327,6 +1344,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1395,6 +1413,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1464,6 +1483,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1532,6 +1552,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1601,6 +1622,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1670,6 +1692,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1738,6 +1761,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1806,6 +1830,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1874,6 +1899,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -1941,6 +1967,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2010,6 +2037,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2078,6 +2106,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2146,6 +2175,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2214,6 +2244,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2282,6 +2313,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2350,6 +2382,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2418,6 +2451,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2486,6 +2520,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2555,6 +2590,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2623,6 +2659,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2691,6 +2728,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2759,6 +2797,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2828,6 +2867,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2896,6 +2936,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -2964,6 +3005,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3032,6 +3074,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3100,6 +3143,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3168,6 +3212,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3236,6 +3281,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3304,6 +3350,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3372,6 +3419,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3440,6 +3488,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3511,6 +3560,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3579,6 +3629,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3647,6 +3698,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3716,6 +3768,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3785,6 +3838,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3853,6 +3907,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3921,6 +3976,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -3991,6 +4047,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4061,6 +4118,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4132,6 +4190,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4201,6 +4260,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4270,6 +4330,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4340,6 +4401,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4411,6 +4473,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4481,6 +4544,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4551,6 +4615,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4621,6 +4686,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4692,6 +4758,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4763,6 +4830,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4834,6 +4902,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4905,6 +4974,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -4976,6 +5046,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5047,6 +5118,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5118,6 +5190,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5190,6 +5263,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5261,6 +5335,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5334,6 +5409,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5405,6 +5481,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5476,6 +5553,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5559,6 +5637,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5630,6 +5709,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5701,6 +5781,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5771,6 +5852,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5847,6 +5929,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -5922,6 +6005,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6004,6 +6088,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6076,6 +6161,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6147,6 +6233,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6217,6 +6304,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6288,6 +6376,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6360,6 +6449,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6432,6 +6522,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6503,6 +6594,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6574,6 +6666,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) @@ -6645,6 +6738,7 @@ extension SESv2Client { 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) + context.attributes.set(key: Smithy.AttributeKey(name: "EndpointParams"), value: endpointParams) 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()) diff --git a/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/Models.swift b/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/Models.swift index 2b462bcf547..b7f3fd05fcd 100644 --- a/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/Models.swift +++ b/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/Models.swift @@ -5399,7 +5399,7 @@ extension WAFV2ClientTypes { public var logType: WAFV2ClientTypes.LogType? /// Filtering that specifies which web requests are kept in the logs and which are dropped. You can filter on the rule action and on the web request labels that were applied by matching rules during web ACL evaluation. public var loggingFilter: WAFV2ClientTypes.LoggingFilter? - /// Indicates whether the logging configuration was created by Firewall Manager, as part of an WAF policy configuration. If true, only Firewall Manager can modify or delete the configuration. + /// Indicates whether the logging configuration was created by Firewall Manager, as part of an WAF policy configuration. If true, only Firewall Manager can modify or delete the configuration. The logging configuration can be created by Firewall Manager for use with any web ACL that Firewall Manager is using for an WAF policy. Web ACLs that Firewall Manager creates and uses have their ManagedByFirewallManager property set to true. Web ACLs that were created by a customer account and then retrofitted by Firewall Manager for use by a policy have their RetrofittedByFirewallManager property set to true. For either case, any corresponding logging configuration will indicate ManagedByFirewallManager. public var managedByFirewallManager: Swift.Bool /// The parts of the request that you want to keep out of the logs. For example, if you redact the SingleHeader field, the HEADER field in the logs will be REDACTED for all rules that use the SingleHeaderFieldToMatch setting. Redaction applies only to the component that's specified in the rule's FieldToMatch setting, so the SingleHeader redaction doesn't apply to rules that use the HeadersFieldToMatch. You can specify only the following fields for redaction: UriPath, QueryString, SingleHeader, and Method. This setting has no impact on request sampling. With request sampling, the only way to exclude fields is by disabling sampling in the web ACL visibility configuration. public var redactedFields: [WAFV2ClientTypes.FieldToMatch]? @@ -8121,7 +8121,7 @@ extension WAFV2ClientTypes { /// /// * When a rule with a label matches a web request, WAF adds the fully qualified label to the request. A fully qualified label is made up of the label namespace from the rule group or web ACL where the rule is defined and the label from the rule, separated by a colon: : public var labelNamespace: Swift.String? - /// Indicates whether this web ACL is managed by Firewall Manager. If true, then only Firewall Manager can delete the web ACL or any Firewall Manager rule groups in the web ACL. + /// Indicates whether this web ACL was created by Firewall Manager and is being managed by Firewall Manager. If true, then only Firewall Manager can delete the web ACL or any Firewall Manager rule groups in the web ACL. See also the properties RetrofittedByFirewallManager, PreProcessFirewallManagerRuleGroups, and PostProcessFirewallManagerRuleGroups. public var managedByFirewallManager: Swift.Bool /// The name of the web ACL. You cannot change the name of a web ACL after you create it. /// This member is required. @@ -8130,6 +8130,8 @@ extension WAFV2ClientTypes { public var postProcessFirewallManagerRuleGroups: [WAFV2ClientTypes.FirewallManagerRuleGroup]? /// The first set of rules for WAF to process in the web ACL. This is defined in an Firewall Manager WAF policy and contains only rule group references. You can't alter these. Any rules and rule groups that you define for the web ACL are prioritized after these. In the Firewall Manager WAF policy, the Firewall Manager administrator can define a set of rule groups to run first in the web ACL and a set of rule groups to run last. Within each set, the administrator prioritizes the rule groups, to determine their relative processing order. public var preProcessFirewallManagerRuleGroups: [WAFV2ClientTypes.FirewallManagerRuleGroup]? + /// Indicates whether this web ACL was created by a customer account and then retrofitted by Firewall Manager. If true, then the web ACL is currently being managed by a Firewall Manager WAF policy, and only Firewall Manager can manage any Firewall Manager rule groups in the web ACL. See also the properties ManagedByFirewallManager, PreProcessFirewallManagerRuleGroups, and PostProcessFirewallManagerRuleGroups. + public var retrofittedByFirewallManager: Swift.Bool /// The [Rule] statements used to identify the web requests that you want to manage. Each rule includes one top-level statement that WAF uses to identify matching web requests, and parameters that govern how WAF handles them. public var rules: [WAFV2ClientTypes.Rule]? /// Specifies the domains that WAF should accept in a web request token. This enables the use of tokens across multiple protected websites. When WAF provides a token, it uses the domain of the Amazon Web Services resource that the web ACL is protecting. If you don't specify a list of token domains, WAF accepts tokens only for the domain of the protected resource. With a token domain list, WAF accepts the resource's host domain plus all domains in the token domain list, including their prefixed subdomains. @@ -8153,6 +8155,7 @@ extension WAFV2ClientTypes { name: Swift.String? = nil, postProcessFirewallManagerRuleGroups: [WAFV2ClientTypes.FirewallManagerRuleGroup]? = nil, preProcessFirewallManagerRuleGroups: [WAFV2ClientTypes.FirewallManagerRuleGroup]? = nil, + retrofittedByFirewallManager: Swift.Bool = false, rules: [WAFV2ClientTypes.Rule]? = nil, tokenDomains: [Swift.String]? = nil, visibilityConfig: WAFV2ClientTypes.VisibilityConfig? = nil @@ -8172,6 +8175,7 @@ extension WAFV2ClientTypes { self.name = name self.postProcessFirewallManagerRuleGroups = postProcessFirewallManagerRuleGroups self.preProcessFirewallManagerRuleGroups = preProcessFirewallManagerRuleGroups + self.retrofittedByFirewallManager = retrofittedByFirewallManager self.rules = rules self.tokenDomains = tokenDomains self.visibilityConfig = visibilityConfig @@ -12950,6 +12954,7 @@ extension WAFV2ClientTypes.WebACL { value.challengeConfig = try reader["ChallengeConfig"].readIfPresent(with: WAFV2ClientTypes.ChallengeConfig.read(from:)) value.tokenDomains = try reader["TokenDomains"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) value.associationConfig = try reader["AssociationConfig"].readIfPresent(with: WAFV2ClientTypes.AssociationConfig.read(from:)) + value.retrofittedByFirewallManager = try reader["RetrofittedByFirewallManager"].readIfPresent() ?? false return value } } diff --git a/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/WAFV2Client.swift b/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/WAFV2Client.swift index 1704158b350..4fd55a18153 100644 --- a/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/WAFV2Client.swift +++ b/Sources/Services/AWSWAFV2/Sources/AWSWAFV2/WAFV2Client.swift @@ -884,7 +884,7 @@ extension WAFV2Client { /// Performs the `DeleteFirewallManagerRuleGroups` operation on the `AWSWAF_20190729` service. /// - /// Deletes all rule groups that are managed by Firewall Manager for the specified web ACL. You can only use this if ManagedByFirewallManager is false in the specified [WebACL]. + /// Deletes all rule groups that are managed by Firewall Manager from the specified [WebACL]. You can only use this if ManagedByFirewallManager and RetrofittedByFirewallManager are both false in the web ACL. /// /// - Parameter DeleteFirewallManagerRuleGroupsInput : [no documentation found] /// @@ -1383,7 +1383,7 @@ extension WAFV2Client { /// Performs the `DeleteWebACL` operation on the `AWSWAF_20190729` service. /// - /// Deletes the specified [WebACL]. You can only use this if ManagedByFirewallManager is false in the specified [WebACL]. Before deleting any web ACL, first disassociate it from all resources. + /// Deletes the specified [WebACL]. You can only use this if ManagedByFirewallManager is false in the web ACL. Before deleting any web ACL, first disassociate it from all resources. /// /// * To retrieve a list of the resources that are associated with a web ACL, use the following calls: /// diff --git a/packageDependencies.plist b/packageDependencies.plist index 73169f30858..d4024de96e0 100644 --- a/packageDependencies.plist +++ b/packageDependencies.plist @@ -9,6 +9,6 @@ clientRuntimeBranch main clientRuntimeVersion - 0.81.0 + 0.82.0