diff --git a/.changelog/82daea5135c24d9bbf004603d4443c04.json b/.changelog/82daea5135c24d9bbf004603d4443c04.json new file mode 100644 index 00000000000..a7ca03821c0 --- /dev/null +++ b/.changelog/82daea5135c24d9bbf004603d4443c04.json @@ -0,0 +1,8 @@ +{ + "id": "82daea51-35c2-4d9b-bf00-4603d4443c04", + "type": "feature", + "description": "This release fixes a regression in number of access control tags that are allowed to be added to a security profile in Amazon Connect. You can now add up to four access control tags on a single security profile.", + "modules": [ + "service/connect" + ] +} \ No newline at end of file diff --git a/.changelog/88b72bc457a44b5f8aff048727b27910.json b/.changelog/88b72bc457a44b5f8aff048727b27910.json new file mode 100644 index 00000000000..bfb50c1d01b --- /dev/null +++ b/.changelog/88b72bc457a44b5f8aff048727b27910.json @@ -0,0 +1,8 @@ +{ + "id": "88b72bc4-57a4-4b5f-8aff-048727b27910", + "type": "feature", + "description": "Added support for threat protection for custom authentication in Amazon Cognito user pools.", + "modules": [ + "service/cognitoidentityprovider" + ] +} \ No newline at end of file diff --git a/.changelog/a2d960b3e13545fb83b7978496aa0dbc.json b/.changelog/a2d960b3e13545fb83b7978496aa0dbc.json new file mode 100644 index 00000000000..def5ad01523 --- /dev/null +++ b/.changelog/a2d960b3e13545fb83b7978496aa0dbc.json @@ -0,0 +1,8 @@ +{ + "id": "a2d960b3-e135-45fb-83b7-978496aa0dbc", + "type": "feature", + "description": "This release adds support to retrieve the validation status when creating or updating Glue Data Catalog Views. Also added is support for BasicCatalogTarget partition keys.", + "modules": [ + "service/glue" + ] +} \ No newline at end of file diff --git a/.changelog/abb82f33ab4f4d259baa1ff38b3ce8ab.json b/.changelog/abb82f33ab4f4d259baa1ff38b3ce8ab.json new file mode 100644 index 00000000000..7ec06648b80 --- /dev/null +++ b/.changelog/abb82f33ab4f4d259baa1ff38b3ce8ab.json @@ -0,0 +1,8 @@ +{ + "id": "abb82f33-ab4f-4d25-9baa-1ff38b3ce8ab", + "type": "feature", + "description": "Launch of private IPv6 addressing for VPCs and Subnets. VPC IPAM supports the planning and monitoring of private IPv6 usage.", + "modules": [ + "service/ec2" + ] +} \ No newline at end of file diff --git a/feature/dynamodbstreams/attributevalue/go_module_metadata.go b/feature/dynamodbstreams/attributevalue/go_module_metadata.go index 60342bba452..505e79ec5c4 100644 --- a/feature/dynamodbstreams/attributevalue/go_module_metadata.go +++ b/feature/dynamodbstreams/attributevalue/go_module_metadata.go @@ -3,4 +3,4 @@ package attributevalue // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.13.59" +const goModuleVersion = "1.14.10" diff --git a/service/cognitoidentityprovider/deserializers.go b/service/cognitoidentityprovider/deserializers.go index aa735f2363a..8d97c9f570b 100644 --- a/service/cognitoidentityprovider/deserializers.go +++ b/service/cognitoidentityprovider/deserializers.go @@ -14665,6 +14665,46 @@ func awsAwsjson11_deserializeDocumentAdminCreateUserConfigType(v **types.AdminCr return nil } +func awsAwsjson11_deserializeDocumentAdvancedSecurityAdditionalFlowsType(v **types.AdvancedSecurityAdditionalFlowsType, 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.AdvancedSecurityAdditionalFlowsType + if *v == nil { + sv = &types.AdvancedSecurityAdditionalFlowsType{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "CustomAuthMode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AdvancedSecurityEnabledModeType to be of type string, got %T instead", value) + } + sv.CustomAuthMode = types.AdvancedSecurityEnabledModeType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentAliasAttributesListType(v *[]types.AliasAttributeType, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -20783,6 +20823,11 @@ func awsAwsjson11_deserializeDocumentUserPoolAddOnsType(v **types.UserPoolAddOns for key, value := range shape { switch key { + case "AdvancedSecurityAdditionalFlows": + if err := awsAwsjson11_deserializeDocumentAdvancedSecurityAdditionalFlowsType(&sv.AdvancedSecurityAdditionalFlows, value); err != nil { + return err + } + case "AdvancedSecurityMode": if value != nil { jtv, ok := value.(string) diff --git a/service/cognitoidentityprovider/serializers.go b/service/cognitoidentityprovider/serializers.go index 5701c593d9f..bb038563f1d 100644 --- a/service/cognitoidentityprovider/serializers.go +++ b/service/cognitoidentityprovider/serializers.go @@ -5783,6 +5783,18 @@ func awsAwsjson11_serializeDocumentAdminCreateUserConfigType(v *types.AdminCreat return nil } +func awsAwsjson11_serializeDocumentAdvancedSecurityAdditionalFlowsType(v *types.AdvancedSecurityAdditionalFlowsType, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.CustomAuthMode) > 0 { + ok := object.Key("CustomAuthMode") + ok.String(string(v.CustomAuthMode)) + } + + return nil +} + func awsAwsjson11_serializeDocumentAliasAttributesListType(v []types.AliasAttributeType, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -7019,6 +7031,13 @@ func awsAwsjson11_serializeDocumentUserPoolAddOnsType(v *types.UserPoolAddOnsTyp object := value.Object() defer object.Close() + if v.AdvancedSecurityAdditionalFlows != nil { + ok := object.Key("AdvancedSecurityAdditionalFlows") + if err := awsAwsjson11_serializeDocumentAdvancedSecurityAdditionalFlowsType(v.AdvancedSecurityAdditionalFlows, ok); err != nil { + return err + } + } + if len(v.AdvancedSecurityMode) > 0 { ok := object.Key("AdvancedSecurityMode") ok.String(string(v.AdvancedSecurityMode)) diff --git a/service/cognitoidentityprovider/types/enums.go b/service/cognitoidentityprovider/types/enums.go index 0adf82269a5..c4fc37cd617 100644 --- a/service/cognitoidentityprovider/types/enums.go +++ b/service/cognitoidentityprovider/types/enums.go @@ -26,6 +26,26 @@ func (AccountTakeoverEventActionType) Values() []AccountTakeoverEventActionType } } +type AdvancedSecurityEnabledModeType string + +// Enum values for AdvancedSecurityEnabledModeType +const ( + AdvancedSecurityEnabledModeTypeAudit AdvancedSecurityEnabledModeType = "AUDIT" + AdvancedSecurityEnabledModeTypeEnforced AdvancedSecurityEnabledModeType = "ENFORCED" +) + +// Values returns all known values for AdvancedSecurityEnabledModeType. 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 (AdvancedSecurityEnabledModeType) Values() []AdvancedSecurityEnabledModeType { + return []AdvancedSecurityEnabledModeType{ + "AUDIT", + "ENFORCED", + } +} + type AdvancedSecurityModeType string // Enum values for AdvancedSecurityModeType diff --git a/service/cognitoidentityprovider/types/types.go b/service/cognitoidentityprovider/types/types.go index 435158baca6..29f047c9151 100644 --- a/service/cognitoidentityprovider/types/types.go +++ b/service/cognitoidentityprovider/types/types.go @@ -100,6 +100,20 @@ type AdminCreateUserConfigType struct { noSmithyDocumentSerde } +// Advanced security configuration options for additional authentication types in +// your user pool, including custom authentication and refresh-token +// authentication. +type AdvancedSecurityAdditionalFlowsType struct { + + // The operating mode of advanced security features in custom authentication with [Custom authentication challenge Lambda triggers] + // . + // + // [Custom authentication challenge Lambda triggers]: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html + CustomAuthMode AdvancedSecurityEnabledModeType + + noSmithyDocumentSerde +} + // The Amazon Pinpoint analytics configuration necessary to collect metrics for a // user pool. // @@ -1695,11 +1709,18 @@ type UsernameConfigurationType struct { // [Adding advanced security to a user pool]: https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-advanced-security.html type UserPoolAddOnsType struct { - // The operating mode of advanced security features in your user pool. + // The operating mode of advanced security features for standard authentication + // types in your user pool, including username-password and secure remote password + // (SRP) authentication. // // This member is required. AdvancedSecurityMode AdvancedSecurityModeType + // Advanced security configuration options for additional authentication types in + // your user pool, including custom authentication and refresh-token + // authentication. + AdvancedSecurityAdditionalFlows *AdvancedSecurityAdditionalFlowsType + noSmithyDocumentSerde } diff --git a/service/ec2/api_op_CreateIpam.go b/service/ec2/api_op_CreateIpam.go index 3afba1fdc38..9a258ce4d1f 100644 --- a/service/ec2/api_op_CreateIpam.go +++ b/service/ec2/api_op_CreateIpam.go @@ -51,6 +51,10 @@ type CreateIpamInput struct { // UnauthorizedOperation . DryRun *bool + // Enable this option to use your own GUA ranges as private IPv6 addresses. This + // option is disabled by default. + EnablePrivateGua *bool + // The operating Regions for the IPAM. Operating Regions are Amazon Web Services // Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only // discovers and monitors resources in the Amazon Web Services Regions you select diff --git a/service/ec2/api_op_ModifyIpam.go b/service/ec2/api_op_ModifyIpam.go index e1fea7fca44..d1d18f5f026 100644 --- a/service/ec2/api_op_ModifyIpam.go +++ b/service/ec2/api_op_ModifyIpam.go @@ -54,6 +54,10 @@ type ModifyIpamInput struct { // UnauthorizedOperation . DryRun *bool + // Enable this option to use your own GUA ranges as private IPv6 addresses. This + // option is disabled by default. + EnablePrivateGua *bool + // The operating Regions to remove. RemoveOperatingRegions []types.RemoveIpamOperatingRegion diff --git a/service/ec2/api_op_ProvisionPublicIpv4PoolCidr.go b/service/ec2/api_op_ProvisionPublicIpv4PoolCidr.go index a100021fb86..ccc34646570 100644 --- a/service/ec2/api_op_ProvisionPublicIpv4PoolCidr.go +++ b/service/ec2/api_op_ProvisionPublicIpv4PoolCidr.go @@ -39,7 +39,7 @@ type ProvisionPublicIpv4PoolCidrInput struct { IpamPoolId *string // The netmask length of the CIDR you would like to allocate to the public IPv4 - // pool. + // pool. The least specific netmask length you can define is 24. // // This member is required. NetmaskLength *int32 diff --git a/service/ec2/deserializers.go b/service/ec2/deserializers.go index 10ad23f2c50..3e37dd73801 100644 --- a/service/ec2/deserializers.go +++ b/service/ec2/deserializers.go @@ -89080,6 +89080,22 @@ func awsEc2query_deserializeDocumentIpam(v **types.Ipam, decoder smithyxml.NodeD sv.Description = ptr.String(xtv) } + case strings.EqualFold("enablePrivateGua", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv, err := strconv.ParseBool(string(val)) + if err != nil { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", val) + } + sv.EnablePrivateGua = ptr.Bool(xtv) + } + case strings.EqualFold("ipamArn", t.Name.Local): val, err := decoder.Value() if err != nil { @@ -90071,6 +90087,19 @@ func awsEc2query_deserializeDocumentIpamDiscoveredResourceCidr(v **types.IpamDis sv.IpamResourceDiscoveryId = ptr.String(xtv) } + case strings.EqualFold("ipSource", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + sv.IpSource = types.IpamResourceCidrIpSource(xtv) + } + case strings.EqualFold("ipUsage", t.Name.Local): val, err := decoder.Value() if err != nil { @@ -123490,6 +123519,32 @@ func awsEc2query_deserializeDocumentSubnetIpv6CidrBlockAssociation(v **types.Sub sv.AssociationId = ptr.String(xtv) } + case strings.EqualFold("ipSource", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + sv.IpSource = types.IpSource(xtv) + } + + case strings.EqualFold("ipv6AddressAttribute", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + sv.Ipv6AddressAttribute = types.Ipv6AddressAttribute(xtv) + } + case strings.EqualFold("ipv6CidrBlock", t.Name.Local): val, err := decoder.Value() if err != nil { @@ -139000,6 +139055,32 @@ func awsEc2query_deserializeDocumentVpcIpv6CidrBlockAssociation(v **types.VpcIpv sv.AssociationId = ptr.String(xtv) } + case strings.EqualFold("ipSource", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + sv.IpSource = types.IpSource(xtv) + } + + case strings.EqualFold("ipv6AddressAttribute", t.Name.Local): + val, err := decoder.Value() + if err != nil { + return err + } + if val == nil { + break + } + { + xtv := string(val) + sv.Ipv6AddressAttribute = types.Ipv6AddressAttribute(xtv) + } + case strings.EqualFold("ipv6CidrBlock", t.Name.Local): val, err := decoder.Value() if err != nil { diff --git a/service/ec2/serializers.go b/service/ec2/serializers.go index da44893be8d..e221492c692 100644 --- a/service/ec2/serializers.go +++ b/service/ec2/serializers.go @@ -52511,6 +52511,11 @@ func awsEc2query_serializeOpDocumentCreateIpamInput(v *CreateIpamInput, value qu objectKey.Boolean(*v.DryRun) } + if v.EnablePrivateGua != nil { + objectKey := object.Key("EnablePrivateGua") + objectKey.Boolean(*v.EnablePrivateGua) + } + if v.OperatingRegions != nil { objectKey := object.FlatKey("OperatingRegion") if err := awsEc2query_serializeDocumentAddIpamOperatingRegionSet(v.OperatingRegions, objectKey); err != nil { @@ -65958,6 +65963,11 @@ func awsEc2query_serializeOpDocumentModifyIpamInput(v *ModifyIpamInput, value qu objectKey.Boolean(*v.DryRun) } + if v.EnablePrivateGua != nil { + objectKey := object.Key("EnablePrivateGua") + objectKey.Boolean(*v.EnablePrivateGua) + } + if v.IpamId != nil { objectKey := object.Key("IpamId") objectKey.String(*v.IpamId) diff --git a/service/ec2/types/enums.go b/service/ec2/types/enums.go index 1033ea33e96..105d2539749 100644 --- a/service/ec2/types/enums.go +++ b/service/ec2/types/enums.go @@ -5298,6 +5298,27 @@ func (IpamPublicAddressType) Values() []IpamPublicAddressType { } } +type IpamResourceCidrIpSource string + +// Enum values for IpamResourceCidrIpSource +const ( + IpamResourceCidrIpSourceAmazon IpamResourceCidrIpSource = "amazon" + IpamResourceCidrIpSourceByoip IpamResourceCidrIpSource = "byoip" + IpamResourceCidrIpSourceNone IpamResourceCidrIpSource = "none" +) + +// Values returns all known values for IpamResourceCidrIpSource. 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 (IpamResourceCidrIpSource) Values() []IpamResourceCidrIpSource { + return []IpamResourceCidrIpSource{ + "amazon", + "byoip", + "none", + } +} + type IpamResourceDiscoveryAssociationState string // Enum values for IpamResourceDiscoveryAssociationState @@ -5514,6 +5535,46 @@ func (IpamTier) Values() []IpamTier { } } +type IpSource string + +// Enum values for IpSource +const ( + IpSourceAmazon IpSource = "amazon" + IpSourceByoip IpSource = "byoip" + IpSourceNone IpSource = "none" +) + +// Values returns all known values for IpSource. 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 (IpSource) Values() []IpSource { + return []IpSource{ + "amazon", + "byoip", + "none", + } +} + +type Ipv6AddressAttribute string + +// Enum values for Ipv6AddressAttribute +const ( + Ipv6AddressAttributePublic Ipv6AddressAttribute = "public" + Ipv6AddressAttributePrivate Ipv6AddressAttribute = "private" +) + +// Values returns all known values for Ipv6AddressAttribute. 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 (Ipv6AddressAttribute) Values() []Ipv6AddressAttribute { + return []Ipv6AddressAttribute{ + "public", + "private", + } +} + type Ipv6SupportValue string // Enum values for Ipv6SupportValue diff --git a/service/ec2/types/types.go b/service/ec2/types/types.go index 82862107be4..00da3b0c5c7 100644 --- a/service/ec2/types/types.go +++ b/service/ec2/types/types.go @@ -8290,6 +8290,10 @@ type Ipam struct { // The description for the IPAM. Description *string + // Enable this option to use your own GUA ranges as private IPv6 addresses. This + // option is disabled by default. + EnablePrivateGua *bool + // The Amazon Resource Name (ARN) of the IPAM. IpamArn *string @@ -8521,6 +8525,11 @@ type IpamDiscoveredResourceCidr struct { // The Availability Zone ID. AvailabilityZoneId *string + // The source that allocated the IP address space. byoip or amazon indicates + // public IP address space allocated by Amazon or space that you have allocated + // with Bring your own IP (BYOIP). none indicates private space. + IpSource IpamResourceCidrIpSource + // The percentage of IP address space in use. To convert the decimal to a // percentage, multiply the decimal by 100. Note the following: // @@ -17071,6 +17080,16 @@ type SubnetIpv6CidrBlockAssociation struct { // The ID of the association. AssociationId *string + // The source that allocated the IP address space. byoip or amazon indicates + // public IP address space allocated by Amazon or space that you have allocated + // with Bring your own IP (BYOIP). none indicates private space. + IpSource IpSource + + // Public IPv6 addresses are those advertised on the internet from Amazon Web + // Services. Private IP addresses are not and cannot be advertised on the internet + // from Amazon Web Services. + Ipv6AddressAttribute Ipv6AddressAttribute + // The IPv6 CIDR block. Ipv6CidrBlock *string @@ -19790,6 +19809,16 @@ type VpcIpv6CidrBlockAssociation struct { // The association ID for the IPv6 CIDR block. AssociationId *string + // The source that allocated the IP address space. byoip or amazon indicates + // public IP address space allocated by Amazon or space that you have allocated + // with Bring your own IP (BYOIP). none indicates private space. + IpSource IpSource + + // Public IPv6 addresses are those advertised on the internet from Amazon Web + // Services. Private IP addresses are not and cannot be advertised on the internet + // from Amazon Web Services. + Ipv6AddressAttribute Ipv6AddressAttribute + // The IPv6 CIDR block. Ipv6CidrBlock *string diff --git a/service/glue/api_op_GetTable.go b/service/glue/api_op_GetTable.go index a14b3d70466..97774702a83 100644 --- a/service/glue/api_op_GetTable.go +++ b/service/glue/api_op_GetTable.go @@ -46,6 +46,10 @@ type GetTableInput struct { // Amazon Web Services account ID is used by default. CatalogId *string + // Specifies whether to include status details related to a request to create or + // update an Glue Data Catalog view. + IncludeStatusDetails *bool + // The time as of when to read the table contents. If not set, the most recent // transaction commit time will be used. Cannot be specified along with // TransactionId . diff --git a/service/glue/api_op_GetTables.go b/service/glue/api_op_GetTables.go index 92475554053..fbd6b17610b 100644 --- a/service/glue/api_op_GetTables.go +++ b/service/glue/api_op_GetTables.go @@ -44,6 +44,10 @@ type GetTablesInput struct { // the pattern are returned. Expression *string + // Specifies whether to include status details related to a request to create or + // update an Glue Data Catalog view. + IncludeStatusDetails *bool + // The maximum number of tables to return in a single response. MaxResults *int32 diff --git a/service/glue/api_op_SearchTables.go b/service/glue/api_op_SearchTables.go index ffb2a6eec1c..ee1d299fd09 100644 --- a/service/glue/api_op_SearchTables.go +++ b/service/glue/api_op_SearchTables.go @@ -54,6 +54,10 @@ type SearchTablesInput struct { // returned, but xxlinkyy is not returned. Filters []types.PropertyPredicate + // Specifies whether to include status details related to a request to create or + // update an Glue Data Catalog view. + IncludeStatusDetails *bool + // The maximum number of tables to return in a single response. MaxResults *int32 diff --git a/service/glue/deserializers.go b/service/glue/deserializers.go index 153e88f3ef8..6e22cf0d4cb 100644 --- a/service/glue/deserializers.go +++ b/service/glue/deserializers.go @@ -28902,6 +28902,11 @@ func awsAwsjson11_deserializeDocumentBasicCatalogTarget(v **types.BasicCatalogTa sv.Name = ptr.String(jtv) } + case "PartitionKeys": + if err := awsAwsjson11_deserializeDocumentGlueStudioPathList(&sv.PartitionKeys, value); err != nil { + return err + } + case "Table": if value != nil { jtv, ok := value.(string) @@ -53806,6 +53811,47 @@ func awsAwsjson11_deserializeDocumentStatisticSummaryList(v *[]types.StatisticSu return nil } +func awsAwsjson11_deserializeDocumentStatusDetails(v **types.StatusDetails, 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.StatusDetails + if *v == nil { + sv = &types.StatusDetails{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "RequestedChange": + if err := awsAwsjson11_deserializeDocumentTable(&sv.RequestedChange, value); err != nil { + return err + } + + case "ViewValidations": + if err := awsAwsjson11_deserializeDocumentViewValidationList(&sv.ViewValidations, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentStorageDescriptor(v **types.StorageDescriptor, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -54302,6 +54348,11 @@ func awsAwsjson11_deserializeDocumentTable(v **types.Table, value interface{}) e sv.Retention = int32(i64) } + case "Status": + if err := awsAwsjson11_deserializeDocumentTableStatus(&sv.Status, value); err != nil { + return err + } + case "StorageDescriptor": if err := awsAwsjson11_deserializeDocumentStorageDescriptor(&sv.StorageDescriptor, value); err != nil { return err @@ -54777,6 +54828,115 @@ func awsAwsjson11_deserializeDocumentTableOptimizerRuns(v *[]types.TableOptimize return nil } +func awsAwsjson11_deserializeDocumentTableStatus(v **types.TableStatus, 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.TableStatus + if *v == nil { + sv = &types.TableStatus{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Action": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceAction to be of type string, got %T instead", value) + } + sv.Action = types.ResourceAction(jtv) + } + + case "Details": + if err := awsAwsjson11_deserializeDocumentStatusDetails(&sv.Details, value); err != nil { + return err + } + + case "Error": + if err := awsAwsjson11_deserializeDocumentErrorDetail(&sv.Error, value); err != nil { + return err + } + + case "RequestedBy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NameString to be of type string, got %T instead", value) + } + sv.RequestedBy = ptr.String(jtv) + } + + case "RequestTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.RequestTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "State": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceState to be of type string, got %T instead", value) + } + sv.State = types.ResourceState(jtv) + } + + case "UpdatedBy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NameString to be of type string, got %T instead", value) + } + sv.UpdatedBy = ptr.String(jtv) + } + + case "UpdateTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.UpdateTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentTableVersion(v **types.TableVersion, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -56620,6 +56780,128 @@ func awsAwsjson11_deserializeDocumentViewSubObjectsList(v *[]string, value inter return nil } +func awsAwsjson11_deserializeDocumentViewValidation(v **types.ViewValidation, 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.ViewValidation + if *v == nil { + sv = &types.ViewValidation{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Dialect": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ViewDialect to be of type string, got %T instead", value) + } + sv.Dialect = types.ViewDialect(jtv) + } + + case "DialectVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ViewDialectVersionString to be of type string, got %T instead", value) + } + sv.DialectVersion = ptr.String(jtv) + } + + case "Error": + if err := awsAwsjson11_deserializeDocumentErrorDetail(&sv.Error, value); err != nil { + return err + } + + case "State": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceState to be of type string, got %T instead", value) + } + sv.State = types.ResourceState(jtv) + } + + case "UpdateTime": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.UpdateTime = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "ViewValidationText": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ViewTextString to be of type string, got %T instead", value) + } + sv.ViewValidationText = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentViewValidationList(v *[]types.ViewValidation, 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.ViewValidation + if *v == nil { + cv = []types.ViewValidation{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ViewValidation + destAddr := &col + if err := awsAwsjson11_deserializeDocumentViewValidation(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsAwsjson11_deserializeDocumentWorkflow(v **types.Workflow, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/glue/serializers.go b/service/glue/serializers.go index bb3d19683df..4fcfc5f1740 100644 --- a/service/glue/serializers.go +++ b/service/glue/serializers.go @@ -12896,6 +12896,13 @@ func awsAwsjson11_serializeDocumentBasicCatalogTarget(v *types.BasicCatalogTarge ok.String(*v.Name) } + if v.PartitionKeys != nil { + ok := object.Key("PartitionKeys") + if err := awsAwsjson11_serializeDocumentGlueStudioPathList(v.PartitionKeys, ok); err != nil { + return err + } + } + if v.Table != nil { ok := object.Key("Table") ok.String(*v.Table) @@ -24639,6 +24646,11 @@ func awsAwsjson11_serializeOpDocumentGetTableInput(v *GetTableInput, value smith ok.String(*v.DatabaseName) } + if v.IncludeStatusDetails != nil { + ok := object.Key("IncludeStatusDetails") + ok.Boolean(*v.IncludeStatusDetails) + } + if v.Name != nil { ok := object.Key("Name") ok.String(*v.Name) @@ -24703,6 +24715,11 @@ func awsAwsjson11_serializeOpDocumentGetTablesInput(v *GetTablesInput, value smi ok.String(*v.Expression) } + if v.IncludeStatusDetails != nil { + ok := object.Key("IncludeStatusDetails") + ok.Boolean(*v.IncludeStatusDetails) + } + if v.MaxResults != nil { ok := object.Key("MaxResults") ok.Integer(*v.MaxResults) @@ -26079,6 +26096,11 @@ func awsAwsjson11_serializeOpDocumentSearchTablesInput(v *SearchTablesInput, val } } + if v.IncludeStatusDetails != nil { + ok := object.Key("IncludeStatusDetails") + ok.Boolean(*v.IncludeStatusDetails) + } + if v.MaxResults != nil { ok := object.Key("MaxResults") ok.Integer(*v.MaxResults) diff --git a/service/glue/types/enums.go b/service/glue/types/enums.go index 30e2bd6dddb..ad3960cfc1c 100644 --- a/service/glue/types/enums.go +++ b/service/glue/types/enums.go @@ -374,6 +374,10 @@ const ( ConnectionPropertyKeyKafkaSaslGssapiService ConnectionPropertyKey = "KAFKA_SASL_GSSAPI_SERVICE" ConnectionPropertyKeyKafkaSaslGssapiPrincipal ConnectionPropertyKey = "KAFKA_SASL_GSSAPI_PRINCIPAL" ConnectionPropertyKeyRoleArn ConnectionPropertyKey = "ROLE_ARN" + ConnectionPropertyKeyRegion ConnectionPropertyKey = "REGION" + ConnectionPropertyKeyWorkgroupName ConnectionPropertyKey = "WORKGROUP_NAME" + ConnectionPropertyKeyClusterIdentifier ConnectionPropertyKey = "CLUSTER_IDENTIFIER" + ConnectionPropertyKeyDatabase ConnectionPropertyKey = "DATABASE" ) // Values returns all known values for ConnectionPropertyKey. Note that this can @@ -425,6 +429,10 @@ func (ConnectionPropertyKey) Values() []ConnectionPropertyKey { "KAFKA_SASL_GSSAPI_SERVICE", "KAFKA_SASL_GSSAPI_PRINCIPAL", "ROLE_ARN", + "REGION", + "WORKGROUP_NAME", + "CLUSTER_IDENTIFIER", + "DATABASE", } } @@ -453,14 +461,16 @@ type ConnectionType string // Enum values for ConnectionType const ( - ConnectionTypeJdbc ConnectionType = "JDBC" - ConnectionTypeSftp ConnectionType = "SFTP" - ConnectionTypeMongodb ConnectionType = "MONGODB" - ConnectionTypeKafka ConnectionType = "KAFKA" - ConnectionTypeNetwork ConnectionType = "NETWORK" - ConnectionTypeMarketplace ConnectionType = "MARKETPLACE" - ConnectionTypeCustom ConnectionType = "CUSTOM" - ConnectionTypeSalesforce ConnectionType = "SALESFORCE" + ConnectionTypeJdbc ConnectionType = "JDBC" + ConnectionTypeSftp ConnectionType = "SFTP" + ConnectionTypeMongodb ConnectionType = "MONGODB" + ConnectionTypeKafka ConnectionType = "KAFKA" + ConnectionTypeNetwork ConnectionType = "NETWORK" + ConnectionTypeMarketplace ConnectionType = "MARKETPLACE" + ConnectionTypeCustom ConnectionType = "CUSTOM" + ConnectionTypeSalesforce ConnectionType = "SALESFORCE" + ConnectionTypeViewValidationRedshift ConnectionType = "VIEW_VALIDATION_REDSHIFT" + ConnectionTypeViewValidationAthena ConnectionType = "VIEW_VALIDATION_ATHENA" ) // Values returns all known values for ConnectionType. Note that this can be @@ -477,6 +487,8 @@ func (ConnectionType) Values() []ConnectionType { "MARKETPLACE", "CUSTOM", "SALESFORCE", + "VIEW_VALIDATION_REDSHIFT", + "VIEW_VALIDATION_ATHENA", } } @@ -1714,6 +1726,25 @@ func (RegistryStatus) Values() []RegistryStatus { } } +type ResourceAction string + +// Enum values for ResourceAction +const ( + ResourceActionUpdate ResourceAction = "UPDATE" + ResourceActionCreate ResourceAction = "CREATE" +) + +// Values returns all known values for ResourceAction. 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 (ResourceAction) Values() []ResourceAction { + return []ResourceAction{ + "UPDATE", + "CREATE", + } +} + type ResourceShareType string // Enum values for ResourceShareType @@ -1735,6 +1766,31 @@ func (ResourceShareType) Values() []ResourceShareType { } } +type ResourceState string + +// Enum values for ResourceState +const ( + ResourceStateQueued ResourceState = "QUEUED" + ResourceStateInProgress ResourceState = "IN_PROGRESS" + ResourceStateSuccess ResourceState = "SUCCESS" + ResourceStateStopped ResourceState = "STOPPED" + ResourceStateFailed ResourceState = "FAILED" +) + +// Values returns all known values for ResourceState. 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 (ResourceState) Values() []ResourceState { + return []ResourceState{ + "QUEUED", + "IN_PROGRESS", + "SUCCESS", + "STOPPED", + "FAILED", + } +} + type ResourceType string // Enum values for ResourceType diff --git a/service/glue/types/types.go b/service/glue/types/types.go index e60f8a37756..0e1c8c9b9d1 100644 --- a/service/glue/types/types.go +++ b/service/glue/types/types.go @@ -429,6 +429,10 @@ type BasicCatalogTarget struct { // This member is required. Table *string + // The partition keys used to distribute data across multiple partitions or shards + // based on a specific key or set of key. + PartitionKeys [][]string + noSmithyDocumentSerde } @@ -1689,6 +1693,18 @@ type Connection struct { // - KAFKA_SASL_GSSAPI_PRINCIPAL - The name of the Kerberos princial used by // Glue. For more information, see [Kafka Documentation: Configuring Kafka Brokers]. // + // - ROLE_ARN - The role to be used for running queries. + // + // - REGION - The Amazon Web Services Region where queries will be run. + // + // - WORKGROUP_NAME - The name of an Amazon Redshift serverless workgroup or + // Amazon Athena workgroup in which queries will run. + // + // - CLUSTER_IDENTIFIER - The cluster identifier of an Amazon Redshift cluster in + // which queries will run. + // + // - DATABASE - The Amazon Redshift database that you are connecting to. + // // [MIT Kerberos Documentation: Keytab]: https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html // [SASL Mechanisms]: https://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml // [Kafka Documentation: Configuring Kafka Brokers]: https://kafka.apache.org/documentation/#security_sasl_kerberos_clientconfig @@ -1794,6 +1810,12 @@ type ConnectionInput struct { // // - Requires the AuthenticationConfiguration member to be configured. // + // - VIEW_VALIDATION_REDSHIFT - Designates a connection used for view validation + // by Amazon Redshift. + // + // - VIEW_VALIDATION_ATHENA - Designates a connection used for view validation by + // Amazon Athena. + // // - NETWORK - Designates a network connection to a data source within an Amazon // Virtual Private Cloud environment (Amazon VPC). // @@ -8297,6 +8319,19 @@ type StatisticSummary struct { noSmithyDocumentSerde } +// A structure containing information about an asynchronous change to a table. +type StatusDetails struct { + + // A Table object representing the requested changes. + RequestedChange *Table + + // A list of ViewValidation objects that contain information for an analytical + // engine to validate a view. + ViewValidations []ViewValidation + + noSmithyDocumentSerde +} + // Describes the physical storage of table data. type StorageDescriptor struct { @@ -8464,6 +8499,10 @@ type Table struct { // The retention time for this table. Retention int32 + // A structure containing information about the state of an asynchronous change to + // a table. + Status *TableStatus + // A storage descriptor containing information about the physical storage of this // table. StorageDescriptor *StorageDescriptor @@ -8656,6 +8695,42 @@ type TableOptimizerRun struct { noSmithyDocumentSerde } +// A structure containing information about the state of an asynchronous change to +// a table. +type TableStatus struct { + + // Indicates which action was called on the table, currently only CREATE or UPDATE . + Action ResourceAction + + // A StatusDetails object with information about the requested change. + Details *StatusDetails + + // An error that will only appear when the state is "FAILED". This is a parent + // level exception message, there may be different Error s for each dialect. + Error *ErrorDetail + + // An ISO 8601 formatted date string indicating the time that the change was + // initiated. + RequestTime *time.Time + + // The ARN of the user who requested the asynchronous change. + RequestedBy *string + + // A generic status for the change in progress, such as QUEUED, IN_PROGRESS, + // SUCCESS, or FAILED. + State ResourceState + + // An ISO 8601 formatted date string indicating the time that the state was last + // updated. + UpdateTime *time.Time + + // The ARN of the user to last manually alter the asynchronous change (requesting + // cancellation, etc). + UpdatedBy *string + + noSmithyDocumentSerde +} + // Specifies a version of a table. type TableVersion struct { @@ -9345,6 +9420,32 @@ type ViewRepresentationInput struct { noSmithyDocumentSerde } +// A structure that contains information for an analytical engine to validate a +// view, prior to persisting the view metadata. Used in the case of direct +// UpdateTable or CreateTable API calls. +type ViewValidation struct { + + // The dialect of the query engine. + Dialect ViewDialect + + // The version of the dialect of the query engine. For example, 3.0.0. + DialectVersion *string + + // An error associated with the validation. + Error *ErrorDetail + + // The state of the validation. + State ResourceState + + // The time of the last update. + UpdateTime *time.Time + + // The SELECT query that defines the view, as provided by the customer. + ViewValidationText *string + + noSmithyDocumentSerde +} + // A workflow is a collection of multiple dependent Glue jobs and crawlers that // are run to complete a complex ETL task. A workflow manages the execution and // monitoring of all its jobs and crawlers.