diff --git a/.changelog/3b6c86fadda84a1ead6caf65d4aca7ea.json b/.changelog/3b6c86fadda84a1ead6caf65d4aca7ea.json new file mode 100644 index 00000000000..dd717e2eeb6 --- /dev/null +++ b/.changelog/3b6c86fadda84a1ead6caf65d4aca7ea.json @@ -0,0 +1,8 @@ +{ + "id": "3b6c86fa-dda8-4a1e-ad6c-af65d4aca7ea", + "type": "feature", + "description": "Add a client config option to disable logging when output checksum validation is skipped due to an unsupported algorithm.", + "modules": [ + "service/s3" + ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index b6dd76bcba5..d6a43a30711 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +# Release (2025-01-21) + +## Module Highlights +* `github.com/aws/aws-sdk-go-v2/service/batch`: [v1.49.7](service/batch/CHANGELOG.md#v1497-2025-01-21) + * **Documentation**: Documentation-only update: clarified the description of the shareDecaySeconds parameter of the FairsharePolicy data type, clarified the description of the priority parameter of the JobQueueDetail data type. +* `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs`: [v1.45.7](service/cloudwatchlogs/CHANGELOG.md#v1457-2025-01-21) + * **Documentation**: Documentation-only update to address doc errors +* `github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider`: [v1.49.0](service/cognitoidentityprovider/CHANGELOG.md#v1490-2025-01-21) + * **Feature**: corrects the dual-stack endpoint configuration for cognitoidp +* `github.com/aws/aws-sdk-go-v2/service/connect`: [v1.124.0](service/connect/CHANGELOG.md#v11240-2025-01-21) + * **Feature**: Added DeleteContactFlowVersion API and the CAMPAIGN flow type +* `github.com/aws/aws-sdk-go-v2/service/iotsitewise`: [v1.45.0](service/iotsitewise/CHANGELOG.md#v1450-2025-01-21) + * **Feature**: AWS IoT SiteWise now supports ingestion and querying of Null (all data types) and NaN (double type) values of bad or uncertain data quality. New partial error handling prevents data loss during ingestion. Enabled by default for new customers; existing customers can opt-in. +* `github.com/aws/aws-sdk-go-v2/service/quicksight`: [v1.83.0](service/quicksight/CHANGELOG.md#v1830-2025-01-21) + * **Feature**: Added `DigitGroupingStyle` in ThousandsSeparator to allow grouping by `LAKH`( Indian Grouping system ) currency. Support LAKH and `CRORE` currency types in Column Formatting. +* `github.com/aws/aws-sdk-go-v2/service/sns`: [v1.33.14](service/sns/CHANGELOG.md#v13314-2025-01-21) + * **Documentation**: This release adds support for the topic attribute FifoThroughputScope for SNS FIFO topics. For details, see the documentation history in the Amazon Simple Notification Service Developer Guide. + # Release (2025-01-17) ## General Highlights diff --git a/README.md b/README.md index cd43039f2c0..fb3ec1f3347 100644 --- a/README.md +++ b/README.md @@ -134,10 +134,11 @@ The v2 SDK will use GitHub [Issues] to track feature requests and issues with th ## Resources -[SDK Developer Guide](https://aws.github.io/aws-sdk-go-v2/docs/) - Use this document to learn how to get started and +[SDK Developer Guide](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/welcome.html) - Use this document to learn how to get started and use the AWS SDK for Go V2. -[SDK Migration Guide](https://aws.github.io/aws-sdk-go-v2/docs/migrating/) - Use this document to learn how to migrate to V2 from the AWS SDK for Go. + +[SDK Migration Guide](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/migrate-gosdk.html) - Use this document to learn how to migrate to V2 from the AWS SDK for Go. [SDK API Reference Documentation](https://pkg.go.dev/mod/github.com/aws/aws-sdk-go-v2) - Use this document to look up all API operation input and output parameters for AWS diff --git a/codegen/sdk-codegen/aws-models/batch.json b/codegen/sdk-codegen/aws-models/batch.json index 7319b98ad97..af5c3091d69 100644 --- a/codegen/sdk-codegen/aws-models/batch.json +++ b/codegen/sdk-codegen/aws-models/batch.json @@ -4907,7 +4907,7 @@ "shareDecaySeconds": { "target": "com.amazonaws.batch#Integer", "traits": { - "smithy.api#documentation": "

The amount of time (in seconds) to use to calculate a fair share percentage for each fair\n share identifier in use. A value of zero (0) indicates that only current usage is measured. The\n decay allows for more recently run jobs to have more weight than jobs that ran earlier. The\n maximum supported value is 604800 (1 week).

" + "smithy.api#documentation": "

The amount of time (in seconds) to use to calculate a fair share percentage for each fair\n share identifier in use. A value of zero (0) indicates the default minimum time window (600 seconds).\n The maximum supported value is 604800 (1 week).

\n

The decay allows for more recently run jobs to have more weight than jobs that ran earlier. \n Consider adjusting this number if you have jobs that (on average) run longer than ten minutes, \n or a large difference in job count or job run times between share identifiers, and the allocation\n of resources doesn’t meet your needs.

" } }, "computeReservation": { @@ -5585,7 +5585,7 @@ "target": "com.amazonaws.batch#Integer", "traits": { "smithy.api#clientOptional": {}, - "smithy.api#documentation": "

The priority of the job queue. Job queues with a higher priority (or a higher integer value for the priority parameter) are evaluated first when associated with the same compute environment. Priority is determined in descending order. For example, a job queue with a priority value of 10 is given scheduling preference over a job queue with a priority value of 1. All of the compute environments must be either Amazon EC2 (EC2 or SPOT) or Fargate (FARGATE or FARGATE_SPOT). Amazon EC2 and Fargate compute environments can't be mixed.

", + "smithy.api#documentation": "

The priority of the job queue. Job queue priority determines the order \n that job queues are evaluated when multiple queues dispatch jobs within a \n shared compute environment. A higher value for priority indicates\n a higher priority. Queues are evaluated in cycles, in descending order by\n priority. For example, a job queue with a priority value of 10 is \n evaluated before a queue with a priority value of 1. All of the \n compute environments must be either Amazon EC2 (EC2 or SPOT)\n or Fargate (FARGATE or FARGATE_SPOT). Amazon EC2 and \n Fargate compute environments can't be mixed.

\n \n

Job queue priority doesn't guarantee that a particular job executes before \n a job in a lower priority queue. Jobs added to higher priority queues during the \n queue evaluation cycle might not be evaluated until the next cycle. A job is \n dispatched from a queue only if resources are available when the queue is evaluated. \n If there are insufficient resources available at that time, the cycle proceeds to the \n next queue. This means that jobs added to higher priority queues might have to wait \n for jobs in multiple lower priority queues to complete before they are dispatched. \n You can use job dependencies to control the order for jobs from queues with different \n priorities. For more information, see Job Dependencies\n in the Batch User Guide.

\n
", "smithy.api#required": {} } }, @@ -5944,7 +5944,7 @@ "targetInstanceTypes": { "target": "com.amazonaws.batch#StringList", "traits": { - "smithy.api#documentation": "

The instance type or family that this this override launch template should be applied to.

\n

This parameter is required when defining a launch template override.

\n

Information included in this parameter must meet the following requirements:

\n " + "smithy.api#documentation": "

The instance type or family that this override launch template should be applied to.

\n

This parameter is required when defining a launch template override.

\n

Information included in this parameter must meet the following requirements:

\n " } } }, @@ -7743,7 +7743,7 @@ "environment": { "target": "com.amazonaws.batch#EnvironmentVariables", "traits": { - "smithy.api#documentation": "

The environment variables to pass to a container. This parameter maps to Env inthe Create a container\n section of the Docker Remote API\n and the --env parameter to docker run.

\n \n

We don't recommend using plaintext environment variables for sensitive information, such as\n credential data.

\n
\n \n

Environment variables cannot start with AWS_BATCH. This naming convention is\n reserved for variables that Batch sets.

\n
" + "smithy.api#documentation": "

The environment variables to pass to a container. This parameter maps to Env in the Create a container\n section of the Docker Remote API\n and the --env parameter to docker run.

\n \n

We don't recommend using plaintext environment variables for sensitive information, such as\n credential data.

\n
\n \n

Environment variables cannot start with AWS_BATCH. This naming convention is\n reserved for variables that Batch sets.

\n
" } }, "essential": { diff --git a/codegen/sdk-codegen/aws-models/cloudwatch-logs.json b/codegen/sdk-codegen/aws-models/cloudwatch-logs.json index d4a1f0549b8..d2a383edfc5 100644 --- a/codegen/sdk-codegen/aws-models/cloudwatch-logs.json +++ b/codegen/sdk-codegen/aws-models/cloudwatch-logs.json @@ -538,7 +538,7 @@ } ], "traits": { - "smithy.api#documentation": "

Associates the specified KMS key with either one log group in the account, or with all stored\n CloudWatch Logs query insights results in the account.

\n

When you use AssociateKmsKey, you specify either the logGroupName parameter\n or the resourceIdentifier parameter. You can't specify both of those parameters in the same operation.

\n \n \n

If you delete the key that is used to encrypt log events or log group query results,\n then all the associated stored log events or query results that were encrypted with that key \n will be unencryptable and unusable.

\n
\n \n

CloudWatch Logs supports only symmetric KMS keys. Do not use an associate\n an asymmetric KMS key with your log group or query results. For more information, see Using\n Symmetric and Asymmetric Keys.

\n
\n

It can take up to 5 minutes for this operation to take effect.

\n

If you attempt to associate a KMS key with a log group but the KMS key does not exist or the KMS key is disabled, you receive an\n InvalidParameterException error.

" + "smithy.api#documentation": "

Associates the specified KMS key with either one log group in the account, or with all stored\n CloudWatch Logs query insights results in the account.

\n

When you use AssociateKmsKey, you specify either the logGroupName parameter\n or the resourceIdentifier parameter. You can't specify both of those parameters in the same operation.

\n \n \n

If you delete the key that is used to encrypt log events or log group query results,\n then all the associated stored log events or query results that were encrypted with that key \n will be unencryptable and unusable.

\n
\n \n

CloudWatch Logs supports only symmetric KMS keys. Do not use an associate\n an asymmetric KMS key with your log group or query results. For more information, see Using\n Symmetric and Asymmetric Keys.

\n
\n

It can take up to 5 minutes for this operation to take effect.

\n

If you attempt to associate a KMS key with a log group but the KMS key does not exist or the KMS key is disabled, you receive an\n InvalidParameterException error.

" } }, "com.amazonaws.cloudwatchlogs#AssociateKmsKeyRequest": { @@ -985,7 +985,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates an export task so that you can efficiently export data from a log group to an\n Amazon S3 bucket. When you perform a CreateExportTask operation, you must use\n credentials that have permission to write to the S3 bucket that you specify as the\n destination.

\n

Exporting log data to S3 buckets that are encrypted by KMS is supported.\n Exporting log data to Amazon S3 buckets that have S3 Object Lock enabled with a\n retention period is also supported.

\n

Exporting to S3 buckets that are encrypted with AES-256 is supported.

\n

This is an asynchronous call. If all the required information is provided, this \n operation initiates an export task and responds with the ID of the task. After the task has started,\n you can use DescribeExportTasks to get the status of the export task. Each account can\n only have one active (RUNNING or PENDING) export task at a time.\n To cancel an export task, use CancelExportTask.

\n

You can export logs from multiple log groups or multiple time ranges to the same S3\n bucket. To separate log data for each export task, specify a prefix to be used as the Amazon\n S3 key prefix for all exported objects.

\n \n

Time-based sorting on chunks of log data inside an exported file is not guaranteed. You can\n sort the exported log field data by using Linux utilities.

\n
" + "smithy.api#documentation": "

Creates an export task so that you can efficiently export data from a log group to an\n Amazon S3 bucket. When you perform a CreateExportTask operation, you must use\n credentials that have permission to write to the S3 bucket that you specify as the\n destination.

\n

Exporting log data to S3 buckets that are encrypted by KMS is supported.\n Exporting log data to Amazon S3 buckets that have S3 Object Lock enabled with a\n retention period is also supported.

\n

Exporting to S3 buckets that are encrypted with AES-256 is supported.

\n

This is an asynchronous call. If all the required information is provided, this \n operation initiates an export task and responds with the ID of the task. After the task has started,\n you can use DescribeExportTasks to get the status of the export task. Each account can\n only have one active (RUNNING or PENDING) export task at a time.\n To cancel an export task, use CancelExportTask.

\n

You can export logs from multiple log groups or multiple time ranges to the same S3\n bucket. To separate log data for each export task, specify a prefix to be used as the Amazon\n S3 key prefix for all exported objects.

\n \n

We recommend that you don't regularly export to Amazon S3 as a way to continuously archive your logs. For that use case, we instaed recommend that \n you use subscriptions. For more information about subscriptions, see \n Real-time processing of log data with subscriptions.

\n
\n \n

Time-based sorting on chunks of log data inside an exported file is not guaranteed. You can\n sort the exported log field data by using Linux utilities.

\n
" } }, "com.amazonaws.cloudwatchlogs#CreateExportTaskRequest": { @@ -1493,7 +1493,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deletes s delivery. A delivery is a connection between a logical delivery source and a logical\n delivery destination. Deleting a delivery only deletes the connection between the delivery source and delivery destination. It does\n not delete the delivery destination or the delivery source.

" + "smithy.api#documentation": "

Deletes a delivery. A delivery is a connection between a logical delivery source and a logical\n delivery destination. Deleting a delivery only deletes the connection between the delivery source and delivery destination. It does\n not delete the delivery destination or the delivery source.

" } }, "com.amazonaws.cloudwatchlogs#DeleteDeliveryDestination": { @@ -2522,7 +2522,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns a list of all CloudWatch Logs account policies in the account.

" + "smithy.api#documentation": "

Returns a list of all CloudWatch Logs account policies in the account.

\n

To use this operation, you must be signed on with the correct permissions depending on the type of policy that you are retrieving information for.

\n " } }, "com.amazonaws.cloudwatchlogs#DescribeAccountPoliciesRequest": { @@ -3291,7 +3291,7 @@ } ], "traits": { - "smithy.api#documentation": "

Lists the log streams for the specified log group. \n You can list all the log streams or filter the results by prefix.\n You can also control how the results are ordered.

\n

You can specify the log group to search by using either logGroupIdentifier or logGroupName.\n You must include one of these two parameters, but you can't include both.\n

\n

This operation has a limit of five transactions per second, after which transactions are throttled.

\n

If you are using CloudWatch cross-account observability, you can use this operation in a monitoring account and \n view data from the linked source accounts. For more information, see \n CloudWatch cross-account observability.

", + "smithy.api#documentation": "

Lists the log streams for the specified log group. \n You can list all the log streams or filter the results by prefix.\n You can also control how the results are ordered.

\n

You can specify the log group to search by using either logGroupIdentifier or logGroupName.\n You must include one of these two parameters, but you can't include both.\n

\n

This operation has a limit of 25 transactions per second, after which transactions are throttled.

\n

If you are using CloudWatch cross-account observability, you can use this operation in a monitoring account and \n view data from the linked source accounts. For more information, see \n CloudWatch cross-account observability.

", "smithy.api#paginated": { "inputToken": "nextToken", "outputToken": "nextToken", @@ -8752,14 +8752,14 @@ "dataSourceRoleArn": { "target": "com.amazonaws.cloudwatchlogs#Arn", "traits": { - "smithy.api#documentation": "

Specify the ARN of an IAM role that CloudWatch Logs will use to create the integration. This role must have the permissions necessary to access the OpenSearch Service\n collection to be able to create the dashboards. For more information about the permissions needed, see Create an IAM role to access the OpenSearch Service collection in the CloudWatch Logs User Guide.

", + "smithy.api#documentation": "

Specify the ARN of an IAM role that CloudWatch Logs will use to create the integration. This role must have the permissions necessary to access the OpenSearch Service\n collection to be able to create the dashboards. For more information about the permissions needed, see Permissions that the integration needs in the CloudWatch Logs User Guide.

", "smithy.api#required": {} } }, "dashboardViewerPrincipals": { "target": "com.amazonaws.cloudwatchlogs#DashboardViewerPrincipals", "traits": { - "smithy.api#documentation": "

Specify the ARNs of IAM roles and IAM users who you want to grant permission to for viewing the dashboards.

\n \n

In addition to specifying these users here, you must also grant them the CloudWatchOpenSearchDashboardsAccess \n IAM policy. For more information, see

\n
", + "smithy.api#documentation": "

Specify the ARNs of IAM roles and IAM users who you want to grant permission to for viewing the dashboards.

\n \n

In addition to specifying these users here, you must also grant them the CloudWatchOpenSearchDashboardAccess \n IAM policy. For more information, see IAM policies for users.

\n
", "smithy.api#required": {} } }, @@ -9430,7 +9430,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates an account-level data protection policy, subscription filter policy, or field index policy\n that applies to all log groups \n or a subset of log groups in the account.

\n

\n Data protection policy\n

\n

A data protection policy can help safeguard sensitive \n data that's ingested by your log groups by auditing and masking the sensitive log data. Each account can have only\n one account-level data protection policy.

\n \n

Sensitive data is detected and masked when it is ingested into a log group. When you set a \n data protection policy, log events ingested into the log groups before that time are not masked.

\n
\n

If you use PutAccountPolicy to create a data protection policy for your whole account, it applies to both existing log groups\n and all log groups that are created later in this account. The account-level policy is applied to existing log groups\n with eventual consistency. It might take up to 5 minutes before sensitive data in existing log groups begins to be masked.

\n

By default, when a user views a log event that includes masked data, the sensitive data is replaced by asterisks.\n A user who has the logs:Unmask permission can use a \n GetLogEvents or \n FilterLogEvents\n operation with the unmask parameter set to true to view the unmasked \n log events. Users with the logs:Unmask can also view unmasked data in the CloudWatch Logs\n console by running a CloudWatch Logs Insights query with the unmask query command.

\n

For more information, including a list of types of data that can be audited and masked, see\n Protect sensitive log data with masking.

\n

To use the PutAccountPolicy operation for a data protection policy, you must be signed on with \n the logs:PutDataProtectionPolicy\n and logs:PutAccountPolicy permissions.

\n

The PutAccountPolicy operation applies to all log groups in the account. You can use \n PutDataProtectionPolicy\n to create a data protection policy that applies to just one log group. \n If a log group has its own data protection policy and \n the account also has an account-level data protection policy, then the two policies are cumulative. Any sensitive term\n specified in either policy is masked.

\n

\n Subscription filter policy\n

\n

A subscription filter policy sets up a real-time feed of log events from CloudWatch Logs to other Amazon Web Services services.\n Account-level subscription filter policies apply to both existing log groups and log groups that are created later in \n this account. Supported destinations are Kinesis Data Streams, Firehose, and \n Lambda. When log events are sent to the receiving service, they are Base64 encoded and \n compressed with the GZIP format.

\n

The following destinations are supported for subscription filters:

\n \n

Each account can have one account-level subscription filter policy per Region. \n If you are updating an existing filter, you must specify the correct name in PolicyName.\n To perform a PutAccountPolicy subscription filter operation for any destination except a Lambda \n function, you must also have the iam:PassRole permission.

\n

\n Transformer policy\n

\n

Creates or updates a log transformer policy for your account. You use log transformers to transform log events into\n a different format, making them easier for you to process and analyze. You can also transform logs from different sources into standardized formats that \n contain\n relevant, source-specific information. After you have created a transformer, \n CloudWatch Logs performs this transformation at the time of log ingestion. You can then refer to the transformed versions of the logs during\n operations such as querying with CloudWatch Logs Insights or creating metric filters or subscription filters.

\n

You can also use a transformer to copy metadata from metadata keys into the log events themselves. This metadata can include log group name, \n log stream name, account ID and Region.

\n

A transformer for a log group is a series of processors, where each processor applies one type of transformation to the log events\n ingested into this log group. For more information about the available processors to use in a transformer, see \n Processors that you can use.

\n

Having log events in standardized format enables visibility across your applications for your log analysis, reporting, and alarming needs. \n CloudWatch Logs provides transformation for common log types with out-of-the-box transformation templates for major Amazon Web Services log sources such \n as VPC flow logs, Lambda, and Amazon RDS. You can use pre-built transformation templates or create custom transformation policies.

\n

You can create transformers only for the log groups in the Standard log class.

\n

You can have one account-level transformer policy that applies to all log groups in the account. \n Or you can create as many as 20 account-level transformer policies that are each scoped to a subset of log groups with \n the selectionCriteria parameter. If you have multiple\n account-level transformer policies with selection criteria, no two of them can use the same or overlapping log group name prefixes.\n For example, if you have one policy filtered to log groups that start with my-log, you can't have another field index\n policy filtered to my-logpprod or my-logging.

\n

You can also set up a transformer at the log-group level. For more information, see \n PutTransformer. If there is both a \n log-group level transformer created with PutTransformer and an account-level transformer that could apply to the same log \n group, the log group uses only the log-group level transformer. It ignores the account-level transformer.

\n

\n Field index policy\n

\n

You can use field index policies to create indexes on fields found in \n log events in the log group. Creating field indexes can help lower the scan volume for CloudWatch Logs Insights queries that reference\n those fields, because these queries attempt to skip the processing of log events that are known to not match the indexed field.\n Good fields to index are fields that you often need to query for and fields or values that match only a small fraction of the total log events.\n Common examples of indexes\n include request ID, session ID, user IDs, or instance IDs. For more information, see \n Create field indexes to improve query performance and reduce costs\n

\n

To find the fields that are in your log group events, use the \n GetLogGroupFields\n operation.

\n

For example, suppose you have created a field index for requestId. Then, any \n CloudWatch Logs Insights query on that log group that includes requestId = value\n \n or requestId in [value, value, ...] will attempt to process only the log events where\n the indexed field matches the specified value.

\n

Matches of log events to the names of indexed fields are case-sensitive. For example, an indexed field\n of RequestId won't match a log event containing requestId.

\n

You can have one account-level field index policy that applies to all log groups in the account. \n Or you can create as many as 20 account-level field index policies that are each scoped to a subset of log groups with \n the selectionCriteria parameter. If you have multiple\n account-level index policies with selection criteria, no two of them can use the same or overlapping log group name prefixes.\n For example, if you have one policy filtered to log groups that start with my-log, you can't have another field index\n policy filtered to my-logpprod or my-logging.

\n

If you create an account-level field index policy in a monitoring account in cross-account observability, the policy is applied only\n to the monitoring account and not to any source accounts.

\n

If you want to create a field index policy for a single log group, you can use PutIndexPolicy instead of \n PutAccountPolicy. If you do so, that log group will use only that log-group level policy, and will ignore the account-level policy\n that you create with PutAccountPolicy.

" + "smithy.api#documentation": "

Creates an account-level data protection policy, subscription filter policy, or field index policy\n that applies to all log groups \n or a subset of log groups in the account.

\n

To use this operation, you must be signed on with the correct permissions depending on the type of policy that you are creating.

\n \n

\n Data protection policy\n

\n

A data protection policy can help safeguard sensitive \n data that's ingested by your log groups by auditing and masking the sensitive log data. Each account can have only\n one account-level data protection policy.

\n \n

Sensitive data is detected and masked when it is ingested into a log group. When you set a \n data protection policy, log events ingested into the log groups before that time are not masked.

\n
\n

If you use PutAccountPolicy to create a data protection policy for your whole account, it applies to both existing log groups\n and all log groups that are created later in this account. The account-level policy is applied to existing log groups\n with eventual consistency. It might take up to 5 minutes before sensitive data in existing log groups begins to be masked.

\n

By default, when a user views a log event that includes masked data, the sensitive data is replaced by asterisks.\n A user who has the logs:Unmask permission can use a \n GetLogEvents or \n FilterLogEvents\n operation with the unmask parameter set to true to view the unmasked \n log events. Users with the logs:Unmask can also view unmasked data in the CloudWatch Logs\n console by running a CloudWatch Logs Insights query with the unmask query command.

\n

For more information, including a list of types of data that can be audited and masked, see\n Protect sensitive log data with masking.

\n

To use the PutAccountPolicy operation for a data protection policy, you must be signed on with \n the logs:PutDataProtectionPolicy\n and logs:PutAccountPolicy permissions.

\n

The PutAccountPolicy operation applies to all log groups in the account. You can use \n PutDataProtectionPolicy\n to create a data protection policy that applies to just one log group. \n If a log group has its own data protection policy and \n the account also has an account-level data protection policy, then the two policies are cumulative. Any sensitive term\n specified in either policy is masked.

\n

\n Subscription filter policy\n

\n

A subscription filter policy sets up a real-time feed of log events from CloudWatch Logs to other Amazon Web Services services.\n Account-level subscription filter policies apply to both existing log groups and log groups that are created later in \n this account. Supported destinations are Kinesis Data Streams, Firehose, and \n Lambda. When log events are sent to the receiving service, they are Base64 encoded and \n compressed with the GZIP format.

\n

The following destinations are supported for subscription filters:

\n \n

Each account can have one account-level subscription filter policy per Region. \n If you are updating an existing filter, you must specify the correct name in PolicyName.\n To perform a PutAccountPolicy subscription filter operation for any destination except a Lambda \n function, you must also have the iam:PassRole permission.

\n

\n Transformer policy\n

\n

Creates or updates a log transformer policy for your account. You use log transformers to transform log events into\n a different format, making them easier for you to process and analyze. You can also transform logs from different sources into standardized formats that \n contain\n relevant, source-specific information. After you have created a transformer, \n CloudWatch Logs performs this transformation at the time of log ingestion. You can then refer to the transformed versions of the logs during\n operations such as querying with CloudWatch Logs Insights or creating metric filters or subscription filters.

\n

You can also use a transformer to copy metadata from metadata keys into the log events themselves. This metadata can include log group name, \n log stream name, account ID and Region.

\n

A transformer for a log group is a series of processors, where each processor applies one type of transformation to the log events\n ingested into this log group. For more information about the available processors to use in a transformer, see \n Processors that you can use.

\n

Having log events in standardized format enables visibility across your applications for your log analysis, reporting, and alarming needs. \n CloudWatch Logs provides transformation for common log types with out-of-the-box transformation templates for major Amazon Web Services log sources such \n as VPC flow logs, Lambda, and Amazon RDS. You can use pre-built transformation templates or create custom transformation policies.

\n

You can create transformers only for the log groups in the Standard log class.

\n

You can have one account-level transformer policy that applies to all log groups in the account. \n Or you can create as many as 20 account-level transformer policies that are each scoped to a subset of log groups with \n the selectionCriteria parameter. If you have multiple\n account-level transformer policies with selection criteria, no two of them can use the same or overlapping log group name prefixes.\n For example, if you have one policy filtered to log groups that start with my-log, you can't have another field index\n policy filtered to my-logpprod or my-logging.

\n

You can also set up a transformer at the log-group level. For more information, see \n PutTransformer. If there is both a \n log-group level transformer created with PutTransformer and an account-level transformer that could apply to the same log \n group, the log group uses only the log-group level transformer. It ignores the account-level transformer.

\n

\n Field index policy\n

\n

You can use field index policies to create indexes on fields found in \n log events in the log group. Creating field indexes can help lower the scan volume for CloudWatch Logs Insights queries that reference\n those fields, because these queries attempt to skip the processing of log events that are known to not match the indexed field.\n Good fields to index are fields that you often need to query for and fields or values that match only a small fraction of the total log events.\n Common examples of indexes\n include request ID, session ID, user IDs, or instance IDs. For more information, see \n Create field indexes to improve query performance and reduce costs\n

\n

To find the fields that are in your log group events, use the \n GetLogGroupFields\n operation.

\n

For example, suppose you have created a field index for requestId. Then, any \n CloudWatch Logs Insights query on that log group that includes requestId = value\n \n or requestId in [value, value, ...] will attempt to process only the log events where\n the indexed field matches the specified value.

\n

Matches of log events to the names of indexed fields are case-sensitive. For example, an indexed field\n of RequestId won't match a log event containing requestId.

\n

You can have one account-level field index policy that applies to all log groups in the account. \n Or you can create as many as 20 account-level field index policies that are each scoped to a subset of log groups with \n the selectionCriteria parameter. If you have multiple\n account-level index policies with selection criteria, no two of them can use the same or overlapping log group name prefixes.\n For example, if you have one policy filtered to log groups that start with my-log, you can't have another field index\n policy filtered to my-logpprod or my-logging.

\n

If you create an account-level field index policy in a monitoring account in cross-account observability, the policy is applied only\n to the monitoring account and not to any source accounts.

\n

If you want to create a field index policy for a single log group, you can use PutIndexPolicy instead of \n PutAccountPolicy. If you do so, that log group will use only that log-group level policy, and will ignore the account-level policy\n that you create with PutAccountPolicy.

" } }, "com.amazonaws.cloudwatchlogs#PutAccountPolicyRequest": { @@ -9594,7 +9594,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates or updates a logical delivery destination. A delivery destination is an Amazon Web Services resource that represents an \n Amazon Web Services service that logs can be sent to. CloudWatch Logs, Amazon S3, and\n Firehose are supported as logs delivery destinations.

\n

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

\n \n

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You \n can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

\n

Only some Amazon Web Services services support being configured as a delivery source. These services are listed\n as Supported [V2 Permissions] in the table at \n Enabling \n logging from Amazon Web Services services.\n

\n

If you use this operation to update an existing delivery destination, all the current delivery destination parameters are overwritten\n with the new parameter values that you specify.

" + "smithy.api#documentation": "

Creates or updates a logical delivery destination. A delivery destination is an Amazon Web Services resource that represents an \n Amazon Web Services service that logs can be sent to. CloudWatch Logs, Amazon S3, and\n Firehose are supported as logs delivery destinations.

\n

To configure logs delivery between a supported Amazon Web Services service and a destination, you must do the following:

\n \n

You can configure a single delivery source to send logs to multiple destinations by creating multiple deliveries. You \n can also create multiple deliveries to configure multiple delivery sources to send logs to the same delivery destination.

\n

Only some Amazon Web Services services support being configured as a delivery source. These services are listed\n as Supported [V2 Permissions] in the table at \n Enabling \n logging from Amazon Web Services services.\n

\n

If you use this operation to update an existing delivery destination, all the current delivery destination parameters are overwritten\n with the new parameter values that you specify.

" } }, "com.amazonaws.cloudwatchlogs#PutDeliveryDestinationPolicy": { @@ -9759,7 +9759,7 @@ "logType": { "target": "com.amazonaws.cloudwatchlogs#LogType", "traits": { - "smithy.api#documentation": "

Defines the type of log that the source is sending.

\n ", + "smithy.api#documentation": "

Defines the type of log that the source is sending.

\n ", "smithy.api#required": {} } }, @@ -10179,7 +10179,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates or updates a metric filter and associates it with the specified log group. With\n metric filters, you can configure rules to extract metric data from log events ingested\n through PutLogEvents.

\n

The maximum number of metric filters that can be associated with a log group is\n 100.

\n

Using regular expressions to create metric filters is supported. For these filters, \n there is a quota of two regular expression patterns within a single filter pattern. There\n is also a quota of five regular expression patterns per log group.\n For more information about using regular expressions in metric filters, \n see \n Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail.

\n

When you create a metric filter, you can also optionally assign a unit and dimensions\n to the metric that is created.

\n \n

Metrics extracted from log events are charged as custom metrics.\n To prevent unexpected high charges, do not specify high-cardinality fields such as \n IPAddress or requestID as dimensions. Each different value \n found for \n a dimension is treated as a separate metric and accrues charges as a separate custom metric.\n

\n

CloudWatch Logs might disable a metric filter if it generates 1,000 different name/value pairs for\n your specified dimensions within one hour.

\n

You can also set up a billing alarm to alert you if your charges are higher than \n expected. For more information, \n see \n Creating a Billing Alarm to Monitor Your Estimated Amazon Web Services Charges.\n

\n
" + "smithy.api#documentation": "

Creates or updates a metric filter and associates it with the specified log group. With\n metric filters, you can configure rules to extract metric data from log events ingested\n through PutLogEvents.

\n

The maximum number of metric filters that can be associated with a log group is\n 100.

\n

Using regular expressions in filter patterns is supported. For these filters, \n there is a quota of two regular expression patterns within a single filter pattern. There\n is also a quota of five regular expression patterns per log group.\n For more information about using regular expressions in filter patterns, \n see \n Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail.

\n

When you create a metric filter, you can also optionally assign a unit and dimensions\n to the metric that is created.

\n \n

Metrics extracted from log events are charged as custom metrics.\n To prevent unexpected high charges, do not specify high-cardinality fields such as \n IPAddress or requestID as dimensions. Each different value \n found for \n a dimension is treated as a separate metric and accrues charges as a separate custom metric.\n

\n

CloudWatch Logs might disable a metric filter if it generates 1,000 different name/value pairs for\n your specified dimensions within one hour.

\n

You can also set up a billing alarm to alert you if your charges are higher than \n expected. For more information, \n see \n Creating a Billing Alarm to Monitor Your Estimated Amazon Web Services Charges.\n

\n
" } }, "com.amazonaws.cloudwatchlogs#PutMetricFilterRequest": { @@ -10445,7 +10445,7 @@ } ], "traits": { - "smithy.api#documentation": "

Creates or updates a subscription filter and associates it with the specified log\n group. With subscription filters, you can subscribe to a real-time stream of log events\n ingested through PutLogEvents\n and have them delivered to a specific destination. When log events are sent to the receiving\n service, they are Base64 encoded and compressed with the GZIP format.

\n

The following destinations are supported for subscription filters:

\n \n

Each log group can have up to two subscription filters associated with it. If you are\n updating an existing filter, you must specify the correct name in filterName.\n

\n

Using regular expressions to create subscription filters is supported. For these filters, \n there is a quotas of quota of two regular expression patterns within a single filter pattern. There\n is also a quota of five regular expression patterns per log group.\n For more information about using regular expressions in subscription filters, \n see \n Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail.

\n

To perform a PutSubscriptionFilter operation for any destination except a Lambda function, \n you must also have the \n iam:PassRole permission.

" + "smithy.api#documentation": "

Creates or updates a subscription filter and associates it with the specified log\n group. With subscription filters, you can subscribe to a real-time stream of log events\n ingested through PutLogEvents\n and have them delivered to a specific destination. When log events are sent to the receiving\n service, they are Base64 encoded and compressed with the GZIP format.

\n

The following destinations are supported for subscription filters:

\n \n

Each log group can have up to two subscription filters associated with it. If you are\n updating an existing filter, you must specify the correct name in filterName.\n

\n

Using regular expressions in filter patterns is supported. For these filters, \n there is a quotas of quota of two regular expression patterns within a single filter pattern. There\n is also a quota of five regular expression patterns per log group.\n For more information about using regular expressions in filter patterns, \n see \n Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail.

\n

To perform a PutSubscriptionFilter operation for any destination except a Lambda function, \n you must also have the \n iam:PassRole permission.

" } }, "com.amazonaws.cloudwatchlogs#PutSubscriptionFilterRequest": { @@ -11175,7 +11175,7 @@ "suffixPath": { "target": "com.amazonaws.cloudwatchlogs#DeliverySuffixPath", "traits": { - "smithy.api#documentation": "

This string allows re-configuring the S3 object prefix to contain either static or variable sections. The valid variables \n to use in the suffix path will vary by each log source. See ConfigurationTemplate$allowedSuffixPathFields for \n more info on what values are supported in the suffix path for each log source.

" + "smithy.api#documentation": "

This string allows re-configuring the S3 object prefix to contain either static or variable sections. The valid variables \n to use in the suffix path will vary by each log source. To find the values supported for the suffix path for each log source, \n use the DescribeConfigurationTemplates operation and check the \n allowedSuffixPathFields field in the response.

" } }, "enableHiveCompatiblePath": { @@ -11288,7 +11288,7 @@ } }, "traits": { - "smithy.api#documentation": "

his exception is returned if an unknown error occurs during a Live Tail session.

", + "smithy.api#documentation": "

This exception is returned if an unknown error occurs during a Live Tail session.

", "smithy.api#error": "client" } }, diff --git a/codegen/sdk-codegen/aws-models/cognito-identity-provider.json b/codegen/sdk-codegen/aws-models/cognito-identity-provider.json index 172de5b1d84..d623cbe4cd2 100644 --- a/codegen/sdk-codegen/aws-models/cognito-identity-provider.json +++ b/codegen/sdk-codegen/aws-models/cognito-identity-provider.json @@ -569,6 +569,82 @@ } ], "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-1" + ] + } + ], + "endpoint": { + "url": "https://cognito-idp-fips.us-east-1.amazonaws.com", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-east-2" + ] + } + ], + "endpoint": { + "url": "https://cognito-idp-fips.us-east-2.amazonaws.com", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-west-1" + ] + } + ], + "endpoint": { + "url": "https://cognito-idp-fips.us-west-1.amazonaws.com", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "Region" + }, + "us-west-2" + ] + } + ], + "endpoint": { + "url": "https://cognito-idp-fips.us-west-2.amazonaws.com", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, { "conditions": [], "endpoint": { @@ -673,6 +749,31 @@ } ], "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + "aws", + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "name" + ] + } + ] + } + ], + "endpoint": { + "url": "https://cognito-idp.{Region}.amazonaws.com", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, { "conditions": [], "endpoint": { @@ -717,6 +818,32 @@ }, "smithy.rules#endpointTests": { "testCases": [ + { + "documentation": "For region af-south-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.af-south-1.amazonaws.com" + } + }, + "params": { + "Region": "af-south-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region ap-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.ap-east-1.amazonaws.com" + } + }, + "params": { + "Region": "ap-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region ap-northeast-1 with FIPS disabled and DualStack disabled", "expect": { @@ -743,6 +870,19 @@ "UseDualStack": false } }, + { + "documentation": "For region ap-northeast-3 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.ap-northeast-3.amazonaws.com" + } + }, + "params": { + "Region": "ap-northeast-3", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region ap-south-1 with FIPS disabled and DualStack disabled", "expect": { @@ -756,6 +896,19 @@ "UseDualStack": false } }, + { + "documentation": "For region ap-south-2 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.ap-south-2.amazonaws.com" + } + }, + "params": { + "Region": "ap-south-2", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region ap-southeast-1 with FIPS disabled and DualStack disabled", "expect": { @@ -782,6 +935,32 @@ "UseDualStack": false } }, + { + "documentation": "For region ap-southeast-3 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.ap-southeast-3.amazonaws.com" + } + }, + "params": { + "Region": "ap-southeast-3", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region ap-southeast-4 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.ap-southeast-4.amazonaws.com" + } + }, + "params": { + "Region": "ap-southeast-4", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region ca-central-1 with FIPS disabled and DualStack disabled", "expect": { @@ -795,6 +974,19 @@ "UseDualStack": false } }, + { + "documentation": "For region ca-west-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.ca-west-1.amazonaws.com" + } + }, + "params": { + "Region": "ca-west-1", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region eu-central-1 with FIPS disabled and DualStack disabled", "expect": { @@ -808,6 +1000,19 @@ "UseDualStack": false } }, + { + "documentation": "For region eu-central-2 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.eu-central-2.amazonaws.com" + } + }, + "params": { + "Region": "eu-central-2", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region eu-north-1 with FIPS disabled and DualStack disabled", "expect": { @@ -821,6 +1026,32 @@ "UseDualStack": false } }, + { + "documentation": "For region eu-south-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.eu-south-1.amazonaws.com" + } + }, + "params": { + "Region": "eu-south-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region eu-south-2 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.eu-south-2.amazonaws.com" + } + }, + "params": { + "Region": "eu-south-2", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region eu-west-1 with FIPS disabled and DualStack disabled", "expect": { @@ -860,6 +1091,32 @@ "UseDualStack": false } }, + { + "documentation": "For region il-central-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.il-central-1.amazonaws.com" + } + }, + "params": { + "Region": "il-central-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region me-central-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp.me-central-1.amazonaws.com" + } + }, + "params": { + "Region": "me-central-1", + "UseFIPS": false, + "UseDualStack": false + } + }, { "documentation": "For region me-south-1 with FIPS disabled and DualStack disabled", "expect": { @@ -912,6 +1169,19 @@ "UseDualStack": false } }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp-fips.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, { "documentation": "For region us-east-2 with FIPS disabled and DualStack disabled", "expect": { @@ -938,6 +1208,19 @@ "UseDualStack": false } }, + { + "documentation": "For region us-east-2 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp-fips.us-east-2.amazonaws.com" + } + }, + "params": { + "Region": "us-east-2", + "UseFIPS": true, + "UseDualStack": true + } + }, { "documentation": "For region us-west-1 with FIPS disabled and DualStack disabled", "expect": { @@ -964,6 +1247,19 @@ "UseDualStack": false } }, + { + "documentation": "For region us-west-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://cognito-idp-fips.us-west-1.amazonaws.com" + } + }, + "params": { + "Region": "us-west-1", + "UseFIPS": true, + "UseDualStack": true + } + }, { "documentation": "For region us-west-2 with FIPS disabled and DualStack disabled", "expect": { @@ -991,14 +1287,14 @@ } }, { - "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "documentation": "For region us-west-2 with FIPS enabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://cognito-idp-fips.us-east-1.api.aws" + "url": "https://cognito-idp-fips.us-west-2.amazonaws.com" } }, "params": { - "Region": "us-east-1", + "Region": "us-west-2", "UseFIPS": true, "UseDualStack": true } @@ -1007,7 +1303,7 @@ "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://cognito-idp.us-east-1.api.aws" + "url": "https://cognito-idp.us-east-1.amazonaws.com" } }, "params": { diff --git a/codegen/sdk-codegen/aws-models/connect.json b/codegen/sdk-codegen/aws-models/connect.json index 0dd364d082b..7aeb9c9d136 100644 --- a/codegen/sdk-codegen/aws-models/connect.json +++ b/codegen/sdk-codegen/aws-models/connect.json @@ -1057,6 +1057,9 @@ { "target": "com.amazonaws.connect#DeleteContactFlowModule" }, + { + "target": "com.amazonaws.connect#DeleteContactFlowVersion" + }, { "target": "com.amazonaws.connect#DeleteEmailAddress" }, @@ -3734,7 +3737,7 @@ } ], "traits": { - "smithy.api#documentation": "

>Associates a set of proficiencies with a user.

", + "smithy.api#documentation": "

Associates a set of proficiencies with a user.

", "smithy.api#http": { "method": "POST", "uri": "/users/{InstanceId}/{UserId}/associate-proficiencies", @@ -6463,6 +6466,12 @@ "traits": { "smithy.api#enumValue": "QUEUE_TRANSFER" } + }, + "CAMPAIGN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CAMPAIGN" + } } } }, @@ -7417,7 +7426,7 @@ "FlowContentSha256": { "target": "com.amazonaws.connect#FlowContentSha256", "traits": { - "smithy.api#documentation": "

Indicates the checksum value of the flow content.

" + "smithy.api#documentation": "

Indicates the checksum value of the latest published flow content.

" } } }, @@ -7457,7 +7466,7 @@ } ], "traits": { - "smithy.api#documentation": "

Publishes a new version of the flow provided. Versions are immutable and monotonically\n increasing. If a version of the same flow content already exists, no new version is created and\n instead the existing version number is returned. If the FlowContentSha256 provided\n is different from the FlowContentSha256 of the $LATEST published flow\n content, then an error is returned. This API only supports creating versions for flows of type\n Campaign.

", + "smithy.api#documentation": "

Publishes a new version of the flow provided. Versions are immutable and monotonically\n increasing. If the FlowContentSha256 provided is different from the\n FlowContentSha256 of the $LATEST published flow content, then an error\n is returned. This API only supports creating versions for flows of type\n Campaign.

", "smithy.api#http": { "method": "PUT", "uri": "/contact-flows/{InstanceId}/{ContactFlowId}/version", @@ -7496,6 +7505,12 @@ "smithy.api#documentation": "

Indicates the checksum value of the flow content.

" } }, + "ContactFlowVersion": { + "target": "com.amazonaws.connect#ResourceVersion", + "traits": { + "smithy.api#documentation": "

The identifier of the flow version.

" + } + }, "LastModifiedTime": { "target": "com.amazonaws.connect#Timestamp", "traits": { @@ -11112,6 +11127,82 @@ "smithy.api#output": {} } }, + "com.amazonaws.connect#DeleteContactFlowVersion": { + "type": "operation", + "input": { + "target": "com.amazonaws.connect#DeleteContactFlowVersionRequest" + }, + "output": { + "target": "com.amazonaws.connect#DeleteContactFlowVersionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.connect#AccessDeniedException" + }, + { + "target": "com.amazonaws.connect#InternalServiceException" + }, + { + "target": "com.amazonaws.connect#InvalidParameterException" + }, + { + "target": "com.amazonaws.connect#InvalidRequestException" + }, + { + "target": "com.amazonaws.connect#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.connect#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes the particular version specified in flow version identifier.

", + "smithy.api#http": { + "method": "DELETE", + "uri": "/contact-flows/{InstanceId}/{ContactFlowId}/version/{ContactFlowVersion}", + "code": 200 + } + } + }, + "com.amazonaws.connect#DeleteContactFlowVersionRequest": { + "type": "structure", + "members": { + "InstanceId": { + "target": "com.amazonaws.connect#InstanceId", + "traits": { + "smithy.api#documentation": "

The identifier of the Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ContactFlowId": { + "target": "com.amazonaws.connect#ARN", + "traits": { + "smithy.api#documentation": "

The identifier of the flow.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ContactFlowVersion": { + "target": "com.amazonaws.connect#ResourceVersion", + "traits": { + "smithy.api#documentation": "

The identifier of the flow version.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.connect#DeleteContactFlowVersionResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.connect#DeleteEmailAddress": { "type": "operation", "input": { @@ -11695,7 +11786,7 @@ } ], "traits": { - "smithy.api#documentation": "

Deletes a queue. It isn't possible to delete a queue by using the Amazon Connect admin website.

", + "smithy.api#documentation": "

Deletes a queue.

", "smithy.api#http": { "method": "DELETE", "uri": "/queues/{InstanceId}/{QueueId}", @@ -12797,7 +12888,7 @@ } ], "traits": { - "smithy.api#documentation": "

Describes the specified flow.

\n

You can also create and update flows using the Amazon Connect\n Flow language.

\n

Use the $SAVED alias in the request to describe the SAVED content\n of a Flow. For example, arn:aws:.../contact-flow/{id}:$SAVED. After a flow is\n published, $SAVED needs to be supplied to view saved content that has not been\n published.

\n

In the response, Status indicates the flow status as either\n SAVED or PUBLISHED. The PUBLISHED status will initiate\n validation on the content. SAVED does not initiate validation of the content.\n SAVED | PUBLISHED\n

", + "smithy.api#documentation": "

Describes the specified flow.

\n

You can also create and update flows using the Amazon Connect\n Flow language.

\n

Use the $SAVED alias in the request to describe the SAVED content\n of a Flow. For example, arn:aws:.../contact-flow/{id}:$SAVED. After a flow is\n published, $SAVED needs to be supplied to view saved content that has not been\n published.

\n

Use arn:aws:.../contact-flow/{id}:{version} to retrieve the content of a\n specific flow version.

\n

In the response, Status indicates the flow status as either\n SAVED or PUBLISHED. The PUBLISHED status will initiate\n validation on the content. SAVED does not initiate validation of the content.\n SAVED | PUBLISHED\n

", "smithy.api#http": { "method": "GET", "uri": "/contact-flows/{InstanceId}/{ContactFlowId}", diff --git a/codegen/sdk-codegen/aws-models/emr-serverless.json b/codegen/sdk-codegen/aws-models/emr-serverless.json index 14a6a9b4112..45371c628f0 100644 --- a/codegen/sdk-codegen/aws-models/emr-serverless.json +++ b/codegen/sdk-codegen/aws-models/emr-serverless.json @@ -1651,7 +1651,7 @@ "traits": { "smithy.api#length": { "min": 1, - "max": 256 + "max": 4096 }, "smithy.api#pattern": ".*\\S.*", "smithy.api#sensitive": {} diff --git a/codegen/sdk-codegen/aws-models/iotsitewise.json b/codegen/sdk-codegen/aws-models/iotsitewise.json index cdfbb572c3a..0adcbb1c462 100644 --- a/codegen/sdk-codegen/aws-models/iotsitewise.json +++ b/codegen/sdk-codegen/aws-models/iotsitewise.json @@ -4293,6 +4293,12 @@ "com.amazonaws.iotsitewise#BatchPutAssetPropertyValueRequest": { "type": "structure", "members": { + "enablePartialEntryProcessing": { + "target": "com.amazonaws.iotsitewise#BooleanValue", + "traits": { + "smithy.api#documentation": "

This setting enables partial ingestion at entry-level. If set to true, we ingest all TQVs not resulting in an error. If set to \n false, an invalid TQV fails ingestion of the entire entry that contains it.

" + } + }, "entries": { "target": "com.amazonaws.iotsitewise#PutAssetPropertyValueEntries", "traits": { @@ -4320,6 +4326,9 @@ "smithy.api#output": {} } }, + "com.amazonaws.iotsitewise#BooleanValue": { + "type": "boolean" + }, "com.amazonaws.iotsitewise#Bucket": { "type": "string", "traits": { @@ -9183,6 +9192,12 @@ "traits": { "smithy.api#documentation": "

Set this period to specify how long your data is stored in the warm tier before it is deleted. You can set this only if cold tier is enabled.

" } + }, + "disallowIngestNullNaN": { + "target": "com.amazonaws.iotsitewise#DisallowIngestNullNaN", + "traits": { + "smithy.api#documentation": "

Describes the configuration for ingesting NULL and NaN data. \n By default the feature is allowed. The feature is disallowed if the value is true.

" + } } }, "traits": { @@ -9377,6 +9392,9 @@ "target": "com.amazonaws.iotsitewise#DetailedError" } }, + "com.amazonaws.iotsitewise#DisallowIngestNullNaN": { + "type": "boolean" + }, "com.amazonaws.iotsitewise#DisassociateAssets": { "type": "operation", "input": { @@ -13454,12 +13472,7 @@ "type": "boolean" }, "com.amazonaws.iotsitewise#NumberOfDays": { - "type": "integer", - "traits": { - "smithy.api#range": { - "min": 30 - } - } + "type": "integer" }, "com.amazonaws.iotsitewise#Offset": { "type": "string", @@ -14009,6 +14022,21 @@ "com.amazonaws.iotsitewise#PropertyValueIntegerValue": { "type": "integer" }, + "com.amazonaws.iotsitewise#PropertyValueNullValue": { + "type": "structure", + "members": { + "valueType": { + "target": "com.amazonaws.iotsitewise#RawValueType", + "traits": { + "smithy.api#documentation": "

The type of null asset property data.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

The value type of null asset property data with BAD and UNCERTAIN qualities.

" + } + }, "com.amazonaws.iotsitewise#PropertyValueStringValue": { "type": "string" }, @@ -14282,6 +14310,12 @@ "traits": { "smithy.api#documentation": "

Set this period to specify how long your data is stored in the warm tier before it is deleted. You can set this only if cold tier is enabled.

" } + }, + "disallowIngestNullNaN": { + "target": "com.amazonaws.iotsitewise#DisallowIngestNullNaN", + "traits": { + "smithy.api#documentation": "

Describes the configuration for ingesting NULL and NaN data. \n By default the feature is allowed. The feature is disallowed if the value is true.

" + } } }, "traits": { @@ -14330,6 +14364,12 @@ "traits": { "smithy.api#documentation": "

Set this period to specify how long your data is stored in the warm tier before it is deleted. You can set this only if cold tier is enabled.

" } + }, + "disallowIngestNullNaN": { + "target": "com.amazonaws.iotsitewise#DisallowIngestNullNaN", + "traits": { + "smithy.api#documentation": "

Describes the configuration for ingesting NULL and NaN data. \n By default the feature is allowed. The feature is disallowed if the value is true.

" + } } }, "traits": { @@ -14393,6 +14433,41 @@ "smithy.api#httpError": 400 } }, + "com.amazonaws.iotsitewise#RawValueType": { + "type": "enum", + "members": { + "DOUBLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "D" + } + }, + "BOOLEAN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "B" + } + }, + "STRING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "S" + } + }, + "INTEGER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "I" + } + }, + "UNKNOWN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "U" + } + } + } + }, "com.amazonaws.iotsitewise#Reference": { "type": "structure", "members": { @@ -16455,7 +16530,7 @@ "stringValue": { "target": "com.amazonaws.iotsitewise#PropertyValueStringValue", "traits": { - "smithy.api#documentation": "

Asset property data of type string (sequence of characters).

" + "smithy.api#documentation": "

\n Asset property data of type string (sequence of characters).\n The allowed pattern: \"^$|[^\\u0000-\\u001F\\u007F]+\". The max length is 1024.\n

" } }, "integerValue": { @@ -16467,7 +16542,7 @@ "doubleValue": { "target": "com.amazonaws.iotsitewise#PropertyValueDoubleValue", "traits": { - "smithy.api#documentation": "

Asset property data of type double (floating point number).

" + "smithy.api#documentation": "

\n Asset property data of type double (floating point number). The min value is -10^10. \n The max value is 10^10. Double.NaN is allowed.\n

" } }, "booleanValue": { @@ -16475,6 +16550,12 @@ "traits": { "smithy.api#documentation": "

Asset property data of type Boolean (true or false).

" } + }, + "nullValue": { + "target": "com.amazonaws.iotsitewise#PropertyValueNullValue", + "traits": { + "smithy.api#documentation": "

The type of null asset property data with BAD and UNCERTAIN qualities.

" + } } }, "traits": { diff --git a/codegen/sdk-codegen/aws-models/quicksight.json b/codegen/sdk-codegen/aws-models/quicksight.json index 8f68cab4baa..f8962fea7dc 100644 --- a/codegen/sdk-codegen/aws-models/quicksight.json +++ b/codegen/sdk-codegen/aws-models/quicksight.json @@ -24181,6 +24181,23 @@ "smithy.api#documentation": "

The configuration of destination parameter values.

\n

This is a union type structure. For this structure to be valid, only one of the attributes can be defined.

" } }, + "com.amazonaws.quicksight#DigitGroupingStyle": { + "type": "enum", + "members": { + "DEFAULT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEFAULT" + } + }, + "LAKHS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LAKHS" + } + } + } + }, "com.amazonaws.quicksight#DimensionField": { "type": "structure", "members": { @@ -39032,6 +39049,18 @@ "traits": { "smithy.api#enumValue": "TRILLIONS" } + }, + "LAKHS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LAKHS" + } + }, + "CRORES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRORES" + } } } }, @@ -51628,7 +51657,7 @@ "traits": { "smithy.api#length": { "min": 0, - "max": 100 + "max": 201 } } }, @@ -51971,11 +52000,23 @@ } } }, + "com.amazonaws.quicksight#TableUnaggregatedFieldList": { + "type": "list", + "member": { + "target": "com.amazonaws.quicksight#UnaggregatedField" + }, + "traits": { + "smithy.api#length": { + "min": 0, + "max": 201 + } + } + }, "com.amazonaws.quicksight#TableUnaggregatedFieldWells": { "type": "structure", "members": { "Values": { - "target": "com.amazonaws.quicksight#UnaggregatedFieldList", + "target": "com.amazonaws.quicksight#TableUnaggregatedFieldList", "traits": { "smithy.api#documentation": "

The values field well for a pivot table. Values are unaggregated for an unaggregated table.

" } @@ -53200,6 +53241,12 @@ "traits": { "smithy.api#documentation": "

Determines the visibility of the thousands separator.

" } + }, + "GroupingStyle": { + "target": "com.amazonaws.quicksight#DigitGroupingStyle", + "traits": { + "smithy.api#documentation": "

Determines the way numbers are styled to accommodate different readability standards. The DEFAULT value uses the standard international grouping system and groups numbers by the thousands. The LAKHS value uses the Indian numbering system and groups numbers by lakhs and crores.

" + } } }, "traits": { diff --git a/codegen/sdk-codegen/aws-models/sns.json b/codegen/sdk-codegen/aws-models/sns.json index 7ee31650084..282103c5878 100644 --- a/codegen/sdk-codegen/aws-models/sns.json +++ b/codegen/sdk-codegen/aws-models/sns.json @@ -1794,7 +1794,7 @@ "Attributes": { "target": "com.amazonaws.sns#TopicAttributesMap", "traits": { - "smithy.api#documentation": "

A map of attributes with their corresponding values.

\n

The following lists names, descriptions, and values of the special request parameters\n that the CreateTopic action uses:

\n \n

The following attribute applies only to server-side\n encryption:

\n \n

The following attributes apply only to FIFO topics:

\n " + "smithy.api#documentation": "

A map of attributes with their corresponding values.

\n

The following lists names, descriptions, and values of the special request parameters\n that the CreateTopic action uses:

\n \n

The following attribute applies only to server-side\n encryption:

\n \n

The following attributes apply only to FIFO topics:

\n \n " } }, "Tags": { @@ -3947,7 +3947,7 @@ "MessageDeduplicationId": { "target": "com.amazonaws.sns#String", "traits": { - "smithy.api#documentation": "

This parameter applies only to FIFO (first-in-first-out) topics.

\n

The token used for deduplication of messages within a 5-minute minimum deduplication\n interval. If a message with a particular MessageDeduplicationId is sent\n successfully, subsequent messages with the same MessageDeduplicationId are\n accepted successfully but aren't delivered.

\n \n \n

The MessageDeduplicationId is available to the consumer of the\n message (this can be useful for troubleshooting delivery issues).

\n

If a message is sent successfully but the acknowledgement is lost and the message\n is resent with the same MessageDeduplicationId after the deduplication\n interval, Amazon SNS can't detect duplicate messages.

\n

Amazon SNS continues to keep track of the message deduplication ID even after the\n message is received and deleted.

\n
\n

The length of MessageDeduplicationId is 128 characters.

\n

\n MessageDeduplicationId can contain alphanumeric characters (a-z,\n A-Z, 0-9) and punctuation\n (!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~).

" + "smithy.api#documentation": "

This parameter applies only to FIFO (first-in-first-out) topics.

\n \n \n

The MessageDeduplicationId is available to the consumer of the\n message (this can be useful for troubleshooting delivery issues).

\n

If a message is sent successfully but the acknowledgement is lost and the message\n is resent with the same MessageDeduplicationId after the deduplication\n interval, Amazon SNS can't detect duplicate messages.

\n

Amazon SNS continues to keep track of the message deduplication ID even after the\n message is received and deleted.

\n
" } }, "MessageGroupId": { @@ -4068,7 +4068,7 @@ "MessageDeduplicationId": { "target": "com.amazonaws.sns#String", "traits": { - "smithy.api#documentation": "

This parameter applies only to FIFO (first-in-first-out) topics. The\n MessageDeduplicationId can contain up to 128 alphanumeric characters\n (a-z, A-Z, 0-9) and punctuation\n (!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~).

\n

Every message must have a unique MessageDeduplicationId, which is a token\n used for deduplication of sent messages. If a message with a particular\n MessageDeduplicationId is sent successfully, any message sent with the\n same MessageDeduplicationId during the 5-minute deduplication interval is\n treated as a duplicate.

\n

If the topic has ContentBasedDeduplication set, the system generates a\n MessageDeduplicationId based on the contents of the message. Your\n MessageDeduplicationId overrides the generated one.

" + "smithy.api#documentation": "" } }, "MessageGroupId": { @@ -4561,7 +4561,7 @@ "AttributeName": { "target": "com.amazonaws.sns#attributeName", "traits": { - "smithy.api#documentation": "

A map of attributes with their corresponding values.

\n

The following lists the names, descriptions, and values of the special request\n parameters that the SetTopicAttributes action uses:

\n \n \n

The SuccessFeedbackRoleArn and FailureFeedbackRoleArn\n attributes are used to give Amazon SNS write access to use CloudWatch Logs on your\n behalf. The SuccessFeedbackSampleRate attribute is for specifying the\n sample rate percentage (0-100) of successfully delivered messages. After you\n configure the FailureFeedbackRoleArn attribute, then all failed message\n deliveries generate CloudWatch Logs.

\n
\n

The following attribute applies only to server-side-encryption:

\n \n

The following attribute applies only to FIFO topics:

\n ", + "smithy.api#documentation": "

A map of attributes with their corresponding values.

\n

The following lists the names, descriptions, and values of the special request\n parameters that the SetTopicAttributes action uses:

\n \n \n

The SuccessFeedbackRoleArn and FailureFeedbackRoleArn\n attributes are used to give Amazon SNS write access to use CloudWatch Logs on your\n behalf. The SuccessFeedbackSampleRate attribute is for specifying the\n sample rate percentage (0-100) of successfully delivered messages. After you\n configure the FailureFeedbackRoleArn attribute, then all failed message\n deliveries generate CloudWatch Logs.

\n
\n

The following attribute applies only to server-side-encryption:

\n \n

The following attribute applies only to FIFO topics:

\n \n ", "smithy.api#required": {} } }, diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpChecksumGenerator.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpChecksumGenerator.java index d2bbbc080f9..fae961e343f 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpChecksumGenerator.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsHttpChecksumGenerator.java @@ -15,9 +15,11 @@ import software.amazon.smithy.go.codegen.GoCodegenPlugin; import software.amazon.smithy.go.codegen.GoDelegator; import software.amazon.smithy.go.codegen.GoSettings; +import software.amazon.smithy.go.codegen.GoUniverseTypes; import software.amazon.smithy.go.codegen.GoWriter; import software.amazon.smithy.go.codegen.SmithyGoDependency; import software.amazon.smithy.go.codegen.SymbolUtils; +import software.amazon.smithy.go.codegen.integration.ConfigField; import software.amazon.smithy.go.codegen.integration.GoIntegration; import software.amazon.smithy.go.codegen.integration.MiddlewareRegistrar; import software.amazon.smithy.go.codegen.integration.RuntimeClientPlugin; @@ -113,6 +115,18 @@ public void processFinalizedModel(GoSettings settings, Model model) { .useClientOptions() .build()) .build()); + + var outputChecksumConfigs = RuntimeClientPlugin.builder() + .servicePredicate(AwsHttpChecksumGenerator::hasOutputChecksumTrait) + .addConfigField( + ConfigField.builder() + .name("DisableLogOutputChecksumValidationSkipped") + .type(GoUniverseTypes.Bool) + .documentation("Disables logging when the client skips output checksum validation due to lack of algorithm support.") + .build() + ) + .build(); + runtimeClientPlugins.add(outputChecksumConfigs); } } @@ -345,8 +359,8 @@ private void writeOutputMiddlewareHelper( ResponseChecksumValidation: options.ResponseChecksumValidation, ValidationAlgorithms: $L, IgnoreMultipartValidation: $L, - LogValidationSkipped: true, - LogMultipartValidationSkipped: true, + LogValidationSkipped: !options.DisableLogOutputChecksumValidationSkipped, + LogMultipartValidationSkipped: !options.DisableLogOutputChecksumValidationSkipped, })""", SymbolUtils.createValueSymbolBuilder("AddOutputMiddleware", AwsGoDependency.SERVICE_INTERNAL_CHECKSUM).build(), diff --git a/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json b/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json index 1bdb751b5bb..bae1e8fe16c 100644 --- a/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json +++ b/codegen/smithy-aws-go-codegen/src/main/resources/software/amazon/smithy/aws/go/codegen/endpoints.json @@ -8757,6 +8757,13 @@ "deprecated" : true, "hostname" : "elasticfilesystem-fips.me-south-1.amazonaws.com" }, + "fips-mx-central-1" : { + "credentialScope" : { + "region" : "mx-central-1" + }, + "deprecated" : true, + "hostname" : "elasticfilesystem-fips.mx-central-1.amazonaws.com" + }, "fips-sa-east-1" : { "credentialScope" : { "region" : "sa-east-1" @@ -8810,6 +8817,12 @@ "tags" : [ "fips" ] } ] }, + "mx-central-1" : { + "variants" : [ { + "hostname" : "elasticfilesystem-fips.mx-central-1.amazonaws.com", + "tags" : [ "fips" ] + } ] + }, "sa-east-1" : { "variants" : [ { "hostname" : "elasticfilesystem-fips.sa-east-1.amazonaws.com", diff --git a/service/batch/CHANGELOG.md b/service/batch/CHANGELOG.md index b8aa4c034f4..d977f13c845 100644 --- a/service/batch/CHANGELOG.md +++ b/service/batch/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.49.7 (2025-01-21) + +* **Documentation**: Documentation-only update: clarified the description of the shareDecaySeconds parameter of the FairsharePolicy data type, clarified the description of the priority parameter of the JobQueueDetail data type. + # v1.49.6 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/batch/go_module_metadata.go b/service/batch/go_module_metadata.go index 74a7eb533a3..bcb6d3651f2 100644 --- a/service/batch/go_module_metadata.go +++ b/service/batch/go_module_metadata.go @@ -3,4 +3,4 @@ package batch // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.49.6" +const goModuleVersion = "1.49.7" diff --git a/service/batch/types/types.go b/service/batch/types/types.go index a8c565a1850..9f19664c649 100644 --- a/service/batch/types/types.go +++ b/service/batch/types/types.go @@ -2607,10 +2607,15 @@ type FairsharePolicy struct { ComputeReservation *int32 // The amount of time (in seconds) to use to calculate a fair share percentage for - // each fair share identifier in use. A value of zero (0) indicates that only - // current usage is measured. The decay allows for more recently run jobs to have - // more weight than jobs that ran earlier. The maximum supported value is 604800 (1 + // each fair share identifier in use. A value of zero (0) indicates the default + // minimum time window (600 seconds). The maximum supported value is 604800 (1 // week). + // + // The decay allows for more recently run jobs to have more weight than jobs that + // ran earlier. Consider adjusting this number if you have jobs that (on average) + // run longer than ten minutes, or a large difference in job count or job run times + // between share identifiers, and the allocation of resources doesn’t meet your + // needs. ShareDecaySeconds *int32 // An array of SharedIdentifier objects that contain the weights for the fair @@ -2979,13 +2984,27 @@ type JobQueueDetail struct { // This member is required. JobQueueName *string - // The priority of the job queue. Job queues with a higher priority (or a higher - // integer value for the priority parameter) are evaluated first when associated - // with the same compute environment. Priority is determined in descending order. - // For example, a job queue with a priority value of 10 is given scheduling - // preference over a job queue with a priority value of 1 . All of the compute - // environments must be either Amazon EC2 ( EC2 or SPOT ) or Fargate ( FARGATE or - // FARGATE_SPOT ). Amazon EC2 and Fargate compute environments can't be mixed. + // The priority of the job queue. Job queue priority determines the order that job + // queues are evaluated when multiple queues dispatch jobs within a shared compute + // environment. A higher value for priority indicates a higher priority. Queues + // are evaluated in cycles, in descending order by priority. For example, a job + // queue with a priority value of 10 is evaluated before a queue with a priority + // value of 1 . All of the compute environments must be either Amazon EC2 ( EC2 or + // SPOT ) or Fargate ( FARGATE or FARGATE_SPOT ). Amazon EC2 and Fargate compute + // environments can't be mixed. + // + // Job queue priority doesn't guarantee that a particular job executes before a + // job in a lower priority queue. Jobs added to higher priority queues during the + // queue evaluation cycle might not be evaluated until the next cycle. A job is + // dispatched from a queue only if resources are available when the queue is + // evaluated. If there are insufficient resources available at that time, the cycle + // proceeds to the next queue. This means that jobs added to higher priority queues + // might have to wait for jobs in multiple lower priority queues to complete before + // they are dispatched. You can use job dependencies to control the order for jobs + // from queues with different priorities. For more information, see [Job Dependencies]in the Batch + // User Guide. + // + // [Job Dependencies]: https://docs.aws.amazon.com/batch/latest/userguide/job_dependencies.html // // This member is required. Priority *int32 @@ -3244,7 +3263,7 @@ type LaunchTemplateSpecificationOverride struct { // launchTemplateId as well. LaunchTemplateName *string - // The instance type or family that this this override launch template should be + // The instance type or family that this override launch template should be // applied to. // // This parameter is required when defining a launch template override. @@ -4267,8 +4286,8 @@ type TaskContainerProperties struct { // A list of containers that this container depends on. DependsOn []TaskContainerDependency - // The environment variables to pass to a container. This parameter maps to Env - // inthe [Create a container]section of the [Docker Remote API] and the --env parameter to [docker run]. + // The environment variables to pass to a container. This parameter maps to Env in + // the [Create a container]section of the [Docker Remote API] and the --env parameter to [docker run]. // // We don't recommend using plaintext environment variables for sensitive // information, such as credential data. diff --git a/service/cloudwatchlogs/CHANGELOG.md b/service/cloudwatchlogs/CHANGELOG.md index a56580e33de..2b7df95d4c8 100644 --- a/service/cloudwatchlogs/CHANGELOG.md +++ b/service/cloudwatchlogs/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.45.7 (2025-01-21) + +* **Documentation**: Documentation-only update to address doc errors + # v1.45.6 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/cloudwatchlogs/api_op_AssociateKmsKey.go b/service/cloudwatchlogs/api_op_AssociateKmsKey.go index 5d912014e0b..e537e7a3c2c 100644 --- a/service/cloudwatchlogs/api_op_AssociateKmsKey.go +++ b/service/cloudwatchlogs/api_op_AssociateKmsKey.go @@ -17,9 +17,9 @@ import ( // the resourceIdentifier parameter. You can't specify both of those parameters in // the same operation. // -// - Specify the logGroupName parameter to cause all log events stored in the log -// group to be encrypted with that key. Only the log events ingested after the key -// is associated are encrypted with that key. +// - Specify the logGroupName parameter to cause log events ingested into that +// log group to be encrypted with that key. Only the log events ingested after the +// key is associated are encrypted with that key. // // Associating a KMS key with a log group overrides any existing associations // diff --git a/service/cloudwatchlogs/api_op_CreateExportTask.go b/service/cloudwatchlogs/api_op_CreateExportTask.go index eb5e12a8440..86132dbe70e 100644 --- a/service/cloudwatchlogs/api_op_CreateExportTask.go +++ b/service/cloudwatchlogs/api_op_CreateExportTask.go @@ -31,11 +31,16 @@ import ( // same S3 bucket. To separate log data for each export task, specify a prefix to // be used as the Amazon S3 key prefix for all exported objects. // +// We recommend that you don't regularly export to Amazon S3 as a way to +// continuously archive your logs. For that use case, we instaed recommend that you +// use subscriptions. For more information about subscriptions, see [Real-time processing of log data with subscriptions]. +// // Time-based sorting on chunks of log data inside an exported file is not // guaranteed. You can sort the exported log field data by using Linux utilities. // // [CancelExportTask]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CancelExportTask.html // [DescribeExportTasks]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DescribeExportTasks.html +// [Real-time processing of log data with subscriptions]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html func (c *Client) CreateExportTask(ctx context.Context, params *CreateExportTaskInput, optFns ...func(*Options)) (*CreateExportTaskOutput, error) { if params == nil { params = &CreateExportTaskInput{} diff --git a/service/cloudwatchlogs/api_op_DeleteDelivery.go b/service/cloudwatchlogs/api_op_DeleteDelivery.go index dd96f20c951..20b7f7e4290 100644 --- a/service/cloudwatchlogs/api_op_DeleteDelivery.go +++ b/service/cloudwatchlogs/api_op_DeleteDelivery.go @@ -10,7 +10,7 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Deletes s delivery. A delivery is a connection between a logical delivery +// Deletes a delivery. A delivery is a connection between a logical delivery // source and a logical delivery destination. Deleting a delivery only deletes the // connection between the delivery source and delivery destination. It does not // delete the delivery destination or the delivery source. diff --git a/service/cloudwatchlogs/api_op_DescribeAccountPolicies.go b/service/cloudwatchlogs/api_op_DescribeAccountPolicies.go index f88b294196e..62194fdc80a 100644 --- a/service/cloudwatchlogs/api_op_DescribeAccountPolicies.go +++ b/service/cloudwatchlogs/api_op_DescribeAccountPolicies.go @@ -12,6 +12,21 @@ import ( ) // Returns a list of all CloudWatch Logs account policies in the account. +// +// To use this operation, you must be signed on with the correct permissions +// depending on the type of policy that you are retrieving information for. +// +// - To see data protection policies, you must have the +// logs:GetDataProtectionPolicy and logs:DescribeAccountPolicies permissions. +// +// - To see subscription filter policies, you must have the +// logs:DescrubeSubscriptionFilters and logs:DescribeAccountPolicies permissions. +// +// - To see transformer policies, you must have the logs:GetTransformer and +// logs:DescribeAccountPolicies permissions. +// +// - To see field index policies, you must have the logs:DescribeIndexPolicies +// and logs:DescribeAccountPolicies permissions. func (c *Client) DescribeAccountPolicies(ctx context.Context, params *DescribeAccountPoliciesInput, optFns ...func(*Options)) (*DescribeAccountPoliciesOutput, error) { if params == nil { params = &DescribeAccountPoliciesInput{} diff --git a/service/cloudwatchlogs/api_op_DescribeLogStreams.go b/service/cloudwatchlogs/api_op_DescribeLogStreams.go index f3c872f2b78..3c4642bbf6e 100644 --- a/service/cloudwatchlogs/api_op_DescribeLogStreams.go +++ b/service/cloudwatchlogs/api_op_DescribeLogStreams.go @@ -19,7 +19,7 @@ import ( // logGroupName . You must include one of these two parameters, but you can't // include both. // -// This operation has a limit of five transactions per second, after which +// This operation has a limit of 25 transactions per second, after which // transactions are throttled. // // If you are using CloudWatch cross-account observability, you can use this diff --git a/service/cloudwatchlogs/api_op_PutAccountPolicy.go b/service/cloudwatchlogs/api_op_PutAccountPolicy.go index 4c201fb79e7..7d8407b9ab4 100644 --- a/service/cloudwatchlogs/api_op_PutAccountPolicy.go +++ b/service/cloudwatchlogs/api_op_PutAccountPolicy.go @@ -15,6 +15,21 @@ import ( // field index policy that applies to all log groups or a subset of log groups in // the account. // +// To use this operation, you must be signed on with the correct permissions +// depending on the type of policy that you are creating. +// +// - To create a data protection policy, you must have the +// logs:PutDataProtectionPolicy and logs:PutAccountPolicy permissions. +// +// - To create a subscription filter policy, you must have the +// logs:PutSubscriptionFilter and logs:PutccountPolicy permissions. +// +// - To create a transformer policy, you must have the logs:PutTransformer and +// logs:PutAccountPolicy permissions. +// +// - To create a field index policy, you must have the logs:PutIndexPolicy and +// logs:PutAccountPolicy permissions. +// // # Data protection policy // // A data protection policy can help safeguard sensitive data that's ingested by diff --git a/service/cloudwatchlogs/api_op_PutDeliveryDestination.go b/service/cloudwatchlogs/api_op_PutDeliveryDestination.go index 1d3e9aa3db2..3d021d2f403 100644 --- a/service/cloudwatchlogs/api_op_PutDeliveryDestination.go +++ b/service/cloudwatchlogs/api_op_PutDeliveryDestination.go @@ -22,8 +22,9 @@ import ( // - Create a delivery source, which is a logical object that represents the // resource that is actually sending the logs. For more information, see [PutDeliverySource]. // -// - Use PutDeliveryDestination to create a delivery destination, which is a -// logical object that represents the actual delivery destination. +// - Use PutDeliveryDestination to create a delivery destination in the same +// account of the actual delivery destination. The delivery destination that you +// create is a logical object that represents the actual delivery destination. // // - If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy]in the destination // account to assign an IAM policy to the destination. This policy allows delivery diff --git a/service/cloudwatchlogs/api_op_PutDeliverySource.go b/service/cloudwatchlogs/api_op_PutDeliverySource.go index 8c1e142a51d..7be48120fe8 100644 --- a/service/cloudwatchlogs/api_op_PutDeliverySource.go +++ b/service/cloudwatchlogs/api_op_PutDeliverySource.go @@ -70,13 +70,25 @@ type PutDeliverySourceInput struct { // // - For Amazon Bedrock, the valid value is APPLICATION_LOGS . // + // - For CloudFront, the valid value is ACCESS_LOGS . + // // - For Amazon CodeWhisperer, the valid value is EVENT_LOGS . // + // - For Elemental MediaPackage, the valid values are EGRESS_ACCESS_LOGS and + // INGRESS_ACCESS_LOGS . + // + // - For Elemental MediaTailor, the valid values are AD_DECISION_SERVER_LOGS , + // MANIFEST_SERVICE_LOGS , and TRANSCODE_LOGS . + // // - For IAM Identity Center, the valid value is ERROR_LOGS . // + // - For Amazon Q, the valid value is EVENT_LOGS . + // + // - For Amazon SES mail manager, the valid value is APPLICATION_LOG . + // // - For Amazon WorkMail, the valid values are ACCESS_CONTROL_LOGS , - // AUTHENTICATION_LOGS , WORKMAIL_AVAILABILITY_PROVIDER_LOGS , and - // WORKMAIL_MAILBOX_ACCESS_LOGS . + // AUTHENTICATION_LOGS , WORKMAIL_AVAILABILITY_PROVIDER_LOGS , + // WORKMAIL_MAILBOX_ACCESS_LOGS , and WORKMAIL_PERSONAL_ACCESS_TOKEN_LOGS . // // This member is required. LogType *string diff --git a/service/cloudwatchlogs/api_op_PutMetricFilter.go b/service/cloudwatchlogs/api_op_PutMetricFilter.go index 9c8acb9f7fe..74d75fc1ec4 100644 --- a/service/cloudwatchlogs/api_op_PutMetricFilter.go +++ b/service/cloudwatchlogs/api_op_PutMetricFilter.go @@ -18,11 +18,11 @@ import ( // The maximum number of metric filters that can be associated with a log group is // 100. // -// Using regular expressions to create metric filters is supported. For these -// filters, there is a quota of two regular expression patterns within a single -// filter pattern. There is also a quota of five regular expression patterns per -// log group. For more information about using regular expressions in metric -// filters, see [Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail]. +// Using regular expressions in filter patterns is supported. For these filters, +// there is a quota of two regular expression patterns within a single filter +// pattern. There is also a quota of five regular expression patterns per log +// group. For more information about using regular expressions in filter patterns, +// see [Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail]. // // When you create a metric filter, you can also optionally assign a unit and // dimensions to the metric that is created. diff --git a/service/cloudwatchlogs/api_op_PutSubscriptionFilter.go b/service/cloudwatchlogs/api_op_PutSubscriptionFilter.go index 57a898e8213..3fee0221c80 100644 --- a/service/cloudwatchlogs/api_op_PutSubscriptionFilter.go +++ b/service/cloudwatchlogs/api_op_PutSubscriptionFilter.go @@ -36,11 +36,11 @@ import ( // you are updating an existing filter, you must specify the correct name in // filterName . // -// Using regular expressions to create subscription filters is supported. For -// these filters, there is a quotas of quota of two regular expression patterns -// within a single filter pattern. There is also a quota of five regular expression -// patterns per log group. For more information about using regular expressions in -// subscription filters, see [Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail]. +// Using regular expressions in filter patterns is supported. For these filters, +// there is a quotas of quota of two regular expression patterns within a single +// filter pattern. There is also a quota of five regular expression patterns per +// log group. For more information about using regular expressions in filter +// patterns, see [Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail]. // // To perform a PutSubscriptionFilter operation for any destination except a // Lambda function, you must also have the iam:PassRole permission. diff --git a/service/cloudwatchlogs/go_module_metadata.go b/service/cloudwatchlogs/go_module_metadata.go index 0e047896e57..c78ce02d63c 100644 --- a/service/cloudwatchlogs/go_module_metadata.go +++ b/service/cloudwatchlogs/go_module_metadata.go @@ -3,4 +3,4 @@ package cloudwatchlogs // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.45.6" +const goModuleVersion = "1.45.7" diff --git a/service/cloudwatchlogs/types/errors.go b/service/cloudwatchlogs/types/errors.go index e35e5809a1b..d1a4b0cd50e 100644 --- a/service/cloudwatchlogs/types/errors.go +++ b/service/cloudwatchlogs/types/errors.go @@ -365,7 +365,8 @@ func (e *ServiceUnavailableException) ErrorCode() string { } func (e *ServiceUnavailableException) ErrorFault() smithy.ErrorFault { return smithy.FaultServer } -// his exception is returned if an unknown error occurs during a Live Tail session. +// This exception is returned if an unknown error occurs during a Live Tail +// session. type SessionStreamingException struct { Message *string diff --git a/service/cloudwatchlogs/types/types.go b/service/cloudwatchlogs/types/types.go index 824583b9e5c..28ac5037f5f 100644 --- a/service/cloudwatchlogs/types/types.go +++ b/service/cloudwatchlogs/types/types.go @@ -1582,7 +1582,9 @@ type OpenSearchResourceConfig struct { // for viewing the dashboards. // // In addition to specifying these users here, you must also grant them the - // CloudWatchOpenSearchDashboardsAccess IAM policy. For more information, see + // CloudWatchOpenSearchDashboardAccess IAM policy. For more information, see [IAM policies for users]. + // + // [IAM policies for users]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/OpenSearch-Dashboards-UserRoles.html // // This member is required. DashboardViewerPrincipals []string @@ -1590,9 +1592,9 @@ type OpenSearchResourceConfig struct { // Specify the ARN of an IAM role that CloudWatch Logs will use to create the // integration. This role must have the permissions necessary to access the // OpenSearch Service collection to be able to create the dashboards. For more - // information about the permissions needed, see [Create an IAM role to access the OpenSearch Service collection]in the CloudWatch Logs User Guide. + // information about the permissions needed, see [Permissions that the integration needs]in the CloudWatch Logs User Guide. // - // [Create an IAM role to access the OpenSearch Service collection]: https://docs.aws.amazon.com/OpenSearch-Dashboards-CreateRole + // [Permissions that the integration needs]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/OpenSearch-Dashboards-CreateRole.html // // This member is required. DataSourceRoleArn *string @@ -2281,8 +2283,11 @@ type S3DeliveryConfiguration struct { // This string allows re-configuring the S3 object prefix to contain either static // or variable sections. The valid variables to use in the suffix path will vary by - // each log source. See ConfigurationTemplate$allowedSuffixPathFields for more - // info on what values are supported in the suffix path for each log source. + // each log source. To find the values supported for the suffix path for each log + // source, use the [DescribeConfigurationTemplates]operation and check the allowedSuffixPathFields field in the + // response. + // + // [DescribeConfigurationTemplates]: https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_DescribeConfigurationTemplates.html SuffixPath *string noSmithyDocumentSerde diff --git a/service/cognitoidentityprovider/CHANGELOG.md b/service/cognitoidentityprovider/CHANGELOG.md index f400dcfdf60..5d3dee40e72 100644 --- a/service/cognitoidentityprovider/CHANGELOG.md +++ b/service/cognitoidentityprovider/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.49.0 (2025-01-21) + +* **Feature**: corrects the dual-stack endpoint configuration for cognitoidp + # v1.48.6 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/cognitoidentityprovider/endpoints.go b/service/cognitoidentityprovider/endpoints.go index a0934eb6239..f1ae64433a8 100644 --- a/service/cognitoidentityprovider/endpoints.go +++ b/service/cognitoidentityprovider/endpoints.go @@ -361,6 +361,58 @@ func (r *resolver) ResolveEndpoint( if _UseDualStack == true { if true == _PartitionResult.SupportsFIPS { if true == _PartitionResult.SupportsDualStack { + if _Region == "us-east-1" { + uriString := "https://cognito-idp-fips.us-east-1.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if _Region == "us-east-2" { + uriString := "https://cognito-idp-fips.us-east-2.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if _Region == "us-west-1" { + uriString := "https://cognito-idp-fips.us-west-1.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if _Region == "us-west-2" { + uriString := "https://cognito-idp-fips.us-west-2.amazonaws.com" + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } uriString := func() string { var out strings.Builder out.WriteString("https://cognito-idp-fips.") @@ -409,6 +461,25 @@ func (r *resolver) ResolveEndpoint( } if _UseDualStack == true { if true == _PartitionResult.SupportsDualStack { + if "aws" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://cognito-idp.") + out.WriteString(_Region) + out.WriteString(".amazonaws.com") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } uriString := func() string { var out strings.Builder out.WriteString("https://cognito-idp.") diff --git a/service/cognitoidentityprovider/endpoints_test.go b/service/cognitoidentityprovider/endpoints_test.go index c27a638a295..8da97d3241b 100644 --- a/service/cognitoidentityprovider/endpoints_test.go +++ b/service/cognitoidentityprovider/endpoints_test.go @@ -14,10 +14,454 @@ import ( "testing" ) -// For region ap-northeast-1 with FIPS disabled and DualStack disabled +// For region af-south-1 with FIPS disabled and DualStack disabled func TestEndpointCase0(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("ap-northeast-1"), + Region: ptr.String("af-south-1"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.af-south-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-east-1 with FIPS disabled and DualStack disabled +func TestEndpointCase1(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-east-1"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-east-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-northeast-1 with FIPS disabled and DualStack disabled +func TestEndpointCase2(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-northeast-1"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-northeast-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-northeast-2 with FIPS disabled and DualStack disabled +func TestEndpointCase3(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-northeast-2"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-northeast-2.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-northeast-3 with FIPS disabled and DualStack disabled +func TestEndpointCase4(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-northeast-3"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-northeast-3.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-south-1 with FIPS disabled and DualStack disabled +func TestEndpointCase5(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-south-1"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-south-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-south-2 with FIPS disabled and DualStack disabled +func TestEndpointCase6(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-south-2"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-south-2.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-southeast-1 with FIPS disabled and DualStack disabled +func TestEndpointCase7(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-southeast-1"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-southeast-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-southeast-2 with FIPS disabled and DualStack disabled +func TestEndpointCase8(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-southeast-2"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-southeast-2.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-southeast-3 with FIPS disabled and DualStack disabled +func TestEndpointCase9(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-southeast-3"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-southeast-3.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ap-southeast-4 with FIPS disabled and DualStack disabled +func TestEndpointCase10(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ap-southeast-4"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ap-southeast-4.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ca-central-1 with FIPS disabled and DualStack disabled +func TestEndpointCase11(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ca-central-1"), + UseFIPS: ptr.Bool(false), + UseDualStack: ptr.Bool(false), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp.ca-central-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + +// For region ca-west-1 with FIPS disabled and DualStack disabled +func TestEndpointCase12(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("ca-west-1"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -30,7 +474,7 @@ func TestEndpointCase0(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.ap-northeast-1.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.ca-west-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -51,10 +495,10 @@ func TestEndpointCase0(t *testing.T) { } } -// For region ap-northeast-2 with FIPS disabled and DualStack disabled -func TestEndpointCase1(t *testing.T) { +// For region eu-central-1 with FIPS disabled and DualStack disabled +func TestEndpointCase13(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("ap-northeast-2"), + Region: ptr.String("eu-central-1"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -67,7 +511,7 @@ func TestEndpointCase1(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.ap-northeast-2.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-central-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -88,10 +532,10 @@ func TestEndpointCase1(t *testing.T) { } } -// For region ap-south-1 with FIPS disabled and DualStack disabled -func TestEndpointCase2(t *testing.T) { +// For region eu-central-2 with FIPS disabled and DualStack disabled +func TestEndpointCase14(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("ap-south-1"), + Region: ptr.String("eu-central-2"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -104,7 +548,7 @@ func TestEndpointCase2(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.ap-south-1.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-central-2.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -125,10 +569,10 @@ func TestEndpointCase2(t *testing.T) { } } -// For region ap-southeast-1 with FIPS disabled and DualStack disabled -func TestEndpointCase3(t *testing.T) { +// For region eu-north-1 with FIPS disabled and DualStack disabled +func TestEndpointCase15(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("ap-southeast-1"), + Region: ptr.String("eu-north-1"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -141,7 +585,7 @@ func TestEndpointCase3(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.ap-southeast-1.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-north-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -162,10 +606,10 @@ func TestEndpointCase3(t *testing.T) { } } -// For region ap-southeast-2 with FIPS disabled and DualStack disabled -func TestEndpointCase4(t *testing.T) { +// For region eu-south-1 with FIPS disabled and DualStack disabled +func TestEndpointCase16(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("ap-southeast-2"), + Region: ptr.String("eu-south-1"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -178,7 +622,7 @@ func TestEndpointCase4(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.ap-southeast-2.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-south-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -199,10 +643,10 @@ func TestEndpointCase4(t *testing.T) { } } -// For region ca-central-1 with FIPS disabled and DualStack disabled -func TestEndpointCase5(t *testing.T) { +// For region eu-south-2 with FIPS disabled and DualStack disabled +func TestEndpointCase17(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("ca-central-1"), + Region: ptr.String("eu-south-2"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -215,7 +659,7 @@ func TestEndpointCase5(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.ca-central-1.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-south-2.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -236,10 +680,10 @@ func TestEndpointCase5(t *testing.T) { } } -// For region eu-central-1 with FIPS disabled and DualStack disabled -func TestEndpointCase6(t *testing.T) { +// For region eu-west-1 with FIPS disabled and DualStack disabled +func TestEndpointCase18(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("eu-central-1"), + Region: ptr.String("eu-west-1"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -252,7 +696,7 @@ func TestEndpointCase6(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.eu-central-1.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-west-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -273,10 +717,10 @@ func TestEndpointCase6(t *testing.T) { } } -// For region eu-north-1 with FIPS disabled and DualStack disabled -func TestEndpointCase7(t *testing.T) { +// For region eu-west-2 with FIPS disabled and DualStack disabled +func TestEndpointCase19(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("eu-north-1"), + Region: ptr.String("eu-west-2"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -289,7 +733,7 @@ func TestEndpointCase7(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.eu-north-1.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-west-2.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -310,10 +754,10 @@ func TestEndpointCase7(t *testing.T) { } } -// For region eu-west-1 with FIPS disabled and DualStack disabled -func TestEndpointCase8(t *testing.T) { +// For region eu-west-3 with FIPS disabled and DualStack disabled +func TestEndpointCase20(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("eu-west-1"), + Region: ptr.String("eu-west-3"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -326,7 +770,7 @@ func TestEndpointCase8(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.eu-west-1.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.eu-west-3.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -347,10 +791,10 @@ func TestEndpointCase8(t *testing.T) { } } -// For region eu-west-2 with FIPS disabled and DualStack disabled -func TestEndpointCase9(t *testing.T) { +// For region il-central-1 with FIPS disabled and DualStack disabled +func TestEndpointCase21(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("eu-west-2"), + Region: ptr.String("il-central-1"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -363,7 +807,7 @@ func TestEndpointCase9(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.eu-west-2.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.il-central-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -384,10 +828,10 @@ func TestEndpointCase9(t *testing.T) { } } -// For region eu-west-3 with FIPS disabled and DualStack disabled -func TestEndpointCase10(t *testing.T) { +// For region me-central-1 with FIPS disabled and DualStack disabled +func TestEndpointCase22(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("eu-west-3"), + Region: ptr.String("me-central-1"), UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), } @@ -400,7 +844,7 @@ func TestEndpointCase10(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.eu-west-3.amazonaws.com") + uri, _ := url.Parse("https://cognito-idp.me-central-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -422,7 +866,7 @@ func TestEndpointCase10(t *testing.T) { } // For region me-south-1 with FIPS disabled and DualStack disabled -func TestEndpointCase11(t *testing.T) { +func TestEndpointCase23(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("me-south-1"), UseFIPS: ptr.Bool(false), @@ -459,7 +903,7 @@ func TestEndpointCase11(t *testing.T) { } // For region sa-east-1 with FIPS disabled and DualStack disabled -func TestEndpointCase12(t *testing.T) { +func TestEndpointCase24(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("sa-east-1"), UseFIPS: ptr.Bool(false), @@ -496,7 +940,7 @@ func TestEndpointCase12(t *testing.T) { } // For region us-east-1 with FIPS disabled and DualStack disabled -func TestEndpointCase13(t *testing.T) { +func TestEndpointCase25(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-1"), UseFIPS: ptr.Bool(false), @@ -533,7 +977,7 @@ func TestEndpointCase13(t *testing.T) { } // For region us-east-1 with FIPS enabled and DualStack disabled -func TestEndpointCase14(t *testing.T) { +func TestEndpointCase26(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-1"), UseFIPS: ptr.Bool(true), @@ -569,8 +1013,45 @@ func TestEndpointCase14(t *testing.T) { } } +// For region us-east-1 with FIPS enabled and DualStack enabled +func TestEndpointCase27(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("us-east-1"), + UseFIPS: ptr.Bool(true), + UseDualStack: ptr.Bool(true), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp-fips.us-east-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + // For region us-east-2 with FIPS disabled and DualStack disabled -func TestEndpointCase15(t *testing.T) { +func TestEndpointCase28(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-2"), UseFIPS: ptr.Bool(false), @@ -607,7 +1088,7 @@ func TestEndpointCase15(t *testing.T) { } // For region us-east-2 with FIPS enabled and DualStack disabled -func TestEndpointCase16(t *testing.T) { +func TestEndpointCase29(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-2"), UseFIPS: ptr.Bool(true), @@ -643,8 +1124,45 @@ func TestEndpointCase16(t *testing.T) { } } +// For region us-east-2 with FIPS enabled and DualStack enabled +func TestEndpointCase30(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("us-east-2"), + UseFIPS: ptr.Bool(true), + UseDualStack: ptr.Bool(true), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp-fips.us-east-2.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + // For region us-west-1 with FIPS disabled and DualStack disabled -func TestEndpointCase17(t *testing.T) { +func TestEndpointCase31(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-west-1"), UseFIPS: ptr.Bool(false), @@ -681,7 +1199,7 @@ func TestEndpointCase17(t *testing.T) { } // For region us-west-1 with FIPS enabled and DualStack disabled -func TestEndpointCase18(t *testing.T) { +func TestEndpointCase32(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-west-1"), UseFIPS: ptr.Bool(true), @@ -717,8 +1235,45 @@ func TestEndpointCase18(t *testing.T) { } } +// For region us-west-1 with FIPS enabled and DualStack enabled +func TestEndpointCase33(t *testing.T) { + var params = EndpointParameters{ + Region: ptr.String("us-west-1"), + UseFIPS: ptr.Bool(true), + UseDualStack: ptr.Bool(true), + } + + resolver := NewDefaultEndpointResolverV2() + result, err := resolver.ResolveEndpoint(context.Background(), params) + _, _ = result, err + + if err != nil { + t.Fatalf("expect no error, got %v", err) + } + + uri, _ := url.Parse("https://cognito-idp-fips.us-west-1.amazonaws.com") + + expectEndpoint := smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + Properties: smithy.Properties{}, + } + + if e, a := expectEndpoint.URI, result.URI; e != a { + t.Errorf("expect %v URI, got %v", e, a) + } + + if !reflect.DeepEqual(expectEndpoint.Headers, result.Headers) { + t.Errorf("expect headers to match\n%v != %v", expectEndpoint.Headers, result.Headers) + } + + if !reflect.DeepEqual(expectEndpoint.Properties, result.Properties) { + t.Errorf("expect properties to match\n%v != %v", expectEndpoint.Properties, result.Properties) + } +} + // For region us-west-2 with FIPS disabled and DualStack disabled -func TestEndpointCase19(t *testing.T) { +func TestEndpointCase34(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-west-2"), UseFIPS: ptr.Bool(false), @@ -755,7 +1310,7 @@ func TestEndpointCase19(t *testing.T) { } // For region us-west-2 with FIPS enabled and DualStack disabled -func TestEndpointCase20(t *testing.T) { +func TestEndpointCase35(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-west-2"), UseFIPS: ptr.Bool(true), @@ -791,10 +1346,10 @@ func TestEndpointCase20(t *testing.T) { } } -// For region us-east-1 with FIPS enabled and DualStack enabled -func TestEndpointCase21(t *testing.T) { +// For region us-west-2 with FIPS enabled and DualStack enabled +func TestEndpointCase36(t *testing.T) { var params = EndpointParameters{ - Region: ptr.String("us-east-1"), + Region: ptr.String("us-west-2"), UseFIPS: ptr.Bool(true), UseDualStack: ptr.Bool(true), } @@ -807,7 +1362,7 @@ func TestEndpointCase21(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp-fips.us-east-1.api.aws") + uri, _ := url.Parse("https://cognito-idp-fips.us-west-2.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -829,7 +1384,7 @@ func TestEndpointCase21(t *testing.T) { } // For region us-east-1 with FIPS disabled and DualStack enabled -func TestEndpointCase22(t *testing.T) { +func TestEndpointCase37(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-1"), UseFIPS: ptr.Bool(false), @@ -844,7 +1399,7 @@ func TestEndpointCase22(t *testing.T) { t.Fatalf("expect no error, got %v", err) } - uri, _ := url.Parse("https://cognito-idp.us-east-1.api.aws") + uri, _ := url.Parse("https://cognito-idp.us-east-1.amazonaws.com") expectEndpoint := smithyendpoints.Endpoint{ URI: *uri, @@ -866,7 +1421,7 @@ func TestEndpointCase22(t *testing.T) { } // For region cn-north-1 with FIPS enabled and DualStack enabled -func TestEndpointCase23(t *testing.T) { +func TestEndpointCase38(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("cn-north-1"), UseFIPS: ptr.Bool(true), @@ -903,7 +1458,7 @@ func TestEndpointCase23(t *testing.T) { } // For region cn-north-1 with FIPS enabled and DualStack disabled -func TestEndpointCase24(t *testing.T) { +func TestEndpointCase39(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("cn-north-1"), UseFIPS: ptr.Bool(true), @@ -940,7 +1495,7 @@ func TestEndpointCase24(t *testing.T) { } // For region cn-north-1 with FIPS disabled and DualStack enabled -func TestEndpointCase25(t *testing.T) { +func TestEndpointCase40(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("cn-north-1"), UseFIPS: ptr.Bool(false), @@ -977,7 +1532,7 @@ func TestEndpointCase25(t *testing.T) { } // For region cn-north-1 with FIPS disabled and DualStack disabled -func TestEndpointCase26(t *testing.T) { +func TestEndpointCase41(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("cn-north-1"), UseFIPS: ptr.Bool(false), @@ -1014,7 +1569,7 @@ func TestEndpointCase26(t *testing.T) { } // For region us-gov-west-1 with FIPS disabled and DualStack disabled -func TestEndpointCase27(t *testing.T) { +func TestEndpointCase42(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-gov-west-1"), UseFIPS: ptr.Bool(false), @@ -1051,7 +1606,7 @@ func TestEndpointCase27(t *testing.T) { } // For region us-gov-west-1 with FIPS enabled and DualStack disabled -func TestEndpointCase28(t *testing.T) { +func TestEndpointCase43(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-gov-west-1"), UseFIPS: ptr.Bool(true), @@ -1088,7 +1643,7 @@ func TestEndpointCase28(t *testing.T) { } // For region us-gov-east-1 with FIPS enabled and DualStack enabled -func TestEndpointCase29(t *testing.T) { +func TestEndpointCase44(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-gov-east-1"), UseFIPS: ptr.Bool(true), @@ -1125,7 +1680,7 @@ func TestEndpointCase29(t *testing.T) { } // For region us-gov-east-1 with FIPS enabled and DualStack disabled -func TestEndpointCase30(t *testing.T) { +func TestEndpointCase45(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-gov-east-1"), UseFIPS: ptr.Bool(true), @@ -1162,7 +1717,7 @@ func TestEndpointCase30(t *testing.T) { } // For region us-gov-east-1 with FIPS disabled and DualStack enabled -func TestEndpointCase31(t *testing.T) { +func TestEndpointCase46(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-gov-east-1"), UseFIPS: ptr.Bool(false), @@ -1199,7 +1754,7 @@ func TestEndpointCase31(t *testing.T) { } // For region us-gov-east-1 with FIPS disabled and DualStack disabled -func TestEndpointCase32(t *testing.T) { +func TestEndpointCase47(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-gov-east-1"), UseFIPS: ptr.Bool(false), @@ -1236,7 +1791,7 @@ func TestEndpointCase32(t *testing.T) { } // For region us-iso-east-1 with FIPS enabled and DualStack enabled -func TestEndpointCase33(t *testing.T) { +func TestEndpointCase48(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-iso-east-1"), UseFIPS: ptr.Bool(true), @@ -1256,7 +1811,7 @@ func TestEndpointCase33(t *testing.T) { } // For region us-iso-east-1 with FIPS enabled and DualStack disabled -func TestEndpointCase34(t *testing.T) { +func TestEndpointCase49(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-iso-east-1"), UseFIPS: ptr.Bool(true), @@ -1293,7 +1848,7 @@ func TestEndpointCase34(t *testing.T) { } // For region us-iso-east-1 with FIPS disabled and DualStack enabled -func TestEndpointCase35(t *testing.T) { +func TestEndpointCase50(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-iso-east-1"), UseFIPS: ptr.Bool(false), @@ -1313,7 +1868,7 @@ func TestEndpointCase35(t *testing.T) { } // For region us-iso-east-1 with FIPS disabled and DualStack disabled -func TestEndpointCase36(t *testing.T) { +func TestEndpointCase51(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-iso-east-1"), UseFIPS: ptr.Bool(false), @@ -1350,7 +1905,7 @@ func TestEndpointCase36(t *testing.T) { } // For region us-isob-east-1 with FIPS enabled and DualStack enabled -func TestEndpointCase37(t *testing.T) { +func TestEndpointCase52(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-isob-east-1"), UseFIPS: ptr.Bool(true), @@ -1370,7 +1925,7 @@ func TestEndpointCase37(t *testing.T) { } // For region us-isob-east-1 with FIPS enabled and DualStack disabled -func TestEndpointCase38(t *testing.T) { +func TestEndpointCase53(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-isob-east-1"), UseFIPS: ptr.Bool(true), @@ -1407,7 +1962,7 @@ func TestEndpointCase38(t *testing.T) { } // For region us-isob-east-1 with FIPS disabled and DualStack enabled -func TestEndpointCase39(t *testing.T) { +func TestEndpointCase54(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-isob-east-1"), UseFIPS: ptr.Bool(false), @@ -1427,7 +1982,7 @@ func TestEndpointCase39(t *testing.T) { } // For region us-isob-east-1 with FIPS disabled and DualStack disabled -func TestEndpointCase40(t *testing.T) { +func TestEndpointCase55(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-isob-east-1"), UseFIPS: ptr.Bool(false), @@ -1464,7 +2019,7 @@ func TestEndpointCase40(t *testing.T) { } // For custom endpoint with region set and fips disabled and dualstack disabled -func TestEndpointCase41(t *testing.T) { +func TestEndpointCase56(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-1"), UseFIPS: ptr.Bool(false), @@ -1502,7 +2057,7 @@ func TestEndpointCase41(t *testing.T) { } // For custom endpoint with region not set and fips disabled and dualstack disabled -func TestEndpointCase42(t *testing.T) { +func TestEndpointCase57(t *testing.T) { var params = EndpointParameters{ UseFIPS: ptr.Bool(false), UseDualStack: ptr.Bool(false), @@ -1539,7 +2094,7 @@ func TestEndpointCase42(t *testing.T) { } // For custom endpoint with fips enabled and dualstack disabled -func TestEndpointCase43(t *testing.T) { +func TestEndpointCase58(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-1"), UseFIPS: ptr.Bool(true), @@ -1560,7 +2115,7 @@ func TestEndpointCase43(t *testing.T) { } // For custom endpoint with fips disabled and dualstack enabled -func TestEndpointCase44(t *testing.T) { +func TestEndpointCase59(t *testing.T) { var params = EndpointParameters{ Region: ptr.String("us-east-1"), UseFIPS: ptr.Bool(false), @@ -1581,7 +2136,7 @@ func TestEndpointCase44(t *testing.T) { } // Missing region -func TestEndpointCase45(t *testing.T) { +func TestEndpointCase60(t *testing.T) { var params = EndpointParameters{} resolver := NewDefaultEndpointResolverV2() diff --git a/service/cognitoidentityprovider/go_module_metadata.go b/service/cognitoidentityprovider/go_module_metadata.go index 0371b9e4699..e8b4e900789 100644 --- a/service/cognitoidentityprovider/go_module_metadata.go +++ b/service/cognitoidentityprovider/go_module_metadata.go @@ -3,4 +3,4 @@ package cognitoidentityprovider // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.48.6" +const goModuleVersion = "1.49.0" diff --git a/service/connect/CHANGELOG.md b/service/connect/CHANGELOG.md index d0851b2a36f..e9ed5cc3c27 100644 --- a/service/connect/CHANGELOG.md +++ b/service/connect/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.124.0 (2025-01-21) + +* **Feature**: Added DeleteContactFlowVersion API and the CAMPAIGN flow type + # v1.123.4 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/connect/api_op_AssociateUserProficiencies.go b/service/connect/api_op_AssociateUserProficiencies.go index 9a6a26822df..f1a61df43bf 100644 --- a/service/connect/api_op_AssociateUserProficiencies.go +++ b/service/connect/api_op_AssociateUserProficiencies.go @@ -11,7 +11,7 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// >Associates a set of proficiencies with a user. +// Associates a set of proficiencies with a user. func (c *Client) AssociateUserProficiencies(ctx context.Context, params *AssociateUserProficienciesInput, optFns ...func(*Options)) (*AssociateUserProficienciesOutput, error) { if params == nil { params = &AssociateUserProficienciesInput{} diff --git a/service/connect/api_op_CreateContactFlow.go b/service/connect/api_op_CreateContactFlow.go index 48d12d51688..815b3ec03b3 100644 --- a/service/connect/api_op_CreateContactFlow.go +++ b/service/connect/api_op_CreateContactFlow.go @@ -83,7 +83,7 @@ type CreateContactFlowOutput struct { // The identifier of the flow. ContactFlowId *string - // Indicates the checksum value of the flow content. + // Indicates the checksum value of the latest published flow content. FlowContentSha256 *string // Metadata pertaining to the operation's result. diff --git a/service/connect/api_op_CreateContactFlowVersion.go b/service/connect/api_op_CreateContactFlowVersion.go index 1517eb041b8..6ee5f606a45 100644 --- a/service/connect/api_op_CreateContactFlowVersion.go +++ b/service/connect/api_op_CreateContactFlowVersion.go @@ -12,11 +12,9 @@ import ( ) // Publishes a new version of the flow provided. Versions are immutable and -// monotonically increasing. If a version of the same flow content already exists, -// no new version is created and instead the existing version number is returned. -// If the FlowContentSha256 provided is different from the FlowContentSha256 of -// the $LATEST published flow content, then an error is returned. This API only -// supports creating versions for flows of type Campaign . +// monotonically increasing. If the FlowContentSha256 provided is different from +// the FlowContentSha256 of the $LATEST published flow content, then an error is +// returned. This API only supports creating versions for flows of type Campaign . func (c *Client) CreateContactFlowVersion(ctx context.Context, params *CreateContactFlowVersionInput, optFns ...func(*Options)) (*CreateContactFlowVersionOutput, error) { if params == nil { params = &CreateContactFlowVersionInput{} @@ -44,6 +42,9 @@ type CreateContactFlowVersionInput struct { // This member is required. InstanceId *string + // The identifier of the flow version. + ContactFlowVersion *int64 + // The description of the flow version. Description *string diff --git a/service/connect/api_op_DeleteContactFlowVersion.go b/service/connect/api_op_DeleteContactFlowVersion.go new file mode 100644 index 00000000000..09c264b576e --- /dev/null +++ b/service/connect/api_op_DeleteContactFlowVersion.go @@ -0,0 +1,165 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package connect + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes the particular version specified in flow version identifier. +func (c *Client) DeleteContactFlowVersion(ctx context.Context, params *DeleteContactFlowVersionInput, optFns ...func(*Options)) (*DeleteContactFlowVersionOutput, error) { + if params == nil { + params = &DeleteContactFlowVersionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteContactFlowVersion", params, optFns, c.addOperationDeleteContactFlowVersionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteContactFlowVersionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteContactFlowVersionInput struct { + + // The identifier of the flow. + // + // This member is required. + ContactFlowId *string + + // The identifier of the flow version. + // + // This member is required. + ContactFlowVersion *int64 + + // The identifier of the Amazon Connect instance. You can [find the instance ID] in the Amazon Resource + // Name (ARN) of the instance. + // + // [find the instance ID]: https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html + // + // This member is required. + InstanceId *string + + noSmithyDocumentSerde +} + +type DeleteContactFlowVersionOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteContactFlowVersionMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsRestjson1_serializeOpDeleteContactFlowVersion{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDeleteContactFlowVersion{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteContactFlowVersion"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteContactFlowVersionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteContactFlowVersion(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteContactFlowVersion(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteContactFlowVersion", + } +} diff --git a/service/connect/api_op_DeleteQueue.go b/service/connect/api_op_DeleteQueue.go index bc1936aa932..401ca37984d 100644 --- a/service/connect/api_op_DeleteQueue.go +++ b/service/connect/api_op_DeleteQueue.go @@ -10,8 +10,7 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Deletes a queue. It isn't possible to delete a queue by using the Amazon -// Connect admin website. +// Deletes a queue. func (c *Client) DeleteQueue(ctx context.Context, params *DeleteQueueInput, optFns ...func(*Options)) (*DeleteQueueOutput, error) { if params == nil { params = &DeleteQueueInput{} diff --git a/service/connect/api_op_DescribeContactFlow.go b/service/connect/api_op_DescribeContactFlow.go index 5efe0bb50a7..efe877f5d0e 100644 --- a/service/connect/api_op_DescribeContactFlow.go +++ b/service/connect/api_op_DescribeContactFlow.go @@ -19,6 +19,9 @@ import ( // For example, arn:aws:.../contact-flow/{id}:$SAVED . After a flow is published, // $SAVED needs to be supplied to view saved content that has not been published. // +// Use arn:aws:.../contact-flow/{id}:{version} to retrieve the content of a +// specific flow version. +// // In the response, Status indicates the flow status as either SAVED or PUBLISHED . // The PUBLISHED status will initiate validation on the content. SAVED does not // initiate validation of the content. SAVED | PUBLISHED diff --git a/service/connect/deserializers.go b/service/connect/deserializers.go index 138be9f247c..77c61d6e3d5 100644 --- a/service/connect/deserializers.go +++ b/service/connect/deserializers.go @@ -8871,6 +8871,109 @@ func awsRestjson1_deserializeOpErrorDeleteContactFlowModule(response *smithyhttp } } +type awsRestjson1_deserializeOpDeleteContactFlowVersion struct { +} + +func (*awsRestjson1_deserializeOpDeleteContactFlowVersion) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDeleteContactFlowVersion) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorDeleteContactFlowVersion(response, &metadata) + } + output := &DeleteContactFlowVersionOutput{} + out.Result = output + + span.End() + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDeleteContactFlowVersion(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + jsonCode, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalServiceException", errorCode): + return awsRestjson1_deserializeErrorInternalServiceException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("InvalidRequestException", errorCode): + return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + type awsRestjson1_deserializeOpDeleteEmailAddress struct { } diff --git a/service/connect/generated.json b/service/connect/generated.json index 37e0e63b369..243eff1e655 100644 --- a/service/connect/generated.json +++ b/service/connect/generated.json @@ -64,6 +64,7 @@ "api_op_DeleteContactEvaluation.go", "api_op_DeleteContactFlow.go", "api_op_DeleteContactFlowModule.go", + "api_op_DeleteContactFlowVersion.go", "api_op_DeleteEmailAddress.go", "api_op_DeleteEvaluationForm.go", "api_op_DeleteHoursOfOperation.go", diff --git a/service/connect/go_module_metadata.go b/service/connect/go_module_metadata.go index dac7f4fbdd5..f5dca3f23c0 100644 --- a/service/connect/go_module_metadata.go +++ b/service/connect/go_module_metadata.go @@ -3,4 +3,4 @@ package connect // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.123.4" +const goModuleVersion = "1.124.0" diff --git a/service/connect/serializers.go b/service/connect/serializers.go index 3333b9a9cc4..10da82fcb85 100644 --- a/service/connect/serializers.go +++ b/service/connect/serializers.go @@ -2814,6 +2814,11 @@ func awsRestjson1_serializeOpDocumentCreateContactFlowVersionInput(v *CreateCont object := value.Object() defer object.Close() + if v.ContactFlowVersion != nil { + ok := object.Key("ContactFlowVersion") + ok.Long(*v.ContactFlowVersion) + } + if v.Description != nil { ok := object.Key("Description") ok.String(*v.Description) @@ -6111,6 +6116,95 @@ func awsRestjson1_serializeOpHttpBindingsDeleteContactFlowModuleInput(v *DeleteC return nil } +type awsRestjson1_serializeOpDeleteContactFlowVersion struct { +} + +func (*awsRestjson1_serializeOpDeleteContactFlowVersion) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDeleteContactFlowVersion) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteContactFlowVersionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/contact-flows/{InstanceId}/{ContactFlowId}/version/{ContactFlowVersion}") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "DELETE" + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if err := awsRestjson1_serializeOpHttpBindingsDeleteContactFlowVersionInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDeleteContactFlowVersionInput(v *DeleteContactFlowVersionInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.ContactFlowId == nil || len(*v.ContactFlowId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member ContactFlowId must not be empty")} + } + if v.ContactFlowId != nil { + if err := encoder.SetURI("ContactFlowId").String(*v.ContactFlowId); err != nil { + return err + } + } + + if v.ContactFlowVersion == nil { + return &smithy.SerializationError{Err: fmt.Errorf("input member ContactFlowVersion must not be empty")} + } + if v.ContactFlowVersion != nil { + if err := encoder.SetURI("ContactFlowVersion").Long(*v.ContactFlowVersion); err != nil { + return err + } + } + + if v.InstanceId == nil || len(*v.InstanceId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member InstanceId must not be empty")} + } + if v.InstanceId != nil { + if err := encoder.SetURI("InstanceId").String(*v.InstanceId); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpDeleteEmailAddress struct { } diff --git a/service/connect/snapshot/api_op_DeleteContactFlowVersion.go.snap b/service/connect/snapshot/api_op_DeleteContactFlowVersion.go.snap new file mode 100644 index 00000000000..2e89bcf743d --- /dev/null +++ b/service/connect/snapshot/api_op_DeleteContactFlowVersion.go.snap @@ -0,0 +1,41 @@ +DeleteContactFlowVersion + Initialize stack step + spanInitializeStart + RegisterServiceMetadata + legacyEndpointContextSetter + SetLogger + OperationInputValidation + spanInitializeEnd + Serialize stack step + spanBuildRequestStart + setOperationInput + ResolveEndpoint + OperationSerializer + Build stack step + ClientRequestID + ComputeContentLength + UserAgent + AddTimeOffsetMiddleware + RecursionDetection + spanBuildRequestEnd + Finalize stack step + spanRetryLoop + Retry + RetryMetricsHeader + ResolveAuthScheme + GetIdentity + ResolveEndpointV2 + disableHTTPS + ComputePayloadHash + setLegacyContextSigningOptions + Signing + Deserialize stack step + AddRawResponseToMetadata + ErrorCloseResponseBody + CloseResponseBody + ResponseErrorWrapper + RequestIDRetriever + OperationDeserializer + AddTimeOffsetMiddleware + RecordResponseTiming + RequestResponseLogger diff --git a/service/connect/snapshot_test.go b/service/connect/snapshot_test.go index 846e0ef814d..238b181090b 100644 --- a/service/connect/snapshot_test.go +++ b/service/connect/snapshot_test.go @@ -734,6 +734,18 @@ func TestCheckSnapshot_DeleteContactFlowModule(t *testing.T) { } } +func TestCheckSnapshot_DeleteContactFlowVersion(t *testing.T) { + svc := New(Options{}) + _, err := svc.DeleteContactFlowVersion(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return testSnapshot(stack, "DeleteContactFlowVersion") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestCheckSnapshot_DeleteEmailAddress(t *testing.T) { svc := New(Options{}) _, err := svc.DeleteEmailAddress(context.Background(), nil, func(o *Options) { @@ -4093,6 +4105,18 @@ func TestUpdateSnapshot_DeleteContactFlowModule(t *testing.T) { } } +func TestUpdateSnapshot_DeleteContactFlowVersion(t *testing.T) { + svc := New(Options{}) + _, err := svc.DeleteContactFlowVersion(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return updateSnapshot(stack, "DeleteContactFlowVersion") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestUpdateSnapshot_DeleteEmailAddress(t *testing.T) { svc := New(Options{}) _, err := svc.DeleteEmailAddress(context.Background(), nil, func(o *Options) { diff --git a/service/connect/types/enums.go b/service/connect/types/enums.go index 57d1f272cd3..0d4a8853a19 100644 --- a/service/connect/types/enums.go +++ b/service/connect/types/enums.go @@ -368,6 +368,7 @@ const ( ContactFlowTypeOutboundWhisper ContactFlowType = "OUTBOUND_WHISPER" ContactFlowTypeAgentTransfer ContactFlowType = "AGENT_TRANSFER" ContactFlowTypeQueueTransfer ContactFlowType = "QUEUE_TRANSFER" + ContactFlowTypeCampaign ContactFlowType = "CAMPAIGN" ) // Values returns all known values for ContactFlowType. Note that this can be @@ -385,6 +386,7 @@ func (ContactFlowType) Values() []ContactFlowType { "OUTBOUND_WHISPER", "AGENT_TRANSFER", "QUEUE_TRANSFER", + "CAMPAIGN", } } diff --git a/service/connect/validators.go b/service/connect/validators.go index f466b6e3468..eeff5c99a27 100644 --- a/service/connect/validators.go +++ b/service/connect/validators.go @@ -1130,6 +1130,26 @@ func (m *validateOpDeleteContactFlowModule) HandleInitialize(ctx context.Context return next.HandleInitialize(ctx, in) } +type validateOpDeleteContactFlowVersion struct { +} + +func (*validateOpDeleteContactFlowVersion) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteContactFlowVersion) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteContactFlowVersionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteContactFlowVersionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDeleteEmailAddress struct { } @@ -5774,6 +5794,10 @@ func addOpDeleteContactFlowModuleValidationMiddleware(stack *middleware.Stack) e return stack.Initialize.Add(&validateOpDeleteContactFlowModule{}, middleware.After) } +func addOpDeleteContactFlowVersionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteContactFlowVersion{}, middleware.After) +} + func addOpDeleteEmailAddressValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDeleteEmailAddress{}, middleware.After) } @@ -9917,6 +9941,27 @@ func validateOpDeleteContactFlowModuleInput(v *DeleteContactFlowModuleInput) err } } +func validateOpDeleteContactFlowVersionInput(v *DeleteContactFlowVersionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteContactFlowVersionInput"} + if v.InstanceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("InstanceId")) + } + if v.ContactFlowId == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContactFlowId")) + } + if v.ContactFlowVersion == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContactFlowVersion")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDeleteEmailAddressInput(v *DeleteEmailAddressInput) error { if v == nil { return nil diff --git a/service/efs/CHANGELOG.md b/service/efs/CHANGELOG.md index 52cdee64966..821238190b5 100644 --- a/service/efs/CHANGELOG.md +++ b/service/efs/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.34.6 (2025-01-21) + +* No change notes available for this release. + # v1.34.5 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/efs/go_module_metadata.go b/service/efs/go_module_metadata.go index e04dcf05a78..5bc04558770 100644 --- a/service/efs/go_module_metadata.go +++ b/service/efs/go_module_metadata.go @@ -3,4 +3,4 @@ package efs // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.34.5" +const goModuleVersion = "1.34.6" diff --git a/service/efs/internal/endpoints/endpoints.go b/service/efs/internal/endpoints/endpoints.go index 8e46f2966f5..50c2a028cfc 100644 --- a/service/efs/internal/endpoints/endpoints.go +++ b/service/efs/internal/endpoints/endpoints.go @@ -580,6 +580,15 @@ var defaultPartitions = endpoints.Partitions{ }, Deprecated: aws.TrueTernary, }, + endpoints.EndpointKey{ + Region: "fips-mx-central-1", + }: endpoints.Endpoint{ + Hostname: "elasticfilesystem-fips.mx-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "mx-central-1", + }, + Deprecated: aws.TrueTernary, + }, endpoints.EndpointKey{ Region: "fips-sa-east-1", }: endpoints.Endpoint{ @@ -652,6 +661,15 @@ var defaultPartitions = endpoints.Partitions{ }: { Hostname: "elasticfilesystem-fips.me-south-1.amazonaws.com", }, + endpoints.EndpointKey{ + Region: "mx-central-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "mx-central-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "elasticfilesystem-fips.mx-central-1.amazonaws.com", + }, endpoints.EndpointKey{ Region: "sa-east-1", }: endpoints.Endpoint{}, diff --git a/service/internal/integrationtest/go.mod b/service/internal/integrationtest/go.mod index 805bee65b92..c52f9e1cf28 100644 --- a/service/internal/integrationtest/go.mod +++ b/service/internal/integrationtest/go.mod @@ -10,7 +10,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/applicationdiscoveryservice v1.29.5 github.com/aws/aws-sdk-go-v2/service/appstream v1.42.4 github.com/aws/aws-sdk-go-v2/service/athena v1.49.5 - github.com/aws/aws-sdk-go-v2/service/batch v1.49.6 + github.com/aws/aws-sdk-go-v2/service/batch v1.49.7 github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.7 github.com/aws/aws-sdk-go-v2/service/cloudfront v1.44.5 github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.29.3 @@ -20,7 +20,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/codecommit v1.27.11 github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.13 github.com/aws/aws-sdk-go-v2/service/codepipeline v1.38.4 - github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.48.6 + github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.49.0 github.com/aws/aws-sdk-go-v2/service/configservice v1.51.7 github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.11 github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.45.6 @@ -32,7 +32,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/ec2 v1.200.0 github.com/aws/aws-sdk-go-v2/service/ecr v1.38.6 github.com/aws/aws-sdk-go-v2/service/ecs v1.53.8 - github.com/aws/aws-sdk-go-v2/service/efs v1.34.5 + github.com/aws/aws-sdk-go-v2/service/efs v1.34.6 github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.7 github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.12 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.12 @@ -70,7 +70,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/sfn v1.34.7 github.com/aws/aws-sdk-go-v2/service/shield v1.29.11 github.com/aws/aws-sdk-go-v2/service/snowball v1.30.13 - github.com/aws/aws-sdk-go-v2/service/sns v1.33.13 + github.com/aws/aws-sdk-go-v2/service/sns v1.33.14 github.com/aws/aws-sdk-go-v2/service/sqs v1.37.9 github.com/aws/aws-sdk-go-v2/service/ssm v1.56.7 github.com/aws/aws-sdk-go-v2/service/sts v1.33.9 diff --git a/service/iotsitewise/CHANGELOG.md b/service/iotsitewise/CHANGELOG.md index ded2efdaae2..be364511d02 100644 --- a/service/iotsitewise/CHANGELOG.md +++ b/service/iotsitewise/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.45.0 (2025-01-21) + +* **Feature**: AWS IoT SiteWise now supports ingestion and querying of Null (all data types) and NaN (double type) values of bad or uncertain data quality. New partial error handling prevents data loss during ingestion. Enabled by default for new customers; existing customers can opt-in. + # v1.44.6 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/iotsitewise/api_op_BatchPutAssetPropertyValue.go b/service/iotsitewise/api_op_BatchPutAssetPropertyValue.go index 23c1532241b..82116ebc0a7 100644 --- a/service/iotsitewise/api_op_BatchPutAssetPropertyValue.go +++ b/service/iotsitewise/api_op_BatchPutAssetPropertyValue.go @@ -61,6 +61,11 @@ type BatchPutAssetPropertyValueInput struct { // This member is required. Entries []types.PutAssetPropertyValueEntry + // This setting enables partial ingestion at entry-level. If set to true , we + // ingest all TQVs not resulting in an error. If set to false , an invalid TQV + // fails ingestion of the entire entry that contains it. + EnablePartialEntryProcessing *bool + noSmithyDocumentSerde } diff --git a/service/iotsitewise/api_op_DescribeStorageConfiguration.go b/service/iotsitewise/api_op_DescribeStorageConfiguration.go index 8f73d103298..1b1d367d31a 100644 --- a/service/iotsitewise/api_op_DescribeStorageConfiguration.go +++ b/service/iotsitewise/api_op_DescribeStorageConfiguration.go @@ -51,6 +51,10 @@ type DescribeStorageConfigurationOutput struct { // This member is required. StorageType types.StorageType + // Describes the configuration for ingesting NULL and NaN data. By default the + // feature is allowed. The feature is disallowed if the value is true . + DisallowIngestNullNaN *bool + // Contains the storage configuration for time series (data streams) that aren't // associated with asset properties. The disassociatedDataStorage can be one of // the following values: diff --git a/service/iotsitewise/api_op_PutStorageConfiguration.go b/service/iotsitewise/api_op_PutStorageConfiguration.go index ab8e621a62d..7c70c4149c0 100644 --- a/service/iotsitewise/api_op_PutStorageConfiguration.go +++ b/service/iotsitewise/api_op_PutStorageConfiguration.go @@ -41,6 +41,10 @@ type PutStorageConfigurationInput struct { // This member is required. StorageType types.StorageType + // Describes the configuration for ingesting NULL and NaN data. By default the + // feature is allowed. The feature is disallowed if the value is true . + DisallowIngestNullNaN *bool + // Contains the storage configuration for time series (data streams) that aren't // associated with asset properties. The disassociatedDataStorage can be one of // the following values: @@ -97,6 +101,10 @@ type PutStorageConfigurationOutput struct { // This member is required. StorageType types.StorageType + // Describes the configuration for ingesting NULL and NaN data. By default the + // feature is allowed. The feature is disallowed if the value is true . + DisallowIngestNullNaN *bool + // Contains the storage configuration for time series (data streams) that aren't // associated with asset properties. The disassociatedDataStorage can be one of // the following values: diff --git a/service/iotsitewise/deserializers.go b/service/iotsitewise/deserializers.go index c1a32c71b50..29efb774e6d 100644 --- a/service/iotsitewise/deserializers.go +++ b/service/iotsitewise/deserializers.go @@ -8312,6 +8312,15 @@ func awsRestjson1_deserializeOpDocumentDescribeStorageConfigurationOutput(v **De return err } + case "disallowIngestNullNaN": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected DisallowIngestNullNaN to be of type *bool, got %T instead", value) + } + sv.DisallowIngestNullNaN = ptr.Bool(jtv) + } + case "disassociatedDataStorage": if value != nil { jtv, ok := value.(string) @@ -13653,6 +13662,15 @@ func awsRestjson1_deserializeOpDocumentPutStorageConfigurationOutput(v **PutStor return err } + case "disallowIngestNullNaN": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected DisallowIngestNullNaN to be of type *bool, got %T instead", value) + } + sv.DisallowIngestNullNaN = ptr.Bool(jtv) + } + case "disassociatedDataStorage": if value != nil { jtv, ok := value.(string) @@ -24827,6 +24845,46 @@ func awsRestjson1_deserializeDocumentPropertyType(v **types.PropertyType, value return nil } +func awsRestjson1_deserializeDocumentPropertyValueNullValue(v **types.PropertyValueNullValue, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PropertyValueNullValue + if *v == nil { + sv = &types.PropertyValueNullValue{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "valueType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RawValueType to be of type string, got %T instead", value) + } + sv.ValueType = types.RawValueType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentQueryTimeoutException(v **types.QueryTimeoutException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -25977,6 +26035,11 @@ func awsRestjson1_deserializeDocumentVariant(v **types.Variant, value interface{ sv.IntegerValue = ptr.Int32(int32(i64)) } + case "nullValue": + if err := awsRestjson1_deserializeDocumentPropertyValueNullValue(&sv.NullValue, value); err != nil { + return err + } + case "stringValue": if value != nil { jtv, ok := value.(string) diff --git a/service/iotsitewise/go_module_metadata.go b/service/iotsitewise/go_module_metadata.go index 8c73302e2e9..88b5689042d 100644 --- a/service/iotsitewise/go_module_metadata.go +++ b/service/iotsitewise/go_module_metadata.go @@ -3,4 +3,4 @@ package iotsitewise // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.44.6" +const goModuleVersion = "1.45.0" diff --git a/service/iotsitewise/serializers.go b/service/iotsitewise/serializers.go index f6a014b164f..d60e12f1c5a 100644 --- a/service/iotsitewise/serializers.go +++ b/service/iotsitewise/serializers.go @@ -767,6 +767,11 @@ func awsRestjson1_serializeOpDocumentBatchPutAssetPropertyValueInput(v *BatchPut object := value.Object() defer object.Close() + if v.EnablePartialEntryProcessing != nil { + ok := object.Key("enablePartialEntryProcessing") + ok.Boolean(*v.EnablePartialEntryProcessing) + } + if v.Entries != nil { ok := object.Key("entries") if err := awsRestjson1_serializeDocumentPutAssetPropertyValueEntries(v.Entries, ok); err != nil { @@ -6679,6 +6684,11 @@ func awsRestjson1_serializeOpDocumentPutStorageConfigurationInput(v *PutStorageC object := value.Object() defer object.Close() + if v.DisallowIngestNullNaN != nil { + ok := object.Key("disallowIngestNullNaN") + ok.Boolean(*v.DisallowIngestNullNaN) + } + if len(v.DisassociatedDataStorage) > 0 { ok := object.Key("disassociatedDataStorage") ok.String(string(v.DisassociatedDataStorage)) @@ -9372,6 +9382,18 @@ func awsRestjson1_serializeDocumentPropertyType(v *types.PropertyType, value smi return nil } +func awsRestjson1_serializeDocumentPropertyValueNullValue(v *types.PropertyValueNullValue, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.ValueType) > 0 { + ok := object.Key("valueType") + ok.String(string(v.ValueType)) + } + + return nil +} + func awsRestjson1_serializeDocumentPutAssetPropertyValueEntries(v []types.PutAssetPropertyValueEntry, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -9664,6 +9686,13 @@ func awsRestjson1_serializeDocumentVariant(v *types.Variant, value smithyjson.Va ok.Integer(*v.IntegerValue) } + if v.NullValue != nil { + ok := object.Key("nullValue") + if err := awsRestjson1_serializeDocumentPropertyValueNullValue(v.NullValue, ok); err != nil { + return err + } + } + if v.StringValue != nil { ok := object.Key("stringValue") ok.String(*v.StringValue) diff --git a/service/iotsitewise/types/enums.go b/service/iotsitewise/types/enums.go index 2b238256a37..12468e21659 100644 --- a/service/iotsitewise/types/enums.go +++ b/service/iotsitewise/types/enums.go @@ -885,6 +885,31 @@ func (Quality) Values() []Quality { } } +type RawValueType string + +// Enum values for RawValueType +const ( + RawValueTypeDouble RawValueType = "D" + RawValueTypeBoolean RawValueType = "B" + RawValueTypeString RawValueType = "S" + RawValueTypeInteger RawValueType = "I" + RawValueTypeUnknown RawValueType = "U" +) + +// Values returns all known values for RawValueType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (RawValueType) Values() []RawValueType { + return []RawValueType{ + "D", + "B", + "S", + "I", + "U", + } +} + type ResourceType string // Enum values for ResourceType diff --git a/service/iotsitewise/types/types.go b/service/iotsitewise/types/types.go index ca73d9b666b..feeb6245fd9 100644 --- a/service/iotsitewise/types/types.go +++ b/service/iotsitewise/types/types.go @@ -2641,6 +2641,17 @@ type PropertyType struct { noSmithyDocumentSerde } +// The value type of null asset property data with BAD and UNCERTAIN qualities. +type PropertyValueNullValue struct { + + // The type of null asset property data. + // + // This member is required. + ValueType RawValueType + + noSmithyDocumentSerde +} + // Contains a list of value updates for an asset property in the list of asset // entries consumed by the [BatchPutAssetPropertyValue]API operation. // @@ -3057,13 +3068,18 @@ type Variant struct { // Asset property data of type Boolean (true or false). BooleanValue *bool - // Asset property data of type double (floating point number). + // Asset property data of type double (floating point number). The min value is + // -10^10. The max value is 10^10. Double.NaN is allowed. DoubleValue *float64 // Asset property data of type integer (whole number). IntegerValue *int32 - // Asset property data of type string (sequence of characters). + // The type of null asset property data with BAD and UNCERTAIN qualities. + NullValue *PropertyValueNullValue + + // Asset property data of type string (sequence of characters). The allowed + // pattern: "^$|[^\u0000-\u001F\u007F]+". The max length is 1024. StringValue *string noSmithyDocumentSerde diff --git a/service/iotsitewise/validators.go b/service/iotsitewise/validators.go index ef286ebb7d5..1cd30160436 100644 --- a/service/iotsitewise/validators.go +++ b/service/iotsitewise/validators.go @@ -2105,6 +2105,10 @@ func validateAssetPropertyValue(v *types.AssetPropertyValue) error { invalidParams := smithy.InvalidParamsError{Context: "AssetPropertyValue"} if v.Value == nil { invalidParams.Add(smithy.NewErrParamRequired("Value")) + } else if v.Value != nil { + if err := validateVariant(v.Value); err != nil { + invalidParams.AddNested("Value", err.(smithy.InvalidParamsError)) + } } if v.Timestamp == nil { invalidParams.Add(smithy.NewErrParamRequired("Timestamp")) @@ -2820,6 +2824,21 @@ func validatePropertyType(v *types.PropertyType) error { } } +func validatePropertyValueNullValue(v *types.PropertyValueNullValue) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PropertyValueNullValue"} + if len(v.ValueType) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("ValueType")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validatePutAssetPropertyValueEntries(v []types.PutAssetPropertyValueEntry) error { if v == nil { return nil @@ -3020,6 +3039,23 @@ func validateUserIdentity(v *types.UserIdentity) error { } } +func validateVariant(v *types.Variant) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Variant"} + if v.NullValue != nil { + if err := validatePropertyValueNullValue(v.NullValue); err != nil { + invalidParams.AddNested("NullValue", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpAssociateAssetsInput(v *AssociateAssetsInput) error { if v == nil { return nil diff --git a/service/quicksight/CHANGELOG.md b/service/quicksight/CHANGELOG.md index 8b88d90ae83..04df1389951 100644 --- a/service/quicksight/CHANGELOG.md +++ b/service/quicksight/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.83.0 (2025-01-21) + +* **Feature**: Added `DigitGroupingStyle` in ThousandsSeparator to allow grouping by `LAKH`( Indian Grouping system ) currency. Support LAKH and `CRORE` currency types in Column Formatting. + # v1.82.4 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/quicksight/deserializers.go b/service/quicksight/deserializers.go index 8325619093a..d4daae77a1d 100644 --- a/service/quicksight/deserializers.go +++ b/service/quicksight/deserializers.go @@ -94208,6 +94208,40 @@ func awsRestjson1_deserializeDocumentTableStyleTargetList(v *[]types.TableStyleT return nil } +func awsRestjson1_deserializeDocumentTableUnaggregatedFieldList(v *[]types.UnaggregatedField, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.UnaggregatedField + if *v == nil { + cv = []types.UnaggregatedField{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.UnaggregatedField + destAddr := &col + if err := awsRestjson1_deserializeDocumentUnaggregatedField(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentTableUnaggregatedFieldWells(v **types.TableUnaggregatedFieldWells, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -94231,7 +94265,7 @@ func awsRestjson1_deserializeDocumentTableUnaggregatedFieldWells(v **types.Table for key, value := range shape { switch key { case "Values": - if err := awsRestjson1_deserializeDocumentUnaggregatedFieldList(&sv.Values, value); err != nil { + if err := awsRestjson1_deserializeDocumentTableUnaggregatedFieldList(&sv.Values, value); err != nil { return err } @@ -96171,6 +96205,15 @@ func awsRestjson1_deserializeDocumentThousandSeparatorOptions(v **types.Thousand for key, value := range shape { switch key { + case "GroupingStyle": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DigitGroupingStyle to be of type string, got %T instead", value) + } + sv.GroupingStyle = types.DigitGroupingStyle(jtv) + } + case "Symbol": if value != nil { jtv, ok := value.(string) diff --git a/service/quicksight/go_module_metadata.go b/service/quicksight/go_module_metadata.go index cea6b48314b..4e1ad0a0117 100644 --- a/service/quicksight/go_module_metadata.go +++ b/service/quicksight/go_module_metadata.go @@ -3,4 +3,4 @@ package quicksight // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.82.4" +const goModuleVersion = "1.83.0" diff --git a/service/quicksight/serializers.go b/service/quicksight/serializers.go index 4e9eaef8336..c4a5f71f3e7 100644 --- a/service/quicksight/serializers.go +++ b/service/quicksight/serializers.go @@ -42197,13 +42197,26 @@ func awsRestjson1_serializeDocumentTableStyleTargetList(v []types.TableStyleTarg return nil } +func awsRestjson1_serializeDocumentTableUnaggregatedFieldList(v []types.UnaggregatedField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentUnaggregatedField(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsRestjson1_serializeDocumentTableUnaggregatedFieldWells(v *types.TableUnaggregatedFieldWells, value smithyjson.Value) error { object := value.Object() defer object.Close() if v.Values != nil { ok := object.Key("Values") - if err := awsRestjson1_serializeDocumentUnaggregatedFieldList(v.Values, ok); err != nil { + if err := awsRestjson1_serializeDocumentTableUnaggregatedFieldList(v.Values, ok); err != nil { return err } } @@ -42609,6 +42622,11 @@ func awsRestjson1_serializeDocumentThousandSeparatorOptions(v *types.ThousandSep object := value.Object() defer object.Close() + if len(v.GroupingStyle) > 0 { + ok := object.Key("GroupingStyle") + ok.String(string(v.GroupingStyle)) + } + if len(v.Symbol) > 0 { ok := object.Key("Symbol") ok.String(string(v.Symbol)) diff --git a/service/quicksight/types/enums.go b/service/quicksight/types/enums.go index ba98d8885f6..6db76d01231 100644 --- a/service/quicksight/types/enums.go +++ b/service/quicksight/types/enums.go @@ -1780,6 +1780,25 @@ func (DefaultAggregation) Values() []DefaultAggregation { } } +type DigitGroupingStyle string + +// Enum values for DigitGroupingStyle +const ( + DigitGroupingStyleDefault DigitGroupingStyle = "DEFAULT" + DigitGroupingStyleLakhs DigitGroupingStyle = "LAKHS" +) + +// Values returns all known values for DigitGroupingStyle. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (DigitGroupingStyle) Values() []DigitGroupingStyle { + return []DigitGroupingStyle{ + "DEFAULT", + "LAKHS", + } +} + type DisplayFormat string // Enum values for DisplayFormat @@ -3325,6 +3344,8 @@ const ( NumberScaleMillions NumberScale = "MILLIONS" NumberScaleBillions NumberScale = "BILLIONS" NumberScaleTrillions NumberScale = "TRILLIONS" + NumberScaleLakhs NumberScale = "LAKHS" + NumberScaleCrores NumberScale = "CRORES" ) // Values returns all known values for NumberScale. Note that this can be expanded @@ -3339,6 +3360,8 @@ func (NumberScale) Values() []NumberScale { "MILLIONS", "BILLIONS", "TRILLIONS", + "LAKHS", + "CRORES", } } diff --git a/service/quicksight/types/types.go b/service/quicksight/types/types.go index 4c8c777cef5..b7b7e2fd34f 100644 --- a/service/quicksight/types/types.go +++ b/service/quicksight/types/types.go @@ -15799,6 +15799,12 @@ type ThemeVersionSummary struct { // The options that determine the thousands separator configuration. type ThousandSeparatorOptions struct { + // Determines the way numbers are styled to accommodate different readability + // standards. The DEFAULT value uses the standard international grouping system + // and groups numbers by the thousands. The LAKHS value uses the Indian numbering + // system and groups numbers by lakhs and crores. + GroupingStyle DigitGroupingStyle + // Determines the thousands separator symbol. Symbol NumericSeparatorSymbol diff --git a/service/quicksight/validators.go b/service/quicksight/validators.go index 67b465f0e37..08d950e23c6 100644 --- a/service/quicksight/validators.go +++ b/service/quicksight/validators.go @@ -18675,13 +18675,30 @@ func validateTableStyleTargetList(v []types.TableStyleTarget) error { } } +func validateTableUnaggregatedFieldList(v []types.UnaggregatedField) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TableUnaggregatedFieldList"} + for i := range v { + if err := validateUnaggregatedField(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateTableUnaggregatedFieldWells(v *types.TableUnaggregatedFieldWells) error { if v == nil { return nil } invalidParams := smithy.InvalidParamsError{Context: "TableUnaggregatedFieldWells"} if v.Values != nil { - if err := validateUnaggregatedFieldList(v.Values); err != nil { + if err := validateTableUnaggregatedFieldList(v.Values); err != nil { invalidParams.AddNested("Values", err.(smithy.InvalidParamsError)) } } diff --git a/service/s3/api_op_GetObject.go b/service/s3/api_op_GetObject.go index c2b0c7f9da3..71dbc4beccf 100644 --- a/service/s3/api_op_GetObject.go +++ b/service/s3/api_op_GetObject.go @@ -820,8 +820,8 @@ func addGetObjectOutputChecksumMiddlewares(stack *middleware.Stack, options Opti ResponseChecksumValidation: options.ResponseChecksumValidation, ValidationAlgorithms: []string{"CRC64NVME", "CRC32", "CRC32C", "SHA256", "SHA1"}, IgnoreMultipartValidation: true, - LogValidationSkipped: true, - LogMultipartValidationSkipped: true, + LogValidationSkipped: !options.DisableLogOutputChecksumValidationSkipped, + LogMultipartValidationSkipped: !options.DisableLogOutputChecksumValidationSkipped, }) } diff --git a/service/s3/options.go b/service/s3/options.go index 6b98e8802de..6f29b807f05 100644 --- a/service/s3/options.go +++ b/service/s3/options.go @@ -52,6 +52,10 @@ type Options struct { // clients initial default settings. DefaultsMode aws.DefaultsMode + // Disables logging when the client skips output checksum validation due to lack + // of algorithm support. + DisableLogOutputChecksumValidationSkipped bool + // Allows you to disable S3 Multi-Region access points feature. DisableMultiRegionAccessPoints bool diff --git a/service/sns/CHANGELOG.md b/service/sns/CHANGELOG.md index a07f68ae7b3..dac9271d423 100644 --- a/service/sns/CHANGELOG.md +++ b/service/sns/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.33.14 (2025-01-21) + +* **Documentation**: This release adds support for the topic attribute FifoThroughputScope for SNS FIFO topics. For details, see the documentation history in the Amazon Simple Notification Service Developer Guide. + # v1.33.13 (2025-01-17) * **Bug Fix**: Fix bug where credentials weren't refreshed during retry loop. diff --git a/service/sns/api_op_CreateTopic.go b/service/sns/api_op_CreateTopic.go index 3af284af7cc..e03c6b04f7c 100644 --- a/service/sns/api_op_CreateTopic.go +++ b/service/sns/api_op_CreateTopic.go @@ -99,6 +99,19 @@ type CreateTopicInput struct { // (Optional) To override the generated value, you can specify a value for the // MessageDeduplicationId parameter for the Publish action. // + // - FifoThroughputScope – Enables higher throughput for your FIFO topic by + // adjusting the scope of deduplication. This attribute has two possible values: + // + // - Topic – The scope of message deduplication is across the entire topic. This + // is the default value and maintains existing behavior, with a maximum throughput + // of 3000 messages per second or 20MB per second, whichever comes first. + // + // - MessageGroup – The scope of deduplication is within each individual message + // group, which enables higher throughput per topic subject to regional quotas. For + // more information on quotas or to request an increase, see [Amazon SNS service quotas]in the Amazon Web + // Services General Reference. + // + // [Amazon SNS service quotas]: https://docs.aws.amazon.com/general/latest/gr/sns.html // [server-side encryption]: https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html // [Key Terms]: https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms // [KeyId]: https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters diff --git a/service/sns/api_op_Publish.go b/service/sns/api_op_Publish.go index 95860bf6eeb..4077578d735 100644 --- a/service/sns/api_op_Publish.go +++ b/service/sns/api_op_Publish.go @@ -105,19 +105,47 @@ type PublishInput struct { // Message attributes for Publish action. MessageAttributes map[string]types.MessageAttributeValue - // This parameter applies only to FIFO (first-in-first-out) topics. The - // MessageDeduplicationId can contain up to 128 alphanumeric characters (a-z, A-Z, - // 0-9) and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) . - // - // Every message must have a unique MessageDeduplicationId , which is a token used - // for deduplication of sent messages. If a message with a particular - // MessageDeduplicationId is sent successfully, any message sent with the same - // MessageDeduplicationId during the 5-minute deduplication interval is treated as - // a duplicate. - // - // If the topic has ContentBasedDeduplication set, the system generates a - // MessageDeduplicationId based on the contents of the message. Your - // MessageDeduplicationId overrides the generated one. + // - This parameter applies only to FIFO (first-in-first-out) topics. The + // MessageDeduplicationId can contain up to 128 alphanumeric characters (a-z, + // A-Z, 0-9) and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) . + // + // - Every message must have a unique MessageDeduplicationId , which is a token + // used for deduplication of sent messages within the 5 minute minimum + // deduplication interval. + // + // - The scope of deduplication depends on the FifoThroughputScope attribute, + // when set to Topic the message deduplication scope is across the entire topic, + // when set to MessageGroup the message deduplication scope is within each + // individual message group. + // + // - If a message with a particular MessageDeduplicationId is sent successfully, + // subsequent messages within the deduplication scope and interval, with the same + // MessageDeduplicationId , are accepted successfully but aren't delivered. + // + // - Every message must have a unique MessageDeduplicationId : + // + // - You may provide a MessageDeduplicationId explicitly. + // + // - If you aren't able to provide a MessageDeduplicationId and you enable + // ContentBasedDeduplication for your topic, Amazon SNS uses a SHA-256 hash to + // generate the MessageDeduplicationId using the body of the message (but not the + // attributes of the message). + // + // - If you don't provide a MessageDeduplicationId and the topic doesn't have + // ContentBasedDeduplication set, the action fails with an error. + // + // - If the topic has a ContentBasedDeduplication set, your + // MessageDeduplicationId overrides the generated one. + // + // - When ContentBasedDeduplication is in effect, messages with identical content + // sent within the deduplication scope and interval are treated as duplicates and + // only one copy of the message is delivered. + // + // - If you send one message with ContentBasedDeduplication enabled, and then + // another message with a MessageDeduplicationId that is the same as the one + // generated for the first MessageDeduplicationId , the two messages are treated + // as duplicates, within the deduplication scope and interval, and only one copy of + // the message is delivered. MessageDeduplicationId *string // This parameter applies only to FIFO (first-in-first-out) topics. The diff --git a/service/sns/api_op_SetTopicAttributes.go b/service/sns/api_op_SetTopicAttributes.go index 27a71e67f32..49379a1a997 100644 --- a/service/sns/api_op_SetTopicAttributes.go +++ b/service/sns/api_op_SetTopicAttributes.go @@ -162,6 +162,19 @@ type SetTopicAttributesInput struct { // (Optional) To override the generated value, you can specify a value for the // MessageDeduplicationId parameter for the Publish action. // + // - FifoThroughputScope – Enables higher throughput for your FIFO topic by + // adjusting the scope of deduplication. This attribute has two possible values: + // + // - Topic – The scope of message deduplication is across the entire topic. This + // is the default value and maintains existing behavior, with a maximum throughput + // of 3000 messages per second or 20MB per second, whichever comes first. + // + // - MessageGroup – The scope of deduplication is within each individual message + // group, which enables higher throughput per topic subject to regional quotas. For + // more information on quotas or to request an increase, see [Amazon SNS service quotas]in the Amazon Web + // Services General Reference. + // + // [Amazon SNS service quotas]: https://docs.aws.amazon.com/general/latest/gr/sns.html // [Using Amazon SNS Application Attributes for Message Delivery Status]: https://docs.aws.amazon.com/sns/latest/dg/sns-msg-status.html // [Key Terms]: https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms // [KeyId]: https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters diff --git a/service/sns/go_module_metadata.go b/service/sns/go_module_metadata.go index b01e666a8a2..1e4904acd6f 100644 --- a/service/sns/go_module_metadata.go +++ b/service/sns/go_module_metadata.go @@ -3,4 +3,4 @@ package sns // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.33.13" +const goModuleVersion = "1.33.14" diff --git a/service/sns/types/types.go b/service/sns/types/types.go index d7c5eb7dc20..8d2ce1e5ff1 100644 --- a/service/sns/types/types.go +++ b/service/sns/types/types.go @@ -141,10 +141,22 @@ type PublishBatchRequestEntry struct { // This parameter applies only to FIFO (first-in-first-out) topics. // - // The token used for deduplication of messages within a 5-minute minimum - // deduplication interval. If a message with a particular MessageDeduplicationId - // is sent successfully, subsequent messages with the same MessageDeduplicationId - // are accepted successfully but aren't delivered. + // - This parameter applies only to FIFO (first-in-first-out) topics. The + // MessageDeduplicationId can contain up to 128 alphanumeric characters (a-z, + // A-Z, 0-9) and punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) . + // + // - Every message must have a unique MessageDeduplicationId , which is a token + // used for deduplication of sent messages within the 5 minute minimum + // deduplication interval. + // + // - The scope of deduplication depends on the FifoThroughputScope attribute, + // when set to Topic the message deduplication scope is across the entire topic, + // when set to MessageGroup the message deduplication scope is within each + // individual message group. + // + // - If a message with a particular MessageDeduplicationId is sent successfully, + // subsequent messages within the deduplication scope and interval, with the same + // MessageDeduplicationId , are accepted successfully but aren't delivered. // // - Every message must have a unique MessageDeduplicationId . // @@ -162,13 +174,14 @@ type PublishBatchRequestEntry struct { // MessageDeduplicationId overrides the generated one. // // - When ContentBasedDeduplication is in effect, messages with identical content - // sent within the deduplication interval are treated as duplicates and only one - // copy of the message is delivered. + // sent within the deduplication scope and interval are treated as duplicates and + // only one copy of the message is delivered. // // - If you send one message with ContentBasedDeduplication enabled, and then // another message with a MessageDeduplicationId that is the same as the one // generated for the first MessageDeduplicationId , the two messages are treated - // as duplicates and only one copy of the message is delivered. + // as duplicates, within the deduplication scope and interval, and only one copy of + // the message is delivered. // // The MessageDeduplicationId is available to the consumer of the message (this // can be useful for troubleshooting delivery issues). @@ -179,11 +192,6 @@ type PublishBatchRequestEntry struct { // // Amazon SNS continues to keep track of the message deduplication ID even after // the message is received and deleted. - // - // The length of MessageDeduplicationId is 128 characters. - // - // MessageDeduplicationId can contain alphanumeric characters (a-z, A-Z, 0-9) and - // punctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) . MessageDeduplicationId *string // This parameter applies only to FIFO (first-in-first-out) topics.