diff --git a/.changelog/3a4670ca2ae245d08540a8385203dfac.json b/.changelog/3a4670ca2ae245d08540a8385203dfac.json new file mode 100644 index 00000000000..634a6322501 --- /dev/null +++ b/.changelog/3a4670ca2ae245d08540a8385203dfac.json @@ -0,0 +1,8 @@ +{ + "id": "3a4670ca-2ae2-45d0-8540-a8385203dfac", + "type": "feature", + "description": "Amazon QuickSight now supports SecretsManager Secret ARN in place of CredentialPair for DataSource creation and update. This release also has some minor documentation updates and removes CountryCode as a required parameter in GeoSpatialColumnGroup", + "modules": [ + "service/quicksight" + ] +} \ No newline at end of file diff --git a/.changelog/45fca679d3334811aba1565c0ecc1228.json b/.changelog/45fca679d3334811aba1565c0ecc1228.json new file mode 100644 index 00000000000..c9821cd1030 --- /dev/null +++ b/.changelog/45fca679d3334811aba1565c0ecc1228.json @@ -0,0 +1,8 @@ +{ + "id": "45fca679-d333-4811-aba1-565c0ecc1228", + "type": "documentation", + "description": "Gateway Load Balancer adds a new feature (target_failover) for customers to rebalance existing flows to a healthy target after marked unhealthy or deregistered. This allows graceful patching/upgrades of target appliances during maintenance windows, and helps reduce unhealthy target failover time.", + "modules": [ + "service/elasticloadbalancingv2" + ] +} \ No newline at end of file diff --git a/.changelog/b4e7cc11be4a416ba1c5980a1ea2f81a.json b/.changelog/b4e7cc11be4a416ba1c5980a1ea2f81a.json new file mode 100644 index 00000000000..30188ed5808 --- /dev/null +++ b/.changelog/b4e7cc11be4a416ba1c5980a1ea2f81a.json @@ -0,0 +1,8 @@ +{ + "id": "b4e7cc11-be4a-416b-a1c5-980a1ea2f81a", + "type": "documentation", + "description": "Documentation update to replace broken link.", + "modules": [ + "service/codegurureviewer" + ] +} \ No newline at end of file diff --git a/.changelog/f548450a636d4a169f625521494c5a32.json b/.changelog/f548450a636d4a169f625521494c5a32.json new file mode 100644 index 00000000000..2096625e9c3 --- /dev/null +++ b/.changelog/f548450a636d4a169f625521494c5a32.json @@ -0,0 +1,8 @@ +{ + "id": "f548450a-636d-4a16-9f62-5521494c5a32", + "type": "feature", + "description": "This release adds error status details for deployments and components that failed on a device and adds features to improve visibility into component installation.", + "modules": [ + "service/greengrassv2" + ] +} \ No newline at end of file diff --git a/service/cloudtrail/internal/endpoints/endpoints.go b/service/cloudtrail/internal/endpoints/endpoints.go index 26fc74e5391..9621feef920 100644 --- a/service/cloudtrail/internal/endpoints/endpoints.go +++ b/service/cloudtrail/internal/endpoints/endpoints.go @@ -377,7 +377,7 @@ var defaultPartitions = endpoints.Partitions{ { Variant: endpoints.FIPSVariant, }: { - Hostname: "cloudtrail-fips.{region}.amazonaws.com", + Hostname: "cloudtrail.us-gov-west-1.amazonaws.com", Protocols: []string{"https"}, SignatureVersions: []string{"v4"}, }, diff --git a/service/codegurureviewer/types/types.go b/service/codegurureviewer/types/types.go index 6c764bc37b6..5de86c28f45 100644 --- a/service/codegurureviewer/types/types.go +++ b/service/codegurureviewer/types/types.go @@ -44,8 +44,8 @@ type CodeArtifacts struct { // The S3 object key for a build artifacts .zip file that contains .jar or .class // files. This is required for a code review with security analysis. For more - // information, see Create code reviews with security analysis - // (https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/code-review-security.html) + // information, see Create code reviews with GitHub Actions + // (https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-cicd.html) // in the Amazon CodeGuru Reviewer User Guide. BuildArtifactsObjectKey *string diff --git a/service/elasticloadbalancingv2/api_op_SetIpAddressType.go b/service/elasticloadbalancingv2/api_op_SetIpAddressType.go index 92adce031bf..6a368f78bca 100644 --- a/service/elasticloadbalancingv2/api_op_SetIpAddressType.go +++ b/service/elasticloadbalancingv2/api_op_SetIpAddressType.go @@ -11,8 +11,8 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Sets the type of IP addresses used by the subnets of the specified Application -// Load Balancer or Network Load Balancer. +// Sets the type of IP addresses used by the subnets of the specified load +// balancer. func (c *Client) SetIpAddressType(ctx context.Context, params *SetIpAddressTypeInput, optFns ...func(*Options)) (*SetIpAddressTypeOutput, error) { if params == nil { params = &SetIpAddressTypeInput{} diff --git a/service/elasticloadbalancingv2/types/types.go b/service/elasticloadbalancingv2/types/types.go index e755279b932..adcf0b7fdb7 100644 --- a/service/elasticloadbalancingv2/types/types.go +++ b/service/elasticloadbalancingv2/types/types.go @@ -1054,12 +1054,12 @@ type TargetGroupAttribute struct { // of stickiness. The possible values are: // // * lb_cookie and app_cookie for - // Application Load Balancers + // Application Load Balancers. // - // * source_ip for Network Load Balancers + // * source_ip for Network Load Balancers. // // * - // source_ip_dest_ip and source_ip_dest_ip_proto for Gateway Load Balancers + // source_ip_dest_ip and source_ip_dest_ip_proto for Gateway Load Balancers. // // The // following attributes are supported only if the load balancer is an Application @@ -1122,6 +1122,23 @@ type TargetGroupAttribute struct { // * // proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version 2 is // enabled. The value is true or false. The default is false. + // + // The following + // attributes are supported only by Gateway Load Balancers: + // + // * + // target_failover.on_deregistration - Indicates how the Gateway Load Balancer + // handles existing flows when a target is deregistered. The possible values are + // rebalance and no_rebalance. The default is no_rebalance. The two attributes + // (target_failover.on_deregistration and target_failover.on_unhealthy) can't be + // set independently. The value you set for both attributes must be the same. + // + // * + // target_failover.on_unhealthy - Indicates how the Gateway Load Balancer handles + // existing flows when a target is unhealthy. The possible values are rebalance and + // no_rebalance. The default is no_rebalance. The two attributes + // (target_failover.on_deregistration and target_failover.on_unhealthy) cannot be + // set independently. The value you set for both attributes must be the same. Key *string // The value of the attribute. diff --git a/service/greengrassv2/api_op_ListInstalledComponents.go b/service/greengrassv2/api_op_ListInstalledComponents.go index 3b60519a0f9..f0cad859708 100644 --- a/service/greengrassv2/api_op_ListInstalledComponents.go +++ b/service/greengrassv2/api_op_ListInstalledComponents.go @@ -85,10 +85,12 @@ type ListInstalledComponentsInput struct { type ListInstalledComponentsOutput struct { - // A list that summarizes each component on the core device. Accuracy of the - // lastStatusChangeTimestamp response depends on Greengrass nucleus v2.7.0. It - // performs best on Greengrass nucleus v2.7.0 and can be inaccurate on earlier - // versions. + // A list that summarizes each component on the core device. Greengrass nucleus + // v2.7.0 or later is required to get an accurate lastStatusChangeTimestamp + // response. This response can be inaccurate in earlier Greengrass nucleus + // versions. Greengrass nucleus v2.8.0 or later is required to get an accurate + // lastInstallationSource and lastReportedTimestamp response. This response can be + // inaccurate or null in earlier Greengrass nucleus versions. InstalledComponents []types.InstalledComponent // The token for the next set of results, or null if there are no additional diff --git a/service/greengrassv2/deserializers.go b/service/greengrassv2/deserializers.go index 977a268ba49..29c1b2a106c 100644 --- a/service/greengrassv2/deserializers.go +++ b/service/greengrassv2/deserializers.go @@ -6708,6 +6708,11 @@ func awsRestjson1_deserializeDocumentEffectiveDeployment(v **types.EffectiveDepl sv.Reason = ptr.String(jtv) } + case "statusDetails": + if err := awsRestjson1_deserializeDocumentEffectiveDeploymentStatusDetails(&sv.StatusDetails, value); err != nil { + return err + } + case "targetArn": if value != nil { jtv, ok := value.(string) @@ -6726,6 +6731,78 @@ func awsRestjson1_deserializeDocumentEffectiveDeployment(v **types.EffectiveDepl return nil } +func awsRestjson1_deserializeDocumentEffectiveDeploymentErrorStack(v *[]string, 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 []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EffectiveDeploymentErrorCode to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentEffectiveDeploymentErrorTypeList(v *[]string, 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 []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EffectiveDeploymentErrorType to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentEffectiveDeploymentsList(v *[]types.EffectiveDeployment, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -6760,6 +6837,47 @@ func awsRestjson1_deserializeDocumentEffectiveDeploymentsList(v *[]types.Effecti return nil } +func awsRestjson1_deserializeDocumentEffectiveDeploymentStatusDetails(v **types.EffectiveDeploymentStatusDetails, 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.EffectiveDeploymentStatusDetails + if *v == nil { + sv = &types.EffectiveDeploymentStatusDetails{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "errorStack": + if err := awsRestjson1_deserializeDocumentEffectiveDeploymentErrorStack(&sv.ErrorStack, value); err != nil { + return err + } + + case "errorTypes": + if err := awsRestjson1_deserializeDocumentEffectiveDeploymentErrorTypeList(&sv.ErrorTypes, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentInstalledComponent(v **types.InstalledComponent, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -6809,6 +6927,31 @@ func awsRestjson1_deserializeDocumentInstalledComponent(v **types.InstalledCompo sv.IsRoot = jtv } + case "lastInstallationSource": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NonEmptyString to be of type string, got %T instead", value) + } + sv.LastInstallationSource = ptr.String(jtv) + } + + case "lastReportedTimestamp": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastReportedTimestamp = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + case "lastStatusChangeTimestamp": if value != nil { switch jtv := value.(type) { @@ -6843,6 +6986,11 @@ func awsRestjson1_deserializeDocumentInstalledComponent(v **types.InstalledCompo sv.LifecycleStateDetails = ptr.String(jtv) } + case "lifecycleStatusCodes": + if err := awsRestjson1_deserializeDocumentInstalledComponentLifecycleStatusCodeList(&sv.LifecycleStatusCodes, value); err != nil { + return err + } + default: _, _ = key, value @@ -6852,6 +7000,42 @@ func awsRestjson1_deserializeDocumentInstalledComponent(v **types.InstalledCompo return nil } +func awsRestjson1_deserializeDocumentInstalledComponentLifecycleStatusCodeList(v *[]string, 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 []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstalledComponentLifecycleStatusCode to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentInstalledComponentList(v *[]types.InstalledComponent, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/greengrassv2/types/types.go b/service/greengrassv2/types/types.go index a8f85e1ffd0..2dfd3154355 100644 --- a/service/greengrassv2/types/types.go +++ b/service/greengrassv2/types/types.go @@ -566,6 +566,31 @@ type EffectiveDeployment struct { // The reason code for the update, if the job was updated. Reason *string + // The status details that explain why a deployment has an error. This response + // will be null if the deployment is in a success state. + StatusDetails *EffectiveDeploymentStatusDetails + + noSmithyDocumentSerde +} + +// Contains all error-related information for the deployment record. The status +// details will be null if the deployment is in a success state. Greengrass nucleus +// v2.8.0 or later is required to get an accurate errorStack and errorTypes +// response. This field will not be returned for earlier Greengrass nucleus +// versions. +type EffectiveDeploymentStatusDetails struct { + + // Contains an ordered list of short error codes that range from the most generic + // error to the most specific one. The error codes describe the reason for failure + // whenever the coreDeviceExecutionStatus is in a failed state. The response will + // be an empty list if there is no error. + ErrorStack []string + + // Contains tags which describe the error. You can use the error types to classify + // errors to assist with remediating the failure. The response will be an empty + // list if there is no error. + ErrorTypes []string + noSmithyDocumentSerde } @@ -581,6 +606,16 @@ type InstalledComponent struct { // Whether or not the component is a root component. IsRoot bool + // The most recent deployment source that brought the component to the Greengrass + // core device. For a thing group deployment or thing deployment, the source will + // be the The ID of the deployment. and for local deployments it will be LOCAL. + LastInstallationSource *string + + // The last time the Greengrass core device sent a message containing a certain + // component to the Amazon Web Services Cloud. A component does not need to see a + // state change for this field to update. + LastReportedTimestamp *time.Time + // The status of how current the data is. This response is based off of component // state changes. The status reflects component disruptions and deployments. If a // component only sees a configuration update during a deployment, it might not @@ -590,9 +625,16 @@ type InstalledComponent struct { // The lifecycle state of the component. LifecycleState InstalledComponentLifecycleState - // The details about the lifecycle state of the component. + // A detailed response about the lifecycle state of the component that explains the + // reason why a component has an error or is broken. LifecycleStateDetails *string + // The status codes that indicate the reason for failure whenever the + // lifecycleState has an error or is in a broken state. Greengrass nucleus v2.8.0 + // or later is required to get an accurate lifecycleStatusCodes response. This + // response can be inaccurate in earlier Greengrass nucleus versions. + LifecycleStatusCodes []string + noSmithyDocumentSerde } diff --git a/service/guardduty/internal/endpoints/endpoints.go b/service/guardduty/internal/endpoints/endpoints.go index 040a344e46e..74f24354f7f 100644 --- a/service/guardduty/internal/endpoints/endpoints.go +++ b/service/guardduty/internal/endpoints/endpoints.go @@ -183,6 +183,9 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "eu-west-3", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "me-central-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "me-south-1", }: endpoints.Endpoint{}, diff --git a/service/quicksight/api_op_UpdateDataSet.go b/service/quicksight/api_op_UpdateDataSet.go index fc92cbad022..8a9dc98c46a 100644 --- a/service/quicksight/api_op_UpdateDataSet.go +++ b/service/quicksight/api_op_UpdateDataSet.go @@ -12,7 +12,7 @@ import ( ) // Updates a dataset. This operation doesn't support datasets that include uploaded -// files as a source. +// files as a source. Partial updates are not supported by this operation. func (c *Client) UpdateDataSet(ctx context.Context, params *UpdateDataSetInput, optFns ...func(*Options)) (*UpdateDataSetOutput, error) { if params == nil { params = &UpdateDataSetInput{} diff --git a/service/quicksight/deserializers.go b/service/quicksight/deserializers.go index 6a0ca0605c8..69b862d6bfe 100644 --- a/service/quicksight/deserializers.go +++ b/service/quicksight/deserializers.go @@ -27660,6 +27660,15 @@ func awsRestjson1_deserializeDocumentDataSource(v **types.DataSource, value inte sv.Name = ptr.String(jtv) } + case "SecretArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SecretArn to be of type string, got %T instead", value) + } + sv.SecretArn = ptr.String(jtv) + } + case "SslProperties": if err := awsRestjson1_deserializeDocumentSslProperties(&sv.SslProperties, value); err != nil { return err diff --git a/service/quicksight/serializers.go b/service/quicksight/serializers.go index 53c25b245b3..0fc00fd9273 100644 --- a/service/quicksight/serializers.go +++ b/service/quicksight/serializers.go @@ -11063,6 +11063,11 @@ func awsRestjson1_serializeDocumentDataSourceCredentials(v *types.DataSourceCred } } + if v.SecretArn != nil { + ok := object.Key("SecretArn") + ok.String(*v.SecretArn) + } + return nil } diff --git a/service/quicksight/types/types.go b/service/quicksight/types/types.go index 24db92113ff..5b605c7c7a1 100644 --- a/service/quicksight/types/types.go +++ b/service/quicksight/types/types.go @@ -991,6 +991,10 @@ type DataSource struct { // A display name for the data source. Name *string + // The Amazon Resource Name (ARN) of the secret associated with the data source in + // Amazon Secrets Manager. + SecretArn *string + // Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects // to your underlying source. SslProperties *SslProperties @@ -1024,6 +1028,10 @@ type DataSourceCredentials struct { // (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CredentialPair.html). CredentialPair *CredentialPair + // The Amazon Resource Name (ARN) of the secret associated with the data source in + // Amazon Secrets Manager. + SecretArn *string + noSmithyDocumentSerde } @@ -1453,16 +1461,14 @@ type GeoSpatialColumnGroup struct { // This member is required. Columns []string - // Country code. - // - // This member is required. - CountryCode GeoSpatialCountryCode - // A display name for the hierarchy. // // This member is required. Name *string + // Country code. + CountryCode GeoSpatialCountryCode + noSmithyDocumentSerde } @@ -3226,8 +3232,10 @@ type User struct { // RESTRICTED_AUTHOR: This role isn't currently available for use. Role UserRole - // The user's user name. In the output, the value for UserName is N/A when the - // value for IdentityType is IAM and the corresponding IAM user is deleted. + // The user's user name. This value is required if you are registering a user that + // will be managed in Amazon QuickSight. In the output, the value for UserName is + // N/A when the value for IdentityType is IAM and the corresponding IAM user is + // deleted. UserName *string noSmithyDocumentSerde diff --git a/service/quicksight/validators.go b/service/quicksight/validators.go index 99eb0061046..1b54d3142ca 100644 --- a/service/quicksight/validators.go +++ b/service/quicksight/validators.go @@ -3612,9 +3612,6 @@ func validateGeoSpatialColumnGroup(v *types.GeoSpatialColumnGroup) error { if v.Name == nil { invalidParams.Add(smithy.NewErrParamRequired("Name")) } - if len(v.CountryCode) == 0 { - invalidParams.Add(smithy.NewErrParamRequired("CountryCode")) - } if v.Columns == nil { invalidParams.Add(smithy.NewErrParamRequired("Columns")) } diff --git a/service/wisdom/internal/endpoints/endpoints.go b/service/wisdom/internal/endpoints/endpoints.go index da4a8e2f1c7..792dc8673ab 100644 --- a/service/wisdom/internal/endpoints/endpoints.go +++ b/service/wisdom/internal/endpoints/endpoints.go @@ -147,12 +147,30 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "eu-west-2", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "fips-us-east-1", + }: endpoints.Endpoint{ + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "fips-us-west-2", + }: endpoints.Endpoint{ + Deprecated: aws.TrueTernary, + }, endpoints.EndpointKey{ Region: "us-east-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-east-1", + Variant: endpoints.FIPSVariant, + }: {}, endpoints.EndpointKey{ Region: "us-west-2", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-west-2", + Variant: endpoints.FIPSVariant, + }: {}, }, }, {