diff --git a/.changelog/472166f81fd74f13a960d17e7326e3b5.json b/.changelog/472166f81fd74f13a960d17e7326e3b5.json new file mode 100644 index 00000000000..3d7e4068373 --- /dev/null +++ b/.changelog/472166f81fd74f13a960d17e7326e3b5.json @@ -0,0 +1,8 @@ +{ + "id": "472166f8-1fd7-4f13-a960-d17e7326e3b5", + "type": "feature", + "description": "Including UPDATE_* states as a success status for CreateStack waiter.", + "modules": [ + "service/cloudformation" + ] +} \ No newline at end of file diff --git a/.changelog/6d67309813884833b1050e3404c1d3b1.json b/.changelog/6d67309813884833b1050e3404c1d3b1.json new file mode 100644 index 00000000000..f67c1ecbb73 --- /dev/null +++ b/.changelog/6d67309813884833b1050e3404c1d3b1.json @@ -0,0 +1,8 @@ +{ + "id": "6d673098-1388-4833-b105-0e3404c1d3b1", + "type": "feature", + "description": "Release General Purpose type clusters", + "modules": [ + "service/finspace" + ] +} \ No newline at end of file diff --git a/.changelog/9b3357363bb540f4856d8293cd09121e.json b/.changelog/9b3357363bb540f4856d8293cd09121e.json new file mode 100644 index 00000000000..666ca9e663d --- /dev/null +++ b/.changelog/9b3357363bb540f4856d8293cd09121e.json @@ -0,0 +1,8 @@ +{ + "id": "9b335736-3bb5-40f4-856d-8293cd09121e", + "type": "feature", + "description": "This release enhances service support to create quantum tasks and hybrid jobs associated with Braket Direct Reservations.", + "modules": [ + "service/braket" + ] +} \ No newline at end of file diff --git a/.changelog/b8c7b847f1c046aebde01e583dfce067.json b/.changelog/b8c7b847f1c046aebde01e583dfce067.json new file mode 100644 index 00000000000..f8ded544187 --- /dev/null +++ b/.changelog/b8c7b847f1c046aebde01e583dfce067.json @@ -0,0 +1,8 @@ +{ + "id": "b8c7b847-f1c0-46ae-bde0-1e583dfce067", + "type": "documentation", + "description": "Documentation-only updates for Dawn", + "modules": [ + "service/servicecatalogappregistry" + ] +} \ No newline at end of file diff --git a/.changelog/bb2b3c86a753493fb0a796fb79829c25.json b/.changelog/bb2b3c86a753493fb0a796fb79829c25.json new file mode 100644 index 00000000000..6c1f8ad6ff6 --- /dev/null +++ b/.changelog/bb2b3c86a753493fb0a796fb79829c25.json @@ -0,0 +1,8 @@ +{ + "id": "bb2b3c86-a753-493f-b0a7-96fb79829c25", + "type": "feature", + "description": "Adds support for custom color correction on channels using 3D LUT files.", + "modules": [ + "service/medialive" + ] +} \ No newline at end of file diff --git a/.changelog/c0eaffd2dac046e49f1babae1ea8c141.json b/.changelog/c0eaffd2dac046e49f1babae1ea8c141.json new file mode 100644 index 00000000000..2e9bbca5a8d --- /dev/null +++ b/.changelog/c0eaffd2dac046e49f1babae1ea8c141.json @@ -0,0 +1,8 @@ +{ + "id": "c0eaffd2-dac0-46e4-9f1b-abae1ea8c141", + "type": "feature", + "description": "This release adds the ability to specify a linked account of the billing group for the custom line item resource.", + "modules": [ + "service/billingconductor" + ] +} \ No newline at end of file diff --git a/.changelog/e61a9d34218c4023ae2b3498d7e4ecfb.json b/.changelog/e61a9d34218c4023ae2b3498d7e4ecfb.json new file mode 100644 index 00000000000..6af77a49143 --- /dev/null +++ b/.changelog/e61a9d34218c4023ae2b3498d7e4ecfb.json @@ -0,0 +1,8 @@ +{ + "id": "e61a9d34-218c-4023-ae2b-3498d7e4ecfb", + "type": "feature", + "description": "This release adds the requirement to include the imageId parameter in the CreateEnvironmentEC2 API call.", + "modules": [ + "service/cloud9" + ] +} \ No newline at end of file diff --git a/service/billingconductor/api_op_CreateCustomLineItem.go b/service/billingconductor/api_op_CreateCustomLineItem.go index f91b6683407..81b587f1d57 100644 --- a/service/billingconductor/api_op_CreateCustomLineItem.go +++ b/service/billingconductor/api_op_CreateCustomLineItem.go @@ -55,6 +55,10 @@ type CreateCustomLineItemInput struct { // This member is required. Name *string + // The Amazon Web Services account in which this custom line item will be applied + // to. + AccountId *string + // A time range for which the custom line item is effective. BillingPeriodRange *types.CustomLineItemBillingPeriodRange diff --git a/service/billingconductor/deserializers.go b/service/billingconductor/deserializers.go index ed462225056..dc40ff0b723 100644 --- a/service/billingconductor/deserializers.go +++ b/service/billingconductor/deserializers.go @@ -6422,6 +6422,15 @@ func awsRestjson1_deserializeDocumentCustomLineItemListElement(v **types.CustomL for key, value := range shape { switch key { + case "AccountId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AccountId to be of type string, got %T instead", value) + } + sv.AccountId = ptr.String(jtv) + } + case "Arn": if value != nil { jtv, ok := value.(string) @@ -6585,6 +6594,15 @@ func awsRestjson1_deserializeDocumentCustomLineItemVersionListElement(v **types. for key, value := range shape { switch key { + case "AccountId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AccountId to be of type string, got %T instead", value) + } + sv.AccountId = ptr.String(jtv) + } + case "Arn": if value != nil { jtv, ok := value.(string) diff --git a/service/billingconductor/endpoints.go b/service/billingconductor/endpoints.go index a27c4bba8a9..f1f840aca11 100644 --- a/service/billingconductor/endpoints.go +++ b/service/billingconductor/endpoints.go @@ -401,7 +401,7 @@ func (r *resolver) ResolveEndpoint( } } if _UseFIPS == true { - if true == _PartitionResult.SupportsFIPS { + if _PartitionResult.SupportsFIPS == true { uriString := func() string { var out strings.Builder out.WriteString("https://billingconductor-fips.") diff --git a/service/billingconductor/serializers.go b/service/billingconductor/serializers.go index f7504802622..974eb355599 100644 --- a/service/billingconductor/serializers.go +++ b/service/billingconductor/serializers.go @@ -548,6 +548,11 @@ func awsRestjson1_serializeOpDocumentCreateCustomLineItemInput(v *CreateCustomLi object := value.Object() defer object.Close() + if v.AccountId != nil { + ok := object.Key("AccountId") + ok.String(*v.AccountId) + } + if v.BillingGroupArn != nil { ok := object.Key("BillingGroupArn") ok.String(*v.BillingGroupArn) @@ -3241,6 +3246,13 @@ func awsRestjson1_serializeDocumentListCustomLineItemsFilter(v *types.ListCustom object := value.Object() defer object.Close() + if v.AccountIds != nil { + ok := object.Key("AccountIds") + if err := awsRestjson1_serializeDocumentAccountIdList(v.AccountIds, ok); err != nil { + return err + } + } + if v.Arns != nil { ok := object.Key("Arns") if err := awsRestjson1_serializeDocumentCustomLineItemArns(v.Arns, ok); err != nil { diff --git a/service/billingconductor/types/enums.go b/service/billingconductor/types/enums.go index a71899e1e89..e575560f0d6 100644 --- a/service/billingconductor/types/enums.go +++ b/service/billingconductor/types/enums.go @@ -276,6 +276,7 @@ const ( ValidationExceptionReasonInvalidFilter ValidationExceptionReason = "INVALID_FILTER" ValidationExceptionReasonTooManyAutoAssociateBillingGroups ValidationExceptionReason = "TOO_MANY_AUTO_ASSOCIATE_BILLING_GROUPS" ValidationExceptionReasonCannotDeleteAutoAssociateBillingGroup ValidationExceptionReason = "CANNOT_DELETE_AUTO_ASSOCIATE_BILLING_GROUP" + ValidationExceptionReasonIllegalAccountId ValidationExceptionReason = "ILLEGAL_ACCOUNT_ID" ) // Values returns all known values for ValidationExceptionReason. Note that this @@ -342,5 +343,6 @@ func (ValidationExceptionReason) Values() []ValidationExceptionReason { "INVALID_FILTER", "TOO_MANY_AUTO_ASSOCIATE_BILLING_GROUPS", "CANNOT_DELETE_AUTO_ASSOCIATE_BILLING_GROUP", + "ILLEGAL_ACCOUNT_ID", } } diff --git a/service/billingconductor/types/types.go b/service/billingconductor/types/types.go index da7225ec1dd..b220f28635f 100644 --- a/service/billingconductor/types/types.go +++ b/service/billingconductor/types/types.go @@ -223,6 +223,10 @@ type CustomLineItemFlatChargeDetails struct { // A representation of a custom line item. type CustomLineItemListElement struct { + // The Amazon Web Services account in which this custom line item will be applied + // to. + AccountId *string + // The Amazon Resource Names (ARNs) for custom line items. Arn *string @@ -279,6 +283,10 @@ type CustomLineItemPercentageChargeDetails struct { // A representation of a custom line item version. type CustomLineItemVersionListElement struct { + // The Amazon Web Services account in which this custom line item will be applied + // to. + AccountId *string + // A list of custom line item Amazon Resource Names (ARNs) to retrieve information. Arn *string @@ -487,6 +495,10 @@ type ListCustomLineItemPercentageChargeDetails struct { // FFLI information. type ListCustomLineItemsFilter struct { + // The Amazon Web Services accounts in which this custom line item will be applied + // to. + AccountIds []string + // A list of custom line item ARNs to retrieve information. Arns []string diff --git a/service/braket/api_op_CreateJob.go b/service/braket/api_op_CreateJob.go index ec56a1a2308..1641adde020 100644 --- a/service/braket/api_op_CreateJob.go +++ b/service/braket/api_op_CreateJob.go @@ -73,6 +73,9 @@ type CreateJobInput struct { // This member is required. RoleArn *string + // The list of Amazon Braket resources associated with the hybrid job. + Associations []types.Association + // Information about the output locations for job checkpoint data. CheckpointConfig *types.JobCheckpointConfig diff --git a/service/braket/api_op_CreateQuantumTask.go b/service/braket/api_op_CreateQuantumTask.go index a3fa4b3cd6a..e77c17672ba 100644 --- a/service/braket/api_op_CreateQuantumTask.go +++ b/service/braket/api_op_CreateQuantumTask.go @@ -7,6 +7,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + "github.com/aws/aws-sdk-go-v2/service/braket/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -61,6 +62,9 @@ type CreateQuantumTaskInput struct { // This member is required. Shots *int64 + // The list of Amazon Braket resources associated with the quantum task. + Associations []types.Association + // The parameters for the device to run the task on. // // This value conforms to the media type: application/json diff --git a/service/braket/api_op_GetJob.go b/service/braket/api_op_GetJob.go index e6777b520e8..b94a472f596 100644 --- a/service/braket/api_op_GetJob.go +++ b/service/braket/api_op_GetJob.go @@ -90,6 +90,9 @@ type GetJobOutput struct { // This member is required. Status types.JobPrimaryStatus + // The list of Amazon Braket resources associated with the hybrid job. + Associations []types.Association + // The billable time the Amazon Braket job used to complete. BillableDuration *int32 diff --git a/service/braket/api_op_GetQuantumTask.go b/service/braket/api_op_GetQuantumTask.go index 06788dd1191..8741bc14201 100644 --- a/service/braket/api_op_GetQuantumTask.go +++ b/service/braket/api_op_GetQuantumTask.go @@ -31,7 +31,7 @@ func (c *Client) GetQuantumTask(ctx context.Context, params *GetQuantumTaskInput type GetQuantumTaskInput struct { - // the ARN of the task to retrieve. + // The ARN of the task to retrieve. // // This member is required. QuantumTaskArn *string @@ -86,6 +86,9 @@ type GetQuantumTaskOutput struct { // This member is required. Status types.QuantumTaskStatus + // The list of Amazon Braket resources associated with the quantum task. + Associations []types.Association + // The time at which the task ended. EndedAt *time.Time diff --git a/service/braket/deserializers.go b/service/braket/deserializers.go index 80e6821d230..ac52637f6dd 100644 --- a/service/braket/deserializers.go +++ b/service/braket/deserializers.go @@ -1070,6 +1070,11 @@ func awsRestjson1_deserializeOpDocumentGetJobOutput(v **GetJobOutput, value inte return err } + case "associations": + if err := awsRestjson1_deserializeDocumentAssociations(&sv.Associations, value); err != nil { + return err + } + case "billableDuration": if value != nil { jtv, ok := value.(json.Number) @@ -1371,6 +1376,11 @@ func awsRestjson1_deserializeOpDocumentGetQuantumTaskOutput(v **GetQuantumTaskOu for key, value := range shape { switch key { + case "associations": + if err := awsRestjson1_deserializeDocumentAssociations(&sv.Associations, value); err != nil { + return err + } + case "createdAt": if value != nil { jtv, ok := value.(string) @@ -2732,6 +2742,89 @@ func awsRestjson1_deserializeDocumentAlgorithmSpecification(v **types.AlgorithmS return nil } +func awsRestjson1_deserializeDocumentAssociation(v **types.Association, 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.Association + if *v == nil { + sv = &types.Association{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected BraketResourceArn to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AssociationType to be of type string, got %T instead", value) + } + sv.Type = types.AssociationType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentAssociations(v *[]types.Association, 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.Association + if *v == nil { + cv = []types.Association{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Association + destAddr := &col + if err := awsRestjson1_deserializeDocumentAssociation(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentConflictException(v **types.ConflictException, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/braket/endpoints.go b/service/braket/endpoints.go index 8170655f6f2..16e5eb1b8cf 100644 --- a/service/braket/endpoints.go +++ b/service/braket/endpoints.go @@ -366,7 +366,7 @@ func (r *resolver) ResolveEndpoint( } } if _UseFIPS == true { - if true == _PartitionResult.SupportsFIPS { + if _PartitionResult.SupportsFIPS == true { uriString := func() string { var out strings.Builder out.WriteString("https://braket-fips.") diff --git a/service/braket/serializers.go b/service/braket/serializers.go index e638bf48c9c..0cc2676b05b 100644 --- a/service/braket/serializers.go +++ b/service/braket/serializers.go @@ -241,6 +241,13 @@ func awsRestjson1_serializeOpDocumentCreateJobInput(v *CreateJobInput, value smi } } + if v.Associations != nil { + ok := object.Key("associations") + if err := awsRestjson1_serializeDocumentAssociations(v.Associations, ok); err != nil { + return err + } + } + if v.CheckpointConfig != nil { ok := object.Key("checkpointConfig") if err := awsRestjson1_serializeDocumentJobCheckpointConfig(v.CheckpointConfig, ok); err != nil { @@ -387,6 +394,13 @@ func awsRestjson1_serializeOpDocumentCreateQuantumTaskInput(v *CreateQuantumTask ok.String(*v.Action) } + if v.Associations != nil { + ok := object.Key("associations") + if err := awsRestjson1_serializeDocumentAssociations(v.Associations, ok); err != nil { + return err + } + } + if v.ClientToken != nil { ok := object.Key("clientToken") ok.String(*v.ClientToken) @@ -1147,6 +1161,36 @@ func awsRestjson1_serializeDocumentAlgorithmSpecification(v *types.AlgorithmSpec return nil } +func awsRestjson1_serializeDocumentAssociation(v *types.Association, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Arn != nil { + ok := object.Key("arn") + ok.String(*v.Arn) + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsRestjson1_serializeDocumentAssociations(v []types.Association, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentAssociation(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsRestjson1_serializeDocumentContainerImage(v *types.ContainerImage, value smithyjson.Value) error { object := value.Object() defer object.Close() diff --git a/service/braket/types/enums.go b/service/braket/types/enums.go index 122191340b6..a5461764eca 100644 --- a/service/braket/types/enums.go +++ b/service/braket/types/enums.go @@ -2,6 +2,22 @@ package types +type AssociationType string + +// Enum values for AssociationType +const ( + AssociationTypeReservationTimeWindowArn AssociationType = "RESERVATION_TIME_WINDOW_ARN" +) + +// Values returns all known values for AssociationType. 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 (AssociationType) Values() []AssociationType { + return []AssociationType{ + "RESERVATION_TIME_WINDOW_ARN", + } +} + type CancellationStatus string // Enum values for CancellationStatus diff --git a/service/braket/types/types.go b/service/braket/types/types.go index 14b879a4c89..5c64ef6097b 100644 --- a/service/braket/types/types.go +++ b/service/braket/types/types.go @@ -20,6 +20,22 @@ type AlgorithmSpecification struct { noSmithyDocumentSerde } +// The Amazon Braket resource and the association type. +type Association struct { + + // The Amazon Braket resource arn. + // + // This member is required. + Arn *string + + // The association type for the specified Amazon Braket resource arn. + // + // This member is required. + Type AssociationType + + noSmithyDocumentSerde +} + // The container image used to create an Amazon Braket job. type ContainerImage struct { @@ -195,7 +211,7 @@ type JobEventDetails struct { // A message describing the event that occurred related to the Amazon Braket job. Message *string - // TThe type of event that occurred related to the Amazon Braket job. + // The type of event that occurred related to the Amazon Braket job. TimeOfEvent *time.Time noSmithyDocumentSerde diff --git a/service/braket/validators.go b/service/braket/validators.go index 70949fc0137..d99e0e9cc0b 100644 --- a/service/braket/validators.go +++ b/service/braket/validators.go @@ -344,6 +344,41 @@ func validateAlgorithmSpecification(v *types.AlgorithmSpecification) error { } } +func validateAssociation(v *types.Association) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Association"} + if v.Arn == nil { + invalidParams.Add(smithy.NewErrParamRequired("Arn")) + } + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateAssociations(v []types.Association) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Associations"} + for i := range v { + if err := validateAssociation(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateContainerImage(v *types.ContainerImage) error { if v == nil { return nil @@ -709,6 +744,11 @@ func validateOpCreateJobInput(v *CreateJobInput) error { invalidParams.AddNested("DeviceConfig", err.(smithy.InvalidParamsError)) } } + if v.Associations != nil { + if err := validateAssociations(v.Associations); err != nil { + invalidParams.AddNested("Associations", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { @@ -739,6 +779,11 @@ func validateOpCreateQuantumTaskInput(v *CreateQuantumTaskInput) error { if v.Action == nil { invalidParams.Add(smithy.NewErrParamRequired("Action")) } + if v.Associations != nil { + if err := validateAssociations(v.Associations); err != nil { + invalidParams.AddNested("Associations", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { diff --git a/service/cloud9/api_op_CreateEnvironmentEC2.go b/service/cloud9/api_op_CreateEnvironmentEC2.go index 687cfc75286..e85f815ab1a 100644 --- a/service/cloud9/api_op_CreateEnvironmentEC2.go +++ b/service/cloud9/api_op_CreateEnvironmentEC2.go @@ -32,6 +32,34 @@ func (c *Client) CreateEnvironmentEC2(ctx context.Context, params *CreateEnviron type CreateEnvironmentEC2Input struct { + // The identifier for the Amazon Machine Image (AMI) that's used to create the EC2 + // instance. To choose an AMI for the instance, you must specify a valid AMI alias + // or a valid Amazon EC2 Systems Manager (SSM) path. From December 04, 2023, you + // will be required to include the imageId parameter for the CreateEnvironmentEC2 + // action. This change will be reflected across all direct methods of communicating + // with the API, such as Amazon Web Services SDK, Amazon Web Services CLI and + // Amazon Web Services CloudFormation. This change will only affect direct API + // consumers, and not Cloud9 console users. From January 22, 2024, Amazon Linux + // (AL1) will be removed from the list of available image IDs for Cloud9. This is + // necessary as AL1 will reach the end of maintenance support in December 2023, and + // as a result will no longer receive security updates. We recommend using Amazon + // Linux 2 as the AMI to create your environment as it is fully supported. This + // change will only affect direct API consumers, and not Cloud9 console users. + // Since Ubuntu 18.04 has ended standard support as of May 31, 2023, we recommend + // you choose Ubuntu 22.04. AMI aliases + // - Amazon Linux: amazonlinux-1-x86_64 + // - Amazon Linux 2: amazonlinux-2-x86_64 + // - Ubuntu 18.04: ubuntu-18.04-x86_64 + // - Ubuntu 22.04: ubuntu-22.04-x86_64 + // SSM paths + // - Amazon Linux: resolve:ssm:/aws/service/cloud9/amis/amazonlinux-1-x86_64 + // - Amazon Linux 2: resolve:ssm:/aws/service/cloud9/amis/amazonlinux-2-x86_64 + // - Ubuntu 18.04: resolve:ssm:/aws/service/cloud9/amis/ubuntu-18.04-x86_64 + // - Ubuntu 22.04: resolve:ssm:/aws/service/cloud9/amis/ubuntu-22.04-x86_64 + // + // This member is required. + ImageId *string + // The type of instance to connect to the environment (for example, t2.micro ). // // This member is required. @@ -68,33 +96,6 @@ type CreateEnvironmentEC2Input struct { // UnauthorizedOperation . DryRun *bool - // The identifier for the Amazon Machine Image (AMI) that's used to create the EC2 - // instance. To choose an AMI for the instance, you must specify a valid AMI alias - // or a valid Amazon EC2 Systems Manager (SSM) path. From December 04, 2023, you - // will be required to include the imageId parameter for the CreateEnvironmentEC2 - // action. This change will be reflected across all direct methods of communicating - // with the API, such as Amazon Web Services SDK, Amazon Web Services CLI and - // Amazon Web Services CloudFormation. This change will only affect direct API - // consumers, and not Cloud9 console users. From January 22, 2024, Amazon Linux - // (AL1) will be removed from the list of available image IDs for Cloud9. This is - // necessary as AL1 will reach the end of maintenance support in December 2023, and - // as a result will no longer receive security updates. We recommend using Amazon - // Linux 2 as the AMI to create your environment as it is fully supported. This - // change will only affect direct API consumers, and not Cloud9 console users. - // Since Ubuntu 18.04 has ended standard support as of May 31, 2023, we recommend - // you choose Ubuntu 22.04. AMI aliases - // - Amazon Linux (default): amazonlinux-1-x86_64 - // - Amazon Linux 2: amazonlinux-2-x86_64 - // - Ubuntu 18.04: ubuntu-18.04-x86_64 - // - Ubuntu 22.04: ubuntu-22.04-x86_64 - // SSM paths - // - Amazon Linux (default): - // resolve:ssm:/aws/service/cloud9/amis/amazonlinux-1-x86_64 - // - Amazon Linux 2: resolve:ssm:/aws/service/cloud9/amis/amazonlinux-2-x86_64 - // - Ubuntu 18.04: resolve:ssm:/aws/service/cloud9/amis/ubuntu-18.04-x86_64 - // - Ubuntu 22.04: resolve:ssm:/aws/service/cloud9/amis/ubuntu-22.04-x86_64 - ImageId *string - // The Amazon Resource Name (ARN) of the environment owner. This ARN can be the // ARN of any IAM principal. If this value is not specified, the ARN defaults to // this environment's creator. diff --git a/service/cloud9/validators.go b/service/cloud9/validators.go index e1ddf6d6f9a..3f7e2ec79e4 100644 --- a/service/cloud9/validators.go +++ b/service/cloud9/validators.go @@ -320,6 +320,9 @@ func validateOpCreateEnvironmentEC2Input(v *CreateEnvironmentEC2Input) error { if v.InstanceType == nil { invalidParams.Add(smithy.NewErrParamRequired("InstanceType")) } + if v.ImageId == nil { + invalidParams.Add(smithy.NewErrParamRequired("ImageId")) + } if v.Tags != nil { if err := validateTagList(v.Tags); err != nil { invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) diff --git a/service/cloudformation/api_op_DescribeStacks.go b/service/cloudformation/api_op_DescribeStacks.go index f1a0ec9022a..039d315eddb 100644 --- a/service/cloudformation/api_op_DescribeStacks.go +++ b/service/cloudformation/api_op_DescribeStacks.go @@ -405,6 +405,262 @@ func stackCreateCompleteStateRetryable(ctx context.Context, input *DescribeStack } } + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_COMPLETE" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_IN_PROGRESS" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_FAILED" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_ROLLBACK_IN_PROGRESS" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_ROLLBACK_FAILED" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + if err == nil { + pathValue, err := jmespath.Search("Stacks[].StackStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "UPDATE_ROLLBACK_COMPLETE" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(types.StackStatus) + if !ok { + return false, fmt.Errorf("waiter comparator expected types.StackStatus value, got %T", pathValue) + } + + if string(value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + if err == nil { pathValue, err := jmespath.Search("Stacks[].StackStatus", output) if err != nil { diff --git a/service/finspace/api_op_CreateKxChangeset.go b/service/finspace/api_op_CreateKxChangeset.go index a4b51120911..c37bf3c8c76 100644 --- a/service/finspace/api_op_CreateKxChangeset.go +++ b/service/finspace/api_op_CreateKxChangeset.go @@ -33,22 +33,30 @@ func (c *Client) CreateKxChangeset(ctx context.Context, params *CreateKxChangese type CreateKxChangesetInput struct { // A list of change request objects that are run in order. A change request object - // consists of changeType , s3Path, and a dbPath. A changeType can has the + // consists of changeType , s3Path , and dbPath . A changeType can has the // following values: // - PUT – Adds or updates files in a database. // - DELETE – Deletes files in a database. // All the change requests require a mandatory dbPath attribute that defines the - // path within the database directory. The s3Path attribute defines the s3 source - // file path and is required for a PUT change type. Here is an example of how you - // can use the change request object: [ { "changeType": "PUT", - // "s3Path":"s3://bucket/db/2020.01.02/", "dbPath":"/2020.01.02/"}, { "changeType": - // "PUT", "s3Path":"s3://bucket/db/sym", "dbPath":"/"}, { "changeType": "DELETE", - // "dbPath": "/2020.01.01/"} ] In this example, the first request with PUT change - // type allows you to add files in the given s3Path under the 2020.01.02 partition - // of the database. The second request with PUT change type allows you to add a - // single sym file at database root location. The last request with DELETE change - // type allows you to delete the files under the 2020.01.01 partition of the - // database. + // path within the database directory. All database paths must start with a leading + // / and end with a trailing /. The s3Path attribute defines the s3 source file + // path and is required for a PUT change type. The s3path must end with a trailing + // / if it is a directory and must end without a trailing / if it is a file. Here + // are few examples of how you can use the change request object: + // - This request adds a single sym file at database root location. { + // "changeType": "PUT", "s3Path":"s3://bucket/db/sym", "dbPath":"/"} + // - This request adds files in the given s3Path under the 2020.01.02 partition + // of the database. { "changeType": "PUT", + // "s3Path":"s3://bucket/db/2020.01.02/", "dbPath":"/2020.01.02/"} + // - This request adds files in the given s3Path under the taq table partition of + // the database. [ { "changeType": "PUT", + // "s3Path":"s3://bucket/db/2020.01.02/taq/", "dbPath":"/2020.01.02/taq/"}] + // - This request deletes the 2020.01.02 partition of the database. [{ + // "changeType": "DELETE", "dbPath": "/2020.01.02/"} ] + // - The DELETE request allows you to delete the existing files under the + // 2020.01.02 partition of the database, and the PUT request adds a new taq table + // under it. [ {"changeType": "DELETE", "dbPath":"/2020.01.02/"}, {"changeType": + // "PUT", "s3Path":"s3://bucket/db/2020.01.02/taq/", "dbPath":"/2020.01.02/taq/"}] // // This member is required. ChangeRequests []types.ChangeRequest diff --git a/service/finspace/api_op_CreateKxCluster.go b/service/finspace/api_op_CreateKxCluster.go index 8b6596fd0a3..1a6bfb78cf0 100644 --- a/service/finspace/api_op_CreateKxCluster.go +++ b/service/finspace/api_op_CreateKxCluster.go @@ -65,6 +65,11 @@ type CreateKxClusterInput struct { // kdb systems. It allows you to create your own routing logic using the // initialization scripts and custom code. This type of cluster does not require a // writable local storage. + // - GP – A general purpose cluster allows you to quickly iterate on code during + // development by granting greater access to system commands and enabling a fast + // reload of custom code. This cluster type can optionally mount databases + // including cache and savedown storage. For this cluster type, the node count is + // fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. // // This member is required. ClusterType types.KxClusterType @@ -178,6 +183,11 @@ type CreateKxClusterOutput struct { // kdb systems. It allows you to create your own routing logic using the // initialization scripts and custom code. This type of cluster does not require a // writable local storage. + // - GP – A general purpose cluster allows you to quickly iterate on code during + // development by granting greater access to system commands and enabling a fast + // reload of custom code. This cluster type can optionally mount databases + // including cache and savedown storage. For this cluster type, the node count is + // fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. ClusterType types.KxClusterType // The details of the custom code that you want to use inside a cluster when diff --git a/service/finspace/api_op_GetKxCluster.go b/service/finspace/api_op_GetKxCluster.go index c361376c82c..c669f455e1b 100644 --- a/service/finspace/api_op_GetKxCluster.go +++ b/service/finspace/api_op_GetKxCluster.go @@ -88,6 +88,11 @@ type GetKxClusterOutput struct { // kdb systems. It allows you to create your own routing logic using the // initialization scripts and custom code. This type of cluster does not require a // writable local storage. + // - GP – A general purpose cluster allows you to quickly iterate on code during + // development by granting greater access to system commands and enabling a fast + // reload of custom code. This cluster type can optionally mount databases + // including cache and savedown storage. For this cluster type, the node count is + // fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. ClusterType types.KxClusterType // The details of the custom code that you want to use inside a cluster when diff --git a/service/finspace/api_op_ListKxClusters.go b/service/finspace/api_op_ListKxClusters.go index 933af73ae40..e906524ffc2 100644 --- a/service/finspace/api_op_ListKxClusters.go +++ b/service/finspace/api_op_ListKxClusters.go @@ -50,6 +50,11 @@ type ListKxClustersInput struct { // kdb systems. It allows you to create your own routing logic using the // initialization scripts and custom code. This type of cluster does not require a // writable local storage. + // - GP – A general purpose cluster allows you to quickly iterate on code during + // development by granting greater access to system commands and enabling a fast + // reload of custom code. This cluster type can optionally mount databases + // including cache and savedown storage. For this cluster type, the node count is + // fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. ClusterType types.KxClusterType // The maximum number of results to return in this request. diff --git a/service/finspace/api_op_UpdateKxClusterCodeConfiguration.go b/service/finspace/api_op_UpdateKxClusterCodeConfiguration.go index a7ec81a4212..afc03d8ae5c 100644 --- a/service/finspace/api_op_UpdateKxClusterCodeConfiguration.go +++ b/service/finspace/api_op_UpdateKxClusterCodeConfiguration.go @@ -51,7 +51,8 @@ type UpdateKxClusterCodeConfigurationInput struct { // A token that ensures idempotency. This token expires in 10 minutes. ClientToken *string - // Specifies the key-value pairs to make them available inside the cluster. + // Specifies the key-value pairs to make them available inside the cluster. You + // cannot update this parameter for a NO_RESTART deployment. CommandLineArguments []types.KxCommandLineArgument // The configuration that allows you to choose how you want to update the code on @@ -60,7 +61,8 @@ type UpdateKxClusterCodeConfigurationInput struct { // Specifies a Q program that will be run at launch of a cluster. It is a relative // path within .zip file that contains the custom code, which will be loaded on the - // cluster. It must include the file name itself. For example, somedir/init.q . + // cluster. It must include the file name itself. For example, somedir/init.q . You + // cannot update this parameter for a NO_RESTART deployment. InitializationScript *string noSmithyDocumentSerde diff --git a/service/finspace/types/enums.go b/service/finspace/types/enums.go index 2317f4ff638..d614d685149 100644 --- a/service/finspace/types/enums.go +++ b/service/finspace/types/enums.go @@ -208,8 +208,9 @@ type KxClusterCodeDeploymentStrategy string // Enum values for KxClusterCodeDeploymentStrategy const ( - KxClusterCodeDeploymentStrategyRolling KxClusterCodeDeploymentStrategy = "ROLLING" - KxClusterCodeDeploymentStrategyForce KxClusterCodeDeploymentStrategy = "FORCE" + KxClusterCodeDeploymentStrategyNoRestart KxClusterCodeDeploymentStrategy = "NO_RESTART" + KxClusterCodeDeploymentStrategyRolling KxClusterCodeDeploymentStrategy = "ROLLING" + KxClusterCodeDeploymentStrategyForce KxClusterCodeDeploymentStrategy = "FORCE" ) // Values returns all known values for KxClusterCodeDeploymentStrategy. Note that @@ -218,6 +219,7 @@ const ( // updates. func (KxClusterCodeDeploymentStrategy) Values() []KxClusterCodeDeploymentStrategy { return []KxClusterCodeDeploymentStrategy{ + "NO_RESTART", "ROLLING", "FORCE", } @@ -260,6 +262,7 @@ const ( KxClusterTypeHdb KxClusterType = "HDB" KxClusterTypeRdb KxClusterType = "RDB" KxClusterTypeGateway KxClusterType = "GATEWAY" + KxClusterTypeGp KxClusterType = "GP" ) // Values returns all known values for KxClusterType. Note that this can be @@ -270,6 +273,7 @@ func (KxClusterType) Values() []KxClusterType { "HDB", "RDB", "GATEWAY", + "GP", } } diff --git a/service/finspace/types/types.go b/service/finspace/types/types.go index f9d99910bfc..8e0fcb901fe 100644 --- a/service/finspace/types/types.go +++ b/service/finspace/types/types.go @@ -315,6 +315,11 @@ type KxCluster struct { // kdb systems. It allows you to create your own routing logic using the // initialization scripts and custom code. This type of cluster does not require a // writable local storage. + // - GP – A general purpose cluster allows you to quickly iterate on code during + // development by granting greater access to system commands and enabling a fast + // reload of custom code. This cluster type can optionally mount databases + // including cache and savedown storage. For this cluster type, the node count is + // fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. ClusterType KxClusterType // The timestamp at which the cluster was created in FinSpace. The value is @@ -364,6 +369,11 @@ type KxClusterCodeDeploymentConfiguration struct { // The type of deployment that you want on a cluster. // - ROLLING – This options updates the cluster by stopping the exiting q // process and starting a new q process with updated configuration. + // - NO_RESTART – This option updates the cluster without stopping the running q + // process. It is only available for GP type cluster. This option is quicker as + // it reduces the turn around time to update configuration on a cluster. With this + // deployment mode, you cannot update the initializationScript and + // commandLineArguments parameters. // - FORCE – This option updates the cluster by immediately stopping all the // running processes before starting up new ones with the updated configuration. // diff --git a/service/internal/integrationtest/go.mod b/service/internal/integrationtest/go.mod index 8f1f0882cfa..ff8d178b19a 100644 --- a/service/internal/integrationtest/go.mod +++ b/service/internal/integrationtest/go.mod @@ -116,12 +116,12 @@ replace github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream => ../../../aws/pr replace github.com/aws/aws-sdk-go-v2/config => ../../../config/ -replace github.com/aws/aws-sdk-go-v2/feature/s3/manager => ../../../feature/s3/manager/ - replace github.com/aws/aws-sdk-go-v2/credentials => ../../../credentials/ replace github.com/aws/aws-sdk-go-v2/feature/ec2/imds => ../../../feature/ec2/imds/ +replace github.com/aws/aws-sdk-go-v2/feature/s3/manager => ../../../feature/s3/manager/ + replace github.com/aws/aws-sdk-go-v2/internal/configsources => ../../../internal/configsources/ replace github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 => ../../../internal/endpoints/v2/ diff --git a/service/medialive/deserializers.go b/service/medialive/deserializers.go index 2d4b2492175..f1e865c6479 100644 --- a/service/medialive/deserializers.go +++ b/service/medialive/deserializers.go @@ -12421,6 +12421,40 @@ func awsRestjson1_deserializeDocument__listOfChannelSummary(v *[]types.ChannelSu return nil } +func awsRestjson1_deserializeDocument__listOfColorCorrection(v *[]types.ColorCorrection, 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.ColorCorrection + if *v == nil { + cv = []types.ColorCorrection{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ColorCorrection + destAddr := &col + if err := awsRestjson1_deserializeDocumentColorCorrection(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocument__listOfFailoverCondition(v *[]types.FailoverCondition, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -16704,6 +16738,100 @@ func awsRestjson1_deserializeDocumentChannelSummary(v **types.ChannelSummary, va return nil } +func awsRestjson1_deserializeDocumentColorCorrection(v **types.ColorCorrection, 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.ColorCorrection + if *v == nil { + sv = &types.ColorCorrection{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "inputColorSpace": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ColorSpace to be of type string, got %T instead", value) + } + sv.InputColorSpace = types.ColorSpace(jtv) + } + + case "outputColorSpace": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ColorSpace to be of type string, got %T instead", value) + } + sv.OutputColorSpace = types.ColorSpace(jtv) + } + + case "uri": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected __string to be of type string, got %T instead", value) + } + sv.Uri = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentColorCorrectionSettings(v **types.ColorCorrectionSettings, 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.ColorCorrectionSettings + if *v == nil { + sv = &types.ColorCorrectionSettings{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "globalColorCorrections": + if err := awsRestjson1_deserializeDocument__listOfColorCorrection(&sv.GlobalColorCorrections, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentColorSpacePassthroughSettings(v **types.ColorSpacePassthroughSettings, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -18020,6 +18148,11 @@ func awsRestjson1_deserializeDocumentEncoderSettings(v **types.EncoderSettings, return err } + case "colorCorrectionSettings": + if err := awsRestjson1_deserializeDocumentColorCorrectionSettings(&sv.ColorCorrectionSettings, value); err != nil { + return err + } + case "featureActivations": if err := awsRestjson1_deserializeDocumentFeatureActivations(&sv.FeatureActivations, value); err != nil { return err diff --git a/service/medialive/serializers.go b/service/medialive/serializers.go index 600d1613349..f74dc8702b4 100644 --- a/service/medialive/serializers.go +++ b/service/medialive/serializers.go @@ -5264,6 +5264,19 @@ func awsRestjson1_serializeDocument__listOfCaptionSelector(v []types.CaptionSele return nil } +func awsRestjson1_serializeDocument__listOfColorCorrection(v []types.ColorCorrection, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentColorCorrection(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsRestjson1_serializeDocument__listOfFailoverCondition(v []types.FailoverCondition, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -6756,6 +6769,42 @@ func awsRestjson1_serializeDocumentCdiInputSpecification(v *types.CdiInputSpecif return nil } +func awsRestjson1_serializeDocumentColorCorrection(v *types.ColorCorrection, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.InputColorSpace) > 0 { + ok := object.Key("inputColorSpace") + ok.String(string(v.InputColorSpace)) + } + + if len(v.OutputColorSpace) > 0 { + ok := object.Key("outputColorSpace") + ok.String(string(v.OutputColorSpace)) + } + + if v.Uri != nil { + ok := object.Key("uri") + ok.String(*v.Uri) + } + + return nil +} + +func awsRestjson1_serializeDocumentColorCorrectionSettings(v *types.ColorCorrectionSettings, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.GlobalColorCorrections != nil { + ok := object.Key("globalColorCorrections") + if err := awsRestjson1_serializeDocument__listOfColorCorrection(v.GlobalColorCorrections, ok); err != nil { + return err + } + } + + return nil +} + func awsRestjson1_serializeDocumentColorSpacePassthroughSettings(v *types.ColorSpacePassthroughSettings, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -7302,6 +7351,13 @@ func awsRestjson1_serializeDocumentEncoderSettings(v *types.EncoderSettings, val } } + if v.ColorCorrectionSettings != nil { + ok := object.Key("colorCorrectionSettings") + if err := awsRestjson1_serializeDocumentColorCorrectionSettings(v.ColorCorrectionSettings, ok); err != nil { + return err + } + } + if v.FeatureActivations != nil { ok := object.Key("featureActivations") if err := awsRestjson1_serializeDocumentFeatureActivations(v.FeatureActivations, ok); err != nil { diff --git a/service/medialive/types/enums.go b/service/medialive/types/enums.go index 825c196728f..59d1b5011c5 100644 --- a/service/medialive/types/enums.go +++ b/service/medialive/types/enums.go @@ -751,6 +751,28 @@ func (ChannelState) Values() []ChannelState { } } +type ColorSpace string + +// Enum values for ColorSpace +const ( + ColorSpaceHdr10 ColorSpace = "HDR10" + ColorSpaceHlg2020 ColorSpace = "HLG_2020" + ColorSpaceRec601 ColorSpace = "REC_601" + ColorSpaceRec709 ColorSpace = "REC_709" +) + +// Values returns all known values for ColorSpace. 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 (ColorSpace) Values() []ColorSpace { + return []ColorSpace{ + "HDR10", + "HLG_2020", + "REC_601", + "REC_709", + } +} + type ContentType string // Enum values for ContentType diff --git a/service/medialive/types/types.go b/service/medialive/types/types.go index 7f21e670583..2b0d4c47ae8 100644 --- a/service/medialive/types/types.go +++ b/service/medialive/types/types.go @@ -1109,6 +1109,47 @@ type ChannelSummary struct { noSmithyDocumentSerde } +// Property of ColorCorrectionSettings. Used for custom color space conversion. +// The object identifies one 3D LUT file and specifies the input/output color space +// combination that the file will be used for. +type ColorCorrection struct { + + // The color space of the input. + // + // This member is required. + InputColorSpace ColorSpace + + // The color space of the output. + // + // This member is required. + OutputColorSpace ColorSpace + + // The URI of the 3D LUT file. The protocol must be 's3:' or 's3ssl:':. + // + // This member is required. + Uri *string + + noSmithyDocumentSerde +} + +// Property of encoderSettings. Controls color conversion when you are using 3D +// LUT files to perform color conversion on video. +type ColorCorrectionSettings struct { + + // An array of colorCorrections that applies when you are using 3D LUT files to + // perform color conversion on video. Each colorCorrection contains one 3D LUT file + // (that defines the color mapping for converting an input color space to an output + // color space), and the input/output combination that this 3D LUT file applies to. + // MediaLive reads the color space in the input metadata, determines the color + // space that you have specified for the output, and finds and uses the LUT file + // that applies to this combination. + // + // This member is required. + GlobalColorCorrections []ColorCorrection + + noSmithyDocumentSerde +} + // Passthrough applies no color space conversion to the output type ColorSpacePassthroughSettings struct { noSmithyDocumentSerde @@ -1519,6 +1560,9 @@ type EncoderSettings struct { // Settings for caption decriptions CaptionDescriptions []CaptionDescription + // Color correction settings + ColorCorrectionSettings *ColorCorrectionSettings + // Feature Activations FeatureActivations *FeatureActivations diff --git a/service/medialive/validators.go b/service/medialive/validators.go index f88269b8b4c..310e394891b 100644 --- a/service/medialive/validators.go +++ b/service/medialive/validators.go @@ -1329,6 +1329,23 @@ func validate__listOfCaptionSelector(v []types.CaptionSelector) error { } } +func validate__listOfColorCorrection(v []types.ColorCorrection) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListOfColorCorrection"} + for i := range v { + if err := validateColorCorrection(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validate__listOfFailoverCondition(v []types.FailoverCondition) error { if v == nil { return nil @@ -2057,6 +2074,46 @@ func validateCaptionSelectorSettings(v *types.CaptionSelectorSettings) error { } } +func validateColorCorrection(v *types.ColorCorrection) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ColorCorrection"} + if len(v.InputColorSpace) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("InputColorSpace")) + } + if len(v.OutputColorSpace) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("OutputColorSpace")) + } + if v.Uri == nil { + invalidParams.Add(smithy.NewErrParamRequired("Uri")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateColorCorrectionSettings(v *types.ColorCorrectionSettings) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ColorCorrectionSettings"} + if v.GlobalColorCorrections == nil { + invalidParams.Add(smithy.NewErrParamRequired("GlobalColorCorrections")) + } else if v.GlobalColorCorrections != nil { + if err := validate__listOfColorCorrection(v.GlobalColorCorrections); err != nil { + invalidParams.AddNested("GlobalColorCorrections", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateDvbNitSettings(v *types.DvbNitSettings) error { if v == nil { return nil @@ -2124,6 +2181,11 @@ func validateEncoderSettings(v *types.EncoderSettings) error { invalidParams.AddNested("CaptionDescriptions", err.(smithy.InvalidParamsError)) } } + if v.ColorCorrectionSettings != nil { + if err := validateColorCorrectionSettings(v.ColorCorrectionSettings); err != nil { + invalidParams.AddNested("ColorCorrectionSettings", err.(smithy.InvalidParamsError)) + } + } if v.GlobalConfiguration != nil { if err := validateGlobalConfiguration(v.GlobalConfiguration); err != nil { invalidParams.AddNested("GlobalConfiguration", err.(smithy.InvalidParamsError)) diff --git a/service/redshift/internal/endpoints/endpoints.go b/service/redshift/internal/endpoints/endpoints.go index b781b638695..39dc830376a 100644 --- a/service/redshift/internal/endpoints/endpoints.go +++ b/service/redshift/internal/endpoints/endpoints.go @@ -364,12 +364,42 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.AwsIso, IsRegionalized: true, Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "fips-us-iso-east-1", + }: endpoints.Endpoint{ + Hostname: "redshift-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: endpoints.CredentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "fips-us-iso-west-1", + }: endpoints.Endpoint{ + Hostname: "redshift-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: endpoints.CredentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: aws.TrueTernary, + }, endpoints.EndpointKey{ Region: "us-iso-east-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-iso-east-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "redshift-fips.us-iso-east-1.c2s.ic.gov", + }, endpoints.EndpointKey{ Region: "us-iso-west-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-iso-west-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "redshift-fips.us-iso-west-1.c2s.ic.gov", + }, }, }, { @@ -393,9 +423,24 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.AwsIsoB, IsRegionalized: true, Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "fips-us-isob-east-1", + }: endpoints.Endpoint{ + Hostname: "redshift-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: endpoints.CredentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: aws.TrueTernary, + }, endpoints.EndpointKey{ Region: "us-isob-east-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-isob-east-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "redshift-fips.us-isob-east-1.sc2s.sgov.gov", + }, }, }, { diff --git a/service/servicecatalogappregistry/api_op_AssociateResource.go b/service/servicecatalogappregistry/api_op_AssociateResource.go index 5bfa5475721..afb62365ce0 100644 --- a/service/servicecatalogappregistry/api_op_AssociateResource.go +++ b/service/servicecatalogappregistry/api_op_AssociateResource.go @@ -23,7 +23,7 @@ import ( // AWSServiceCatalogAppRegistryFullAccess policy. For more information, see // AWSServiceCatalogAppRegistryFullAccess (https://docs.aws.amazon.com/servicecatalog/latest/arguide/full.html) // in the AppRegistry Administrator Guide. -// - resource-groups:DisassociateResource +// - resource-groups:AssociateResource // - cloudformation:UpdateStack // - cloudformation:DescribeStacks // diff --git a/service/servicecatalogappregistry/endpoints_test.go b/service/servicecatalogappregistry/endpoints_test.go index 1346f6e6c73..c0a0a2d4af4 100644 --- a/service/servicecatalogappregistry/endpoints_test.go +++ b/service/servicecatalogappregistry/endpoints_test.go @@ -1868,23 +1868,3 @@ func TestEndpointCase50(t *testing.T) { t.Errorf("expect %v error in %v", e, a) } } - -// Partition doesn't support DualStack -func TestEndpointCase51(t *testing.T) { - var params = EndpointParameters{ - Region: ptr.String("us-isob-east-1"), - UseFIPS: ptr.Bool(false), - UseDualStack: ptr.Bool(true), - } - - resolver := NewDefaultEndpointResolverV2() - result, err := resolver.ResolveEndpoint(context.Background(), params) - _, _ = result, err - - if err == nil { - t.Fatalf("expect error, got none") - } - if e, a := "DualStack is enabled but this partition does not support DualStack", err.Error(); !strings.Contains(a, e) { - t.Errorf("expect %v error in %v", e, a) - } -} diff --git a/service/signer/internal/endpoints/endpoints.go b/service/signer/internal/endpoints/endpoints.go index c92f010dcb3..2dfe51e71f1 100644 --- a/service/signer/internal/endpoints/endpoints.go +++ b/service/signer/internal/endpoints/endpoints.go @@ -217,6 +217,38 @@ var defaultPartitions = endpoints.Partitions{ }, Deprecated: aws.TrueTernary, }, + endpoints.EndpointKey{ + Region: "fips-verification-us-east-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer-fips.us-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-1", + }, + }, + endpoints.EndpointKey{ + Region: "fips-verification-us-east-2", + }: endpoints.Endpoint{ + Hostname: "verification.signer-fips.us-east-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-2", + }, + }, + endpoints.EndpointKey{ + Region: "fips-verification-us-west-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer-fips.us-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-1", + }, + }, + endpoints.EndpointKey{ + Region: "fips-verification-us-west-2", + }: endpoints.Endpoint{ + Hostname: "verification.signer-fips.us-west-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-2", + }, + }, endpoints.EndpointKey{ Region: "me-south-1", }: endpoints.Endpoint{}, @@ -259,6 +291,166 @@ var defaultPartitions = endpoints.Partitions{ }: { Hostname: "signer-fips.us-west-2.amazonaws.com", }, + endpoints.EndpointKey{ + Region: "verification-af-south-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.af-south-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "af-south-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-ap-east-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.ap-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-east-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-ap-northeast-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.ap-northeast-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-northeast-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-ap-northeast-2", + }: endpoints.Endpoint{ + Hostname: "verification.signer.ap-northeast-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-northeast-2", + }, + }, + endpoints.EndpointKey{ + Region: "verification-ap-south-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.ap-south-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-south-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-ap-southeast-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.ap-southeast-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-ap-southeast-2", + }: endpoints.Endpoint{ + Hostname: "verification.signer.ap-southeast-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ap-southeast-2", + }, + }, + endpoints.EndpointKey{ + Region: "verification-ca-central-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.ca-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "ca-central-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-eu-central-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.eu-central-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-central-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-eu-north-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.eu-north-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-north-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-eu-south-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.eu-south-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-south-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-eu-west-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.eu-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-west-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-eu-west-2", + }: endpoints.Endpoint{ + Hostname: "verification.signer.eu-west-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-west-2", + }, + }, + endpoints.EndpointKey{ + Region: "verification-eu-west-3", + }: endpoints.Endpoint{ + Hostname: "verification.signer.eu-west-3.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-west-3", + }, + }, + endpoints.EndpointKey{ + Region: "verification-me-south-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.me-south-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "me-south-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-sa-east-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.sa-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "sa-east-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-us-east-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.us-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-us-east-2", + }: endpoints.Endpoint{ + Hostname: "verification.signer.us-east-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-2", + }, + }, + endpoints.EndpointKey{ + Region: "verification-us-west-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.us-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-us-west-2", + }: endpoints.Endpoint{ + Hostname: "verification.signer.us-west-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-2", + }, + }, }, }, { @@ -302,6 +494,22 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "cn-northwest-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "verification-cn-north-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.cn-north-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-north-1", + }, + }, + endpoints.EndpointKey{ + Region: "verification-cn-northwest-1", + }: endpoints.Endpoint{ + Hostname: "verification.signer.cn-northwest-1.amazonaws.com.cn", + CredentialScope: endpoints.CredentialScope{ + Region: "cn-northwest-1", + }, + }, }, }, {