From d84ce2650fa2e0e867df64fa3b7013e2e2643b83 Mon Sep 17 00:00:00 2001 From: aws-sdk-go-automation <43143561+aws-sdk-go-automation@users.noreply.github.com> Date: Fri, 15 Jul 2022 11:14:41 -0700 Subject: [PATCH] Release v1.44.56 (2022-07-15) (#4482) Release v1.44.56 (2022-07-15) === ### Service Client Updates * `service/datasync`: Updates service documentation * `service/drs`: Updates service API and documentation * `service/evidently`: Updates service API, documentation, and paginators * `service/wafv2`: Updates service API and documentation --- CHANGELOG.md | 9 + aws/endpoints/defaults.go | 81 + aws/version.go | 2 +- models/apis/datasync/2018-11-09/docs-2.json | 32 +- models/apis/drs/2020-02-26/api-2.json | 4 +- models/apis/drs/2020-02-26/docs-2.json | 3 +- models/apis/evidently/2021-02-01/api-2.json | 354 +++- models/apis/evidently/2021-02-01/docs-2.json | 203 +- .../evidently/2021-02-01/paginators-1.json | 12 + models/apis/wafv2/2019-07-29/api-2.json | 10 +- models/apis/wafv2/2019-07-29/docs-2.json | 76 +- models/endpoints/endpoints.json | 52 + service/cloudwatchevidently/api.go | 1809 ++++++++++++++++- .../cloudwatchevidentlyiface/interface.go | 30 + service/datasync/api.go | 123 +- service/drs/api.go | 16 +- service/wafv2/api.go | 213 +- service/wafv2/doc.go | 6 +- service/wafv2/errors.go | 2 +- 19 files changed, 2766 insertions(+), 271 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29ab5d06d75..8b1e2259f8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +Release v1.44.56 (2022-07-15) +=== + +### Service Client Updates +* `service/datasync`: Updates service documentation +* `service/drs`: Updates service API and documentation +* `service/evidently`: Updates service API, documentation, and paginators +* `service/wafv2`: Updates service API and documentation + Release v1.44.55 (2022-07-14) === diff --git a/aws/endpoints/defaults.go b/aws/endpoints/defaults.go index b054dd32f60..f10e5d541f1 100644 --- a/aws/endpoints/defaults.go +++ b/aws/endpoints/defaults.go @@ -6191,6 +6191,87 @@ var awsPartition = partition{ }: endpoint{}, }, }, + "devops-guru": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + Protocols: []string{"https"}, + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "devops-guru-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "devops-guru-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "devops-guru-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "devops-guru-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "devops-guru-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "devops-guru-fips.us-west-2.amazonaws.com", + }, + }, + }, "directconnect": service{ Endpoints: serviceEndpoints{ endpointKey{ diff --git a/aws/version.go b/aws/version.go index 2cbf88585ee..e8931ee1c46 100644 --- a/aws/version.go +++ b/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.44.55" +const SDKVersion = "1.44.56" diff --git a/models/apis/datasync/2018-11-09/docs-2.json b/models/apis/datasync/2018-11-09/docs-2.json index 23722d17122..583df38af3c 100644 --- a/models/apis/datasync/2018-11-09/docs-2.json +++ b/models/apis/datasync/2018-11-09/docs-2.json @@ -14,7 +14,7 @@ "CreateLocationObjectStorage": "
Creates an endpoint for an object storage system that DataSync can access for a transfer. For more information, see Creating a location for object storage.
", "CreateLocationS3": "Creates an endpoint for an Amazon S3 bucket.
For more information, see Create an Amazon S3 location in the DataSync User Guide.
", "CreateLocationSmb": "Defines a file system on a Server Message Block (SMB) server that can be read from or written to.
", - "CreateTask": "Creates a task.
A task includes a source location and a destination location, and a configuration that specifies how data is transferred. A task always transfers data from the source location to the destination location. The configuration specifies options such as task scheduling, bandwidth limits, etc. A task is the complete definition of a data transfer.
When you create a task that transfers data between Amazon Web Services services in different Amazon Web Services Regions, one of the two locations that you specify must reside in the Region where DataSync is being used. The other location must be specified in a different Region.
You can transfer data between commercial Amazon Web Services Regions except for China, or between Amazon Web Services GovCloud (US) Regions.
When you use DataSync to copy files or objects between Amazon Web Services Regions, you pay for data transfer between Regions. This is billed as data transfer OUT from your source Region to your destination Region. For more information, see Data Transfer pricing.
Configures a task, which defines where and how DataSync transfers your data.
A task includes a source location, a destination location, and the preferences for how and when you want to transfer your data (such as bandwidth limits, scheduling, among other options).
When you create a task that transfers data between Amazon Web Services services in different Amazon Web Services Regions, one of your locations must reside in the Region where you're using DataSync.
For more information, see the following topics:
", "DeleteAgent": "Deletes an agent. To specify which agent to delete, use the Amazon Resource Name (ARN) of the agent in your request. The operation disassociates the agent from your Amazon Web Services account. However, it doesn't delete the agent virtual machine (VM) from your on-premises environment.
", "DeleteLocation": "Deletes the configuration of a location used by DataSync.
", "DeleteTask": "Deletes a task.
", @@ -35,7 +35,7 @@ "ListLocations": "Returns a list of source and destination locations.
If you have more locations than are returned in a response (that is, the response returns only a truncated list of your agents), the response contains a token that you can specify in your next request to fetch the next page of locations.
", "ListTagsForResource": "Returns all the tags associated with a specified resource.
", "ListTaskExecutions": "Returns a list of executed tasks.
", - "ListTasks": "Returns a list of all the tasks.
", + "ListTasks": "Returns a list of the DataSync tasks you created.
", "StartTaskExecution": "Starts a specific invocation of a task. A TaskExecution
value represents an individual run of a task. Each task can have at most one TaskExecution
at a time.
TaskExecution
has the following transition phases: INITIALIZING | PREPARING | TRANSFERRING | VERIFYING | SUCCESS/FAILURE.
For detailed information, see the Task Execution section in the Components and Terminology topic in the DataSync User Guide.
", "TagResource": "Applies a key-value pair to an Amazon Web Services resource.
", "UntagResource": "Removes a tag from an Amazon Web Services resource.
", @@ -437,9 +437,9 @@ "base": null, "refs": { "CreateLocationFsxLustreRequest$SecurityGroupArns": "The Amazon Resource Names (ARNs) of the security groups that are used to configure the FSx for Lustre file system.
", - "CreateLocationFsxOntapRequest$SecurityGroupArns": "Specifies the security groups that DataSync can use to access your FSx for ONTAP file system. You must configure the security groups to allow outbound traffic on the following ports (depending on the protocol that you're using):
Network File System (NFS): TCP port 2049
Server Message Block (SMB): TCP port 445
Your file system's security groups must also allow inbound traffic on the same port.
", + "CreateLocationFsxOntapRequest$SecurityGroupArns": "Specifies the Amazon EC2 security groups that provide access to your file system's preferred subnet.
The security groups must allow outbound traffic on the following ports (depending on the protocol you use):
Network File System (NFS): TCP ports 111, 635, and 2049
Server Message Block (SMB): TCP port 445
Your file system's security groups must also allow inbound traffic on the same ports.
", "CreateLocationFsxOpenZfsRequest$SecurityGroupArns": "The ARNs of the security groups that are used to configure the FSx for OpenZFS file system.
", - "CreateLocationFsxWindowsRequest$SecurityGroupArns": "The ARNs of the security groups that are used to configure the FSx for Windows File Server file system.
", + "CreateLocationFsxWindowsRequest$SecurityGroupArns": "Specifies the ARNs of the security groups that provide access to your file system's preferred subnet.
If you choose a security group that doesn't allow connections from within itself, do one of the following:
Configure the security group to allow it to communicate within itself.
Choose a different security group that can communicate with the mount target's security group.
The Amazon Resource Names (ARNs) of the security groups that are configured for the FSx for Lustre file system.
", "DescribeLocationFsxOntapResponse$SecurityGroupArns": "The security groups that DataSync uses to access your FSx for ONTAP file system.
", "DescribeLocationFsxOpenZfsResponse$SecurityGroupArns": "The ARNs of the security groups that are configured for the FSx for OpenZFS file system.
", @@ -543,7 +543,7 @@ "refs": { "CreateLocationFsxLustreRequest$FsxFilesystemArn": "The Amazon Resource Name (ARN) for the FSx for Lustre file system.
", "CreateLocationFsxOpenZfsRequest$FsxFilesystemArn": "The Amazon Resource Name (ARN) of the FSx for OpenZFS file system.
", - "CreateLocationFsxWindowsRequest$FsxFilesystemArn": "The Amazon Resource Name (ARN) for the FSx for Windows File Server file system.
", + "CreateLocationFsxWindowsRequest$FsxFilesystemArn": "Specifies the Amazon Resource Name (ARN) for the FSx for Windows File Server file system.
", "DescribeLocationFsxOntapResponse$FsxFilesystemArn": "The ARN of the FSx for ONTAP file system.
" } }, @@ -589,7 +589,7 @@ "FsxWindowsSubdirectory": { "base": null, "refs": { - "CreateLocationFsxWindowsRequest$Subdirectory": "A subdirectory in the location's path. This subdirectory in the Amazon FSx for Windows File Server file system is used to read data from the Amazon FSx for Windows File Server source location or write data to the FSx for Windows File Server destination.
" + "CreateLocationFsxWindowsRequest$Subdirectory": "Specifies a mount path for your file system using forward slashes. This is where DataSync reads or writes data (depending on if this is a source or destination location).
" } }, "Gid": { @@ -691,7 +691,7 @@ "CreateLocationFsxLustreRequest$Tags": "The key-value pair that represents a tag that you want to add to the resource. The value can be an empty string. This value helps you manage, filter, and search for your resources. We recommend that you create a name tag for your location.
", "CreateLocationFsxOntapRequest$Tags": "Specifies labels that help you categorize, filter, and search for your Amazon Web Services resources. We recommend creating at least a name tag for your location.
", "CreateLocationFsxOpenZfsRequest$Tags": "The key-value pair that represents a tag that you want to add to the resource. The value can be an empty string. This value helps you manage, filter, and search for your resources. We recommend that you create a name tag for your location.
", - "CreateLocationFsxWindowsRequest$Tags": "The key-value pair that represents a tag that you want to add to the resource. The value can be an empty string. This value helps you manage, filter, and search for your resources. We recommend that you create a name tag for your location.
", + "CreateLocationFsxWindowsRequest$Tags": "Specifies labels that help you categorize, filter, and search for your Amazon Web Services resources. We recommend creating at least a name tag for your location.
", "CreateLocationHdfsRequest$Tags": "The key-value pair that represents the tag that you want to add to the location. The value can be an empty string. We recommend using tags to name your resources.
", "CreateLocationNfsRequest$Tags": "The key-value pair that represents the tag that you want to add to the location. The value can be an empty string. We recommend using tags to name your resources.
", "CreateLocationObjectStorageRequest$Tags": "Specifies the key-value pair that represents a tag that you want to add to the resource. Tags can help you manage, filter, and search for your resources. We recommend creating a name tag for your location.
", @@ -798,7 +798,7 @@ "CreateLocationFsxLustreResponse$LocationArn": "The Amazon Resource Name (ARN) of the FSx for Lustre file system location that's created.
", "CreateLocationFsxOntapResponse$LocationArn": "Specifies the ARN of the FSx for ONTAP file system location that you create.
", "CreateLocationFsxOpenZfsResponse$LocationArn": "The ARN of the FSx for OpenZFS file system location that you created.
", - "CreateLocationFsxWindowsResponse$LocationArn": "The Amazon Resource Name (ARN) of the FSx for Windows File Server file system location you created.
", + "CreateLocationFsxWindowsResponse$LocationArn": "The ARN of the FSx for Windows File Server file system location you created.
", "CreateLocationHdfsResponse$LocationArn": "The ARN of the source HDFS cluster location that's created.
", "CreateLocationNfsResponse$LocationArn": "The Amazon Resource Name (ARN) of the source NFS file system location that is created.
", "CreateLocationObjectStorageResponse$LocationArn": "Specifies the ARN of the object storage system location that you create.
", @@ -837,7 +837,7 @@ } }, "LocationFilter": { - "base": "You can use API filters to narrow down the list of resources returned by ListLocations
. For example, to retrieve all your Amazon S3 locations, you can use ListLocations
with filter name LocationType S3
and Operator Equals
.
Narrow down the list of resources returned by ListLocations
. For example, to see all your Amazon S3 locations, create a filter using \"Name\": \"LocationType\"
, \"Operator\": \"Equals\"
, and \"Values\": \"S3\"
.
For more information, see filtering resources.
", "refs": { "LocationFilters$member": null } @@ -1010,8 +1010,8 @@ "Operator": { "base": null, "refs": { - "LocationFilter$Operator": "The operator that is used to compare filter values (for example, Equals
or Contains
). For more about API filtering operators, see API filters for ListTasks and ListLocations.
The operator that is used to compare filter values (for example, Equals
or Contains
). For more about API filtering operators, see API filters for ListTasks and ListLocations.
The operator that is used to compare filter values (for example, Equals
or Contains
).
The operator that is used to compare filter values (for example, Equals
or Contains
).
The name of the Windows domain that the FSx for Windows File Server belongs to.
", + "CreateLocationFsxWindowsRequest$Domain": "Specifies the name of the Windows domain that the FSx for Windows File Server belongs to.
", "CreateLocationSmbRequest$Domain": "The name of the Windows domain that the SMB server belongs to.
", "DescribeLocationFsxWindowsResponse$Domain": "The name of the Windows domain that the FSx for Windows File Server belongs to.
", "DescribeLocationSmbResponse$Domain": "The name of the Windows domain that the SMB server belongs to.
", @@ -1156,7 +1156,7 @@ "SmbPassword": { "base": null, "refs": { - "CreateLocationFsxWindowsRequest$Password": "The password of the user who has the permissions to access files and folders in the FSx for Windows File Server file system.
", + "CreateLocationFsxWindowsRequest$Password": "Specifies the password of the user who has the permissions to access files and folders in the file system.
", "CreateLocationSmbRequest$Password": "The password of the user who can mount the share, has the permissions to access files and folders in the SMB share.
", "FsxProtocolSmb$Password": "Specifies the password of a user who has permission to access your SVM.
", "UpdateLocationSmbRequest$Password": "The password of the user who can mount the share has the permissions to access files and folders in the SMB share.
" @@ -1178,11 +1178,11 @@ "SmbUser": { "base": null, "refs": { - "CreateLocationFsxWindowsRequest$User": "The user who has the permissions to access files and folders in the FSx for Windows File Server file system.
For information about choosing a user name that ensures sufficient permissions to files, folders, and metadata, see user.
", + "CreateLocationFsxWindowsRequest$User": "Specifies the user who has the permissions to access files and folders in the file system.
For information about choosing a user name that ensures sufficient permissions to files, folders, and metadata, see user.
", "CreateLocationSmbRequest$User": "The user who can mount the share, has the permissions to access files and folders in the SMB share.
For information about choosing a user name that ensures sufficient permissions to files, folders, and metadata, see the User setting for SMB locations.
", "DescribeLocationFsxWindowsResponse$User": "The user who has the permissions to access files and folders in the FSx for Windows File Server file system.
", "DescribeLocationSmbResponse$User": "The user who can mount the share, has the permissions to access files and folders in the SMB share.
", - "FsxProtocolSmb$User": "Specifies a user who has permission to access your SVM.
", + "FsxProtocolSmb$User": "Specifies a user name that can mount the location and access the files, folders, and metadata that you need in the SVM.
If you provide a user in your Active Directory, note the following:
If you're using Directory Service for Microsoft Active Directory, the user must be a member of the Amazon Web Services Delegated FSx Administrators group.
If you're using a self-managed Active Directory, the user must be a member of either the Domain Admins group or a custom group that you specified for file system administration when you created your file system.
Make sure that the user has the permissions it needs to copy the data you want:
SE_TCB_NAME
: Required to set object ownership and file metadata. With this privilege, you also can copy NTFS discretionary access lists (DACLs).
SE_SECURITY_NAME
: May be needed to copy NTFS system access control lists (SACLs). This operation specifically requires the Windows privilege, which is granted to members of the Domain Admins group. If you configure your task to copy SACLs, make sure that the user has the required privileges. For information about copying SACLs, see Ownership and permissions-related options.
The user who can mount the share has the permissions to access files and folders in the SMB share.
" } }, @@ -1318,7 +1318,7 @@ } }, "TaskFilter": { - "base": "You can use API filters to narrow down the list of resources returned by ListTasks
. For example, to retrieve all tasks on a source location, you can use ListTasks
with filter name LocationId
and Operator Equals
with the ARN for the location.
You can use API filters to narrow down the list of resources returned by ListTasks
. For example, to retrieve all tasks on a source location, you can use ListTasks
with filter name LocationId
and Operator Equals
with the ARN for the location.
For more information, see filtering DataSync resources.
", "refs": { "TaskFilters$member": null } diff --git a/models/apis/drs/2020-02-26/api-2.json b/models/apis/drs/2020-02-26/api-2.json index 765e6a492b5..d9c75930a62 100644 --- a/models/apis/drs/2020-02-26/api-2.json +++ b/models/apis/drs/2020-02-26/api-2.json @@ -1706,7 +1706,8 @@ "enum":[ "GP2", "GP3", - "ST1" + "ST1", + "AUTO" ] }, "ReplicationConfigurationEbsEncryption":{ @@ -1722,6 +1723,7 @@ "deviceName":{"shape":"BoundedString"}, "iops":{"shape":"PositiveInteger"}, "isBootDisk":{"shape":"Boolean"}, + "optimizedStagingDiskType":{"shape":"ReplicationConfigurationReplicatedDiskStagingDiskType"}, "stagingDiskType":{"shape":"ReplicationConfigurationReplicatedDiskStagingDiskType"}, "throughput":{"shape":"PositiveInteger"} } diff --git a/models/apis/drs/2020-02-26/docs-2.json b/models/apis/drs/2020-02-26/docs-2.json index 08f1fe5d8e3..9d84f6e4f47 100644 --- a/models/apis/drs/2020-02-26/docs-2.json +++ b/models/apis/drs/2020-02-26/docs-2.json @@ -950,7 +950,7 @@ "RecoveryInstanceID": { "base": null, "refs": { - "DeleteRecoveryInstanceRequest$recoveryInstanceID": "RThe ID of the Recovery Instance to be deleted.
", + "DeleteRecoveryInstanceRequest$recoveryInstanceID": "The ID of the Recovery Instance to be deleted.
", "DisconnectRecoveryInstanceRequest$recoveryInstanceID": "The ID of the Recovery Instance to disconnect.
", "GetFailbackReplicationConfigurationRequest$recoveryInstanceID": "The ID of the Recovery Instance whose failback replication configuration should be returned.
", "GetFailbackReplicationConfigurationResponse$recoveryInstanceID": "The ID of the Recovery Instance.
", @@ -1051,6 +1051,7 @@ "ReplicationConfigurationReplicatedDiskStagingDiskType": { "base": null, "refs": { + "ReplicationConfigurationReplicatedDisk$optimizedStagingDiskType": "The Staging Disk EBS volume type to be used during replication when stagingDiskType
is set to Auto. This is a read-only field.
The Staging Disk EBS volume type to be used during replication.
" } }, diff --git a/models/apis/evidently/2021-02-01/api-2.json b/models/apis/evidently/2021-02-01/api-2.json index caedc3be474..19cd7a44122 100644 --- a/models/apis/evidently/2021-02-01/api-2.json +++ b/models/apis/evidently/2021-02-01/api-2.json @@ -97,6 +97,22 @@ {"shape":"AccessDeniedException"} ] }, + "CreateSegment":{ + "name":"CreateSegment", + "http":{ + "method":"POST", + "requestUri":"/segments", + "responseCode":200 + }, + "input":{"shape":"CreateSegmentRequest"}, + "output":{"shape":"CreateSegmentResponse"}, + "errors":[ + {"shape":"ValidationException"}, + {"shape":"ConflictException"}, + {"shape":"ServiceQuotaExceededException"}, + {"shape":"AccessDeniedException"} + ] + }, "DeleteExperiment":{ "name":"DeleteExperiment", "http":{ @@ -170,6 +186,24 @@ ], "idempotent":true }, + "DeleteSegment":{ + "name":"DeleteSegment", + "http":{ + "method":"DELETE", + "requestUri":"/segments/{segment}", + "responseCode":200 + }, + "input":{"shape":"DeleteSegmentRequest"}, + "output":{"shape":"DeleteSegmentResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"ConflictException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"} + ], + "idempotent":true + }, "EvaluateFeature":{ "name":"EvaluateFeature", "http":{ @@ -268,6 +302,22 @@ {"shape":"AccessDeniedException"} ] }, + "GetSegment":{ + "name":"GetSegment", + "http":{ + "method":"GET", + "requestUri":"/segments/{segment}", + "responseCode":200 + }, + "input":{"shape":"GetSegmentRequest"}, + "output":{"shape":"GetSegmentResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"} + ] + }, "ListExperiments":{ "name":"ListExperiments", "http":{ @@ -329,6 +379,37 @@ {"shape":"AccessDeniedException"} ] }, + "ListSegmentReferences":{ + "name":"ListSegmentReferences", + "http":{ + "method":"GET", + "requestUri":"/segments/{segment}/references", + "responseCode":200 + }, + "input":{"shape":"ListSegmentReferencesRequest"}, + "output":{"shape":"ListSegmentReferencesResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"} + ] + }, + "ListSegments":{ + "name":"ListSegments", + "http":{ + "method":"GET", + "requestUri":"/segments", + "responseCode":200 + }, + "input":{"shape":"ListSegmentsRequest"}, + "output":{"shape":"ListSegmentsResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"} + ] + }, "ListTagsForResource":{ "name":"ListTagsForResource", "http":{ @@ -447,6 +528,21 @@ ], "idempotent":true }, + "TestSegmentPattern":{ + "name":"TestSegmentPattern", + "http":{ + "method":"POST", + "requestUri":"/test-segment-pattern", + "responseCode":200 + }, + "input":{"shape":"TestSegmentPatternRequest"}, + "output":{"shape":"TestSegmentPatternResponse"}, + "errors":[ + {"shape":"ThrottlingException"}, + {"shape":"ValidationException"}, + {"shape":"AccessDeniedException"} + ] + }, "UntagResource":{ "name":"UntagResource", "http":{ @@ -523,6 +619,7 @@ "output":{"shape":"UpdateProjectResponse"}, "errors":[ {"shape":"ValidationException"}, + {"shape":"ConflictException"}, {"shape":"ServiceQuotaExceededException"}, {"shape":"ResourceNotFoundException"}, {"shape":"AccessDeniedException"} @@ -644,6 +741,7 @@ "shape":"SplitWeight", "box":true }, + "segment":{"shape":"SegmentRef"}, "tags":{"shape":"TagMap"}, "treatments":{"shape":"TreatmentConfigList"} } @@ -729,6 +827,29 @@ "project":{"shape":"Project"} } }, + "CreateSegmentRequest":{ + "type":"structure", + "required":[ + "name", + "pattern" + ], + "members":{ + "description":{"shape":"Description"}, + "name":{"shape":"SegmentName"}, + "pattern":{ + "shape":"SegmentPattern", + "jsonvalue":true + }, + "tags":{"shape":"TagMap"} + } + }, + "CreateSegmentResponse":{ + "type":"structure", + "required":["segment"], + "members":{ + "segment":{"shape":"Segment"} + } + }, "CwDimensionSafeName":{ "type":"string", "max":255, @@ -829,6 +950,22 @@ "members":{ } }, + "DeleteSegmentRequest":{ + "type":"structure", + "required":["segment"], + "members":{ + "segment":{ + "shape":"SegmentRef", + "location":"uri", + "locationName":"segment" + } + } + }, + "DeleteSegmentResponse":{ + "type":"structure", + "members":{ + } + }, "Description":{ "type":"string", "max":160, @@ -1014,6 +1151,7 @@ "randomizationSalt":{"shape":"RandomizationSalt"}, "samplingRate":{"shape":"SplitWeight"}, "schedule":{"shape":"ExperimentSchedule"}, + "segment":{"shape":"SegmentArn"}, "status":{"shape":"ExperimentStatus"}, "statusReason":{"shape":"Description"}, "tags":{"shape":"TagMap"}, @@ -1362,6 +1500,24 @@ "project":{"shape":"Project"} } }, + "GetSegmentRequest":{ + "type":"structure", + "required":["segment"], + "members":{ + "segment":{ + "shape":"SegmentRef", + "location":"uri", + "locationName":"segment" + } + } + }, + "GetSegmentResponse":{ + "type":"structure", + "required":["segment"], + "members":{ + "segment":{"shape":"Segment"} + } + }, "GroupName":{ "type":"string", "max":127, @@ -1619,6 +1775,64 @@ "projects":{"shape":"ProjectSummariesList"} } }, + "ListSegmentReferencesRequest":{ + "type":"structure", + "required":[ + "segment", + "type" + ], + "members":{ + "maxResults":{ + "shape":"MaxReferences", + "location":"querystring", + "locationName":"maxResults" + }, + "nextToken":{ + "shape":"NextToken", + "location":"querystring", + "locationName":"nextToken" + }, + "segment":{ + "shape":"SegmentRef", + "location":"uri", + "locationName":"segment" + }, + "type":{ + "shape":"SegmentReferenceResourceType", + "location":"querystring", + "locationName":"type" + } + } + }, + "ListSegmentReferencesResponse":{ + "type":"structure", + "members":{ + "nextToken":{"shape":"NextToken"}, + "referencedBy":{"shape":"RefResourceList"} + } + }, + "ListSegmentsRequest":{ + "type":"structure", + "members":{ + "maxResults":{ + "shape":"MaxSegments", + "location":"querystring", + "locationName":"maxResults" + }, + "nextToken":{ + "shape":"NextToken", + "location":"querystring", + "locationName":"nextToken" + } + } + }, + "ListSegmentsResponse":{ + "type":"structure", + "members":{ + "nextToken":{"shape":"NextToken"}, + "segments":{"shape":"SegmentList"} + } + }, "ListTagsForResourceRequest":{ "type":"structure", "required":["resourceArn"], @@ -1664,6 +1878,18 @@ "max":50, "min":1 }, + "MaxReferences":{ + "type":"integer", + "box":true, + "max":100, + "min":1 + }, + "MaxSegments":{ + "type":"integer", + "box":true, + "max":50, + "min":1 + }, "MetricDefinition":{ "type":"structure", "members":{ @@ -1786,6 +2012,7 @@ "treatmentWeights":{"shape":"TreatmentToWeightMap"} } }, + "PrimitiveBoolean":{"type":"boolean"}, "Project":{ "type":"structure", "required":[ @@ -1841,7 +2068,7 @@ "type":"string", "max":2048, "min":0, - "pattern":"([-a-zA-Z0-9._]*)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[-a-zA-Z0-9._]*)" + "pattern":"(^[a-zA-Z0-9._-]*$)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:project/[a-zA-Z0-9._-]*)" }, "ProjectStatus":{ "type":"string", @@ -1918,6 +2145,26 @@ "min":0, "pattern":".*" }, + "RefResource":{ + "type":"structure", + "required":[ + "name", + "type" + ], + "members":{ + "arn":{"shape":"String"}, + "endTime":{"shape":"String"}, + "lastUpdatedOn":{"shape":"String"}, + "name":{"shape":"String"}, + "startTime":{"shape":"String"}, + "status":{"shape":"String"}, + "type":{"shape":"String"} + } + }, + "RefResourceList":{ + "type":"list", + "member":{"shape":"RefResource"} + }, "ResourceNotFoundException":{ "type":"structure", "members":{ @@ -1977,6 +2224,7 @@ "required":["startTime"], "members":{ "groupWeights":{"shape":"GroupToWeightMap"}, + "segmentOverrides":{"shape":"SegmentOverridesList"}, "startTime":{"shape":"Timestamp"} } }, @@ -1988,6 +2236,7 @@ ], "members":{ "groupWeights":{"shape":"GroupToWeightMap"}, + "segmentOverrides":{"shape":"SegmentOverridesList"}, "startTime":{"shape":"Timestamp"} } }, @@ -2016,6 +2265,83 @@ "max":6, "min":1 }, + "Segment":{ + "type":"structure", + "required":[ + "arn", + "createdTime", + "lastUpdatedTime", + "name", + "pattern" + ], + "members":{ + "arn":{"shape":"SegmentArn"}, + "createdTime":{"shape":"Timestamp"}, + "description":{"shape":"Description"}, + "experimentCount":{"shape":"Long"}, + "lastUpdatedTime":{"shape":"Timestamp"}, + "launchCount":{"shape":"Long"}, + "name":{"shape":"SegmentName"}, + "pattern":{ + "shape":"SegmentPattern", + "jsonvalue":true + }, + "tags":{"shape":"TagMap"} + } + }, + "SegmentArn":{ + "type":"string", + "max":2048, + "min":0, + "pattern":"arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*" + }, + "SegmentList":{ + "type":"list", + "member":{"shape":"Segment"} + }, + "SegmentName":{ + "type":"string", + "max":64, + "min":1, + "pattern":"^[-a-zA-Z0-9._]*$" + }, + "SegmentOverride":{ + "type":"structure", + "required":[ + "evaluationOrder", + "segment", + "weights" + ], + "members":{ + "evaluationOrder":{"shape":"Long"}, + "segment":{"shape":"SegmentRef"}, + "weights":{"shape":"GroupToWeightMap"} + } + }, + "SegmentOverridesList":{ + "type":"list", + "member":{"shape":"SegmentOverride"}, + "max":6, + "min":0 + }, + "SegmentPattern":{ + "type":"string", + "max":1024, + "min":1 + }, + "SegmentRef":{ + "type":"string", + "max":2048, + "min":0, + "pattern":"(^[-a-zA-Z0-9._]*$)|(arn:[^:]*:[^:]*:[^:]*:[^:]*:segment/[-a-zA-Z0-9._]*)" + }, + "SegmentReferenceResourceType":{ + "type":"string", + "enum":[ + "EXPERIMENT", + "LAUNCH" + ] + }, "ServiceQuotaExceededException":{ "type":"structure", "members":{ @@ -2195,6 +2521,30 @@ "max":256, "min":0 }, + "TestSegmentPatternRequest":{ + "type":"structure", + "required":[ + "pattern", + "payload" + ], + "members":{ + "pattern":{ + "shape":"SegmentPattern", + "jsonvalue":true + }, + "payload":{ + "shape":"JsonValue", + "jsonvalue":true + } + } + }, + "TestSegmentPatternResponse":{ + "type":"structure", + "required":["match"], + "members":{ + "match":{"shape":"Boolean"} + } + }, "ThrottlingException":{ "type":"structure", "members":{ @@ -2312,10 +2662,12 @@ "locationName":"project" }, "randomizationSalt":{"shape":"RandomizationSalt"}, + "removeSegment":{"shape":"PrimitiveBoolean"}, "samplingRate":{ "shape":"SplitWeight", "box":true }, + "segment":{"shape":"SegmentRef"}, "treatments":{"shape":"TreatmentConfigList"} } }, diff --git a/models/apis/evidently/2021-02-01/docs-2.json b/models/apis/evidently/2021-02-01/docs-2.json index c176bf66fe0..7466881c0d4 100644 --- a/models/apis/evidently/2021-02-01/docs-2.json +++ b/models/apis/evidently/2021-02-01/docs-2.json @@ -3,24 +3,29 @@ "service": "You can use Amazon CloudWatch Evidently to safely validate new features by serving them to a specified percentage of your users while you roll out the feature. You can monitor the performance of the new feature to help you decide when to ramp up traffic to your users. This helps you reduce risk and identify unintended consequences before you fully launch the feature.
You can also conduct A/B experiments to make feature design decisions based on evidence and data. An experiment can test as many as five variations at once. Evidently collects experiment data and analyzes it using statistical methods. It also provides clear recommendations about which variations perform better. You can test both user-facing features and backend features.
", "operations": { "BatchEvaluateFeature": "This operation assigns feature variation to user sessions. For each user session, you pass in an entityID
that represents the user. Evidently then checks the evaluation rules and assigns the variation.
The first rules that are evaluated are the override rules. If the user's entityID
matches an override rule, the user is served the variation specified by that rule.
Next, if there is a launch of the feature, the user might be assigned to a variation in the launch. The chance of this depends on the percentage of users that are allocated to that launch. If the user is enrolled in the launch, the variation they are served depends on the allocation of the various feature variations used for the launch.
If the user is not assigned to a launch, and there is an ongoing experiment for this feature, the user might be assigned to a variation in the experiment. The chance of this depends on the percentage of users that are allocated to that experiment. If the user is enrolled in the experiment, the variation they are served depends on the allocation of the various feature variations used for the experiment.
If the user is not assigned to a launch or experiment, they are served the default variation.
", - "CreateExperiment": "Creates an Evidently experiment. Before you create an experiment, you must create the feature to use for the experiment.
An experiment helps you make feature design decisions based on evidence and data. An experiment can test as many as five variations at once. Evidently collects experiment data and analyzes it by statistical methods, and provides clear recommendations about which variations perform better.
Don't use this operation to update an existing experiment. Instead, use UpdateExperiment.
", + "CreateExperiment": "Creates an Evidently experiment. Before you create an experiment, you must create the feature to use for the experiment.
An experiment helps you make feature design decisions based on evidence and data. An experiment can test as many as five variations at once. Evidently collects experiment data and analyzes it by statistical methods, and provides clear recommendations about which variations perform better.
You can optionally specify a segment
to have the experiment consider only certain audience types in the experiment, such as using only user sessions from a certain location or who use a certain internet browser.
Don't use this operation to update an existing experiment. Instead, use UpdateExperiment.
", "CreateFeature": "Creates an Evidently feature that you want to launch or test. You can define up to five variations of a feature, and use these variations in your launches and experiments. A feature must be created in a project. For information about creating a project, see CreateProject.
Don't use this operation to update an existing feature. Instead, use UpdateFeature.
", "CreateLaunch": "Creates a launch of a given feature. Before you create a launch, you must create the feature to use for the launch.
You can use a launch to safely validate new features by serving them to a specified percentage of your users while you roll out the feature. You can monitor the performance of the new feature to help you decide when to ramp up traffic to more users. This helps you reduce risk and identify unintended consequences before you fully launch the feature.
Don't use this operation to update an existing launch. Instead, use UpdateLaunch.
", "CreateProject": "Creates a project, which is the logical object in Evidently that can contain features, launches, and experiments. Use projects to group similar features together.
To update an existing project, use UpdateProject.
", + "CreateSegment": "Use this operation to define a segment of your audience. A segment is a portion of your audience that share one or more characteristics. Examples could be Chrome browser users, users in Europe, or Firefox browser users in Europe who also fit other criteria that your application collects, such as age.
Using a segment in an experiment limits that experiment to evaluate only the users who match the segment criteria. Using one or more segments in a launch allow you to define different traffic splits for the different audience segments.
<p>For more information about segment pattern syntax, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments-syntax.html"> Segment rule pattern syntax</a>.</p> <p>The pattern that you define for a segment is matched against the value of <code>evaluationContext</code>, which is passed into Evidently in the <a href="https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_EvaluateFeature.html">EvaluateFeature</a> operation, when Evidently assigns a feature variation to a user.</p>
",
"DeleteExperiment": "Deletes an Evidently experiment. The feature used for the experiment is not deleted.
To stop an experiment without deleting it, use StopExperiment.
", "DeleteFeature": "Deletes an Evidently feature.
", "DeleteLaunch": "Deletes an Evidently launch. The feature used for the launch is not deleted.
To stop a launch without deleting it, use StopLaunch.
", "DeleteProject": "Deletes an Evidently project. Before you can delete a project, you must delete all the features that the project contains. To delete a feature, use DeleteFeature.
", - "EvaluateFeature": "This operation assigns a feature variation to one given user session. You pass in an entityID
that represents the user. Evidently then checks the evaluation rules and assigns the variation.
The first rules that are evaluated are the override rules. If the user's entityID
matches an override rule, the user is served the variation specified by that rule.
Next, if there is a launch of the feature, the user might be assigned to a variation in the launch. The chance of this depends on the percentage of users that are allocated to that launch. If the user is enrolled in the launch, the variation they are served depends on the allocation of the various feature variations used for the launch.
If the user is not assigned to a launch, and there is an ongoing experiment for this feature, the user might be assigned to a variation in the experiment. The chance of this depends on the percentage of users that are allocated to that experiment. If the user is enrolled in the experiment, the variation they are served depends on the allocation of the various feature variations used for the experiment.
If the user is not assigned to a launch or experiment, they are served the default variation.
", + "DeleteSegment": "Deletes a segment. You can't delete a segment that is being used in a launch or experiment, even if that launch or experiment is not currently running.
", + "EvaluateFeature": "This operation assigns a feature variation to one given user session. You pass in an entityID
that represents the user. Evidently then checks the evaluation rules and assigns the variation.
The first rules that are evaluated are the override rules. If the user's entityID
matches an override rule, the user is served the variation specified by that rule.
<p>If there is a current launch with this feature that uses segment overrides, and if the user session's <code>evaluationContext</code> matches a segment rule defined in a segment override, the configuration in the segment overrides is used. For more information about segments, see <a href="https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateSegment.html">CreateSegment</a> and <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html">Use segments to focus your audience</a>.</p> <p>If there is a launch with no segment overrides, the user might be assigned to a variation in the launch. The chance of this depends on the percentage of users that are allocated to that launch. If the user is enrolled in the launch, the variation they are served depends on the allocation of the various feature variations used for the launch.</p> <p>If the user is not assigned to a launch, and there is an ongoing experiment for this feature, the user might be assigned to a variation in the experiment. The chance of this depends on the percentage of users that are allocated to that experiment.</p> <p>If the experiment uses a segment, then only user sessions with <code>evaluationContext</code> values that match the segment rule are used in the experiment.</p> <p>If the user is enrolled in the experiment, the variation they are served depends on the allocation of the various feature variations used for the experiment. </p> <p>If the user is not assigned to a launch or experiment, they are served the default variation.</p>
",
"GetExperiment": "Returns the details about one experiment. You must already know the experiment name. To retrieve a list of experiments in your account, use ListExperiments.
", "GetExperimentResults": "Retrieves the results of a running or completed experiment. No results are available until there have been 100 events for each variation and at least 10 minutes have passed since the start of the experiment.
Experiment results are available up to 63 days after the start of the experiment. They are not available after that because of CloudWatch data retention policies.
", "GetFeature": "Returns the details about one feature. You must already know the feature name. To retrieve a list of features in your account, use ListFeatures.
", "GetLaunch": "Returns the details about one launch. You must already know the launch name. To retrieve a list of launches in your account, use ListLaunches.
", "GetProject": "Returns the details about one launch. You must already know the project name. To retrieve a list of projects in your account, use ListProjects.
", + "GetSegment": "Returns information about the specified segment. Specify the segment you want to view by specifying its ARN.
", "ListExperiments": "Returns configuration details about all the experiments in the specified project.
", "ListFeatures": "Returns configuration details about all the features in the specified project.
", "ListLaunches": "Returns configuration details about all the launches in the specified project.
", "ListProjects": "Returns configuration details about all the projects in the current Region in your account.
", + "ListSegmentReferences": "Use this operation to find which experiments or launches are using a specified segment.
", + "ListSegments": "Returns a list of audience segments that you have created in your account in this Region.
", "ListTagsForResource": "Displays the tags associated with an Evidently resource.
", "PutProjectEvents": "Sends performance events to Evidently. These events can be used to evaluate a launch or an experiment.
", "StartExperiment": "Starts an existing experiment. To create an experiment, use CreateExperiment.
", @@ -28,6 +33,7 @@ "StopExperiment": "Stops an experiment that is currently running. If you stop an experiment, you can't resume it or restart it.
", "StopLaunch": "Stops a launch that is currently running. After you stop a launch, you will not be able to resume it or restart it. Also, it will not be evaluated as a rule for traffic allocation, and the traffic that was allocated to the launch will instead be available to the feature's experiment, if there is one. Otherwise, all traffic will be served the default variation after the launch is stopped.
", "TagResource": "Assigns one or more tags (key-value pairs) to the specified CloudWatch Evidently resource. Projects, features, launches, and experiments can be tagged.
Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
Tags don't have any semantic meaning to Amazon Web Services and are interpreted strictly as strings of characters.
You can use the TagResource
action with a resource that already has tags. If you specify a new tag key for the resource, this tag is appended to the list of tags associated with the alarm. If you specify a tag key that is already associated with the resource, the new tag value that you specify replaces the previous value for that tag.
You can associate as many as 50 tags with a resource.
For more information, see Tagging Amazon Web Services resources.
", + "TestSegmentPattern": "Use this operation to test a rules pattern that you plan to use to create an audience segment. For more information about segments, see CreateSegment.
", "UntagResource": "Removes one or more tags from the specified resource.
", "UpdateExperiment": "Updates an Evidently experiment.
Don't use this operation to update an experiment's tag. Instead, use TagResource.
", "UpdateFeature": "Updates an existing feature.
You can't use this operation to update the tags of an existing feature. Instead, use TagResource.
", @@ -64,6 +70,7 @@ "Boolean": { "base": null, "refs": { + "TestSegmentPatternResponse$match": "Returns true
if the pattern matches the payload.
If this feature uses the Boolean variation type, this field contains the Boolean value of this variation.
" } }, @@ -132,6 +139,16 @@ "refs": { } }, + "CreateSegmentRequest": { + "base": null, + "refs": { + } + }, + "CreateSegmentResponse": { + "base": null, + "refs": { + } + }, "CwDimensionSafeName": { "base": null, "refs": { @@ -189,6 +206,16 @@ "refs": { } }, + "DeleteSegmentRequest": { + "base": null, + "refs": { + } + }, + "DeleteSegmentResponse": { + "base": null, + "refs": { + } + }, "Description": { "base": null, "refs": { @@ -196,6 +223,7 @@ "CreateFeatureRequest$description": "An optional description of the feature.
", "CreateLaunchRequest$description": "An optional description for the launch.
", "CreateProjectRequest$description": "An optional description of the project.
", + "CreateSegmentRequest$description": "An optional description for this segment.
", "Experiment$description": "A description of the experiment.
", "Experiment$statusReason": "If the experiment was stopped, this is the string that was entered by the person who stopped the experiment, to explain why it was stopped.
", "Feature$description": "The description of the feature.
", @@ -205,6 +233,7 @@ "LaunchGroupConfig$description": "A description of the launch group.
", "Project$description": "The user-entered description of the project.
", "ProjectSummary$description": "The description of the project.
", + "Segment$description": "The customer-created description for this segment.
", "StopExperimentRequest$reason": "A string that describes why you are stopping the experiment.
", "StopLaunchRequest$reason": "A string that describes why you are stopping the launch.
", "Treatment$description": "The description of the treatment.
", @@ -564,6 +593,16 @@ "refs": { } }, + "GetSegmentRequest": { + "base": null, + "refs": { + } + }, + "GetSegmentResponse": { + "base": null, + "refs": { + } + }, "GroupName": { "base": null, "refs": { @@ -575,8 +614,9 @@ "GroupToWeightMap": { "base": null, "refs": { - "ScheduledSplit$groupWeights": "The traffic allocation percentages among the feature variations during one step of a launch. This is a set of key-value pairs. The keys are variation names. The values represent the percentage of traffic to allocate to that variation during this step.
", - "ScheduledSplitConfig$groupWeights": "The traffic allocation percentages among the feature variations during one step of a launch. This is a set of key-value pairs. The keys are variation names. The values represent the percentage of traffic to allocate to that variation during this step.
" + "ScheduledSplit$groupWeights": "The traffic allocation percentages among the feature variations during one step of a launch. This is a set of key-value pairs. The keys are variation names. The values represent the percentage of traffic to allocate to that variation during this step.
The values is expressed in thousandths of a percent, so assigning a weight of 50000 assigns 50% of traffic to that variation.
If the sum of the weights for all the variations in a segment override does not add up to 100,000, then the remaining traffic that matches this segment is not assigned by this segment override, and instead moves on to the next segment override or the default traffic split.
", + "ScheduledSplitConfig$groupWeights": "The traffic allocation percentages among the feature variations during one step of a launch. This is a set of key-value pairs. The keys are variation names. The values represent the percentage of traffic to allocate to that variation during this step.
<p>The values is expressed in thousandths of a percent, so assigning a weight of 50000 assigns 50% of traffic to that variation.</p> <p>If the sum of the weights for all the variations in a segment override does not add up to 100,000, then the remaining traffic that matches this segment is not assigned by this segment override, and instead moves on to the next segment override or the default traffic split.</p>
",
+ "SegmentOverride$weights": "The traffic allocation percentages among the feature variations to assign to this segment. This is a set of key-value pairs. The keys are variation names. The values represent the amount of traffic to allocate to that variation for this segment. This is expressed in thousandths of a percent, so a weight of 50000 represents 50% of traffic.
" } }, "Integer": { @@ -602,13 +642,14 @@ "JsonValue": { "base": null, "refs": { - "EvaluateFeatureRequest$evaluationContext": "A JSON block of attributes that you can optionally pass in. This JSON block is included in the evaluation events sent to Evidently from the user session.
", + "EvaluateFeatureRequest$evaluationContext": "A JSON object of attributes that you can optionally pass in as part of the evaluation event sent to Evidently from the user session. Evidently can use this value to match user sessions with defined audience segments. For more information, see Use segments to focus your audience.
<p>If you include this parameter, the value must be a JSON object. A JSON array is not supported.</p>
",
"EvaluateFeatureResponse$details": "If this user was assigned to a launch or experiment, this field lists the launch or experiment name.
", "EvaluationRequest$evaluationContext": "A JSON block of attributes that you can optionally pass in. This JSON block is included in the evaluation events sent to Evidently from the user session.
", "EvaluationResult$details": "If this user was assigned to a launch or experiment, this field lists the launch or experiment name.
", "Event$data": "The event data.
", "ExperimentReport$content": "The content of the report.
", - "MetricDefinition$eventPattern": "The EventBridge event pattern that defines how the metric is recorded.
For more information about EventBridge event patterns, see Amazon EventBridge event patterns.
" + "MetricDefinition$eventPattern": "The EventBridge event pattern that defines how the metric is recorded.
For more information about EventBridge event patterns, see Amazon EventBridge event patterns.
", + "TestSegmentPatternRequest$payload": "A sample evaluationContext
JSON block to test against the specified pattern.
The number of ongoing launches currently in the project.
", "ProjectSummary$experimentCount": "The number of experiments currently in the project.
", "ProjectSummary$featureCount": "The number of features currently in the project.
", - "ProjectSummary$launchCount": "The number of launches currently in the project, including launches that are ongoing, completed, and not started yet.
" + "ProjectSummary$launchCount": "The number of launches currently in the project, including launches that are ongoing, completed, and not started yet.
", + "Segment$experimentCount": "The number of experiments that this segment is used in. This count includes all current experiments, not just those that are currently running.
", + "Segment$launchCount": "The number of launches that this segment is used in. This count includes all current launches, not just those that are currently running.
", + "SegmentOverride$evaluationOrder": "A number indicating the order to use to evaluate segment overrides, if there are more than one. Segment overrides with lower numbers are evaluated first.
" } }, "MaxExperiments": { @@ -784,6 +848,18 @@ "ListProjectsRequest$maxResults": "The maximum number of results to include in the response.
" } }, + "MaxReferences": { + "base": null, + "refs": { + "ListSegmentReferencesRequest$maxResults": "The maximum number of results to include in the response. If you omit this, the default of 50 is used.
" + } + }, + "MaxSegments": { + "base": null, + "refs": { + "ListSegmentsRequest$maxResults": "The maximum number of results to include in the response. If you omit this, the default of 50 is used.
" + } + }, "MetricDefinition": { "base": "This structure defines a metric that is being used to evaluate the variations during a launch or experiment.
", "refs": { @@ -877,7 +953,11 @@ "ListLaunchesRequest$nextToken": "The token to use when requesting the next set of results. You received this token from a previous ListLaunches
operation.
The token to use in a subsequent ListLaunches
operation to return the next set of results.
The token to use when requesting the next set of results. You received this token from a previous ListProjects
operation.
The token to use in a subsequent ListProjects
operation to return the next set of results.
The token to use in a subsequent ListProjects
operation to return the next set of results.
The token to use when requesting the next set of results. You received this token from a previous ListSegmentReferences
operation.
The token to use in a subsequent ListSegmentReferences
operation to return the next set of results.
The token to use when requesting the next set of results. You received this token from a previous ListSegments
operation.
The token to use in a subsequent ListSegments
operation to return the next set of results.
A structure that contains the configuration of which variation to use as the \"control\" version. The \"control\" version is used for comparison with other variations. This structure also specifies how much experiment traffic is allocated to each variation.
" } }, + "PrimitiveBoolean": { + "base": null, + "refs": { + "UpdateExperimentRequest$removeSegment": "Removes a segment from being used in an experiment. You can't use this parameter if the experiment is currently running.
" + } + }, "Project": { "base": "This structure defines a project, which is the logical object in Evidently that can contain features, launches, and experiments. Use projects to group similar features together.
", "refs": { @@ -1010,13 +1096,25 @@ "base": null, "refs": { "CreateExperimentRequest$randomizationSalt": "When Evidently assigns a particular user session to an experiment, it must use a randomization ID to determine which variation the user session is served. This randomization ID is a combination of the entity ID and randomizationSalt
. If you omit randomizationSalt
, Evidently uses the experiment name as the randomizationSalt
.
When Evidently assigns a particular user session to a launch, it must use a randomization ID to determine which variation the user session is served. This randomization ID is a combination of the entity ID and randomizationSalt
. If you omit randomizationSalt
, Evidently uses the launch name as the randomizationsSalt
.
When Evidently assigns a particular user session to a launch, it must use a randomization ID to determine which variation the user session is served. This randomization ID is a combination of the entity ID and randomizationSalt
. If you omit randomizationSalt
, Evidently uses the launch name as the randomizationSalt
.
This value is used when Evidently assigns a particular user session to the experiment. It helps create a randomization ID to determine which variation the user session is served. This randomization ID is a combination of the entity ID and randomizationSalt
.
This value is used when Evidently assigns a particular user session to the launch, to help create a randomization ID to determine which variation the user session is served. This randomization ID is a combination of the entity ID and randomizationSalt
.
When Evidently assigns a particular user session to an experiment, it must use a randomization ID to determine which variation the user session is served. This randomization ID is a combination of the entity ID and randomizationSalt
. If you omit randomizationSalt
, Evidently uses the experiment name as the randomizationSalt
.
When Evidently assigns a particular user session to a launch, it must use a randomization ID to determine which variation the user session is served. This randomization ID is a combination of the entity ID and randomizationSalt
. If you omit randomizationSalt
, Evidently uses the launch name as the randomizationSalt
.
A structure that contains information about one experiment or launch that uses the specified segment.
", + "refs": { + "RefResourceList$member": null + } + }, + "RefResourceList": { + "base": null, + "refs": { + "ListSegmentReferencesResponse$referencedBy": "An array of structures, where each structure contains information about one experiment or launch that uses this segment.
" + } + }, "ResourceNotFoundException": { "base": "The request references a resource that does not exist.
", "refs": { @@ -1104,6 +1202,72 @@ "ScheduledSplitsLaunchDefinition$steps": "An array of structures that define the traffic allocation percentages among the feature variations during each step of the launch. This also defines the start time of each step.
" } }, + "Segment": { + "base": "This structure contains information about one audience segment. You can use segments in your experiments and launches to narrow the user sessions used for experiment or launch to only the user sessions that match one or more criteria.
", + "refs": { + "CreateSegmentResponse$segment": "A structure that contains the complete information about the segment that was just created.
", + "GetSegmentResponse$segment": "A structure that contains the complete information about the segment.
", + "SegmentList$member": null + } + }, + "SegmentArn": { + "base": null, + "refs": { + "Experiment$segment": "The audience segment being used for the experiment, if a segment is being used.
", + "Segment$arn": "The ARN of the segment.
" + } + }, + "SegmentList": { + "base": null, + "refs": { + "ListSegmentsResponse$segments": "An array of structures that contain information about the segments in this Region.
" + } + }, + "SegmentName": { + "base": null, + "refs": { + "CreateSegmentRequest$name": "A name for the segment.
", + "Segment$name": "The name of the segment.
" + } + }, + "SegmentOverride": { + "base": "This structure specifies a segment that you have already created, and defines the traffic split for that segment to be used in a launch.
", + "refs": { + "SegmentOverridesList$member": null + } + }, + "SegmentOverridesList": { + "base": null, + "refs": { + "ScheduledSplit$segmentOverrides": "Use this parameter to specify different traffic splits for one or more audience segments. A segment is a portion of your audience that share one or more characteristics. Examples could be Chrome browser users, users in Europe, or Firefox browser users in Europe who also fit other criteria that your application collects, such as age.
This parameter is an array of up to six segment override objects. Each of these objects specifies a segment that you have already created, and defines the traffic split for that segment.
", + "ScheduledSplitConfig$segmentOverrides": "Use this parameter to specify different traffic splits for one or more audience segments. A segment is a portion of your audience that share one or more characteristics. Examples could be Chrome browser users, users in Europe, or Firefox browser users in Europe who also fit other criteria that your application collects, such as age.
This parameter is an array of up to six segment override objects. Each of these objects specifies a segment that you have already created, and defines the traffic split for that segment.
" + } + }, + "SegmentPattern": { + "base": null, + "refs": { + "CreateSegmentRequest$pattern": "The pattern to use for the segment. For more information about pattern syntax, see Segment rule pattern syntax.
", + "Segment$pattern": "", + "TestSegmentPatternRequest$pattern": "The pattern to test.
" + } + }, + "SegmentRef": { + "base": null, + "refs": { + "CreateExperimentRequest$segment": "Specifies an audience segment to use in the experiment. When a segment is used in an experiment, only user sessions that match the segment pattern are used in the experiment.
", + "DeleteSegmentRequest$segment": "Specifies the segment to delete.
", + "GetSegmentRequest$segment": "The ARN of the segment to return information for.
", + "ListSegmentReferencesRequest$segment": "The ARN of the segment that you want to view information for.
", + "SegmentOverride$segment": "The ARN of the segment to use.
", + "UpdateExperimentRequest$segment": "Adds an audience segment to an experiment. When a segment is used in an experiment, only user sessions that match the segment pattern are used in the experiment. You can't use this parameter if the experiment is currently running.
" + } + }, + "SegmentReferenceResourceType": { + "base": null, + "refs": { + "ListSegmentReferencesRequest$type": "Specifies whether to return information about launches or experiments that use this segment.
" + } + }, "ServiceQuotaExceededException": { "base": "The request would cause a service quota to be exceeded.
", "refs": { @@ -1177,6 +1341,13 @@ "EvaluationResult$variation": "The name of the variation that was served to the user session.
", "GetExperimentResultsResponse$details": "If the experiment doesn't yet have enough events to provide valid results, this field is returned with the message Not enough events to generate results
. If there are enough events to provide valid results, this field is not returned.
The ARN of the experiment or launch.
", + "RefResource$endTime": "The day and time that this experiment or launch ended.
", + "RefResource$lastUpdatedOn": "The day and time that this experiment or launch was most recently updated.
", + "RefResource$name": "The name of the experiment or launch.
", + "RefResource$startTime": "The day and time that this experiment or launch started.
", + "RefResource$status": "The status of the experiment or launch.
", + "RefResource$type": "Specifies whether the resource that this structure contains information about is an experiment or a launch.
", "ResourceNotFoundException$message": null, "ResourceNotFoundException$resourceId": "The ID of the resource that caused the exception.
", "ResourceNotFoundException$resourceType": "The type of the resource that is associated with the error.
", @@ -1214,6 +1385,7 @@ "CreateFeatureRequest$tags": "Assigns one or more tags (key-value pairs) to the feature.
Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
Tags don't have any semantic meaning to Amazon Web Services and are interpreted strictly as strings of characters.
<p>You can associate as many as 50 tags with a feature.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>
",
"CreateLaunchRequest$tags": "Assigns one or more tags (key-value pairs) to the launch.
Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
Tags don't have any semantic meaning to Amazon Web Services and are interpreted strictly as strings of characters.
<p>You can associate as many as 50 tags with a launch.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>
",
"CreateProjectRequest$tags": "Assigns one or more tags (key-value pairs) to the project.
Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
Tags don't have any semantic meaning to Amazon Web Services and are interpreted strictly as strings of characters.
<p>You can associate as many as 50 tags with a project.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>
",
+ "CreateSegmentRequest$tags": "Assigns one or more tags (key-value pairs) to the segment.
Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
Tags don't have any semantic meaning to Amazon Web Services and are interpreted strictly as strings of characters.
<p>You can associate as many as 50 tags with a segment.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging Amazon Web Services resources</a>.</p>
",
"Experiment$tags": "The list of tag keys and values associated with this experiment.
", "Feature$tags": "The list of tag keys and values associated with this feature.
", "FeatureSummary$tags": "The list of tag keys and values associated with this feature.
", @@ -1221,6 +1393,7 @@ "ListTagsForResourceResponse$tags": "The list of tag keys and values associated with the resource you specified.
", "Project$tags": "The list of tag keys and values associated with this project.
", "ProjectSummary$tags": "The list of tag keys and values associated with this project.
", + "Segment$tags": "The list of tag keys and values associated with this launch.
", "TagResourceRequest$tags": "The list of key-value pairs to associate with the resource.
" } }, @@ -1240,6 +1413,16 @@ "TagMap$value": null } }, + "TestSegmentPatternRequest": { + "base": null, + "refs": { + } + }, + "TestSegmentPatternResponse": { + "base": null, + "refs": { + } + }, "ThrottlingException": { "base": "The request was denied because of request throttling. Retry the request.
", "refs": { @@ -1270,6 +1453,8 @@ "ProjectSummary$lastUpdatedTime": "The date and time that the project was most recently updated.
", "ScheduledSplit$startTime": "The date and time that this step of the launch starts.
", "ScheduledSplitConfig$startTime": "The date and time that this step of the launch starts.
", + "Segment$createdTime": "The date and time that this segment was created.
", + "Segment$lastUpdatedTime": "The date and time that this segment was most recently updated.
", "StartExperimentRequest$analysisCompleteTime": "The date and time to end the experiment. This must be no more than 30 days after the experiment starts.
", "StartExperimentResponse$startedTime": "A timestamp that indicates when the experiment started.
", "StopExperimentResponse$endedTime": "The date and time that the experiment stopped.
", diff --git a/models/apis/evidently/2021-02-01/paginators-1.json b/models/apis/evidently/2021-02-01/paginators-1.json index 4bc764c4423..c72d3cbae36 100644 --- a/models/apis/evidently/2021-02-01/paginators-1.json +++ b/models/apis/evidently/2021-02-01/paginators-1.json @@ -23,6 +23,18 @@ "output_token": "nextToken", "limit_key": "maxResults", "result_key": "projects" + }, + "ListSegmentReferences": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "referencedBy" + }, + "ListSegments": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "segments" } } } diff --git a/models/apis/wafv2/2019-07-29/api-2.json b/models/apis/wafv2/2019-07-29/api-2.json index 375bcafb0ce..290762adba1 100755 --- a/models/apis/wafv2/2019-07-29/api-2.json +++ b/models/apis/wafv2/2019-07-29/api-2.json @@ -3050,6 +3050,13 @@ ] }, "SearchString":{"type":"blob"}, + "SensitivityLevel":{ + "type":"string", + "enum":[ + "LOW", + "HIGH" + ] + }, "SingleCookieName":{ "type":"string", "max":60, @@ -3099,7 +3106,8 @@ ], "members":{ "FieldToMatch":{"shape":"FieldToMatch"}, - "TextTransformations":{"shape":"TextTransformations"} + "TextTransformations":{"shape":"TextTransformations"}, + "SensitivityLevel":{"shape":"SensitivityLevel"} } }, "Statement":{ diff --git a/models/apis/wafv2/2019-07-29/docs-2.json b/models/apis/wafv2/2019-07-29/docs-2.json index 522cb289ae3..b91ec034611 100755 --- a/models/apis/wafv2/2019-07-29/docs-2.json +++ b/models/apis/wafv2/2019-07-29/docs-2.json @@ -1,6 +1,6 @@ { "version": "2.0", - "service": "This is the latest version of the WAF API, released in November, 2019. The names of the entities that you use to access this API, like endpoints and namespaces, all have the versioning information added, like \"V2\" or \"v2\", to distinguish from the prior version. We recommend migrating your resources to this version, because it has a number of significant improvements.
If you used WAF prior to this release, you can't use this WAFV2 API to access any WAF resources that you created before. You can access your old rules, web ACLs, and other WAF resources only through the WAF Classic APIs. The WAF Classic APIs have retained the prior names, endpoints, and namespaces.
For information, including how to migrate your WAF resources to this version, see the WAF Developer Guide.
WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests that are forwarded to Amazon CloudFront, an Amazon API Gateway REST API, an Application Load Balancer, or an AppSync GraphQL API. WAF also lets you control access to your content. Based on conditions that you specify, such as the IP addresses that requests originate from or the values of query strings, the Amazon API Gateway REST API, CloudFront distribution, the Application Load Balancer, or the AppSync GraphQL API responds to requests either with the requested content or with an HTTP 403 status code (Forbidden). You also can configure CloudFront to return a custom error page when a request is blocked.
This API guide is for developers who need detailed information about WAF API actions, data types, and errors. For detailed information about WAF features and an overview of how to use WAF, see the WAF Developer Guide.
You can make calls using the endpoints listed in WAF endpoints and quotas.
For regional applications, you can use any of the endpoints in the list. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
For Amazon CloudFront applications, you must use the API endpoint listed for US East (N. Virginia): us-east-1.
Alternatively, you can use one of the Amazon Web Services SDKs to access an API that's tailored to the programming language or platform that you're using. For more information, see Amazon Web Services SDKs.
We currently provide two versions of the WAF API: this API and the prior versions, the classic WAF APIs. This new API provides the same functionality as the older versions, with the following major improvements:
You use one API for both global and regional applications. Where you need to distinguish the scope, you specify a Scope
parameter and set it to CLOUDFRONT
or REGIONAL
.
You can define a web ACL or rule group with a single call, and update it with a single call. You define all rule specifications in JSON format, and pass them to your rule group or web ACL calls.
The limits WAF places on the use of rules more closely reflects the cost of running each type of rule. Rule groups include capacity settings, so you know the maximum cost of a rule group when you use it.
This is the latest version of the WAF API, released in November, 2019. The names of the entities that you use to access this API, like endpoints and namespaces, all have the versioning information added, like \"V2\" or \"v2\", to distinguish from the prior version. We recommend migrating your resources to this version, because it has a number of significant improvements.
If you used WAF prior to this release, you can't use this WAFV2 API to access any WAF resources that you created before. You can access your old rules, web ACLs, and other WAF resources only through the WAF Classic APIs. The WAF Classic APIs have retained the prior names, endpoints, and namespaces.
For information, including how to migrate your WAF resources to this version, see the WAF Developer Guide.
WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests that are forwarded to Amazon CloudFront, an Amazon API Gateway REST API, an Application Load Balancer, or an AppSync GraphQL API. WAF also lets you control access to your content. Based on criteria that you specify, such as the IP addresses that requests originate from or the values of query strings, the Amazon API Gateway REST API, CloudFront distribution, the Application Load Balancer, or the AppSync GraphQL API responds to requests either with the requested content or with an HTTP 403 status code (Forbidden). You also can configure CloudFront to return a custom error page when a request is blocked.
This API guide is for developers who need detailed information about WAF API actions, data types, and errors. For detailed information about WAF features and an overview of how to use WAF, see the WAF Developer Guide.
You can make calls using the endpoints listed in WAF endpoints and quotas.
For regional applications, you can use any of the endpoints in the list. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
For Amazon CloudFront applications, you must use the API endpoint listed for US East (N. Virginia): us-east-1.
Alternatively, you can use one of the Amazon Web Services SDKs to access an API that's tailored to the programming language or platform that you're using. For more information, see Amazon Web Services SDKs.
We currently provide two versions of the WAF API: this API and the prior versions, the classic WAF APIs. This new API provides the same functionality as the older versions, with the following major improvements:
You use one API for both global and regional applications. Where you need to distinguish the scope, you specify a Scope
parameter and set it to CLOUDFRONT
or REGIONAL
.
You can define a web ACL or rule group with a single call, and update it with a single call. You define all rule specifications in JSON format, and pass them to your rule group or web ACL calls.
The limits WAF places on the use of rules more closely reflects the cost of running each type of rule. Rule groups include capacity settings, so you know the maximum cost of a rule group when you use it.
Associates a web ACL with a regional application resource, to protect the resource. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.
For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To associate a web ACL, in the CloudFront call UpdateDistribution
, set the web ACL ID to the Amazon Resource Name (ARN) of the web ACL. For information, see UpdateDistribution.
When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.
", "CheckCapacity": "Returns the web ACL capacity unit (WCU) requirements for a specified scope and set of rules. You can use this to check the capacity requirements for the rules you want to use in a RuleGroup or WebACL.
WAF uses WCUs to calculate and control the operating resources that are used to run your rules, rule groups, and web ACLs. WAF calculates capacity differently for each rule type, to reflect the relative cost of each rule. Simple rules that cost little to run use fewer WCUs than more complex rules that use more processing power. Rule group capacity is fixed at creation, which helps users plan their web ACL WCU usage when they use a rule group. The WCU limit for web ACLs is 1,500.
", @@ -46,10 +46,10 @@ "TagResource": "Associates tags with the specified Amazon Web Services resource. Tags are key:value pairs that you can use to categorize and manage your resources, for purposes like billing. For example, you might set the tag key to \"customer\" and the value to the customer name or ID. You can specify one or more tags to add to each Amazon Web Services resource, up to 50 tags for a resource.
You can tag the Amazon Web Services resources that you manage through WAF: web ACLs, rule groups, IP sets, and regex pattern sets. You can't manage or view tags through the WAF console.
", "UntagResource": "Disassociates tags from an Amazon Web Services resource. Tags are key:value pairs that you can associate with Amazon Web Services resources. For example, the tag key might be \"customer\" and the tag value might be \"companyA.\" You can specify one or more tags to add to each container. You can add up to 50 tags to each Amazon Web Services resource.
", "UpdateIPSet": "Updates the specified IPSet.
This operation completely replaces the mutable specifications that you already have for the IP set with the ones that you provide to this call. To modify the IP set, retrieve it by calling GetIPSet, update the settings as needed, and then provide the complete IP set specification to this call.
When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.
", - "UpdateManagedRuleSetVersionExpiryDate": "Updates the expiration information for your managed rule set. Use this to initiate the expiration of a managed rule group version. After you initiate expiration for a version, WAF excludes it from the reponse to ListAvailableManagedRuleGroupVersions for the managed rule group.
This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web Services Marketplace sellers.
Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group offerings for your customers. The APIs are ListManagedRuleSets
, GetManagedRuleSet
, PutManagedRuleSetVersions
, and UpdateManagedRuleSetVersionExpiryDate
.
Updates the expiration information for your managed rule set. Use this to initiate the expiration of a managed rule group version. After you initiate expiration for a version, WAF excludes it from the response to ListAvailableManagedRuleGroupVersions for the managed rule group.
This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web Services Marketplace sellers.
Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group offerings for your customers. The APIs are ListManagedRuleSets
, GetManagedRuleSet
, PutManagedRuleSetVersions
, and UpdateManagedRuleSetVersionExpiryDate
.
Updates the specified RegexPatternSet.
This operation completely replaces the mutable specifications that you already have for the regex pattern set with the ones that you provide to this call. To modify the regex pattern set, retrieve it by calling GetRegexPatternSet, update the settings as needed, and then provide the complete regex pattern set specification to this call.
When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.
", "UpdateRuleGroup": "Updates the specified RuleGroup.
This operation completely replaces the mutable specifications that you already have for the rule group with the ones that you provide to this call. To modify the rule group, retrieve it by calling GetRuleGroup, update the settings as needed, and then provide the complete rule group specification to this call.
When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.
A rule group defines a collection of rules to inspect and control web requests that you can use in a WebACL. When you create a rule group, you define an immutable capacity limit. If you update a rule group, you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity requirements.
", - "UpdateWebACL": "Updates the specified WebACL. While updating a web ACL, WAF provides continous coverage to the resources that you have associated with the web ACL.
When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.
This operation completely replaces the mutable specifications that you already have for the web ACL with the ones that you provide to this call. To modify the web ACL, retrieve it by calling GetWebACL, update the settings as needed, and then provide the complete web ACL specification to this call.
A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has an action defined (allow, block, or count) for requests that match the statement of the rule. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types Rule, RuleGroup, and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, or an AppSync GraphQL API.
" + "UpdateWebACL": "Updates the specified WebACL. While updating a web ACL, WAF provides continuous coverage to the resources that you have associated with the web ACL.
When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.
This operation completely replaces the mutable specifications that you already have for the web ACL with the ones that you provide to this call. To modify the web ACL, retrieve it by calling GetWebACL, update the settings as needed, and then provide the complete web ACL specification to this call.
A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has an action defined (allow, block, or count) for requests that match the statement of the rule. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types Rule, RuleGroup, and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, or an AppSync GraphQL API.
" }, "shapes": { "Action": { @@ -61,7 +61,7 @@ "ActionCondition": { "base": "A single action condition for a Condition in a logging filter.
", "refs": { - "Condition$ActionCondition": "A single action condition.
" + "Condition$ActionCondition": "A single action condition. This is the action setting that a log record must contain in order to meet the condition.
" } }, "ActionValue": { @@ -115,7 +115,7 @@ } }, "Body": { - "base": "Inspect the body of the web request. The body immediately follows the request headers.
This is used to indicate the web request component for WAF to inspect, in the FieldToMatch specification.
", + "base": "Inspect the body of the web request. The body immediately follows the request headers.
This is used to indicate the web request component to inspect, in the FieldToMatch specification.
", "refs": { "FieldToMatch$Body": "Inspect the request body as plain text. The request body immediately follows the request headers. This is the part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form.
Only the first 8 KB (8192 bytes) of the request body are forwarded to WAF for inspection by the underlying host service. For information about how to handle oversized request bodies, see the Body
object configuration.
A rule statement that defines a string match search for WAF to apply to web requests. The byte match statement provides the bytes to search for, the location in requests that you want WAF to search, and other settings. The bytes to search for are typically a string that corresponds with ASCII characters. In the WAF console and the developer guide, this is refered to as a string match statement.
", + "base": "A rule statement that defines a string match search for WAF to apply to web requests. The byte match statement provides the bytes to search for, the location in requests that you want WAF to search, and other settings. The bytes to search for are typically a string that corresponds with ASCII characters. In the WAF console and the developer guide, this is called a string match statement.
", "refs": { - "Statement$ByteMatchStatement": "A rule statement that defines a string match search for WAF to apply to web requests. The byte match statement provides the bytes to search for, the location in requests that you want WAF to search, and other settings. The bytes to search for are typically a string that corresponds with ASCII characters. In the WAF console and the developer guide, this is refered to as a string match statement.
" + "Statement$ByteMatchStatement": "A rule statement that defines a string match search for WAF to apply to web requests. The byte match statement provides the bytes to search for, the location in requests that you want WAF to search, and other settings. The bytes to search for are typically a string that corresponds with ASCII characters. In the WAF console and the developer guide, this is called a string match statement.
" } }, "CapacityUnit": { @@ -152,7 +152,7 @@ } }, "CaptchaAction": { - "base": "Specifies that WAF should run a CAPTCHA
check against the request:
If the request includes a valid, unexpired CAPTCHA
token, WAF allows the web request inspection to proceed to the next rule, similar to a CountAction
.
If the request doesn't include a valid, unexpired CAPTCHA
token, WAF discontinues the web ACL evaluation of the request and blocks it from going to its intended destination.
WAF generates a response that it sends back to the client, which includes the following:
The header x-amzn-waf-action
with a value of captcha
.
The HTTP status code 405 Method Not Allowed
.
If the request contains an Accept
header with a value of text/html
, the response includes a CAPTCHA
challenge.
You can configure the expiration time in the CaptchaConfig
ImmunityTimeProperty
setting at the rule and web ACL level. The rule setting overrides the web ACL setting.
This action option is available for rules. It isn't available for web ACL default actions.
This is used in the context of other settings, for example to specify values for RuleAction and web ACL DefaultAction.
", + "base": "Specifies that WAF should run a CAPTCHA
check against the request:
If the request includes a valid, unexpired CAPTCHA
token, WAF allows the web request inspection to proceed to the next rule, similar to a CountAction
.
If the request doesn't include a valid, unexpired CAPTCHA
token, WAF discontinues the web ACL evaluation of the request and blocks it from going to its intended destination.
WAF generates a response that it sends back to the client, which includes the following:
The header x-amzn-waf-action
with a value of captcha
.
The HTTP status code 405 Method Not Allowed
.
If the request contains an Accept
header with a value of text/html
, the response includes a CAPTCHA
challenge.
You can configure the expiration time in the CaptchaConfig
ImmunityTimeProperty
setting at the rule and web ACL level. The rule setting overrides the web ACL setting.
This action option is available for rules. It isn't available for web ACL default actions.
", "refs": { "RuleAction$Captcha": "Instructs WAF to run a CAPTCHA
check against the web request.
The filter to use to identify the subset of cookies to inspect in a web request.
You must specify exactly one setting: either All
, IncludedCookies
, or ExcludedCookies
.
Example JSON: \"CookieMatchPattern\": { \"IncludedCookies\": {\"KeyToInclude1\", \"KeyToInclude2\", \"KeyToInclude3\"} }
The filter to use to identify the subset of cookies to inspect in a web request.
You must specify exactly one setting: either All
, IncludedCookies
, or ExcludedCookies
.
Example JSON: \"MatchPattern\": { \"IncludedCookies\": {\"KeyToInclude1\", \"KeyToInclude2\", \"KeyToInclude3\"} }
The filter to use to identify the subset of cookies to inspect in a web request.
You must specify exactly one setting: either All
, IncludedCookies
, or ExcludedCookies
.
Example JSON: \"CookieMatchPattern\": { \"IncludedCookies\": {\"KeyToInclude1\", \"KeyToInclude2\", \"KeyToInclude3\"} }
The filter to use to identify the subset of cookies to inspect in a web request.
You must specify exactly one setting: either All
, IncludedCookies
, or ExcludedCookies
.
Example JSON: \"MatchPattern\": { \"IncludedCookies\": {\"KeyToInclude1\", \"KeyToInclude2\", \"KeyToInclude3\"} }
Inspect the cookies in the web request. You can specify the parts of the cookies to inspect and you can narrow the set of cookies to inspect by including or excluding specific keys.
This is used to indicate the web request component for WAF to inspect, in the FieldToMatch specification.
Example JSON: \"Cookies\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"KEY\", \"OversizeHandling\": \"MATCH\" }
Inspect the cookies in the web request. You can specify the parts of the cookies to inspect and you can narrow the set of cookies to inspect by including or excluding specific keys.
This is used to indicate the web request component to inspect, in the FieldToMatch specification.
Example JSON: \"Cookies\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"KEY\", \"OversizeHandling\": \"MATCH\" }
Inspect the request cookies. You must configure scope and pattern matching filters in the Cookies
object, to define the set of cookies and the parts of the cookies that WAF inspects.
Only the first 8 KB (8192 bytes) of a request's cookies and only the first 200 cookies are forwarded to WAF for inspection by the underlying host service. You must configure how to handle any oversize cookie content in the Cookies
object. WAF applies the pattern matching filters to the cookies that it receives from the underlying host service.
The part of the web request that you want WAF to inspect. Include the single FieldToMatch
type that you want to inspect, with additional specifications as needed, according to the type. You specify a single request component in FieldToMatch
for each rule statement that requires it. To inspect more than one component of the web request, create a separate rule statement for each component.
Example JSON for a QueryString
field to match:
\"FieldToMatch\": { \"QueryString\": {} }
Example JSON for a Method
field to match specification:
\"FieldToMatch\": { \"Method\": { \"Name\": \"DELETE\" } }
The part of the web request that you want WAF to inspect. For more information, see FieldToMatch.
", + "ByteMatchStatement$FieldToMatch": "The part of the web request that you want WAF to inspect.
", "RedactedFields$member": null, - "RegexMatchStatement$FieldToMatch": "The part of the web request that you want WAF to inspect. For more information, see FieldToMatch.
", - "RegexPatternSetReferenceStatement$FieldToMatch": "The part of the web request that you want WAF to inspect. For more information, see FieldToMatch.
", - "SizeConstraintStatement$FieldToMatch": "The part of the web request that you want WAF to inspect. For more information, see FieldToMatch.
", - "SqliMatchStatement$FieldToMatch": "The part of the web request that you want WAF to inspect. For more information, see FieldToMatch.
", - "XssMatchStatement$FieldToMatch": "The part of the web request that you want WAF to inspect. For more information, see FieldToMatch.
" + "RegexMatchStatement$FieldToMatch": "The part of the web request that you want WAF to inspect.
", + "RegexPatternSetReferenceStatement$FieldToMatch": "The part of the web request that you want WAF to inspect.
", + "SizeConstraintStatement$FieldToMatch": "The part of the web request that you want WAF to inspect.
", + "SqliMatchStatement$FieldToMatch": "The part of the web request that you want WAF to inspect.
", + "XssMatchStatement$FieldToMatch": "The part of the web request that you want WAF to inspect.
" } }, "FieldToMatchData": { @@ -858,9 +858,9 @@ } }, "HeaderMatchPattern": { - "base": "The filter to use to identify the subset of headers to inspect in a web request.
You must specify exactly one setting: either All
, IncludedHeaders
, or ExcludedHeaders
.
Example JSON: \"HeaderMatchPattern\": { \"ExcludedHeaders\": {\"KeyToExclude1\", \"KeyToExclude2\"} }
The filter to use to identify the subset of headers to inspect in a web request.
You must specify exactly one setting: either All
, IncludedHeaders
, or ExcludedHeaders
.
Example JSON: \"MatchPattern\": { \"ExcludedHeaders\": {\"KeyToExclude1\", \"KeyToExclude2\"} }
The filter to use to identify the subset of headers to inspect in a web request.
You must specify exactly one setting: either All
, IncludedHeaders
, or ExcludedHeaders
.
Example JSON: \"HeaderMatchPattern\": { \"ExcludedHeaders\": {\"KeyToExclude1\", \"KeyToExclude2\"} }
The filter to use to identify the subset of headers to inspect in a web request.
You must specify exactly one setting: either All
, IncludedHeaders
, or ExcludedHeaders
.
Example JSON: \"MatchPattern\": { \"ExcludedHeaders\": {\"KeyToExclude1\", \"KeyToExclude2\"} }
Inspect the headers in the web request. You can specify the parts of the headers to inspect and you can narrow the set of headers to inspect by including or excluding specific keys.
This is used to indicate the web request component for WAF to inspect, in the FieldToMatch specification.
Alternately, you can use the SingleHeader
FieldToMatch
setting to inspect the value of a single header, identified by its key.
Example JSON: \"Headers\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"KEY\", \"OversizeHandling\": \"MATCH\" }
Inspect all headers in the web request. You can specify the parts of the headers to inspect and you can narrow the set of headers to inspect by including or excluding specific keys.
This is used to indicate the web request component to inspect, in the FieldToMatch specification.
If you want to inspect just the value of a single header, use the SingleHeader
FieldToMatch
setting instead.
Example JSON: \"Headers\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"KEY\", \"OversizeHandling\": \"MATCH\" }
Inspect the request headers. You must configure scope and pattern matching filters in the Headers
object, to define the set of headers to and the parts of the headers that WAF inspects.
Only the first 8 KB (8192 bytes) of a request's headers and only the first 200 headers are forwarded to WAF for inspection by the underlying host service. You must configure how to handle any oversize header content in the Headers
object. WAF applies the pattern matching filters to the headers that it receives from the underlying host service.
Inspect the body of the web request as JSON. The body immediately follows the request headers.
This is used to indicate the web request component for WAF to inspect, in the FieldToMatch specification.
Use the specifications in this object to indicate which parts of the JSON body to inspect using the rule's inspection criteria. WAF inspects only the parts of the JSON that result from the matches that you indicate.
Example JSON: \"JsonBody\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"ALL\" }
Inspect the body of the web request as JSON. The body immediately follows the request headers.
This is used to indicate the web request component to inspect, in the FieldToMatch specification.
Use the specifications in this object to indicate which parts of the JSON body to inspect using the rule's inspection criteria. WAF inspects only the parts of the JSON that result from the matches that you indicate.
Example JSON: \"JsonBody\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"ALL\" }
Inspect the request body as JSON. The request body immediately follows the request headers. This is the part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form.
Only the first 8 KB (8192 bytes) of the request body are forwarded to WAF for inspection by the underlying host service. For information about how to handle oversized request bodies, see the JsonBody
object configuration.
A single label name condition for a Condition in a logging filter.
", "refs": { - "Condition$LabelNameCondition": "A single label name condition.
" + "Condition$LabelNameCondition": "A single label name condition. This is the fully qualified label name that a log record must contain in order to meet the condition. Fully qualified labels have a prefix, optional namespaces, and label name. The prefix identifies the rule group or web ACL context of the rule that added the label.
" } }, "LabelSummaries": { @@ -1315,7 +1315,7 @@ "base": null, "refs": { "GetSampledRequestsRequest$RuleMetricName": "The metric name assigned to the Rule
or RuleGroup
for which you want a sample of requests.
A name of the Amazon CloudWatch metric. The name can contain only the characters: A-Z, a-z, 0-9, - (hyphen), and _ (underscore). The name can be from one to 128 characters long. It can't contain whitespace or metric names reserved for WAF, for example \"All\" and \"Default_Action.\"
" + "VisibilityConfig$MetricName": "A name of the Amazon CloudWatch metric. The name can contain only the characters: A-Z, a-z, 0-9, - (hyphen), and _ (underscore). The name can be from one to 128 characters long. It can't contain whitespace or metric names reserved for WAF, for example All
and Default_Action
.
A rate-based rule tracks the rate of requests for each originating IP address, and triggers the rule action when the rate exceeds a limit that you specify on the number of requests in any 5-minute time span. You can use this to put a temporary block on requests from an IP address that is sending excessive requests.
WAF tracks and manages web requests separately for each instance of a rate-based rule that you use. For example, if you provide the same rate-based rule settings in two web ACLs, each of the two rule statements represents a separate instance of the rate-based rule and gets its own tracking and management by WAF. If you define a rate-based rule inside a rule group, and then use that rule group in multiple places, each use creates a separate instance of the rate-based rule that gets its own tracking and management by WAF.
When the rule action triggers, WAF blocks additional requests from the IP address until the request rate falls below the limit.
You can optionally nest another statement inside the rate-based statement, to narrow the scope of the rule so that it only counts requests that match the nested statement. For example, based on recent requests that you have seen from an attacker, you might create a rate-based rule with a nested AND rule statement that contains the following nested statements:
An IP match statement with an IP set that specified the address 192.0.2.44.
A string match statement that searches in the User-Agent header for the string BadBot.
In this rate-based rule, you also define a rate limit. For this example, the rate limit is 1,000. Requests that meet both of the conditions in the statements are counted. If the count exceeds 1,000 requests per five minutes, the rule action triggers. Requests that do not meet both conditions are not counted towards the rate limit and are not affected by this rule.
You cannot nest a RateBasedStatement
inside another statement, for example inside a NotStatement
or OrStatement
. You can define a RateBasedStatement
inside a web ACL and inside a rule group.
A rate-based rule tracks the rate of requests for each originating IP address, and triggers the rule action when the rate exceeds a limit that you specify on the number of requests in any 5-minute time span. You can use this to put a temporary block on requests from an IP address that is sending excessive requests.
WAF tracks and manages web requests separately for each instance of a rate-based rule that you use. For example, if you provide the same rate-based rule settings in two web ACLs, each of the two rule statements represents a separate instance of the rate-based rule and gets its own tracking and management by WAF. If you define a rate-based rule inside a rule group, and then use that rule group in multiple places, each use creates a separate instance of the rate-based rule that gets its own tracking and management by WAF.
When the rule action triggers, WAF blocks additional requests from the IP address until the request rate falls below the limit.
You can optionally nest another statement inside the rate-based statement, to narrow the scope of the rule so that it only counts requests that match the nested statement. For example, based on recent requests that you have seen from an attacker, you might create a rate-based rule with a nested AND rule statement that contains the following nested statements:
An IP match statement with an IP set that specified the address 192.0.2.44.
A string match statement that searches in the User-Agent header for the string BadBot.
In this rate-based rule, you also define a rate limit. For this example, the rate limit is 1,000. Requests that meet the criteria of both of the nested statements are counted. If the count exceeds 1,000 requests per five minutes, the rule action triggers. Requests that do not meet the criteria of both of the nested statements are not counted towards the rate limit and are not affected by this rule.
You cannot nest a RateBasedStatement
inside another statement, for example inside a NotStatement
or OrStatement
. You can define a RateBasedStatement
inside a web ACL and inside a rule group.
A rate-based rule tracks the rate of requests for each originating IP address, and triggers the rule action when the rate exceeds a limit that you specify on the number of requests in any 5-minute time span. You can use this to put a temporary block on requests from an IP address that is sending excessive requests.
WAF tracks and manages web requests separately for each instance of a rate-based rule that you use. For example, if you provide the same rate-based rule settings in two web ACLs, each of the two rule statements represents a separate instance of the rate-based rule and gets its own tracking and management by WAF. If you define a rate-based rule inside a rule group, and then use that rule group in multiple places, each use creates a separate instance of the rate-based rule that gets its own tracking and management by WAF.
When the rule action triggers, WAF blocks additional requests from the IP address until the request rate falls below the limit.
You can optionally nest another statement inside the rate-based statement, to narrow the scope of the rule so that it only counts requests that match the nested statement. For example, based on recent requests that you have seen from an attacker, you might create a rate-based rule with a nested AND rule statement that contains the following nested statements:
An IP match statement with an IP set that specified the address 192.0.2.44.
A string match statement that searches in the User-Agent header for the string BadBot.
In this rate-based rule, you also define a rate limit. For this example, the rate limit is 1,000. Requests that meet both of the conditions in the statements are counted. If the count exceeds 1,000 requests per five minutes, the rule action triggers. Requests that do not meet both conditions are not counted towards the rate limit and are not affected by this rule.
You cannot nest a RateBasedStatement
inside another statement, for example inside a NotStatement
or OrStatement
. You can define a RateBasedStatement
inside a web ACL and inside a rule group.
A rate-based rule tracks the rate of requests for each originating IP address, and triggers the rule action when the rate exceeds a limit that you specify on the number of requests in any 5-minute time span. You can use this to put a temporary block on requests from an IP address that is sending excessive requests.
WAF tracks and manages web requests separately for each instance of a rate-based rule that you use. For example, if you provide the same rate-based rule settings in two web ACLs, each of the two rule statements represents a separate instance of the rate-based rule and gets its own tracking and management by WAF. If you define a rate-based rule inside a rule group, and then use that rule group in multiple places, each use creates a separate instance of the rate-based rule that gets its own tracking and management by WAF.
When the rule action triggers, WAF blocks additional requests from the IP address until the request rate falls below the limit.
You can optionally nest another statement inside the rate-based statement, to narrow the scope of the rule so that it only counts requests that match the nested statement. For example, based on recent requests that you have seen from an attacker, you might create a rate-based rule with a nested AND rule statement that contains the following nested statements:
An IP match statement with an IP set that specified the address 192.0.2.44.
A string match statement that searches in the User-Agent header for the string BadBot.
In this rate-based rule, you also define a rate limit. For this example, the rate limit is 1,000. Requests that meet the criteria of both of the nested statements are counted. If the count exceeds 1,000 requests per five minutes, the rule action triggers. Requests that do not meet the criteria of both of the nested statements are not counted towards the rate limit and are not affected by this rule.
You cannot nest a RateBasedStatement
inside another statement, for example inside a NotStatement
or OrStatement
. You can define a RateBasedStatement
inside a web ACL and inside a rule group.
The HTTP status code to return to the client.
For a list of status codes that you can use in your custom reqponses, see Supported status codes for custom response in the WAF Developer Guide.
", + "CustomResponse$ResponseCode": "The HTTP status code to return to the client.
For a list of status codes that you can use in your custom responses, see Supported status codes for custom response in the WAF Developer Guide.
", "SampledHTTPRequest$ResponseCodeSent": "The response code that was sent for the request.
" } }, @@ -1806,6 +1806,12 @@ "ByteMatchStatement$SearchString": "A string value that you want WAF to search for. WAF searches only in the part of web requests that you designate for inspection in FieldToMatch. The maximum length of the value is 50 bytes.
Valid values depend on the component that you specify for inspection in FieldToMatch
:
Method
: The HTTP method that you want WAF to search for. This indicates the type of operation specified in the request.
UriPath
: The value that you want WAF to search for in the URI path, for example, /images/daily-ad.jpg
.
If SearchString
includes alphabetic characters A-Z and a-z, note that the value is case sensitive.
If you're using the WAF API
Specify a base64-encoded version of the value. The maximum length of the value before you base64-encode it is 50 bytes.
For example, suppose the value of Type
is HEADER
and the value of Data
is User-Agent
. If you want to search the User-Agent
header for the value BadBot
, you base64-encode BadBot
using MIME base64-encoding and include the resulting value, QmFkQm90
, in the value of SearchString
.
If you're using the CLI or one of the Amazon Web Services SDKs
The value that you want WAF to search for. The SDK automatically base64 encodes the value.
" } }, + "SensitivityLevel": { + "base": null, + "refs": { + "SqliMatchStatement$SensitivityLevel": "The sensitivity that you want WAF to use to inspect for SQL injection attacks.
HIGH
detects more attacks, but might generate more false positives, especially if your web requests frequently contain unusual strings. For information about identifying and mitigating false positives, see Testing and tuning in the WAF Developer Guide.
LOW
is generally a better choice for resources that already have other protections against SQL injection attacks or that have a low tolerance for false positives.
Default: LOW
Inspect one of the headers in the web request, identified by name, for example, User-Agent
or Referer
. The name isn't case sensitive.
You can filter and inspect all headers with the FieldToMatch
setting Headers
.
This is used to indicate the web request component for WAF to inspect, in the FieldToMatch specification.
Example JSON: \"SingleHeader\": { \"Name\": \"haystack\" }
Inspect one of the headers in the web request, identified by name, for example, User-Agent
or Referer
. The name isn't case sensitive.
You can filter and inspect all headers with the FieldToMatch
setting Headers
.
This is used to indicate the web request component to inspect, in the FieldToMatch specification.
Example JSON: \"SingleHeader\": { \"Name\": \"haystack\" }
Inspect a single header. Provide the name of the header to inspect, for example, User-Agent
or Referer
. This setting isn't case sensitive.
Example JSON: \"SingleHeader\": { \"Name\": \"haystack\" }
Alternately, you can filter and inspect all headers with the Headers
FieldToMatch
setting.
Inspect one query argument in the web request, identified by name, for example UserName or SalesRegion. The name isn't case sensitive.
This is used to indicate the web request component for WAF to inspect, in the FieldToMatch specification.
Example JSON: \"SingleQueryArgument\": { \"Name\": \"myArgument\" }
Inspect one query argument in the web request, identified by name, for example UserName or SalesRegion. The name isn't case sensitive.
This is used to indicate the web request component to inspect, in the FieldToMatch specification.
Example JSON: \"SingleQueryArgument\": { \"Name\": \"myArgument\" }
Inspect a single query argument. Provide the name of the query argument to inspect, such as UserName or SalesRegion. The name can be up to 30 characters long and isn't case sensitive.
Example JSON: \"SingleQueryArgument\": { \"Name\": \"myArgument\" }
A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
If you configure WAF to inspect the request body, WAF inspects only the first 8192 bytes (8 KB). If the request body for your web requests never exceeds 8192 bytes, you can create a size constraint condition and block requests that have a request body greater than 8192 bytes.
If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI /logo.jpg
is nine characters long.
A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
If you configure WAF to inspect the request body, WAF inspects only the first 8192 bytes (8 KB). If the request body for your web requests never exceeds 8192 bytes, you could use a size constraint statement to block requests that have a request body greater than 8192 bytes.
If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI /logo.jpg
is nine characters long.
A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
If you configure WAF to inspect the request body, WAF inspects only the first 8192 bytes (8 KB). If the request body for your web requests never exceeds 8192 bytes, you can create a size constraint condition and block requests that have a request body greater than 8192 bytes.
If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI /logo.jpg
is nine characters long.
A rule statement that compares a number of bytes against the size of a request component, using a comparison operator, such as greater than (>) or less than (<). For example, you can use a size constraint statement to look for query strings that are longer than 100 bytes.
If you configure WAF to inspect the request body, WAF inspects only the first 8192 bytes (8 KB). If the request body for your web requests never exceeds 8192 bytes, you could use a size constraint statement to block requests that have a request body greater than 8192 bytes.
If you choose URI for the value of Part of the request to filter on, the slash (/) in the URI counts as one character. For example, the URI /logo.jpg
is nine characters long.
Attackers sometimes insert malicious SQL code into web requests in an effort to extract data from your database. To allow or block web requests that appear to contain malicious SQL code, create one or more SQL injection match conditions. An SQL injection match condition identifies the part of web requests, such as the URI or the query string, that you want WAF to inspect. Later in the process, when you create a web ACL, you specify whether to allow or block requests that appear to contain malicious SQL code.
", + "base": "A rule statement that inspects for malicious SQL code. Attackers insert malicious SQL code into web requests to do things like modify your database or extract data from it.
", "refs": { - "Statement$SqliMatchStatement": "Attackers sometimes insert malicious SQL code into web requests in an effort to extract data from your database. To allow or block web requests that appear to contain malicious SQL code, create one or more SQL injection match conditions. An SQL injection match condition identifies the part of web requests, such as the URI or the query string, that you want WAF to inspect. Later in the process, when you create a web ACL, you specify whether to allow or block requests that appear to contain malicious SQL code.
" + "Statement$SqliMatchStatement": "A rule statement that inspects for malicious SQL code. Attackers insert malicious SQL code into web requests to do things like modify your database or extract data from it.
" } }, "Statement": { @@ -2196,7 +2202,7 @@ } }, "WAFTagOperationInternalErrorException": { - "base": "WAF couldn’t perform your tagging operation because of an internal error. Retry ybjectNoteWebRequestComponentour request.
", + "base": "WAF couldn’t perform your tagging operation because of an internal error. Retry your request.
", "refs": { } }, @@ -2226,9 +2232,9 @@ } }, "XssMatchStatement": { - "base": "A rule statement that defines a cross-site scripting (XSS) match search for WAF to apply to web requests. XSS attacks are those where the attacker uses vulnerabilities in a benign website as a vehicle to inject malicious client-site scripts into other legitimate web browsers. The XSS match statement provides the location in requests that you want WAF to search and text transformations to use on the search area before WAF searches for character sequences that are likely to be malicious strings.
", + "base": "A rule statement that inspects for cross-site scripting (XSS) attacks. In XSS attacks, the attacker uses vulnerabilities in a benign website as a vehicle to inject malicious client-site scripts into other legitimate web browsers.
", "refs": { - "Statement$XssMatchStatement": "A rule statement that defines a cross-site scripting (XSS) match search for WAF to apply to web requests. XSS attacks are those where the attacker uses vulnerabilities in a benign website as a vehicle to inject malicious client-site scripts into other legitimate web browsers. The XSS match statement provides the location in requests that you want WAF to search and text transformations to use on the search area before WAF searches for character sequences that are likely to be malicious strings.
" + "Statement$XssMatchStatement": "A rule statement that inspects for cross-site scripting (XSS) attacks. In XSS attacks, the attacker uses vulnerabilities in a benign website as a vehicle to inject malicious client-site scripts into other legitimate web browsers.
" } } } diff --git a/models/endpoints/endpoints.json b/models/endpoints/endpoints.json index 54b7c6346b3..5baed78fdf0 100644 --- a/models/endpoints/endpoints.json +++ b/models/endpoints/endpoints.json @@ -3496,6 +3496,58 @@ "us-west-2" : { } } }, + "devops-guru" : { + "defaults" : { + "protocols" : [ "https" ] + }, + "endpoints" : { + "ap-northeast-1" : { }, + "ap-southeast-1" : { }, + "ap-southeast-2" : { }, + "eu-central-1" : { }, + "eu-north-1" : { }, + "eu-west-1" : { }, + "fips-us-east-1" : { + "credentialScope" : { + "region" : "us-east-1" + }, + "deprecated" : true, + "hostname" : "devops-guru-fips.us-east-1.amazonaws.com" + }, + "fips-us-east-2" : { + "credentialScope" : { + "region" : "us-east-2" + }, + "deprecated" : true, + "hostname" : "devops-guru-fips.us-east-2.amazonaws.com" + }, + "fips-us-west-2" : { + "credentialScope" : { + "region" : "us-west-2" + }, + "deprecated" : true, + "hostname" : "devops-guru-fips.us-west-2.amazonaws.com" + }, + "us-east-1" : { + "variants" : [ { + "hostname" : "devops-guru-fips.us-east-1.amazonaws.com", + "tags" : [ "fips" ] + } ] + }, + "us-east-2" : { + "variants" : [ { + "hostname" : "devops-guru-fips.us-east-2.amazonaws.com", + "tags" : [ "fips" ] + } ] + }, + "us-west-2" : { + "variants" : [ { + "hostname" : "devops-guru-fips.us-west-2.amazonaws.com", + "tags" : [ "fips" ] + } ] + } + } + }, "directconnect" : { "endpoints" : { "af-south-1" : { }, diff --git a/service/cloudwatchevidently/api.go b/service/cloudwatchevidently/api.go index f83ac394b50..c54e6c6c02a 100644 --- a/service/cloudwatchevidently/api.go +++ b/service/cloudwatchevidently/api.go @@ -177,6 +177,10 @@ func (c *CloudWatchEvidently) CreateExperimentRequest(input *CreateExperimentInp // collects experiment data and analyzes it by statistical methods, and provides // clear recommendations about which variations perform better. // +// You can optionally specify a segment to have the experiment consider only +// certain audience types in the experiment, such as using only user sessions +// from a certain location or who use a certain internet browser. +// // Don't use this operation to update an existing experiment. Instead, use UpdateExperiment // (https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_UpdateExperiment.html). // @@ -515,6 +519,108 @@ func (c *CloudWatchEvidently) CreateProjectWithContext(ctx aws.Context, input *C return out, req.Send() } +const opCreateSegment = "CreateSegment" + +// CreateSegmentRequest generates a "aws/request.Request" representing the +// client's request for the CreateSegment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateSegment for more information on using the CreateSegment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateSegmentRequest method. +// req, resp := client.CreateSegmentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/CreateSegment +func (c *CloudWatchEvidently) CreateSegmentRequest(input *CreateSegmentInput) (req *request.Request, output *CreateSegmentOutput) { + op := &request.Operation{ + Name: opCreateSegment, + HTTPMethod: "POST", + HTTPPath: "/segments", + } + + if input == nil { + input = &CreateSegmentInput{} + } + + output = &CreateSegmentOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateSegment API operation for Amazon CloudWatch Evidently. +// +// Use this operation to define a segment of your audience. A segment is a portion +// of your audience that share one or more characteristics. Examples could be +// Chrome browser users, users in Europe, or Firefox browser users in Europe +// who also fit other criteria that your application collects, such as age. +// +// Using a segment in an experiment limits that experiment to evaluate only +// the users who match the segment criteria. Using one or more segments in a +// launch allow you to define different traffic splits for the different audience +// segments. +// +//For more information about segment pattern syntax, see +// Segment rule pattern syntax.
The pattern that you define for
+// a segment is matched against the value of evaluationContext
,
+// which is passed into Evidently in the EvaluateFeature
+// operation, when Evidently assigns a feature variation to a user.
If there is a current launch with this feature that uses segment overrides,
+// and if the user session's evaluationContext
matches a segment
+// rule defined in a segment override, the configuration in the segment overrides
+// is used. For more information about segments, see CreateSegment
+// and Use
+// segments to focus your audience.
If there is a launch with +// no segment overrides, the user might be assigned to a variation in the +// launch. The chance of this depends on the percentage of users that are +// allocated to that launch. If the user is enrolled in the launch, the variation +// they are served depends on the allocation of the various feature variations +// used for the launch.
If the user is not assigned to a launch, and +// there is an ongoing experiment for this feature, the user might be assigned +// to a variation in the experiment. The chance of this depends on the percentage +// of users that are allocated to that experiment.
If the experiment
+// uses a segment, then only user sessions with evaluationContext
+// values that match the segment rule are used in the experiment.
If +// the user is enrolled in the experiment, the variation they are served +// depends on the allocation of the various feature variations used for the +// experiment.
If the user is not assigned to a launch or experiment, +// they are served the default variation.
// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1458,6 +1662,95 @@ func (c *CloudWatchEvidently) GetProjectWithContext(ctx aws.Context, input *GetP return out, req.Send() } +const opGetSegment = "GetSegment" + +// GetSegmentRequest generates a "aws/request.Request" representing the +// client's request for the GetSegment operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetSegment for more information on using the GetSegment +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetSegmentRequest method. +// req, resp := client.GetSegmentRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/GetSegment +func (c *CloudWatchEvidently) GetSegmentRequest(input *GetSegmentInput) (req *request.Request, output *GetSegmentOutput) { + op := &request.Operation{ + Name: opGetSegment, + HTTPMethod: "GET", + HTTPPath: "/segments/{segment}", + } + + if input == nil { + input = &GetSegmentInput{} + } + + output = &GetSegmentOutput{} + req = c.newRequest(op, input, output) + return +} + +// GetSegment API operation for Amazon CloudWatch Evidently. +// +// Returns information about the specified segment. Specify the segment you +// want to view by specifying its ARN. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon CloudWatch Evidently's +// API operation GetSegment for usage and error information. +// +// Returned Error Types: +// * ThrottlingException +// The request was denied because of request throttling. Retry the request. +// +// * ValidationException +// The value of a parameter in the request caused an error. +// +// * ResourceNotFoundException +// The request references a resource that does not exist. +// +// * AccessDeniedException +// You do not have sufficient permissions to perform this action. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/GetSegment +func (c *CloudWatchEvidently) GetSegment(input *GetSegmentInput) (*GetSegmentOutput, error) { + req, out := c.GetSegmentRequest(input) + return out, req.Send() +} + +// GetSegmentWithContext is the same as GetSegment with the addition of +// the ability to pass a context and additional request options. +// +// See GetSegment for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *CloudWatchEvidently) GetSegmentWithContext(ctx aws.Context, input *GetSegmentInput, opts ...request.Option) (*GetSegmentOutput, error) { + req, out := c.GetSegmentRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListExperiments = "ListExperiments" // ListExperimentsRequest generates a "aws/request.Request" representing the @@ -2035,6 +2328,297 @@ func (c *CloudWatchEvidently) ListProjectsPagesWithContext(ctx aws.Context, inpu return p.Err() } +const opListSegmentReferences = "ListSegmentReferences" + +// ListSegmentReferencesRequest generates a "aws/request.Request" representing the +// client's request for the ListSegmentReferences operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListSegmentReferences for more information on using the ListSegmentReferences +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListSegmentReferencesRequest method. +// req, resp := client.ListSegmentReferencesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/ListSegmentReferences +func (c *CloudWatchEvidently) ListSegmentReferencesRequest(input *ListSegmentReferencesInput) (req *request.Request, output *ListSegmentReferencesOutput) { + op := &request.Operation{ + Name: opListSegmentReferences, + HTTPMethod: "GET", + HTTPPath: "/segments/{segment}/references", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListSegmentReferencesInput{} + } + + output = &ListSegmentReferencesOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListSegmentReferences API operation for Amazon CloudWatch Evidently. +// +// Use this operation to find which experiments or launches are using a specified +// segment. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon CloudWatch Evidently's +// API operation ListSegmentReferences for usage and error information. +// +// Returned Error Types: +// * ThrottlingException +// The request was denied because of request throttling. Retry the request. +// +// * ValidationException +// The value of a parameter in the request caused an error. +// +// * ResourceNotFoundException +// The request references a resource that does not exist. +// +// * AccessDeniedException +// You do not have sufficient permissions to perform this action. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/ListSegmentReferences +func (c *CloudWatchEvidently) ListSegmentReferences(input *ListSegmentReferencesInput) (*ListSegmentReferencesOutput, error) { + req, out := c.ListSegmentReferencesRequest(input) + return out, req.Send() +} + +// ListSegmentReferencesWithContext is the same as ListSegmentReferences with the addition of +// the ability to pass a context and additional request options. +// +// See ListSegmentReferences for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *CloudWatchEvidently) ListSegmentReferencesWithContext(ctx aws.Context, input *ListSegmentReferencesInput, opts ...request.Option) (*ListSegmentReferencesOutput, error) { + req, out := c.ListSegmentReferencesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListSegmentReferencesPages iterates over the pages of a ListSegmentReferences operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListSegmentReferences method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListSegmentReferences operation. +// pageNum := 0 +// err := client.ListSegmentReferencesPages(params, +// func(page *cloudwatchevidently.ListSegmentReferencesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CloudWatchEvidently) ListSegmentReferencesPages(input *ListSegmentReferencesInput, fn func(*ListSegmentReferencesOutput, bool) bool) error { + return c.ListSegmentReferencesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListSegmentReferencesPagesWithContext same as ListSegmentReferencesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *CloudWatchEvidently) ListSegmentReferencesPagesWithContext(ctx aws.Context, input *ListSegmentReferencesInput, fn func(*ListSegmentReferencesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListSegmentReferencesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListSegmentReferencesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListSegmentReferencesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListSegments = "ListSegments" + +// ListSegmentsRequest generates a "aws/request.Request" representing the +// client's request for the ListSegments operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListSegments for more information on using the ListSegments +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListSegmentsRequest method. +// req, resp := client.ListSegmentsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/ListSegments +func (c *CloudWatchEvidently) ListSegmentsRequest(input *ListSegmentsInput) (req *request.Request, output *ListSegmentsOutput) { + op := &request.Operation{ + Name: opListSegments, + HTTPMethod: "GET", + HTTPPath: "/segments", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListSegmentsInput{} + } + + output = &ListSegmentsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListSegments API operation for Amazon CloudWatch Evidently. +// +// Returns a list of audience segments that you have created in your account +// in this Region. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon CloudWatch Evidently's +// API operation ListSegments for usage and error information. +// +// Returned Error Types: +// * ThrottlingException +// The request was denied because of request throttling. Retry the request. +// +// * ValidationException +// The value of a parameter in the request caused an error. +// +// * AccessDeniedException +// You do not have sufficient permissions to perform this action. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/ListSegments +func (c *CloudWatchEvidently) ListSegments(input *ListSegmentsInput) (*ListSegmentsOutput, error) { + req, out := c.ListSegmentsRequest(input) + return out, req.Send() +} + +// ListSegmentsWithContext is the same as ListSegments with the addition of +// the ability to pass a context and additional request options. +// +// See ListSegments for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *CloudWatchEvidently) ListSegmentsWithContext(ctx aws.Context, input *ListSegmentsInput, opts ...request.Option) (*ListSegmentsOutput, error) { + req, out := c.ListSegmentsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListSegmentsPages iterates over the pages of a ListSegments operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListSegments method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListSegments operation. +// pageNum := 0 +// err := client.ListSegmentsPages(params, +// func(page *cloudwatchevidently.ListSegmentsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CloudWatchEvidently) ListSegmentsPages(input *ListSegmentsInput, fn func(*ListSegmentsOutput, bool) bool) error { + return c.ListSegmentsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListSegmentsPagesWithContext same as ListSegmentsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *CloudWatchEvidently) ListSegmentsPagesWithContext(ctx aws.Context, input *ListSegmentsInput, fn func(*ListSegmentsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListSegmentsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListSegmentsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListSegmentsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opListTagsForResource = "ListTagsForResource" // ListTagsForResourceRequest generates a "aws/request.Request" representing the @@ -2667,26 +3251,113 @@ func (c *CloudWatchEvidently) TagResourceRequest(input *TagResourceInput) (req * // * ConflictException // A resource was in an inconsistent state during an update or a deletion. // -// * ResourceNotFoundException -// The request references a resource that does not exist. +// * ResourceNotFoundException +// The request references a resource that does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/TagResource +func (c *CloudWatchEvidently) TagResource(input *TagResourceInput) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + return out, req.Send() +} + +// TagResourceWithContext is the same as TagResource with the addition of +// the ability to pass a context and additional request options. +// +// See TagResource for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *CloudWatchEvidently) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) { + req, out := c.TagResourceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opTestSegmentPattern = "TestSegmentPattern" + +// TestSegmentPatternRequest generates a "aws/request.Request" representing the +// client's request for the TestSegmentPattern operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TestSegmentPattern for more information on using the TestSegmentPattern +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TestSegmentPatternRequest method. +// req, resp := client.TestSegmentPatternRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/TestSegmentPattern +func (c *CloudWatchEvidently) TestSegmentPatternRequest(input *TestSegmentPatternInput) (req *request.Request, output *TestSegmentPatternOutput) { + op := &request.Operation{ + Name: opTestSegmentPattern, + HTTPMethod: "POST", + HTTPPath: "/test-segment-pattern", + } + + if input == nil { + input = &TestSegmentPatternInput{} + } + + output = &TestSegmentPatternOutput{} + req = c.newRequest(op, input, output) + return +} + +// TestSegmentPattern API operation for Amazon CloudWatch Evidently. +// +// Use this operation to test a rules pattern that you plan to use to create +// an audience segment. For more information about segments, see CreateSegment +// (https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_CreateSegment.html). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon CloudWatch Evidently's +// API operation TestSegmentPattern for usage and error information. +// +// Returned Error Types: +// * ThrottlingException +// The request was denied because of request throttling. Retry the request. +// +// * ValidationException +// The value of a parameter in the request caused an error. +// +// * AccessDeniedException +// You do not have sufficient permissions to perform this action. // -// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/TagResource -func (c *CloudWatchEvidently) TagResource(input *TagResourceInput) (*TagResourceOutput, error) { - req, out := c.TagResourceRequest(input) +// See also, https://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/TestSegmentPattern +func (c *CloudWatchEvidently) TestSegmentPattern(input *TestSegmentPatternInput) (*TestSegmentPatternOutput, error) { + req, out := c.TestSegmentPatternRequest(input) return out, req.Send() } -// TagResourceWithContext is the same as TagResource with the addition of +// TestSegmentPatternWithContext is the same as TestSegmentPattern with the addition of // the ability to pass a context and additional request options. // -// See TagResource for details on how to use this API operation. +// See TestSegmentPattern for details on how to use this API operation. // // The context must be non-nil and will be used for request cancellation. If // the context is nil a panic will occur. In the future the SDK may create // sub-contexts for http.Requests. See https://golang.org/pkg/context/ // for more information on using Contexts. -func (c *CloudWatchEvidently) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) { - req, out := c.TagResourceRequest(input) +func (c *CloudWatchEvidently) TestSegmentPatternWithContext(ctx aws.Context, input *TestSegmentPatternInput, opts ...request.Option) (*TestSegmentPatternOutput, error) { + req, out := c.TestSegmentPatternRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() @@ -3119,6 +3790,9 @@ func (c *CloudWatchEvidently) UpdateProjectRequest(input *UpdateProjectInput) (r // * ValidationException // The value of a parameter in the request caused an error. // +// * ConflictException +// A resource was in an inconsistent state during an update or a deletion. +// // * ServiceQuotaExceededException // The request would cause a service quota to be exceeded. // @@ -3613,6 +4287,11 @@ type CreateExperimentInput struct { // to allocate 10% of the available audience. SamplingRate *int64 `locationName:"samplingRate" type:"long"` + // Specifies an audience segment to use in the experiment. When a segment is + // used in an experiment, only user sessions that match the segment pattern + // are used in the experiment. + Segment *string `locationName:"segment" type:"string"` + // Assigns one or more tags (key-value pairs) to the experiment. // // Tags can help you organize and categorize your resources. You can also use @@ -3750,6 +4429,12 @@ func (s *CreateExperimentInput) SetSamplingRate(v int64) *CreateExperimentInput return s } +// SetSegment sets the Segment field's value. +func (s *CreateExperimentInput) SetSegment(v string) *CreateExperimentInput { + s.Segment = &v + return s +} + // SetTags sets the Tags field's value. func (s *CreateExperimentInput) SetTags(v map[string]*string) *CreateExperimentInput { s.Tags = v @@ -4021,7 +4706,7 @@ type CreateLaunchInput struct { // When Evidently assigns a particular user session to a launch, it must use // a randomization ID to determine which variation the user session is served. // This randomization ID is a combination of the entity ID and randomizationSalt. - // If you omit randomizationSalt, Evidently uses the launch name as the randomizationsSalt. + // If you omit randomizationSalt, Evidently uses the launch name as the randomizationSalt. RandomizationSalt *string `locationName:"randomizationSalt" type:"string"` // An array of structures that define the traffic allocation percentages among @@ -4323,6 +5008,136 @@ func (s *CreateProjectOutput) SetProject(v *Project) *CreateProjectOutput { return s } +type CreateSegmentInput struct { + _ struct{} `type:"structure"` + + // An optional description for this segment. + Description *string `locationName:"description" type:"string"` + + // A name for the segment. + // + // Name is a required field + Name *string `locationName:"name" min:"1" type:"string" required:"true"` + + // The pattern to use for the segment. For more information about pattern syntax, + // see Segment rule pattern syntax (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments-syntax.html). + // + // Pattern is a required field + Pattern *string `locationName:"pattern" min:"1" type:"string" required:"true"` + + // Assigns one or more tags (key-value pairs) to the segment. + // + // Tags can help you organize and categorize your resources. You can also use + // them to scope user permissions by granting a user permission to access or + // change only resources with certain tag values. + // + // Tags don't have any semantic meaning to Amazon Web Services and are interpreted + // strictly as strings of characters. + // + //You can associate as many as 50 tags with a segment.
For more + // information, see Tagging + // Amazon Web Services resources.
+ Tags map[string]*string `locationName:"tags" type:"map"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateSegmentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateSegmentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateSegmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateSegmentInput"} + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.Name != nil && len(*s.Name) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Name", 1)) + } + if s.Pattern == nil { + invalidParams.Add(request.NewErrParamRequired("Pattern")) + } + if s.Pattern != nil && len(*s.Pattern) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Pattern", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDescription sets the Description field's value. +func (s *CreateSegmentInput) SetDescription(v string) *CreateSegmentInput { + s.Description = &v + return s +} + +// SetName sets the Name field's value. +func (s *CreateSegmentInput) SetName(v string) *CreateSegmentInput { + s.Name = &v + return s +} + +// SetPattern sets the Pattern field's value. +func (s *CreateSegmentInput) SetPattern(v string) *CreateSegmentInput { + s.Pattern = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *CreateSegmentInput) SetTags(v map[string]*string) *CreateSegmentInput { + s.Tags = v + return s +} + +type CreateSegmentOutput struct { + _ struct{} `type:"structure"` + + // A structure that contains the complete information about the segment that + // was just created. + // + // Segment is a required field + Segment *Segment `locationName:"segment" type:"structure" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateSegmentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s CreateSegmentOutput) GoString() string { + return s.String() +} + +// SetSegment sets the Segment field's value. +func (s *CreateSegmentOutput) SetSegment(v *Segment) *CreateSegmentOutput { + s.Segment = v + return s +} + type DeleteExperimentInput struct { _ struct{} `type:"structure" nopayload:"true"` @@ -4658,6 +5473,77 @@ func (s DeleteProjectOutput) GoString() string { return s.String() } +type DeleteSegmentInput struct { + _ struct{} `type:"structure" nopayload:"true"` + + // Specifies the segment to delete. + // + // Segment is a required field + Segment *string `location:"uri" locationName:"segment" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteSegmentInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteSegmentInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteSegmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteSegmentInput"} + if s.Segment == nil { + invalidParams.Add(request.NewErrParamRequired("Segment")) + } + if s.Segment != nil && len(*s.Segment) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Segment", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSegment sets the Segment field's value. +func (s *DeleteSegmentInput) SetSegment(v string) *DeleteSegmentInput { + s.Segment = &v + return s +} + +type DeleteSegmentOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteSegmentOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s DeleteSegmentOutput) GoString() string { + return s.String() +} + type EvaluateFeatureInput struct { _ struct{} `type:"structure"` @@ -4667,8 +5553,13 @@ type EvaluateFeatureInput struct { // EntityId is a required field EntityId *string `locationName:"entityId" min:"1" type:"string" required:"true"` - // A JSON block of attributes that you can optionally pass in. This JSON block - // is included in the evaluation events sent to Evidently from the user session. + // A JSON object of attributes that you can optionally pass in as part of the + // evaluation event sent to Evidently from the user session. Evidently can use + // this value to match user sessions with defined audience segments. For more + // information, see Use segments to focus your audience (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-segments.html). + // + //If you include this parameter, the value must be a JSON object. A JSON + // array is not supported.
EvaluationContext *string `locationName:"evaluationContext" type:"string"` // The name of the feature being evaluated. @@ -5178,6 +6069,10 @@ type Experiment struct { // analysis of the experiment. Schedule *ExperimentSchedule `locationName:"schedule" type:"structure"` + // The audience segment being used for the experiment, if a segment is being + // used. + Segment *string `locationName:"segment" type:"string"` + // The current state of the experiment. // // Status is a required field @@ -5290,6 +6185,12 @@ func (s *Experiment) SetSchedule(v *ExperimentSchedule) *Experiment { return s } +// SetSegment sets the Segment field's value. +func (s *Experiment) SetSegment(v string) *Experiment { + s.Segment = &v + return s +} + // SetStatus sets the Status field's value. func (s *Experiment) SetStatus(v string) *Experiment { s.Status = &v @@ -6375,7 +7276,89 @@ type GetProjectInput struct { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s GetProjectInput) String() string { +func (s GetProjectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetProjectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetProjectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetProjectInput"} + if s.Project == nil { + invalidParams.Add(request.NewErrParamRequired("Project")) + } + if s.Project != nil && len(*s.Project) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Project", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetProject sets the Project field's value. +func (s *GetProjectInput) SetProject(v string) *GetProjectInput { + s.Project = &v + return s +} + +type GetProjectOutput struct { + _ struct{} `type:"structure"` + + // A structure containing the configuration details of the project. + // + // Project is a required field + Project *Project `locationName:"project" type:"structure" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetProjectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetProjectOutput) GoString() string { + return s.String() +} + +// SetProject sets the Project field's value. +func (s *GetProjectOutput) SetProject(v *Project) *GetProjectOutput { + s.Project = v + return s +} + +type GetSegmentInput struct { + _ struct{} `type:"structure" nopayload:"true"` + + // The ARN of the segment to return information for. + // + // Segment is a required field + Segment *string `location:"uri" locationName:"segment" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s GetSegmentInput) String() string { return awsutil.Prettify(s) } @@ -6384,18 +7367,18 @@ func (s GetProjectInput) String() string { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s GetProjectInput) GoString() string { +func (s GetSegmentInput) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. -func (s *GetProjectInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "GetProjectInput"} - if s.Project == nil { - invalidParams.Add(request.NewErrParamRequired("Project")) +func (s *GetSegmentInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetSegmentInput"} + if s.Segment == nil { + invalidParams.Add(request.NewErrParamRequired("Segment")) } - if s.Project != nil && len(*s.Project) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Project", 1)) + if s.Segment != nil && len(*s.Segment) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Segment", 1)) } if invalidParams.Len() > 0 { @@ -6404,19 +7387,19 @@ func (s *GetProjectInput) Validate() error { return nil } -// SetProject sets the Project field's value. -func (s *GetProjectInput) SetProject(v string) *GetProjectInput { - s.Project = &v +// SetSegment sets the Segment field's value. +func (s *GetSegmentInput) SetSegment(v string) *GetSegmentInput { + s.Segment = &v return s } -type GetProjectOutput struct { +type GetSegmentOutput struct { _ struct{} `type:"structure"` - // A structure containing the configuration details of the project. + // A structure that contains the complete information about the segment. // - // Project is a required field - Project *Project `locationName:"project" type:"structure" required:"true"` + // Segment is a required field + Segment *Segment `locationName:"segment" type:"structure" required:"true"` } // String returns the string representation. @@ -6424,7 +7407,7 @@ type GetProjectOutput struct { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s GetProjectOutput) String() string { +func (s GetSegmentOutput) String() string { return awsutil.Prettify(s) } @@ -6433,13 +7416,13 @@ func (s GetProjectOutput) String() string { // API parameter values that are decorated as "sensitive" in the API will not // be included in the string output. The member name will be present, but the // value will be replaced with "sensitive". -func (s GetProjectOutput) GoString() string { +func (s GetSegmentOutput) GoString() string { return s.String() } -// SetProject sets the Project field's value. -func (s *GetProjectOutput) SetProject(v *Project) *GetProjectOutput { - s.Project = v +// SetSegment sets the Segment field's value. +func (s *GetSegmentOutput) SetSegment(v *Segment) *GetSegmentOutput { + s.Segment = v return s } @@ -7343,6 +8326,238 @@ func (s *ListProjectsOutput) SetProjects(v []*ProjectSummary) *ListProjectsOutpu return s } +type ListSegmentReferencesInput struct { + _ struct{} `type:"structure" nopayload:"true"` + + // The maximum number of results to include in the response. If you omit this, + // the default of 50 is used. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The token to use when requesting the next set of results. You received this + // token from a previous ListSegmentReferences operation. + NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"` + + // The ARN of the segment that you want to view information for. + // + // Segment is a required field + Segment *string `location:"uri" locationName:"segment" type:"string" required:"true"` + + // Specifies whether to return information about launches or experiments that + // use this segment. + // + // Type is a required field + Type *string `location:"querystring" locationName:"type" type:"string" required:"true" enum:"SegmentReferenceResourceType"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentReferencesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentReferencesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListSegmentReferencesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListSegmentReferencesInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.NextToken != nil && len(*s.NextToken) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NextToken", 1)) + } + if s.Segment == nil { + invalidParams.Add(request.NewErrParamRequired("Segment")) + } + if s.Segment != nil && len(*s.Segment) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Segment", 1)) + } + if s.Type == nil { + invalidParams.Add(request.NewErrParamRequired("Type")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListSegmentReferencesInput) SetMaxResults(v int64) *ListSegmentReferencesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListSegmentReferencesInput) SetNextToken(v string) *ListSegmentReferencesInput { + s.NextToken = &v + return s +} + +// SetSegment sets the Segment field's value. +func (s *ListSegmentReferencesInput) SetSegment(v string) *ListSegmentReferencesInput { + s.Segment = &v + return s +} + +// SetType sets the Type field's value. +func (s *ListSegmentReferencesInput) SetType(v string) *ListSegmentReferencesInput { + s.Type = &v + return s +} + +type ListSegmentReferencesOutput struct { + _ struct{} `type:"structure"` + + // The token to use in a subsequent ListSegmentReferences operation to return + // the next set of results. + NextToken *string `locationName:"nextToken" min:"1" type:"string"` + + // An array of structures, where each structure contains information about one + // experiment or launch that uses this segment. + ReferencedBy []*RefResource `locationName:"referencedBy" type:"list"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentReferencesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentReferencesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListSegmentReferencesOutput) SetNextToken(v string) *ListSegmentReferencesOutput { + s.NextToken = &v + return s +} + +// SetReferencedBy sets the ReferencedBy field's value. +func (s *ListSegmentReferencesOutput) SetReferencedBy(v []*RefResource) *ListSegmentReferencesOutput { + s.ReferencedBy = v + return s +} + +type ListSegmentsInput struct { + _ struct{} `type:"structure" nopayload:"true"` + + // The maximum number of results to include in the response. If you omit this, + // the default of 50 is used. + MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` + + // The token to use when requesting the next set of results. You received this + // token from a previous ListSegments operation. + NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListSegmentsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListSegmentsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.NextToken != nil && len(*s.NextToken) < 1 { + invalidParams.Add(request.NewErrParamMinLen("NextToken", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListSegmentsInput) SetMaxResults(v int64) *ListSegmentsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListSegmentsInput) SetNextToken(v string) *ListSegmentsInput { + s.NextToken = &v + return s +} + +type ListSegmentsOutput struct { + _ struct{} `type:"structure"` + + // The token to use in a subsequent ListSegments operation to return the next + // set of results. + NextToken *string `locationName:"nextToken" min:"1" type:"string"` + + // An array of structures that contain information about the segments in this + // Region. + Segments []*Segment `locationName:"segments" type:"list"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s ListSegmentsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListSegmentsOutput) SetNextToken(v string) *ListSegmentsOutput { + s.NextToken = &v + return s +} + +// SetSegments sets the Segments field's value. +func (s *ListSegmentsOutput) SetSegments(v []*Segment) *ListSegmentsOutput { + s.Segments = v + return s +} + type ListTagsForResourceInput struct { _ struct{} `type:"structure" nopayload:"true"` @@ -8472,21 +9687,113 @@ func (s PutProjectEventsResultEntry) GoString() string { return s.String() } -// SetErrorCode sets the ErrorCode field's value. -func (s *PutProjectEventsResultEntry) SetErrorCode(v string) *PutProjectEventsResultEntry { - s.ErrorCode = &v +// SetErrorCode sets the ErrorCode field's value. +func (s *PutProjectEventsResultEntry) SetErrorCode(v string) *PutProjectEventsResultEntry { + s.ErrorCode = &v + return s +} + +// SetErrorMessage sets the ErrorMessage field's value. +func (s *PutProjectEventsResultEntry) SetErrorMessage(v string) *PutProjectEventsResultEntry { + s.ErrorMessage = &v + return s +} + +// SetEventId sets the EventId field's value. +func (s *PutProjectEventsResultEntry) SetEventId(v string) *PutProjectEventsResultEntry { + s.EventId = &v + return s +} + +// A structure that contains information about one experiment or launch that +// uses the specified segment. +type RefResource struct { + _ struct{} `type:"structure"` + + // The ARN of the experiment or launch. + Arn *string `locationName:"arn" type:"string"` + + // The day and time that this experiment or launch ended. + EndTime *string `locationName:"endTime" type:"string"` + + // The day and time that this experiment or launch was most recently updated. + LastUpdatedOn *string `locationName:"lastUpdatedOn" type:"string"` + + // The name of the experiment or launch. + // + // Name is a required field + Name *string `locationName:"name" type:"string" required:"true"` + + // The day and time that this experiment or launch started. + StartTime *string `locationName:"startTime" type:"string"` + + // The status of the experiment or launch. + Status *string `locationName:"status" type:"string"` + + // Specifies whether the resource that this structure contains information about + // is an experiment or a launch. + // + // Type is a required field + Type *string `locationName:"type" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s RefResource) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s RefResource) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *RefResource) SetArn(v string) *RefResource { + s.Arn = &v + return s +} + +// SetEndTime sets the EndTime field's value. +func (s *RefResource) SetEndTime(v string) *RefResource { + s.EndTime = &v + return s +} + +// SetLastUpdatedOn sets the LastUpdatedOn field's value. +func (s *RefResource) SetLastUpdatedOn(v string) *RefResource { + s.LastUpdatedOn = &v return s } -// SetErrorMessage sets the ErrorMessage field's value. -func (s *PutProjectEventsResultEntry) SetErrorMessage(v string) *PutProjectEventsResultEntry { - s.ErrorMessage = &v +// SetName sets the Name field's value. +func (s *RefResource) SetName(v string) *RefResource { + s.Name = &v return s } -// SetEventId sets the EventId field's value. -func (s *PutProjectEventsResultEntry) SetEventId(v string) *PutProjectEventsResultEntry { - s.EventId = &v +// SetStartTime sets the StartTime field's value. +func (s *RefResource) SetStartTime(v string) *RefResource { + s.StartTime = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *RefResource) SetStatus(v string) *RefResource { + s.Status = &v + return s +} + +// SetType sets the Type field's value. +func (s *RefResource) SetType(v string) *RefResource { + s.Type = &v return s } @@ -8669,8 +9976,27 @@ type ScheduledSplit struct { // step of a launch. This is a set of key-value pairs. The keys are variation // names. The values represent the percentage of traffic to allocate to that // variation during this step. + // + // The values is expressed in thousandths of a percent, so assigning a weight + // of 50000 assigns 50% of traffic to that variation. + // + // If the sum of the weights for all the variations in a segment override does + // not add up to 100,000, then the remaining traffic that matches this segment + // is not assigned by this segment override, and instead moves on to the next + // segment override or the default traffic split. GroupWeights map[string]*int64 `locationName:"groupWeights" type:"map"` + // Use this parameter to specify different traffic splits for one or more audience + // segments. A segment is a portion of your audience that share one or more + // characteristics. Examples could be Chrome browser users, users in Europe, + // or Firefox browser users in Europe who also fit other criteria that your + // application collects, such as age. + // + // This parameter is an array of up to six segment override objects. Each of + // these objects specifies a segment that you have already created, and defines + // the traffic split for that segment. + SegmentOverrides []*SegmentOverride `locationName:"segmentOverrides" type:"list"` + // The date and time that this step of the launch starts. // // StartTime is a required field @@ -8701,6 +10027,12 @@ func (s *ScheduledSplit) SetGroupWeights(v map[string]*int64) *ScheduledSplit { return s } +// SetSegmentOverrides sets the SegmentOverrides field's value. +func (s *ScheduledSplit) SetSegmentOverrides(v []*SegmentOverride) *ScheduledSplit { + s.SegmentOverrides = v + return s +} + // SetStartTime sets the StartTime field's value. func (s *ScheduledSplit) SetStartTime(v time.Time) *ScheduledSplit { s.StartTime = &v @@ -8717,9 +10049,27 @@ type ScheduledSplitConfig struct { // names. The values represent the percentage of traffic to allocate to that // variation during this step. // + //The values is expressed in thousandths of a percent, so assigning a + // weight of 50000 assigns 50% of traffic to that variation.
If the + // sum of the weights for all the variations in a segment override does not + // add up to 100,000, then the remaining traffic that matches this segment + // is not assigned by this segment override, and instead moves on to the + // next segment override or the default traffic split.
+ // // GroupWeights is a required field GroupWeights map[string]*int64 `locationName:"groupWeights" type:"map" required:"true"` + // Use this parameter to specify different traffic splits for one or more audience + // segments. A segment is a portion of your audience that share one or more + // characteristics. Examples could be Chrome browser users, users in Europe, + // or Firefox browser users in Europe who also fit other criteria that your + // application collects, such as age. + // + // This parameter is an array of up to six segment override objects. Each of + // these objects specifies a segment that you have already created, and defines + // the traffic split for that segment. + SegmentOverrides []*SegmentOverride `locationName:"segmentOverrides" type:"list"` + // The date and time that this step of the launch starts. // // StartTime is a required field @@ -8753,6 +10103,16 @@ func (s *ScheduledSplitConfig) Validate() error { if s.StartTime == nil { invalidParams.Add(request.NewErrParamRequired("StartTime")) } + if s.SegmentOverrides != nil { + for i, v := range s.SegmentOverrides { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SegmentOverrides", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -8766,6 +10126,12 @@ func (s *ScheduledSplitConfig) SetGroupWeights(v map[string]*int64) *ScheduledSp return s } +// SetSegmentOverrides sets the SegmentOverrides field's value. +func (s *ScheduledSplitConfig) SetSegmentOverrides(v []*SegmentOverride) *ScheduledSplitConfig { + s.SegmentOverrides = v + return s +} + // SetStartTime sets the StartTime field's value. func (s *ScheduledSplitConfig) SetStartTime(v time.Time) *ScheduledSplitConfig { s.StartTime = &v @@ -8872,6 +10238,204 @@ func (s *ScheduledSplitsLaunchDefinition) SetSteps(v []*ScheduledSplit) *Schedul return s } +// This structure contains information about one audience segment. You can use +// segments in your experiments and launches to narrow the user sessions used +// for experiment or launch to only the user sessions that match one or more +// criteria. +type Segment struct { + _ struct{} `type:"structure"` + + // The ARN of the segment. + // + // Arn is a required field + Arn *string `locationName:"arn" type:"string" required:"true"` + + // The date and time that this segment was created. + // + // CreatedTime is a required field + CreatedTime *time.Time `locationName:"createdTime" type:"timestamp" required:"true"` + + // The customer-created description for this segment. + Description *string `locationName:"description" type:"string"` + + // The number of experiments that this segment is used in. This count includes + // all current experiments, not just those that are currently running. + ExperimentCount *int64 `locationName:"experimentCount" type:"long"` + + // The date and time that this segment was most recently updated. + // + // LastUpdatedTime is a required field + LastUpdatedTime *time.Time `locationName:"lastUpdatedTime" type:"timestamp" required:"true"` + + // The number of launches that this segment is used in. This count includes + // all current launches, not just those that are currently running. + LaunchCount *int64 `locationName:"launchCount" type:"long"` + + // The name of the segment. + // + // Name is a required field + Name *string `locationName:"name" min:"1" type:"string" required:"true"` + + // Pattern is a required field + Pattern *string `locationName:"pattern" min:"1" type:"string" required:"true"` + + // The list of tag keys and values associated with this launch. + Tags map[string]*string `locationName:"tags" type:"map"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s Segment) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s Segment) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *Segment) SetArn(v string) *Segment { + s.Arn = &v + return s +} + +// SetCreatedTime sets the CreatedTime field's value. +func (s *Segment) SetCreatedTime(v time.Time) *Segment { + s.CreatedTime = &v + return s +} + +// SetDescription sets the Description field's value. +func (s *Segment) SetDescription(v string) *Segment { + s.Description = &v + return s +} + +// SetExperimentCount sets the ExperimentCount field's value. +func (s *Segment) SetExperimentCount(v int64) *Segment { + s.ExperimentCount = &v + return s +} + +// SetLastUpdatedTime sets the LastUpdatedTime field's value. +func (s *Segment) SetLastUpdatedTime(v time.Time) *Segment { + s.LastUpdatedTime = &v + return s +} + +// SetLaunchCount sets the LaunchCount field's value. +func (s *Segment) SetLaunchCount(v int64) *Segment { + s.LaunchCount = &v + return s +} + +// SetName sets the Name field's value. +func (s *Segment) SetName(v string) *Segment { + s.Name = &v + return s +} + +// SetPattern sets the Pattern field's value. +func (s *Segment) SetPattern(v string) *Segment { + s.Pattern = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *Segment) SetTags(v map[string]*string) *Segment { + s.Tags = v + return s +} + +// This structure specifies a segment that you have already created, and defines +// the traffic split for that segment to be used in a launch. +type SegmentOverride struct { + _ struct{} `type:"structure"` + + // A number indicating the order to use to evaluate segment overrides, if there + // are more than one. Segment overrides with lower numbers are evaluated first. + // + // EvaluationOrder is a required field + EvaluationOrder *int64 `locationName:"evaluationOrder" type:"long" required:"true"` + + // The ARN of the segment to use. + // + // Segment is a required field + Segment *string `locationName:"segment" type:"string" required:"true"` + + // The traffic allocation percentages among the feature variations to assign + // to this segment. This is a set of key-value pairs. The keys are variation + // names. The values represent the amount of traffic to allocate to that variation + // for this segment. This is expressed in thousandths of a percent, so a weight + // of 50000 represents 50% of traffic. + // + // Weights is a required field + Weights map[string]*int64 `locationName:"weights" type:"map" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s SegmentOverride) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s SegmentOverride) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SegmentOverride) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SegmentOverride"} + if s.EvaluationOrder == nil { + invalidParams.Add(request.NewErrParamRequired("EvaluationOrder")) + } + if s.Segment == nil { + invalidParams.Add(request.NewErrParamRequired("Segment")) + } + if s.Weights == nil { + invalidParams.Add(request.NewErrParamRequired("Weights")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetEvaluationOrder sets the EvaluationOrder field's value. +func (s *SegmentOverride) SetEvaluationOrder(v int64) *SegmentOverride { + s.EvaluationOrder = &v + return s +} + +// SetSegment sets the Segment field's value. +func (s *SegmentOverride) SetSegment(v string) *SegmentOverride { + s.Segment = &v + return s +} + +// SetWeights sets the Weights field's value. +func (s *SegmentOverride) SetWeights(v map[string]*int64) *SegmentOverride { + s.Weights = v + return s +} + // The request would cause a service quota to be exceeded. type ServiceQuotaExceededException struct { _ struct{} `type:"structure"` @@ -9541,6 +11105,102 @@ func (s TagResourceOutput) GoString() string { return s.String() } +type TestSegmentPatternInput struct { + _ struct{} `type:"structure"` + + // The pattern to test. + // + // Pattern is a required field + Pattern *string `locationName:"pattern" min:"1" type:"string" required:"true"` + + // A sample evaluationContext JSON block to test against the specified pattern. + // + // Payload is a required field + Payload *string `locationName:"payload" type:"string" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TestSegmentPatternInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TestSegmentPatternInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TestSegmentPatternInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TestSegmentPatternInput"} + if s.Pattern == nil { + invalidParams.Add(request.NewErrParamRequired("Pattern")) + } + if s.Pattern != nil && len(*s.Pattern) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Pattern", 1)) + } + if s.Payload == nil { + invalidParams.Add(request.NewErrParamRequired("Payload")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPattern sets the Pattern field's value. +func (s *TestSegmentPatternInput) SetPattern(v string) *TestSegmentPatternInput { + s.Pattern = &v + return s +} + +// SetPayload sets the Payload field's value. +func (s *TestSegmentPatternInput) SetPayload(v string) *TestSegmentPatternInput { + s.Payload = &v + return s +} + +type TestSegmentPatternOutput struct { + _ struct{} `type:"structure"` + + // Returns true if the pattern matches the payload. + // + // Match is a required field + Match *bool `locationName:"match" type:"boolean" required:"true"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TestSegmentPatternOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s TestSegmentPatternOutput) GoString() string { + return s.String() +} + +// SetMatch sets the Match field's value. +func (s *TestSegmentPatternOutput) SetMatch(v bool) *TestSegmentPatternOutput { + s.Match = &v + return s +} + // The request was denied because of request throttling. Retry the request. type ThrottlingException struct { _ struct{} `type:"structure"` @@ -9878,6 +11538,10 @@ type UpdateExperimentInput struct { // randomizationSalt. RandomizationSalt *string `locationName:"randomizationSalt" type:"string"` + // Removes a segment from being used in an experiment. You can't use this parameter + // if the experiment is currently running. + RemoveSegment *bool `locationName:"removeSegment" type:"boolean"` + // The portion of the available audience that you want to allocate to this experiment, // in thousandths of a percent. The available audience is the total audience // minus the audience that you have allocated to overrides or current launches @@ -9887,6 +11551,11 @@ type UpdateExperimentInput struct { // to allocate 20% of the available audience. SamplingRate *int64 `locationName:"samplingRate" type:"long"` + // Adds an audience segment to an experiment. When a segment is used in an experiment, + // only user sessions that match the segment pattern are used in the experiment. + // You can't use this parameter if the experiment is currently running. + Segment *string `locationName:"segment" type:"string"` + // An array of structures that define the variations being tested in the experiment. Treatments []*TreatmentConfig `locationName:"treatments" type:"list"` } @@ -9995,12 +11664,24 @@ func (s *UpdateExperimentInput) SetRandomizationSalt(v string) *UpdateExperiment return s } +// SetRemoveSegment sets the RemoveSegment field's value. +func (s *UpdateExperimentInput) SetRemoveSegment(v bool) *UpdateExperimentInput { + s.RemoveSegment = &v + return s +} + // SetSamplingRate sets the SamplingRate field's value. func (s *UpdateExperimentInput) SetSamplingRate(v int64) *UpdateExperimentInput { s.SamplingRate = &v return s } +// SetSegment sets the Segment field's value. +func (s *UpdateExperimentInput) SetSegment(v string) *UpdateExperimentInput { + s.Segment = &v + return s +} + // SetTreatments sets the Treatments field's value. func (s *UpdateExperimentInput) SetTreatments(v []*TreatmentConfig) *UpdateExperimentInput { s.Treatments = v @@ -11180,6 +12861,22 @@ func ProjectStatus_Values() []string { } } +const ( + // SegmentReferenceResourceTypeExperiment is a SegmentReferenceResourceType enum value + SegmentReferenceResourceTypeExperiment = "EXPERIMENT" + + // SegmentReferenceResourceTypeLaunch is a SegmentReferenceResourceType enum value + SegmentReferenceResourceTypeLaunch = "LAUNCH" +) + +// SegmentReferenceResourceType_Values returns all elements of the SegmentReferenceResourceType enum +func SegmentReferenceResourceType_Values() []string { + return []string{ + SegmentReferenceResourceTypeExperiment, + SegmentReferenceResourceTypeLaunch, + } +} + const ( // ValidationExceptionReasonUnknownOperation is a ValidationExceptionReason enum value ValidationExceptionReasonUnknownOperation = "unknownOperation" diff --git a/service/cloudwatchevidently/cloudwatchevidentlyiface/interface.go b/service/cloudwatchevidently/cloudwatchevidentlyiface/interface.go index 4c9a25ee041..0d1fd52ab27 100644 --- a/service/cloudwatchevidently/cloudwatchevidentlyiface/interface.go +++ b/service/cloudwatchevidently/cloudwatchevidentlyiface/interface.go @@ -80,6 +80,10 @@ type CloudWatchEvidentlyAPI interface { CreateProjectWithContext(aws.Context, *cloudwatchevidently.CreateProjectInput, ...request.Option) (*cloudwatchevidently.CreateProjectOutput, error) CreateProjectRequest(*cloudwatchevidently.CreateProjectInput) (*request.Request, *cloudwatchevidently.CreateProjectOutput) + CreateSegment(*cloudwatchevidently.CreateSegmentInput) (*cloudwatchevidently.CreateSegmentOutput, error) + CreateSegmentWithContext(aws.Context, *cloudwatchevidently.CreateSegmentInput, ...request.Option) (*cloudwatchevidently.CreateSegmentOutput, error) + CreateSegmentRequest(*cloudwatchevidently.CreateSegmentInput) (*request.Request, *cloudwatchevidently.CreateSegmentOutput) + DeleteExperiment(*cloudwatchevidently.DeleteExperimentInput) (*cloudwatchevidently.DeleteExperimentOutput, error) DeleteExperimentWithContext(aws.Context, *cloudwatchevidently.DeleteExperimentInput, ...request.Option) (*cloudwatchevidently.DeleteExperimentOutput, error) DeleteExperimentRequest(*cloudwatchevidently.DeleteExperimentInput) (*request.Request, *cloudwatchevidently.DeleteExperimentOutput) @@ -96,6 +100,10 @@ type CloudWatchEvidentlyAPI interface { DeleteProjectWithContext(aws.Context, *cloudwatchevidently.DeleteProjectInput, ...request.Option) (*cloudwatchevidently.DeleteProjectOutput, error) DeleteProjectRequest(*cloudwatchevidently.DeleteProjectInput) (*request.Request, *cloudwatchevidently.DeleteProjectOutput) + DeleteSegment(*cloudwatchevidently.DeleteSegmentInput) (*cloudwatchevidently.DeleteSegmentOutput, error) + DeleteSegmentWithContext(aws.Context, *cloudwatchevidently.DeleteSegmentInput, ...request.Option) (*cloudwatchevidently.DeleteSegmentOutput, error) + DeleteSegmentRequest(*cloudwatchevidently.DeleteSegmentInput) (*request.Request, *cloudwatchevidently.DeleteSegmentOutput) + EvaluateFeature(*cloudwatchevidently.EvaluateFeatureInput) (*cloudwatchevidently.EvaluateFeatureOutput, error) EvaluateFeatureWithContext(aws.Context, *cloudwatchevidently.EvaluateFeatureInput, ...request.Option) (*cloudwatchevidently.EvaluateFeatureOutput, error) EvaluateFeatureRequest(*cloudwatchevidently.EvaluateFeatureInput) (*request.Request, *cloudwatchevidently.EvaluateFeatureOutput) @@ -120,6 +128,10 @@ type CloudWatchEvidentlyAPI interface { GetProjectWithContext(aws.Context, *cloudwatchevidently.GetProjectInput, ...request.Option) (*cloudwatchevidently.GetProjectOutput, error) GetProjectRequest(*cloudwatchevidently.GetProjectInput) (*request.Request, *cloudwatchevidently.GetProjectOutput) + GetSegment(*cloudwatchevidently.GetSegmentInput) (*cloudwatchevidently.GetSegmentOutput, error) + GetSegmentWithContext(aws.Context, *cloudwatchevidently.GetSegmentInput, ...request.Option) (*cloudwatchevidently.GetSegmentOutput, error) + GetSegmentRequest(*cloudwatchevidently.GetSegmentInput) (*request.Request, *cloudwatchevidently.GetSegmentOutput) + ListExperiments(*cloudwatchevidently.ListExperimentsInput) (*cloudwatchevidently.ListExperimentsOutput, error) ListExperimentsWithContext(aws.Context, *cloudwatchevidently.ListExperimentsInput, ...request.Option) (*cloudwatchevidently.ListExperimentsOutput, error) ListExperimentsRequest(*cloudwatchevidently.ListExperimentsInput) (*request.Request, *cloudwatchevidently.ListExperimentsOutput) @@ -148,6 +160,20 @@ type CloudWatchEvidentlyAPI interface { ListProjectsPages(*cloudwatchevidently.ListProjectsInput, func(*cloudwatchevidently.ListProjectsOutput, bool) bool) error ListProjectsPagesWithContext(aws.Context, *cloudwatchevidently.ListProjectsInput, func(*cloudwatchevidently.ListProjectsOutput, bool) bool, ...request.Option) error + ListSegmentReferences(*cloudwatchevidently.ListSegmentReferencesInput) (*cloudwatchevidently.ListSegmentReferencesOutput, error) + ListSegmentReferencesWithContext(aws.Context, *cloudwatchevidently.ListSegmentReferencesInput, ...request.Option) (*cloudwatchevidently.ListSegmentReferencesOutput, error) + ListSegmentReferencesRequest(*cloudwatchevidently.ListSegmentReferencesInput) (*request.Request, *cloudwatchevidently.ListSegmentReferencesOutput) + + ListSegmentReferencesPages(*cloudwatchevidently.ListSegmentReferencesInput, func(*cloudwatchevidently.ListSegmentReferencesOutput, bool) bool) error + ListSegmentReferencesPagesWithContext(aws.Context, *cloudwatchevidently.ListSegmentReferencesInput, func(*cloudwatchevidently.ListSegmentReferencesOutput, bool) bool, ...request.Option) error + + ListSegments(*cloudwatchevidently.ListSegmentsInput) (*cloudwatchevidently.ListSegmentsOutput, error) + ListSegmentsWithContext(aws.Context, *cloudwatchevidently.ListSegmentsInput, ...request.Option) (*cloudwatchevidently.ListSegmentsOutput, error) + ListSegmentsRequest(*cloudwatchevidently.ListSegmentsInput) (*request.Request, *cloudwatchevidently.ListSegmentsOutput) + + ListSegmentsPages(*cloudwatchevidently.ListSegmentsInput, func(*cloudwatchevidently.ListSegmentsOutput, bool) bool) error + ListSegmentsPagesWithContext(aws.Context, *cloudwatchevidently.ListSegmentsInput, func(*cloudwatchevidently.ListSegmentsOutput, bool) bool, ...request.Option) error + ListTagsForResource(*cloudwatchevidently.ListTagsForResourceInput) (*cloudwatchevidently.ListTagsForResourceOutput, error) ListTagsForResourceWithContext(aws.Context, *cloudwatchevidently.ListTagsForResourceInput, ...request.Option) (*cloudwatchevidently.ListTagsForResourceOutput, error) ListTagsForResourceRequest(*cloudwatchevidently.ListTagsForResourceInput) (*request.Request, *cloudwatchevidently.ListTagsForResourceOutput) @@ -176,6 +202,10 @@ type CloudWatchEvidentlyAPI interface { TagResourceWithContext(aws.Context, *cloudwatchevidently.TagResourceInput, ...request.Option) (*cloudwatchevidently.TagResourceOutput, error) TagResourceRequest(*cloudwatchevidently.TagResourceInput) (*request.Request, *cloudwatchevidently.TagResourceOutput) + TestSegmentPattern(*cloudwatchevidently.TestSegmentPatternInput) (*cloudwatchevidently.TestSegmentPatternOutput, error) + TestSegmentPatternWithContext(aws.Context, *cloudwatchevidently.TestSegmentPatternInput, ...request.Option) (*cloudwatchevidently.TestSegmentPatternOutput, error) + TestSegmentPatternRequest(*cloudwatchevidently.TestSegmentPatternInput) (*request.Request, *cloudwatchevidently.TestSegmentPatternOutput) + UntagResource(*cloudwatchevidently.UntagResourceInput) (*cloudwatchevidently.UntagResourceOutput, error) UntagResourceWithContext(aws.Context, *cloudwatchevidently.UntagResourceInput, ...request.Option) (*cloudwatchevidently.UntagResourceOutput, error) UntagResourceRequest(*cloudwatchevidently.UntagResourceInput) (*request.Request, *cloudwatchevidently.UntagResourceOutput) diff --git a/service/datasync/api.go b/service/datasync/api.go index 81bcbc56975..b3c39d8f7f6 100644 --- a/service/datasync/api.go +++ b/service/datasync/api.go @@ -1079,26 +1079,21 @@ func (c *DataSync) CreateTaskRequest(input *CreateTaskInput) (req *request.Reque // CreateTask API operation for AWS DataSync. // -// Creates a task. +// Configures a task, which defines where and how DataSync transfers your data. // -// A task includes a source location and a destination location, and a configuration -// that specifies how data is transferred. A task always transfers data from -// the source location to the destination location. The configuration specifies -// options such as task scheduling, bandwidth limits, etc. A task is the complete -// definition of a data transfer. +// A task includes a source location, a destination location, and the preferences +// for how and when you want to transfer your data (such as bandwidth limits, +// scheduling, among other options). // // When you create a task that transfers data between Amazon Web Services services -// in different Amazon Web Services Regions, one of the two locations that you -// specify must reside in the Region where DataSync is being used. The other -// location must be specified in a different Region. +// in different Amazon Web Services Regions, one of your locations must reside +// in the Region where you're using DataSync. // -// You can transfer data between commercial Amazon Web Services Regions except -// for China, or between Amazon Web Services GovCloud (US) Regions. +// For more information, see the following topics: // -// When you use DataSync to copy files or objects between Amazon Web Services -// Regions, you pay for data transfer between Regions. This is billed as data -// transfer OUT from your source Region to your destination Region. For more -// information, see Data Transfer pricing (http://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer). +// * Working with DataSync locations (https://docs.aws.amazon.com/datasync/latest/userguide/working-with-locations.html) +// +// * Configure DataSync task settings (https://docs.aws.amazon.com/datasync/latest/userguide/create-task.html) // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -3087,7 +3082,7 @@ func (c *DataSync) ListTasksRequest(input *ListTasksInput) (req *request.Request // ListTasks API operation for AWS DataSync. // -// Returns a list of all the tasks. +// Returns a list of the DataSync tasks you created. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -4628,16 +4623,18 @@ type CreateLocationFsxOntapInput struct { // Protocol is a required field Protocol *FsxProtocol `type:"structure" required:"true"` - // Specifies the security groups that DataSync can use to access your FSx for - // ONTAP file system. You must configure the security groups to allow outbound - // traffic on the following ports (depending on the protocol that you're using): + // Specifies the Amazon EC2 security groups that provide access to your file + // system's preferred subnet. + // + // The security groups must allow outbound traffic on the following ports (depending + // on the protocol you use): // - // * Network File System (NFS): TCP port 2049 + // * Network File System (NFS): TCP ports 111, 635, and 2049 // // * Server Message Block (SMB): TCP port 445 // // Your file system's security groups must also allow inbound traffic on the - // same port. + // same ports. // // SecurityGroupArns is a required field SecurityGroupArns []*string `min:"1" type:"list" required:"true"` @@ -4928,17 +4925,18 @@ func (s *CreateLocationFsxOpenZfsOutput) SetLocationArn(v string) *CreateLocatio type CreateLocationFsxWindowsInput struct { _ struct{} `type:"structure"` - // The name of the Windows domain that the FSx for Windows File Server belongs - // to. + // Specifies the name of the Windows domain that the FSx for Windows File Server + // belongs to. Domain *string `type:"string"` - // The Amazon Resource Name (ARN) for the FSx for Windows File Server file system. + // Specifies the Amazon Resource Name (ARN) for the FSx for Windows File Server + // file system. // // FsxFilesystemArn is a required field FsxFilesystemArn *string `type:"string" required:"true"` - // The password of the user who has the permissions to access files and folders - // in the FSx for Windows File Server file system. + // Specifies the password of the user who has the permissions to access files + // and folders in the file system. // // Password is a sensitive parameter and its value will be // replaced with "sensitive" in string returned by CreateLocationFsxWindowsInput's @@ -4947,26 +4945,32 @@ type CreateLocationFsxWindowsInput struct { // Password is a required field Password *string `type:"string" required:"true" sensitive:"true"` - // The ARNs of the security groups that are used to configure the FSx for Windows - // File Server file system. + // Specifies the ARNs of the security groups that provide access to your file + // system's preferred subnet. + // + // If you choose a security group that doesn't allow connections from within + // itself, do one of the following: + // + // * Configure the security group to allow it to communicate within itself. + // + // * Choose a different security group that can communicate with the mount + // target's security group. // // SecurityGroupArns is a required field SecurityGroupArns []*string `min:"1" type:"list" required:"true"` - // A subdirectory in the location's path. This subdirectory in the Amazon FSx - // for Windows File Server file system is used to read data from the Amazon - // FSx for Windows File Server source location or write data to the FSx for - // Windows File Server destination. + // Specifies a mount path for your file system using forward slashes. This is + // where DataSync reads or writes data (depending on if this is a source or + // destination location). Subdirectory *string `type:"string"` - // The key-value pair that represents a tag that you want to add to the resource. - // The value can be an empty string. This value helps you manage, filter, and - // search for your resources. We recommend that you create a name tag for your + // Specifies labels that help you categorize, filter, and search for your Amazon + // Web Services resources. We recommend creating at least a name tag for your // location. Tags []*TagListEntry `type:"list"` - // The user who has the permissions to access files and folders in the FSx for - // Windows File Server file system. + // Specifies the user who has the permissions to access files and folders in + // the file system. // // For information about choosing a user name that ensures sufficient permissions // to files, folders, and metadata, see user (create-fsx-location.html#FSxWuser). @@ -5073,8 +5077,7 @@ func (s *CreateLocationFsxWindowsInput) SetUser(v string) *CreateLocationFsxWind type CreateLocationFsxWindowsOutput struct { _ struct{} `type:"structure"` - // The Amazon Resource Name (ARN) of the FSx for Windows File Server file system - // location you created. + // The ARN of the FSx for Windows File Server file system location you created. LocationArn *string `type:"string"` } @@ -8686,7 +8689,31 @@ type FsxProtocolSmb struct { // Password is a required field Password *string `type:"string" required:"true" sensitive:"true"` - // Specifies a user who has permission to access your SVM. + // Specifies a user name that can mount the location and access the files, folders, + // and metadata that you need in the SVM. + // + // If you provide a user in your Active Directory, note the following: + // + // * If you're using Directory Service for Microsoft Active Directory, the + // user must be a member of the Amazon Web Services Delegated FSx Administrators + // group. + // + // * If you're using a self-managed Active Directory, the user must be a + // member of either the Domain Admins group or a custom group that you specified + // for file system administration when you created your file system. + // + // Make sure that the user has the permissions it needs to copy the data you + // want: + // + // * SE_TCB_NAME: Required to set object ownership and file metadata. With + // this privilege, you also can copy NTFS discretionary access lists (DACLs). + // + // * SE_SECURITY_NAME: May be needed to copy NTFS system access control lists + // (SACLs). This operation specifically requires the Windows privilege, which + // is granted to members of the Domain Admins group. If you configure your + // task to copy SACLs, make sure that the user has the required privileges. + // For information about copying SACLs, see Ownership and permissions-related + // options (https://docs.aws.amazon.com/datasync/latest/userguide/create-task.html#configure-ownership-and-permissions). // // User is a required field User *string `type:"string" required:"true"` @@ -9472,9 +9499,11 @@ func (s *ListTasksOutput) SetTasks(v []*TaskListEntry) *ListTasksOutput { return s } -// You can use API filters to narrow down the list of resources returned by -// ListLocations. For example, to retrieve all your Amazon S3 locations, you -// can use ListLocations with filter name LocationType S3 and Operator Equals. +// Narrow down the list of resources returned by ListLocations. For example, +// to see all your Amazon S3 locations, create a filter using "Name": "LocationType", +// "Operator": "Equals", and "Values": "S3". +// +// For more information, see filtering resources (https://docs.aws.amazon.com/datasync/latest/userguide/query-resources.html). type LocationFilter struct { _ struct{} `type:"structure"` @@ -9485,8 +9514,7 @@ type LocationFilter struct { Name *string `type:"string" required:"true" enum:"LocationFilterName"` // The operator that is used to compare filter values (for example, Equals or - // Contains). For more about API filtering operators, see API filters for ListTasks - // and ListLocations (https://docs.aws.amazon.com/datasync/latest/userguide/query-resources.html). + // Contains). // // Operator is a required field Operator *string `type:"string" required:"true" enum:"Operator"` @@ -10702,6 +10730,8 @@ func (s *TaskExecutionResultDetail) SetVerifyStatus(v string) *TaskExecutionResu // ListTasks. For example, to retrieve all tasks on a source location, you can // use ListTasks with filter name LocationId and Operator Equals with the ARN // for the location. +// +// For more information, see filtering DataSync resources (https://docs.aws.amazon.com/datasync/latest/userguide/query-resources.html). type TaskFilter struct { _ struct{} `type:"structure"` @@ -10712,8 +10742,7 @@ type TaskFilter struct { Name *string `type:"string" required:"true" enum:"TaskFilterName"` // The operator that is used to compare filter values (for example, Equals or - // Contains). For more about API filtering operators, see API filters for ListTasks - // and ListLocations (https://docs.aws.amazon.com/datasync/latest/userguide/query-resources.html). + // Contains). // // Operator is a required field Operator *string `type:"string" required:"true" enum:"Operator"` diff --git a/service/drs/api.go b/service/drs/api.go index 1f078fefc51..4af8b171565 100644 --- a/service/drs/api.go +++ b/service/drs/api.go @@ -4647,7 +4647,7 @@ func (s DeleteJobOutput) GoString() string { type DeleteRecoveryInstanceInput struct { _ struct{} `type:"structure"` - // RThe ID of the Recovery Instance to be deleted. + // The ID of the Recovery Instance to be deleted. // // RecoveryInstanceID is a required field RecoveryInstanceID *string `locationName:"recoveryInstanceID" min:"10" type:"string" required:"true"` @@ -8321,6 +8321,10 @@ type ReplicationConfigurationReplicatedDisk struct { // Whether to boot from this disk or not. IsBootDisk *bool `locationName:"isBootDisk" type:"boolean"` + // The Staging Disk EBS volume type to be used during replication when stagingDiskType + // is set to Auto. This is a read-only field. + OptimizedStagingDiskType *string `locationName:"optimizedStagingDiskType" type:"string" enum:"ReplicationConfigurationReplicatedDiskStagingDiskType"` + // The Staging Disk EBS volume type to be used during replication. StagingDiskType *string `locationName:"stagingDiskType" type:"string" enum:"ReplicationConfigurationReplicatedDiskStagingDiskType"` @@ -8365,6 +8369,12 @@ func (s *ReplicationConfigurationReplicatedDisk) SetIsBootDisk(v bool) *Replicat return s } +// SetOptimizedStagingDiskType sets the OptimizedStagingDiskType field's value. +func (s *ReplicationConfigurationReplicatedDisk) SetOptimizedStagingDiskType(v string) *ReplicationConfigurationReplicatedDisk { + s.OptimizedStagingDiskType = &v + return s +} + // SetStagingDiskType sets the StagingDiskType field's value. func (s *ReplicationConfigurationReplicatedDisk) SetStagingDiskType(v string) *ReplicationConfigurationReplicatedDisk { s.StagingDiskType = &v @@ -11830,6 +11840,9 @@ const ( // ReplicationConfigurationDefaultLargeStagingDiskTypeSt1 is a ReplicationConfigurationDefaultLargeStagingDiskType enum value ReplicationConfigurationDefaultLargeStagingDiskTypeSt1 = "ST1" + + // ReplicationConfigurationDefaultLargeStagingDiskTypeAuto is a ReplicationConfigurationDefaultLargeStagingDiskType enum value + ReplicationConfigurationDefaultLargeStagingDiskTypeAuto = "AUTO" ) // ReplicationConfigurationDefaultLargeStagingDiskType_Values returns all elements of the ReplicationConfigurationDefaultLargeStagingDiskType enum @@ -11838,6 +11851,7 @@ func ReplicationConfigurationDefaultLargeStagingDiskType_Values() []string { ReplicationConfigurationDefaultLargeStagingDiskTypeGp2, ReplicationConfigurationDefaultLargeStagingDiskTypeGp3, ReplicationConfigurationDefaultLargeStagingDiskTypeSt1, + ReplicationConfigurationDefaultLargeStagingDiskTypeAuto, } } diff --git a/service/wafv2/api.go b/service/wafv2/api.go index 682f1b50811..5e7dc02d0e1 100644 --- a/service/wafv2/api.go +++ b/service/wafv2/api.go @@ -368,7 +368,7 @@ func (c *WAFV2) CreateIPSetRequest(input *CreateIPSetInput) (req *request.Reques // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -489,7 +489,7 @@ func (c *WAFV2) CreateRegexPatternSetRequest(input *CreateRegexPatternSetInput) // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -620,7 +620,7 @@ func (c *WAFV2) CreateRuleGroupRequest(input *CreateRuleGroupInput) (req *reques // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFSubscriptionNotFoundException // You tried to use a managed rule group that's available by subscription, but @@ -769,7 +769,7 @@ func (c *WAFV2) CreateWebACLRequest(input *CreateWebACLInput) (req *request.Requ // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFSubscriptionNotFoundException // You tried to use a managed rule group that's available by subscription, but @@ -1019,7 +1019,7 @@ func (c *WAFV2) DeleteIPSetRequest(input *DeleteIPSetInput) (req *request.Reques // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -1349,7 +1349,7 @@ func (c *WAFV2) DeleteRegexPatternSetRequest(input *DeleteRegexPatternSetInput) // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -1471,7 +1471,7 @@ func (c *WAFV2) DeleteRuleGroupRequest(input *DeleteRuleGroupInput) (req *reques // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -1608,7 +1608,7 @@ func (c *WAFV2) DeleteWebACLRequest(input *DeleteWebACLInput) (req *request.Requ // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -4115,7 +4115,7 @@ func (c *WAFV2) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -4752,7 +4752,7 @@ func (c *WAFV2) TagResourceRequest(input *TagResourceInput) (req *request.Reques // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -4865,7 +4865,7 @@ func (c *WAFV2) UntagResourceRequest(input *UntagResourceInput) (req *request.Re // // * WAFTagOperationInternalErrorException // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. // // * WAFInvalidOperationException // The operation isn't valid. @@ -5072,7 +5072,7 @@ func (c *WAFV2) UpdateManagedRuleSetVersionExpiryDateRequest(input *UpdateManage // // Updates the expiration information for your managed rule set. Use this to // initiate the expiration of a managed rule group version. After you initiate -// expiration for a version, WAF excludes it from the reponse to ListAvailableManagedRuleGroupVersions +// expiration for a version, WAF excludes it from the response to ListAvailableManagedRuleGroupVersions // for the managed rule group. // // This is intended for use only by vendors of managed rule sets. Vendors are @@ -5486,7 +5486,7 @@ func (c *WAFV2) UpdateWebACLRequest(input *UpdateWebACLInput) (req *request.Requ // UpdateWebACL API operation for AWS WAFV2. // -// Updates the specified WebACL. While updating a web ACL, WAF provides continous +// Updates the specified WebACL. While updating a web ACL, WAF provides continuous // coverage to the resources that you have associated with the web ACL. // // When you make changes to web ACLs or web ACL components, like rules and rule @@ -5983,8 +5983,8 @@ func (s *BlockAction) SetCustomResponse(v *CustomResponse) *BlockAction { // Inspect the body of the web request. The body immediately follows the request // headers. // -// This is used to indicate the web request component for WAF to inspect, in -// the FieldToMatch specification. +// This is used to indicate the web request component to inspect, in the FieldToMatch +// specification. type Body struct { _ struct{} `type:"structure"` @@ -6039,13 +6039,12 @@ func (s *Body) SetOversizeHandling(v string) *Body { // requests. The byte match statement provides the bytes to search for, the // location in requests that you want WAF to search, and other settings. The // bytes to search for are typically a string that corresponds with ASCII characters. -// In the WAF console and the developer guide, this is refered to as a string -// match statement. +// In the WAF console and the developer guide, this is called a string match +// statement. type ByteMatchStatement struct { _ struct{} `type:"structure"` - // The part of the web request that you want WAF to inspect. For more information, - // see FieldToMatch. + // The part of the web request that you want WAF to inspect. // // FieldToMatch is a required field FieldToMatch *FieldToMatch `type:"structure" required:"true"` @@ -6236,9 +6235,6 @@ func (s *ByteMatchStatement) SetTextTransformations(v []*TextTransformation) *By // // This action option is available for rules. It isn't available for web ACL // default actions. -// -// This is used in the context of other settings, for example to specify values -// for RuleAction and web ACL DefaultAction. type CaptchaAction struct { _ struct{} `type:"structure"` @@ -6505,10 +6501,14 @@ func (s *CheckCapacityOutput) SetCapacity(v int64) *CheckCapacityOutput { type Condition struct { _ struct{} `type:"structure"` - // A single action condition. + // A single action condition. This is the action setting that a log record must + // contain in order to meet the condition. ActionCondition *ActionCondition `type:"structure"` - // A single label name condition. + // A single label name condition. This is the fully qualified label name that + // a log record must contain in order to meet the condition. Fully qualified + // labels have a prefix, optional namespaces, and label name. The prefix identifies + // the rule group or web ACL context of the rule that added the label. LabelNameCondition *LabelNameCondition `type:"structure"` } @@ -6566,8 +6566,8 @@ func (s *Condition) SetLabelNameCondition(v *LabelNameCondition) *Condition { // // You must specify exactly one setting: either All, IncludedCookies, or ExcludedCookies. // -// Example JSON: "CookieMatchPattern": { "IncludedCookies": {"KeyToInclude1", -// "KeyToInclude2", "KeyToInclude3"} } +// Example JSON: "MatchPattern": { "IncludedCookies": {"KeyToInclude1", "KeyToInclude2", +// "KeyToInclude3"} } type CookieMatchPattern struct { _ struct{} `type:"structure"` @@ -6639,8 +6639,8 @@ func (s *CookieMatchPattern) SetIncludedCookies(v []*string) *CookieMatchPattern // cookies to inspect and you can narrow the set of cookies to inspect by including // or excluding specific keys. // -// This is used to indicate the web request component for WAF to inspect, in -// the FieldToMatch specification. +// This is used to indicate the web request component to inspect, in the FieldToMatch +// specification. // // Example JSON: "Cookies": { "MatchPattern": { "All": {} }, "MatchScope": "KEY", // "OversizeHandling": "MATCH" } @@ -6651,8 +6651,8 @@ type Cookies struct { // // You must specify exactly one setting: either All, IncludedCookies, or ExcludedCookies. // - // Example JSON: "CookieMatchPattern": { "IncludedCookies": {"KeyToInclude1", - // "KeyToInclude2", "KeyToInclude3"} } + // Example JSON: "MatchPattern": { "IncludedCookies": {"KeyToInclude1", "KeyToInclude2", + // "KeyToInclude3"} } // // MatchPattern is a required field MatchPattern *CookieMatchPattern `type:"structure" required:"true"` @@ -7822,7 +7822,7 @@ type CustomResponse struct { // The HTTP status code to return to the client. // - // For a list of status codes that you can use in your custom reqponses, see + // For a list of status codes that you can use in your custom responses, see // Supported status codes for custom response (https://docs.aws.amazon.com/waf/latest/developerguide/customizing-the-response-status-codes.html) // in the WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html). // @@ -11445,8 +11445,8 @@ func (s *HTTPRequest) SetURI(v string) *HTTPRequest { // // You must specify exactly one setting: either All, IncludedHeaders, or ExcludedHeaders. // -// Example JSON: "HeaderMatchPattern": { "ExcludedHeaders": {"KeyToExclude1", -// "KeyToExclude2"} } +// Example JSON: "MatchPattern": { "ExcludedHeaders": {"KeyToExclude1", "KeyToExclude2"} +// } type HeaderMatchPattern struct { _ struct{} `type:"structure"` @@ -11514,15 +11514,15 @@ func (s *HeaderMatchPattern) SetIncludedHeaders(v []*string) *HeaderMatchPattern return s } -// Inspect the headers in the web request. You can specify the parts of the +// Inspect all headers in the web request. You can specify the parts of the // headers to inspect and you can narrow the set of headers to inspect by including // or excluding specific keys. // -// This is used to indicate the web request component for WAF to inspect, in -// the FieldToMatch specification. +// This is used to indicate the web request component to inspect, in the FieldToMatch +// specification. // -// Alternately, you can use the SingleHeader FieldToMatch setting to inspect -// the value of a single header, identified by its key. +// If you want to inspect just the value of a single header, use the SingleHeader +// FieldToMatch setting instead. // // Example JSON: "Headers": { "MatchPattern": { "All": {} }, "MatchScope": "KEY", // "OversizeHandling": "MATCH" } @@ -11533,8 +11533,8 @@ type Headers struct { // // You must specify exactly one setting: either All, IncludedHeaders, or ExcludedHeaders. // - // Example JSON: "HeaderMatchPattern": { "ExcludedHeaders": {"KeyToExclude1", - // "KeyToExclude2"} } + // Example JSON: "MatchPattern": { "ExcludedHeaders": {"KeyToExclude1", "KeyToExclude2"} + // } // // MatchPattern is a required field MatchPattern *HeaderMatchPattern `type:"structure" required:"true"` @@ -12081,8 +12081,8 @@ func (s *ImmunityTimeProperty) SetImmunityTime(v int64) *ImmunityTimeProperty { // Inspect the body of the web request as JSON. The body immediately follows // the request headers. // -// This is used to indicate the web request component for WAF to inspect, in -// the FieldToMatch specification. +// This is used to indicate the web request component to inspect, in the FieldToMatch +// specification. // // Use the specifications in this object to indicate which parts of the JSON // body to inspect using the rule's inspection criteria. WAF inspects only the @@ -15692,10 +15692,11 @@ func (s QueryString) GoString() string { // the string BadBot. // // In this rate-based rule, you also define a rate limit. For this example, -// the rate limit is 1,000. Requests that meet both of the conditions in the +// the rate limit is 1,000. Requests that meet the criteria of both of the nested // statements are counted. If the count exceeds 1,000 requests per five minutes, -// the rule action triggers. Requests that do not meet both conditions are not -// counted towards the rate limit and are not affected by this rule. +// the rule action triggers. Requests that do not meet the criteria of both +// of the nested statements are not counted towards the rate limit and are not +// affected by this rule. // // You cannot nest a RateBasedStatement inside another statement, for example // inside a NotStatement or OrStatement. You can define a RateBasedStatement @@ -15904,8 +15905,7 @@ func (s *Regex) SetRegexString(v string) *Regex { type RegexMatchStatement struct { _ struct{} `type:"structure"` - // The part of the web request that you want WAF to inspect. For more information, - // see FieldToMatch. + // The part of the web request that you want WAF to inspect. // // FieldToMatch is a required field FieldToMatch *FieldToMatch `type:"structure" required:"true"` @@ -16093,8 +16093,7 @@ type RegexPatternSetReferenceStatement struct { // ARN is a required field ARN *string `min:"20" type:"string" required:"true"` - // The part of the web request that you want WAF to inspect. For more information, - // see FieldToMatch. + // The part of the web request that you want WAF to inspect. // // FieldToMatch is a required field FieldToMatch *FieldToMatch `type:"structure" required:"true"` @@ -17125,8 +17124,8 @@ func (s *SampledHTTPRequest) SetWeight(v int64) *SampledHTTPRequest { // // You can filter and inspect all headers with the FieldToMatch setting Headers. // -// This is used to indicate the web request component for WAF to inspect, in -// the FieldToMatch specification. +// This is used to indicate the web request component to inspect, in the FieldToMatch +// specification. // // Example JSON: "SingleHeader": { "Name": "haystack" } type SingleHeader struct { @@ -17181,8 +17180,8 @@ func (s *SingleHeader) SetName(v string) *SingleHeader { // Inspect one query argument in the web request, identified by name, for example // UserName or SalesRegion. The name isn't case sensitive. // -// This is used to indicate the web request component for WAF to inspect, in -// the FieldToMatch specification. +// This is used to indicate the web request component to inspect, in the FieldToMatch +// specification. // // Example JSON: "SingleQueryArgument": { "Name": "myArgument" } type SingleQueryArgument struct { @@ -17241,8 +17240,8 @@ func (s *SingleQueryArgument) SetName(v string) *SingleQueryArgument { // // If you configure WAF to inspect the request body, WAF inspects only the first // 8192 bytes (8 KB). If the request body for your web requests never exceeds -// 8192 bytes, you can create a size constraint condition and block requests -// that have a request body greater than 8192 bytes. +// 8192 bytes, you could use a size constraint statement to block requests that +// have a request body greater than 8192 bytes. // // If you choose URI for the value of Part of the request to filter on, the // slash (/) in the URI counts as one character. For example, the URI /logo.jpg @@ -17255,8 +17254,7 @@ type SizeConstraintStatement struct { // ComparisonOperator is a required field ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"` - // The part of the web request that you want WAF to inspect. For more information, - // see FieldToMatch. + // The part of the web request that you want WAF to inspect. // // FieldToMatch is a required field FieldToMatch *FieldToMatch `type:"structure" required:"true"` @@ -17358,22 +17356,31 @@ func (s *SizeConstraintStatement) SetTextTransformations(v []*TextTransformation return s } -// Attackers sometimes insert malicious SQL code into web requests in an effort -// to extract data from your database. To allow or block web requests that appear -// to contain malicious SQL code, create one or more SQL injection match conditions. -// An SQL injection match condition identifies the part of web requests, such -// as the URI or the query string, that you want WAF to inspect. Later in the -// process, when you create a web ACL, you specify whether to allow or block -// requests that appear to contain malicious SQL code. +// A rule statement that inspects for malicious SQL code. Attackers insert malicious +// SQL code into web requests to do things like modify your database or extract +// data from it. type SqliMatchStatement struct { _ struct{} `type:"structure"` - // The part of the web request that you want WAF to inspect. For more information, - // see FieldToMatch. + // The part of the web request that you want WAF to inspect. // // FieldToMatch is a required field FieldToMatch *FieldToMatch `type:"structure" required:"true"` + // The sensitivity that you want WAF to use to inspect for SQL injection attacks. + // + // HIGH detects more attacks, but might generate more false positives, especially + // if your web requests frequently contain unusual strings. For information + // about identifying and mitigating false positives, see Testing and tuning + // (https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html) + // in the WAF Developer Guide. + // + // LOW is generally a better choice for resources that already have other protections + // against SQL injection attacks or that have a low tolerance for false positives. + // + // Default: LOW + SensitivityLevel *string `type:"string" enum:"SensitivityLevel"` + // Text transformations eliminate some of the unusual formatting that attackers // use in web requests in an effort to bypass detection. If you specify one // or more transformations in a rule statement, WAF performs all transformations @@ -17442,6 +17449,12 @@ func (s *SqliMatchStatement) SetFieldToMatch(v *FieldToMatch) *SqliMatchStatemen return s } +// SetSensitivityLevel sets the SensitivityLevel field's value. +func (s *SqliMatchStatement) SetSensitivityLevel(v string) *SqliMatchStatement { + s.SensitivityLevel = &v + return s +} + // SetTextTransformations sets the TextTransformations field's value. func (s *SqliMatchStatement) SetTextTransformations(v []*TextTransformation) *SqliMatchStatement { s.TextTransformations = v @@ -17461,8 +17474,8 @@ type Statement struct { // requests. The byte match statement provides the bytes to search for, the // location in requests that you want WAF to search, and other settings. The // bytes to search for are typically a string that corresponds with ASCII characters. - // In the WAF console and the developer guide, this is refered to as a string - // match statement. + // In the WAF console and the developer guide, this is called a string match + // statement. ByteMatchStatement *ByteMatchStatement `type:"structure"` // A rule statement used to identify web requests based on country of origin. @@ -17538,10 +17551,11 @@ type Statement struct { // the string BadBot. // // In this rate-based rule, you also define a rate limit. For this example, - // the rate limit is 1,000. Requests that meet both of the conditions in the + // the rate limit is 1,000. Requests that meet the criteria of both of the nested // statements are counted. If the count exceeds 1,000 requests per five minutes, - // the rule action triggers. Requests that do not meet both conditions are not - // counted towards the rate limit and are not affected by this rule. + // the rule action triggers. Requests that do not meet the criteria of both + // of the nested statements are not counted towards the rate limit and are not + // affected by this rule. // // You cannot nest a RateBasedStatement inside another statement, for example // inside a NotStatement or OrStatement. You can define a RateBasedStatement @@ -17581,30 +17595,22 @@ type Statement struct { // // If you configure WAF to inspect the request body, WAF inspects only the first // 8192 bytes (8 KB). If the request body for your web requests never exceeds - // 8192 bytes, you can create a size constraint condition and block requests - // that have a request body greater than 8192 bytes. + // 8192 bytes, you could use a size constraint statement to block requests that + // have a request body greater than 8192 bytes. // // If you choose URI for the value of Part of the request to filter on, the // slash (/) in the URI counts as one character. For example, the URI /logo.jpg // is nine characters long. SizeConstraintStatement *SizeConstraintStatement `type:"structure"` - // Attackers sometimes insert malicious SQL code into web requests in an effort - // to extract data from your database. To allow or block web requests that appear - // to contain malicious SQL code, create one or more SQL injection match conditions. - // An SQL injection match condition identifies the part of web requests, such - // as the URI or the query string, that you want WAF to inspect. Later in the - // process, when you create a web ACL, you specify whether to allow or block - // requests that appear to contain malicious SQL code. + // A rule statement that inspects for malicious SQL code. Attackers insert malicious + // SQL code into web requests to do things like modify your database or extract + // data from it. SqliMatchStatement *SqliMatchStatement `type:"structure"` - // A rule statement that defines a cross-site scripting (XSS) match search for - // WAF to apply to web requests. XSS attacks are those where the attacker uses - // vulnerabilities in a benign website as a vehicle to inject malicious client-site - // scripts into other legitimate web browsers. The XSS match statement provides - // the location in requests that you want WAF to search and text transformations - // to use on the search area before WAF searches for character sequences that - // are likely to be malicious strings. + // A rule statement that inspects for cross-site scripting (XSS) attacks. In + // XSS attacks, the attacker uses vulnerabilities in a benign website as a vehicle + // to inject malicious client-site scripts into other legitimate web browsers. XssMatchStatement *XssMatchStatement `type:"structure"` } @@ -19637,7 +19643,7 @@ type VisibilityConfig struct { // A name of the Amazon CloudWatch metric. The name can contain only the characters: // A-Z, a-z, 0-9, - (hyphen), and _ (underscore). The name can be from one to // 128 characters long. It can't contain whitespace or metric names reserved - // for WAF, for example "All" and "Default_Action." + // for WAF, for example All and Default_Action. // // MetricName is a required field MetricName *string `min:"1" type:"string" required:"true"` @@ -20807,7 +20813,7 @@ func (s *WAFTagOperationException) RequestID() string { } // WAF couldn’t perform your tagging operation because of an internal error. -// Retry ybjectNoteWebRequestComponentour request. +// Retry your request. type WAFTagOperationInternalErrorException struct { _ struct{} `type:"structure"` RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` @@ -21240,18 +21246,13 @@ func (s *WebACLSummary) SetName(v string) *WebACLSummary { return s } -// A rule statement that defines a cross-site scripting (XSS) match search for -// WAF to apply to web requests. XSS attacks are those where the attacker uses -// vulnerabilities in a benign website as a vehicle to inject malicious client-site -// scripts into other legitimate web browsers. The XSS match statement provides -// the location in requests that you want WAF to search and text transformations -// to use on the search area before WAF searches for character sequences that -// are likely to be malicious strings. +// A rule statement that inspects for cross-site scripting (XSS) attacks. In +// XSS attacks, the attacker uses vulnerabilities in a benign website as a vehicle +// to inject malicious client-site scripts into other legitimate web browsers. type XssMatchStatement struct { _ struct{} `type:"structure"` - // The part of the web request that you want WAF to inspect. For more information, - // see FieldToMatch. + // The part of the web request that you want WAF to inspect. // // FieldToMatch is a required field FieldToMatch *FieldToMatch `type:"structure" required:"true"` @@ -22986,6 +22987,22 @@ func Scope_Values() []string { } } +const ( + // SensitivityLevelLow is a SensitivityLevel enum value + SensitivityLevelLow = "LOW" + + // SensitivityLevelHigh is a SensitivityLevel enum value + SensitivityLevelHigh = "HIGH" +) + +// SensitivityLevel_Values returns all elements of the SensitivityLevel enum +func SensitivityLevel_Values() []string { + return []string{ + SensitivityLevelLow, + SensitivityLevelHigh, + } +} + const ( // TextTransformationTypeNone is a TextTransformationType enum value TextTransformationTypeNone = "NONE" diff --git a/service/wafv2/doc.go b/service/wafv2/doc.go index cce0be069f6..e4e3d87b63d 100644 --- a/service/wafv2/doc.go +++ b/service/wafv2/doc.go @@ -21,9 +21,9 @@ // WAF is a web application firewall that lets you monitor the HTTP and HTTPS // requests that are forwarded to Amazon CloudFront, an Amazon API Gateway REST // API, an Application Load Balancer, or an AppSync GraphQL API. WAF also lets -// you control access to your content. Based on conditions that you specify, -// such as the IP addresses that requests originate from or the values of query -// strings, the Amazon API Gateway REST API, CloudFront distribution, the Application +// you control access to your content. Based on criteria that you specify, such +// as the IP addresses that requests originate from or the values of query strings, +// the Amazon API Gateway REST API, CloudFront distribution, the Application // Load Balancer, or the AppSync GraphQL API responds to requests either with // the requested content or with an HTTP 403 status code (Forbidden). You also // can configure CloudFront to return a custom error page when a request is diff --git a/service/wafv2/errors.go b/service/wafv2/errors.go index c8b45b78582..d7e5738df88 100644 --- a/service/wafv2/errors.go +++ b/service/wafv2/errors.go @@ -174,7 +174,7 @@ const ( // "WAFTagOperationInternalErrorException". // // WAF couldn’t perform your tagging operation because of an internal error. - // Retry ybjectNoteWebRequestComponentour request. + // Retry your request. ErrCodeWAFTagOperationInternalErrorException = "WAFTagOperationInternalErrorException" // ErrCodeWAFUnavailableEntityException for service response error code