diff --git a/AGENTS.md b/AGENTS.md index 8e77c7a10..0744f56c7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ Local AWS cloud emulator. Part of the faisca project family. ## Product Context - FakeCloud is a local AWS emulator focused on high-fidelity behavior and AWS-compatible responses. -- Current project state: 105 AWS services, 7,491 operations, 248,557/248,557 Smithy conformance variants pass — true 100% across every implemented service, no flake margin. See [the parity matrix](website/content/docs/parity.md) for the full service-by-service breakdown of control-plane vs data-plane coverage and known limitations. +- Current project state: 105 AWS services, 7,505 operations, 248,557/248,557 Smithy conformance variants pass — true 100% across every implemented service, no flake margin. See [the parity matrix](website/content/docs/parity.md) for the full service-by-service breakdown of control-plane vs data-plane coverage and known limitations. - The broader roadmap prioritizes services that LocalStack keeps behind paid tiers, especially ECS, ELB/ALB, CloudFront, CloudWatch Metrics, and EC2. - Introspection SDKs (Rust, Python, TypeScript, Go, PHP, Java) are already built and maintained for the `/_fakecloud/*` endpoints. diff --git a/Cargo.lock b/Cargo.lock index 3f5bbd2ce..7c713629b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6013,6 +6013,7 @@ dependencies = [ "tempfile", "tokio", "tracing", + "uuid", ] [[package]] @@ -6896,11 +6897,13 @@ name = "fakecloud-support" version = "0.44.10" dependencies = [ "async-trait", + "base64 0.22.1", "bytes", "chrono", "fakecloud-core", "fakecloud-persistence", "http 1.4.0", + "md-5 0.10.6", "parking_lot", "regex", "serde", diff --git a/README.md b/README.md index fa509a3a1..d67498ee3 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Works as a drop-in for LocalStack in CI, with Terraform (`endpoints` block), CDK ## Supported services -105 services, 7,491 operations, and true 100% conformance across every implemented service. +105 services, 7,505 operations, and true 100% conformance across every implemented service. Highlights: S3, DynamoDB, SQS, SNS, EventBridge, Lambda, IAM, STS, KMS, Secrets Manager, CloudFormation, SES, Cognito, Kinesis, RDS (6 real engines), ElastiCache, ECS/ECR, EC2, Step Functions, API Gateway v1/v2, Bedrock, and 80+ more. diff --git a/aws-models/bedrock.json b/aws-models/bedrock.json index 67d845a24..8eab948fc 100644 --- a/aws-models/bedrock.json +++ b/aws-models/bedrock.json @@ -8256,6 +8256,12 @@ "smithy.api#enumValue": "none" } }, + "AWS_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aws_review" + } + }, "PROVIDER_DATA_SHARE": { "target": "smithy.api#Unit", "traits": { @@ -8270,7 +8276,7 @@ } }, "traits": { - "smithy.api#documentation": "
The data retention mode for the account. Valid values are:
default \u2013 The standard data handling for the model applies.
none \u2013 Zero data retention.
provider_data_share \u2013 Data may be shared with the model provider.
inherit \u2013 No data retention mode is set at this scope.
The data retention mode for the account. Valid values are:
default \u2013 The standard data handling for the model applies.
none \u2013 Zero data retention.
aws_review \u2013 Amazon Web Services may review the request data. The data is not shared with the model provider. A model must support this mode to be invoked under it.
provider_data_share \u2013 Data may be shared with the model provider.
inherit \u2013 No data retention mode is set at this scope.
\n\t\t\tInformation about the interruption configuration and association with the source reservation for interruptible Capacity Reservations.\n\t\t
", "smithy.api#xmlName": "interruptionInfo" } + }, + "ZeroSizePreference": { + "target": "com.amazonaws.ec2#ZeroSizePreference", + "traits": { + "aws.protocols#ec2QueryName": "ZeroSizePreference", + "smithy.api#documentation": "\n\t\t\tThe zero-size preference configured for the interruptible Capacity Reservation. A value of retain keeps the interruptible Capacity Reservation active at zero capacity when you reduce its allocation to zero. A value of default cancels the interruptible Capacity Reservation when you reduce its allocation to zero.\n\t\t
\n\t\t\tThe tags to apply to the interruptible Capacity Reservation during creation.\n\t\t
", "smithy.api#xmlName": "TagSpecification" } + }, + "ZeroSizePreference": { + "target": "com.amazonaws.ec2#ZeroSizePreference", + "traits": { + "smithy.api#documentation": "\n\t\t\tSpecifies the behavior for the interruptible Capacity Reservation when you reduce its allocation to zero instances. Specify retain to keep the interruptible Capacity Reservation active at zero capacity so that you can allocate instances to it again later. Specify default to cancel the interruptible Capacity Reservation and return the capacity to your source Capacity Reservation. The default value is default.\n\t\t
The error code that indicates why the instance could not be launched. For more\n information about error codes, see Error codes.
", + "smithy.api#documentation": "The error code that indicates why the instance could not be launched. For more\n information about error codes, see Error codes.
", "smithy.api#xmlName": "errorCode" } }, @@ -40505,7 +40510,7 @@ "target": "com.amazonaws.ec2#String", "traits": { "aws.protocols#ec2QueryName": "ErrorMessage", - "smithy.api#documentation": "The error message that describes why the instance could not be launched. For more\n information about error messages, see Error codes.
", + "smithy.api#documentation": "The error message that describes why the instance could not be launched. For more\n information about error messages, see Error codes.
", "smithy.api#xmlName": "errorMessage" } } @@ -81457,7 +81462,7 @@ "target": "com.amazonaws.ec2#ApplicationStatusSummary", "traits": { "aws.protocols#ec2QueryName": "ApplicationStatus", - "smithy.api#documentation": "Reports impaired functionality that stems from issues with applications running on the instance.
", + "smithy.api#documentation": "Reports the application-level health status for the instance.
", "smithy.api#xmlName": "applicationStatus" } } @@ -90920,6 +90925,14 @@ "smithy.api#documentation": "\n\t\t\tThe type of interruption policy applied to the interruptible reservation.\n\t\t
", "smithy.api#xmlName": "interruptionType" } + }, + "ZeroSizePreference": { + "target": "com.amazonaws.ec2#ZeroSizePreference", + "traits": { + "aws.protocols#ec2QueryName": "ZeroSizePreference", + "smithy.api#documentation": "\n\t\t\tSpecifies how Amazon EC2 handles the interruptible Capacity Reservation when you reduce its allocation to zero instances. A value of retain keeps the interruptible Capacity Reservation active at zero capacity so that you can allocate instances to it again later. A value of default cancels the interruptible Capacity Reservation and returns the capacity to your source Capacity Reservation.\n\t\t
A message describing the current state of the internet registry association, including additional details such as the reason for a failure.
", + "smithy.api#xmlName": "stateMessage" + } + }, "ChildRequestXml": { "target": "com.amazonaws.ec2#String", "traits": { @@ -103668,7 +103689,7 @@ } }, "UserData": { - "target": "com.amazonaws.ec2#BlobAttributeValue", + "target": "com.amazonaws.ec2#SecureBlobAttributeValue", "traits": { "aws.protocols#ec2QueryName": "UserData", "smithy.api#documentation": "Changes the instance's user data to the specified value. User data must be base64-encoded.\n Depending on the tool or SDK that you're using, the base64-encoding might be performed for you.\n For more information, see Work with instance user data.
", @@ -125700,7 +125721,7 @@ } }, "UploadPolicy": { - "target": "com.amazonaws.ec2#Blob", + "target": "com.amazonaws.ec2#SecureBlob", "traits": { "aws.protocols#ec2QueryName": "UploadPolicy", "smithy.api#documentation": "An Amazon S3 upload policy that gives Amazon EC2 permission to upload items into Amazon S3 on your\n behalf.
", @@ -127577,6 +127598,28 @@ "smithy.api#pattern": "^(?=.{20,2048}$)arn:aws[a-z-]*:secretsmanager:[a-z0-9-]+:\\d{12}:secret:[a-zA-Z0-9/_+=.@-]+$" } }, + "com.amazonaws.ec2#SecureBlob": { + "type": "blob", + "traits": { + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.ec2#SecureBlobAttributeValue": { + "type": "structure", + "members": { + "Value": { + "target": "com.amazonaws.ec2#SecureBlob", + "traits": { + "aws.protocols#ec2QueryName": "Value", + "smithy.api#documentation": "The attribute value.
", + "smithy.api#xmlName": "value" + } + } + }, + "traits": { + "smithy.api#documentation": "Describes a value for a resource attribute that is a Base64-encoded binary data object.
" + } + }, "com.amazonaws.ec2#SecurityGroup": { "type": "structure", "members": { @@ -139221,9 +139264,7 @@ "TargetInstanceCount": { "target": "com.amazonaws.ec2#Integer", "traits": { - "smithy.api#clientOptional": {}, - "smithy.api#documentation": "\n\t\t\tThe new number of instances to allocate. Enter a higher number to add more capacity to share, or a lower number to reclaim capacity to your source Capacity Reservation.\n\t\t
", - "smithy.api#required": {} + "smithy.api#documentation": "\n\t\t\tThe new number of instances to allocate. Enter a higher number to add more capacity to share, or a lower number to reclaim capacity to your source Capacity Reservation.\n\t\t
" } }, "DryRun": { @@ -139231,6 +139272,12 @@ "traits": { "smithy.api#documentation": "\n\t\t\tChecks whether you have the required permissions for the action, without actually making the request, and provides an error response.\n\t\t
" } + }, + "ZeroSizePreference": { + "target": "com.amazonaws.ec2#ZeroSizePreference", + "traits": { + "smithy.api#documentation": "\n\t\t\tSpecifies the updated behavior for the interruptible Capacity Reservation when you reduce its allocation to zero instances. Specify retain to keep the interruptible Capacity Reservation active at zero capacity so that you can allocate instances to it again later. Specify default to cancel the interruptible Capacity Reservation and return the capacity to your source Capacity Reservation.\n\t\t
Describes the vCPU configurations for the instance type.
" } }, + "com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterface": { + "type": "operation", + "input": { + "target": "com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterfaceRequest" + }, + "output": { + "target": "com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterfaceResult" + }, + "traits": { + "smithy.api#documentation": "Validates whether the specified security groups can be associated with a single\n network interface. The operation checks Amazon Virtual Private Cloud (Amazon VPC)\n quotas for inbound or outbound rules per security group and security groups per\n network interface. Only authorized AWS services can call this operation.
\nFor more information about security group quotas, see Amazon\n VPC quotas in the Amazon VPC User Guide.
" + } + }, + "com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterfaceRequest": { + "type": "structure", + "members": { + "SecurityGroupIds": { + "target": "com.amazonaws.ec2#SecurityGroupIdList", + "traits": { + "smithy.api#clientOptional": {}, + "smithy.api#documentation": "The IDs of the security groups to validate for association with a single network\n interface. You must specify at least one ID, and each ID must be unique. The number\n of IDs cannot exceed the maximum number of security groups allowed per network\n interface.
", + "smithy.api#required": {}, + "smithy.api#xmlName": "SecurityGroupId" + } + }, + "DryRun": { + "target": "com.amazonaws.ec2#Boolean", + "traits": { + "smithy.api#documentation": "Checks whether you have the required permissions for the action, without actually making the request, \n and provides an error response. If you have the required permissions, the error response is DryRunOperation. \n Otherwise, it is UnauthorizedOperation.
The operation returns true if the specified security groups can be\n associated with a single network interface without exceeding the quotas. It returns\n an error if associating the security groups would exceed a quota.
An identifier that you provide to ensure the idempotency of the request. It must be unique and is case sensitive. Up to 36 ASCII characters in the range of 33-126 (inclusive) are allowed.
" } + }, + "critical": { + "target": "com.amazonaws.ecs#BoxedBoolean", + "traits": { + "smithy.api#documentation": "If the critical parameter of a daemon is true, and the daemon task fails, stops, or becomes unhealthy, Amazon ECS drains the container instance and stops the other tasks running on it. If the critical parameter is false, the daemon task failure doesn't affect the other tasks on the instance. The default value is true.
A non-critical daemon doesn't block instance registration. The container instance becomes active and continues to run your other tasks, whether the daemon task fails during scale-out or during a deployment.
Amazon ECS emits an EventBridge event when a daemon task fails to start, for both critical and non-critical daemons.
Daemon task launch failures during a deployment are still counted by the deployment circuit breaker. The circuit breaker can roll back an unstable target revision.
" + } } }, "traits": { @@ -5497,6 +5503,13 @@ "smithy.api#default": 0, "smithy.api#documentation": "The number of daemon tasks running on this capacity provider.
" } + }, + "withoutDaemonCount": { + "target": "com.amazonaws.ecs#Integer", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "The number of instances on this capacity provider that are running without the daemon task. This applies to daemons that aren't critical, where the instance remains available for your other tasks even if the daemon task can't start or stops. These instances aren't included in runningCount.
The number of instances running daemon tasks on this capacity provider.
" } }, + "withoutDaemonInstanceCount": { + "target": "com.amazonaws.ecs#BoxedInteger", + "traits": { + "smithy.api#documentation": "The number of instances on this capacity provider that are running without the daemon task. This applies to daemons that aren't critical, where the instance remains available for your other tasks even if the daemon task can't start or stops. These instances aren't included in runningInstanceCount.
The total number of instances running daemon tasks for this revision.
" } }, + "totalWithoutDaemonInstanceCount": { + "target": "com.amazonaws.ecs#BoxedInteger", + "traits": { + "smithy.api#documentation": "The total number of instances running without the daemon task for this revision, across all capacity providers. These instances aren't included in totalRunningInstanceCount.
Specifies whether the execute command functionality is turned on for the daemon tasks.
" } + }, + "critical": { + "target": "com.amazonaws.ecs#BoxedBoolean", + "traits": { + "smithy.api#documentation": "If the critical parameter of this daemon revision is true, and the daemon task fails, stops, or becomes unhealthy, Amazon ECS drains the container instance and stops the other tasks running on it. If the parameter is false, the daemon task failure doesn't affect the other tasks on the instance, and doesn't block instance registration. The default value is true.
The total number of daemon tasks running for this revision.
" } + }, + "totalWithoutDaemonCount": { + "target": "com.amazonaws.ecs#Integer", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "The total number of instances running without the daemon task for this revision, across all capacity providers. These instances aren't included in totalRunningCount.
If true, the execute command functionality is turned on for all tasks in the daemon. If false, the execute command functionality is turned off.
If the critical parameter of a daemon is true, and the daemon task fails, stops, or becomes unhealthy, Amazon ECS drains the container instance and stops the other tasks running on it. If the critical parameter is false, the daemon task failure doesn't affect the other tasks on the instance. The default value is true.
A non-critical daemon doesn't block instance registration. The container instance becomes active and continues to run your other tasks, whether the daemon task fails during scale-out or during a deployment.
Amazon ECS emits an EventBridge event when a daemon task fails to start, for both critical and non-critical daemons.
Daemon task launch failures during a deployment are still counted by the deployment circuit breaker. The circuit breaker can roll back an unstable target revision.
" + } } }, "traits": { diff --git a/aws-models/eks.json b/aws-models/eks.json index 13492e051..267cd6fd4 100644 --- a/aws-models/eks.json +++ b/aws-models/eks.json @@ -8604,7 +8604,11 @@ "resources": { "target": "com.amazonaws.eks#StringList", "traits": { - "smithy.api#documentation": "Specifies the resources to be encrypted. The only supported value is\n secrets.
Amazon EKS encrypts all Kubernetes API data with envelope encryption by default for\n clusters running Kubernetes version 1.28 or higher, so this field no longer affects which\n resources are encrypted.
\nSpecifies the resources to be encrypted. The only supported value is\n secrets.
The name of the attribute.
\nThe following attribute is supported by Network Load Balancers, and Gateway Load Balancers.
\n\n tcp.idle_timeout.seconds - The tcp idle timeout value, in seconds. The \n valid range is 60-6000 seconds. The default is 350 seconds.
The following attributes are only supported by Application Load Balancers.
\n\n routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Serial-Number HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_issuer.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Issuer HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_subject.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Subject HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_validity.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Validity HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_leaf.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Leaf HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert HTTP request header.
\n routing.http.request.x_amzn_tls_version.header_name - \n Enables you to modify the header name of the \n X-Amzn-Tls-Version HTTP request header.
\n routing.http.request.x_amzn_tls_cipher_suite.header_name - \n Enables you to modify the header name of the \n X-Amzn-Tls-Cipher-Suite HTTP request header.
\n routing.http.response.server.enabled - \n Enables you to allow or remove the HTTP response server header.
\n routing.http.response.strict_transport_security.header_value - \n Informs browsers that the site should only be accessed using HTTPS, and that \n any future attempts to access it using HTTP should automatically be converted \n to HTTPS.
\n routing.http.response.access_control_allow_origin.header_value - \n Specifies which origins are allowed to access the server.
\n routing.http.response.access_control_allow_methods.header_value - \n Returns which HTTP methods are allowed when accessing the server from a different \n origin.
\n routing.http.response.access_control_allow_headers.header_value - \n Specifies which headers can be used during the request.
\n routing.http.response.access_control_allow_credentials.header_value - \n Indicates whether the browser should include credentials such as cookies or \n authentication when making requests.
\n routing.http.response.access_control_expose_headers.header_value - \n Returns which headers the browser can expose to the requesting client.
\n routing.http.response.access_control_max_age.header_value - \n Specifies how long the results of a preflight request can be cached, in seconds.
\n routing.http.response.content_security_policy.header_value - \n Specifies restrictions enforced by the browser to help minimize the risk of certain \n types of security threats.
\n routing.http.response.x_content_type_options.header_value - \n Indicates whether the MIME types advertised in the Content-Type \n headers should be followed and not be changed.
\n routing.http.response.x_frame_options.header_value - Indicates \n whether the browser is allowed to render a page in a frame, \n iframe, embed or \n object.
The name of the attribute.
\nThe following attribute is supported by Network Load Balancers, and Gateway Load Balancers.
\n\n tcp.idle_timeout.seconds - The tcp idle timeout value, in seconds. The \n valid range is 60-6000 seconds. The default is 350 seconds.
The following attribute is only supported by Gateway Load Balancers:
\n\n send_tcp_reset.on_idle_timeout.enabled \u2013 Specifies whether the Gateway\n Load Balancer sends a TCP Reset to the sender of traffic when a TCP flow's idle timeout\n expires. This attribute also applies to non-SYN TCP packets received for flows that are\n not in the flow table. The value is true or false. The default\n is false.
The following attributes are only supported by Application Load Balancers.
\n\n routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Serial-Number HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_issuer.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Issuer HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_subject.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Subject HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_validity.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Validity HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert_leaf.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert-Leaf HTTP request header.
\n routing.http.request.x_amzn_mtls_clientcert.header_name - \n Enables you to modify the header name of the \n X-Amzn-Mtls-Clientcert HTTP request header.
\n routing.http.request.x_amzn_tls_version.header_name - \n Enables you to modify the header name of the \n X-Amzn-Tls-Version HTTP request header.
\n routing.http.request.x_amzn_tls_cipher_suite.header_name - \n Enables you to modify the header name of the \n X-Amzn-Tls-Cipher-Suite HTTP request header.
\n routing.http.response.server.enabled - \n Enables you to allow or remove the HTTP response server header.
\n routing.http.response.strict_transport_security.header_value - \n Informs browsers that the site should only be accessed using HTTPS, and that \n any future attempts to access it using HTTP should automatically be converted \n to HTTPS.
\n routing.http.response.access_control_allow_origin.header_value - \n Specifies which origins are allowed to access the server.
\n routing.http.response.access_control_allow_methods.header_value - \n Returns which HTTP methods are allowed when accessing the server from a different \n origin.
\n routing.http.response.access_control_allow_headers.header_value - \n Specifies which headers can be used during the request.
\n routing.http.response.access_control_allow_credentials.header_value - \n Indicates whether the browser should include credentials such as cookies or \n authentication when making requests.
\n routing.http.response.access_control_expose_headers.header_value - \n Returns which headers the browser can expose to the requesting client.
\n routing.http.response.access_control_max_age.header_value - \n Specifies how long the results of a preflight request can be cached, in seconds.
\n routing.http.response.content_security_policy.header_value - \n Specifies restrictions enforced by the browser to help minimize the risk of certain \n types of security threats.
\n routing.http.response.x_content_type_options.header_value - \n Indicates whether the MIME types advertised in the Content-Type \n headers should be followed and not be changed.
\n routing.http.response.x_frame_options.header_value - Indicates \n whether the browser is allowed to render a page in a frame, \n iframe, embed or \n object.
The name of the attribute.
\nThe following attributes are supported by all load balancers:
\n\n deregistration_delay.timeout_seconds - The amount of time, in seconds,\n for Elastic Load Balancing to wait before changing the state of a deregistering target\n from draining to unused. The range is 0-3600 seconds. The\n default value is 300 seconds. If the target is a Lambda function, this attribute is not\n supported.
\n stickiness.enabled - Indicates whether target stickiness is enabled. The\n value is true or false. The default is\n false.
\n stickiness.type - Indicates the type of stickiness. The possible values are:
\n lb_cookie and app_cookie for Application Load Balancers.
\n source_ip for Network Load Balancers.
\n source_ip_dest_ip and source_ip_dest_ip_proto for Gateway Load Balancers.
The following attributes are supported by Application Load Balancers and \n Network Load Balancers:
\n\n load_balancing.cross_zone.enabled - Indicates whether cross zone load \n balancing is enabled. The value is true, false or \n use_load_balancer_configuration. The default is \n use_load_balancer_configuration.
\n target_group_health.dns_failover.minimum_healthy_targets.count - \n The minimum number of targets that must be healthy.\n If the number of healthy targets is below this value, mark the zone as unhealthy\n in DNS, so that traffic is routed only to healthy zones. The possible values are\n off or an integer from 1 to the maximum number of targets.\n The default is 1.
\n target_group_health.dns_failover.minimum_healthy_targets.percentage - \n The minimum percentage of targets that must be healthy.\n If the percentage of healthy targets is below this value, mark the zone as unhealthy\n in DNS, so that traffic is routed only to healthy zones. The possible values are\n off or an integer from 1 to 100. The default is off.
\n target_group_health.unhealthy_state_routing.minimum_healthy_targets.count - \n The minimum number of targets that must be healthy. \n If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets.\n The possible values are 1 to the maximum number of targets. The default is 1.
\n target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage - \n The minimum percentage of targets that must be healthy. \n If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets.\n The possible values are off or an integer from 1 to 100.\n The default is off.
The following attributes are supported only if the load balancer is an Application Load\n Balancer and the target is an instance or an IP address:
\n\n load_balancing.algorithm.type - The load balancing algorithm determines\n how the load balancer selects targets when routing requests. The value is\n round_robin, least_outstanding_requests, or weighted_random. The default is\n round_robin.
\n load_balancing.algorithm.anomaly_mitigation - Only available when load_balancing.algorithm.type \n is weighted_random. Indicates whether anomaly mitigation is enabled. The value is on \n or off. The default is off.
\n slow_start.duration_seconds - The time period, in seconds, during which a\n newly registered target receives an increasing share of the traffic to the target group.\n After this time period ends, the target receives its full share of traffic. The range is\n 30-900 seconds (15 minutes). The default is 0 seconds (disabled).
\n stickiness.app_cookie.cookie_name - Indicates the name of the\n application-based cookie. Names that start with the following prefixes are not allowed:\n AWSALB, AWSALBAPP, and AWSALBTG; they're reserved\n for use by the load balancer.
\n stickiness.app_cookie.duration_seconds - The time period, in seconds,\n during which requests from a client should be routed to the same target. After this time\n period expires, the application-based cookie is considered stale. The range is 1 second to\n 1 week (604800 seconds). The default value is 1 day (86400 seconds).
\n stickiness.lb_cookie.duration_seconds - The time period, in seconds,\n during which requests from a client should be routed to the same target. After this time\n period expires, the load balancer-generated cookie is considered stale. The range is 1\n second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).
The following attribute is supported only if the load balancer is an Application Load\n Balancer and the target is a Lambda function:
\n\n lambda.multi_value_headers.enabled - Indicates whether the request and\n response headers that are exchanged between the load balancer and the Lambda function\n include arrays of values or strings. The value is true or false.\n The default is false. If the value is false and the request\n contains a duplicate header field name or query parameter key, the load balancer uses the\n last value sent by the client.
The following attributes are supported only by Network Load Balancers:
\n\n deregistration_delay.connection_termination.enabled - Indicates whether\n the load balancer terminates connections at the end of the deregistration timeout. The\n value is true or false. For new UDP/TCP_UDP target groups the \n default is true. Otherwise, the default is false.
\n preserve_client_ip.enabled - Indicates whether client IP preservation is\n enabled. The value is true or false. The default is disabled if\n the target group type is IP address and the target group protocol is TCP or TLS.\n Otherwise, the default is enabled. Client IP preservation can't be disabled for UDP and\n TCP_UDP target groups.
\n proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version 2 is\n enabled. The value is true or false. The default is\n false.
\n target_health_state.unhealthy.connection_termination.enabled - Indicates whether \n the load balancer terminates connections to unhealthy targets. The value is true \n or false. The default is true. This attribute can't be enabled for UDP and\n TCP_UDP target groups.
\n target_health_state.unhealthy.draining_interval_seconds - The amount of time \n for Elastic Load Balancing to wait before changing the state of an unhealthy target from \n unhealthy.draining to unhealthy. The range is 0-360000 seconds. \n The default value is 0 seconds.
Note: This attribute can only be configured when \n target_health_state.unhealthy.connection_termination.enabled is false.
The following attributes are supported only by Gateway Load Balancers:
\n\n target_failover.on_deregistration - Indicates how the Gateway Load\n Balancer handles existing flows when a target is deregistered. The possible values are\n rebalance and no_rebalance. The default is\n no_rebalance. The two attributes\n (target_failover.on_deregistration and\n target_failover.on_unhealthy) can't be set independently. The value you set\n for both attributes must be the same.
\n target_failover.on_unhealthy - Indicates how the Gateway Load Balancer\n handles existing flows when a target is unhealthy. The possible values are\n rebalance and no_rebalance. The default is\n no_rebalance. The two attributes\n (target_failover.on_deregistration and\n target_failover.on_unhealthy) can't be set independently. The value you\n set for both attributes must be the same.
The name of the attribute.
\nThe following attributes are supported by all load balancers:
\n\n deregistration_delay.timeout_seconds - The amount of time, in seconds,\n for Elastic Load Balancing to wait before changing the state of a deregistering target\n from draining to unused. The range is 0-3600 seconds. The\n default value is 300 seconds. If the target is a Lambda function, this attribute is not\n supported.
\n stickiness.enabled - Indicates whether target stickiness is enabled. The\n value is true or false. The default is\n false.
\n stickiness.type - Indicates the type of stickiness. The possible values are:
\n lb_cookie and app_cookie for Application Load Balancers.
\n source_ip for Network Load Balancers.
\n source_ip_dest_ip and source_ip_dest_ip_proto for Gateway Load Balancers.
The following attributes are supported by Application Load Balancers and \n Network Load Balancers:
\n\n load_balancing.cross_zone.enabled - Indicates whether cross zone load \n balancing is enabled. The value is true, false or \n use_load_balancer_configuration. The default is \n use_load_balancer_configuration.
\n target_group_health.dns_failover.minimum_healthy_targets.count - \n The minimum number of targets that must be healthy.\n If the number of healthy targets is below this value, mark the zone as unhealthy\n in DNS, so that traffic is routed only to healthy zones. The possible values are\n off or an integer from 1 to the maximum number of targets.\n The default is 1.
\n target_group_health.dns_failover.minimum_healthy_targets.percentage - \n The minimum percentage of targets that must be healthy.\n If the percentage of healthy targets is below this value, mark the zone as unhealthy\n in DNS, so that traffic is routed only to healthy zones. The possible values are\n off or an integer from 1 to 100. The default is off.
\n target_group_health.unhealthy_state_routing.minimum_healthy_targets.count - \n The minimum number of targets that must be healthy. \n If the number of healthy targets is below this value, send traffic to all targets, including unhealthy targets.\n The possible values are 1 to the maximum number of targets. The default is 1.
\n target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage - \n The minimum percentage of targets that must be healthy. \n If the percentage of healthy targets is below this value, send traffic to all targets, including unhealthy targets.\n The possible values are off or an integer from 1 to 100.\n The default is off.
The following attributes are supported only if the load balancer is an Application Load\n Balancer and the target is an instance or an IP address:
\n\n load_balancing.algorithm.type - The load balancing algorithm determines\n how the load balancer selects targets when routing requests. The value is\n round_robin, least_outstanding_requests, or weighted_random. The default is\n round_robin.
\n load_balancing.algorithm.anomaly_mitigation - Only available when load_balancing.algorithm.type \n is weighted_random. Indicates whether anomaly mitigation is enabled. The value is on \n or off. The default is off.
\n slow_start.duration_seconds - The time period, in seconds, during which a\n newly registered target receives an increasing share of the traffic to the target group.\n After this time period ends, the target receives its full share of traffic. The range is\n 30-900 seconds (15 minutes). The default is 0 seconds (disabled).
\n stickiness.app_cookie.cookie_name - Indicates the name of the\n application-based cookie. Names that start with the following prefixes are not allowed:\n AWSALB, AWSALBAPP, and AWSALBTG; they're reserved\n for use by the load balancer.
\n stickiness.app_cookie.duration_seconds - The time period, in seconds,\n during which requests from a client should be routed to the same target. After this time\n period expires, the application-based cookie is considered stale. The range is 1 second to\n 1 week (604800 seconds). The default value is 1 day (86400 seconds).
\n stickiness.lb_cookie.duration_seconds - The time period, in seconds,\n during which requests from a client should be routed to the same target. After this time\n period expires, the load balancer-generated cookie is considered stale. The range is 1\n second to 1 week (604800 seconds). The default value is 1 day (86400 seconds).
The following attribute is supported only if the load balancer is an Application Load\n Balancer and the target is a Lambda function:
\n\n lambda.multi_value_headers.enabled - Indicates whether the request and\n response headers that are exchanged between the load balancer and the Lambda function\n include arrays of values or strings. The value is true or false.\n The default is false. If the value is false and the request\n contains a duplicate header field name or query parameter key, the load balancer uses the\n last value sent by the client.
The following attributes are supported only by Network Load Balancers:
\n\n deregistration_delay.connection_termination.enabled - Indicates whether\n the load balancer terminates connections at the end of the deregistration timeout. The\n value is true or false. For new UDP/TCP_UDP target groups the \n default is true. Otherwise, the default is false.
\n preserve_client_ip.enabled - Indicates whether client IP preservation is\n enabled. The value is true or false. The default is disabled if\n the target group type is IP address and the target group protocol is TCP or TLS.\n Otherwise, the default is enabled. Client IP preservation can't be disabled for UDP and\n TCP_UDP target groups.
\n proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version 2 is\n enabled. The value is true or false. The default is\n false.
\n target_health_state.unhealthy.connection_termination.enabled - Indicates whether \n the load balancer terminates connections to unhealthy targets. The value is true \n or false. The default is true. This attribute can't be enabled for UDP and\n TCP_UDP target groups.
\n target_health_state.unhealthy.draining_interval_seconds - The amount of time \n for Elastic Load Balancing to wait before changing the state of an unhealthy target from \n unhealthy.draining to unhealthy. The range is 0-360000 seconds. \n The default value is 0 seconds.
Note: This attribute can only be configured when \n target_health_state.unhealthy.connection_termination.enabled is false.
The following attributes are supported only by Gateway Load Balancers:
\n\n target_failover.on_deregistration - Indicates how the Gateway Load\n Balancer handles existing flows when a target is deregistered. The possible values are\n rebalance and no_rebalance. The default is\n no_rebalance. The two attributes\n (target_failover.on_deregistration and\n target_failover.on_unhealthy) can't be set independently. The value you set\n for both attributes must be the same.
\n target_failover.on_unhealthy - Indicates how the Gateway Load Balancer\n handles existing flows when a target is unhealthy. The possible values are\n rebalance and no_rebalance. The default is\n no_rebalance. The two attributes\n (target_failover.on_deregistration and\n target_failover.on_unhealthy) can't be set independently. The value you\n set for both attributes must be the same.
\n send_tcp_reset.on_unhealthy.enabled \u2013 Specifies whether the Gateway Load\n Balancer sends a TCP Reset to the sender of traffic when a target becomes unhealthy. After\n sending the reset, the Gateway Load Balancer removes the flow entry from its flow table.\n The value is true or false. The default is false.\n This attribute does not apply when target_failover.on_unhealthy is set to\n rebalance. This feature requires 5-tuple flow stickiness, which the target\n group uses by default when stickiness.enabled is set to\n false.
\n send_tcp_reset.on_deregistration.enabled \u2013 Specifies whether the Gateway\n Load Balancer sends a TCP Reset to the sender of traffic when a target is deregistered.\n The reset occurs after the connection drain time has elapsed. The value is\n true or false. The default is false. This\n attribute does not apply when target_failover.on_deregistration is set to\n rebalance. This feature requires 5-tuple flow stickiness, which the target\n group uses by default when stickiness.enabled is set to\n false.
The shard ID of the existing child shard of the current shard.
", + "smithy.api#documentation": "The name of the channel.
", "smithy.api#required": {} } }, - "ParentShards": { - "target": "com.amazonaws.kinesis#ShardIdList", + "ChannelARN": { + "target": "com.amazonaws.kinesis#ChannelARN", "traits": { - "smithy.api#documentation": "The current shard that is the parent of the existing child shard.
", + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the channel.
", "smithy.api#required": {} } }, - "HashKeyRange": { - "target": "com.amazonaws.kinesis#HashKeyRange", + "ChannelId": { + "target": "com.amazonaws.kinesis#ChannelId", "traits": { + "smithy.api#documentation": "The unique identifier of the channel.
", "smithy.api#required": {} } - } - }, - "traits": { - "smithy.api#documentation": "Output parameter of the GetRecords API. The existing child shard of the current\n shard.
" - } - }, - "com.amazonaws.kinesis#ChildShardList": { - "type": "list", - "member": { - "target": "com.amazonaws.kinesis#ChildShard" - } - }, - "com.amazonaws.kinesis#Consumer": { - "type": "structure", - "members": { - "ConsumerName": { - "target": "com.amazonaws.kinesis#ConsumerName", + }, + "ChannelStatus": { + "target": "com.amazonaws.kinesis#ChannelStatus", "traits": { - "smithy.api#documentation": "The name of the consumer is something you choose when you register the\n consumer.
", + "smithy.api#documentation": "The current status of the channel. Valid values:
\n\n CREATING - The channel is being created.
\n ACTIVE - The channel is ready to deliver records.
\n UPDATING - The channel configuration is being updated.
\n DELETING - The channel is being deleted.
\n FAILED - See ChannelStatusReason for the failure cause.
When you register a consumer, Kinesis Data Streams generates an ARN for it. You need\n this ARN to be able to call SubscribeToShard.
\nIf you delete a consumer and then create a new one with the same name, it won't have\n the same ARN. That's because consumer ARNs contain the creation timestamp. This is\n important to keep in mind if you have IAM policies that reference consumer ARNs.
", + "smithy.api#documentation": "A message describing the reason for a FAILED status.
The time at which the channel was created.
", "smithy.api#required": {} } }, - "ConsumerStatus": { - "target": "com.amazonaws.kinesis#ConsumerStatus", + "ServiceExecutionRoleARN": { + "target": "com.amazonaws.kinesis#RoleARN", "traits": { - "smithy.api#documentation": "A consumer can't read data while in the CREATING or DELETING\n states.
The Amazon Resource Name (ARN) of the IAM role that Amazon Kinesis Data Streams assumes to write records to the destination.
", "smithy.api#required": {} } }, - "ConsumerCreationTimestamp": { - "target": "com.amazonaws.kinesis#Timestamp", + "StreamConfigurationList": { + "target": "com.amazonaws.kinesis#ChannelStreamDescriptionList", "traits": { - "smithy.api#documentation": "", + "smithy.api#documentation": "The source stream configuration for the channel.
", + "smithy.api#required": {} + } + }, + "S3DestinationConfiguration": { + "target": "com.amazonaws.kinesis#S3DestinationDescription", + "traits": { + "smithy.api#documentation": "The configuration for delivery to a general purpose Amazon S3 bucket. Present only when the channel destination is a general purpose Amazon S3 bucket.
" + } + }, + "S3TablesDestinationConfiguration": { + "target": "com.amazonaws.kinesis#S3TablesDestinationDescription", + "traits": { + "smithy.api#documentation": "The configuration for delivery to streaming tables on Apache Iceberg in Amazon S3 Tables. Present only when the channel destination is a streaming table.
" + } + }, + "EncryptionConfiguration": { + "target": "com.amazonaws.kinesis#ChannelEncryptionConfiguration", + "traits": { + "smithy.api#documentation": "The server-side encryption configuration for the channel.
" + } + }, + "LoggingConfiguration": { + "target": "com.amazonaws.kinesis#ChannelLoggingConfiguration", + "traits": { + "smithy.api#documentation": "The Amazon CloudWatch Logs configuration for the channel.
", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "An object that represents the details of the consumer you registered. This type of\n object is returned by RegisterStreamConsumer.
" + "smithy.api#documentation": "Describes the configuration and current status of a channel.
" } }, - "com.amazonaws.kinesis#ConsumerARN": { - "type": "string", - "traits": { - "smithy.api#length": { - "min": 1, - "max": 2048 + "com.amazonaws.kinesis#ChannelDestinationType": { + "type": "enum", + "members": { + "S3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "S3" + } }, - "smithy.api#pattern": "^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+$" - } - }, - "com.amazonaws.kinesis#ConsumerCountObject": { - "type": "integer", - "traits": { - "smithy.api#range": { - "min": 0, - "max": 1000000 + "S3_TABLES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "S3_TABLES" + } } } }, - "com.amazonaws.kinesis#ConsumerDescription": { + "com.amazonaws.kinesis#ChannelEncryptionConfiguration": { "type": "structure", "members": { - "ConsumerName": { - "target": "com.amazonaws.kinesis#ConsumerName", + "EncryptionType": { + "target": "com.amazonaws.kinesis#ChannelEncryptionType", "traits": { - "smithy.api#documentation": "The name of the consumer is something you choose when you register the\n consumer.
", + "smithy.api#documentation": "The encryption type. The only valid value is KMS.
When you register a consumer, Kinesis Data Streams generates an ARN for it. You need\n this ARN to be able to call SubscribeToShard.
\nIf you delete a consumer and then create a new one with the same name, it won't have\n the same ARN. That's because consumer ARNs contain the creation timestamp. This is\n important to keep in mind if you have IAM policies that reference consumer ARNs.
", + "smithy.api#documentation": "The identifier of the customer managed Amazon Web Services KMS key. You cannot use the Amazon Kinesis Data Streams service key (aws/kinesis).
Specifies the Amazon Web Services KMS key that Amazon Kinesis Data Streams uses to encrypt data delivered to the channel's destination.
" + } + }, + "com.amazonaws.kinesis#ChannelEncryptionType": { + "type": "enum", + "members": { + "KMS": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "A consumer can't read data while in the CREATING or DELETING\n states.
The Amazon CloudWatch Logs settings for the channel.
", "smithy.api#required": {} } - }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + } + }, + "traits": { + "smithy.api#documentation": "The Amazon CloudWatch Logs configuration for a channel.
" + } + }, + "com.amazonaws.kinesis#ChannelLoggingUpdateInput": { + "type": "structure", + "members": { + "CloudWatchLogs": { + "target": "com.amazonaws.kinesis#CloudWatchLogsUpdateInput", "traits": { - "smithy.api#documentation": "The ARN of the stream with which you registered the consumer.
", + "smithy.api#documentation": "The updated Amazon CloudWatch Logs settings for the channel.
", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "An object that represents the details of a registered consumer. This type of object is\n returned by DescribeStreamConsumer.
" - } - }, - "com.amazonaws.kinesis#ConsumerList": { - "type": "list", - "member": { - "target": "com.amazonaws.kinesis#Consumer" + "smithy.api#documentation": "The updated Amazon CloudWatch Logs configuration for a channel. Used in UpdateChannel.
" } }, - "com.amazonaws.kinesis#ConsumerName": { + "com.amazonaws.kinesis#ChannelName": { "type": "string", "traits": { "smithy.api#length": { @@ -274,7 +342,7 @@ "smithy.api#pattern": "^[a-zA-Z0-9_.-]+$" } }, - "com.amazonaws.kinesis#ConsumerStatus": { + "com.amazonaws.kinesis#ChannelStatus": { "type": "enum", "members": { "CREATING": { @@ -283,498 +351,471 @@ "smithy.api#enumValue": "CREATING" } }, + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "UPDATING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UPDATING" + } + }, "DELETING": { "target": "smithy.api#Unit", "traits": { "smithy.api#enumValue": "DELETING" } }, - "ACTIVE": { + "FAILED": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "ACTIVE" + "smithy.api#enumValue": "FAILED" } } } }, - "com.amazonaws.kinesis#CreateStream": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#CreateStreamInput" - }, - "output": { - "target": "smithy.api#Unit" - }, - "errors": [ - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" - }, - { - "target": "com.amazonaws.kinesis#LimitExceededException" - }, - { - "target": "com.amazonaws.kinesis#ResourceInUseException" - }, - { - "target": "com.amazonaws.kinesis#ValidationException" - } - ], + "com.amazonaws.kinesis#ChannelStatusReason": { + "type": "string", "traits": { - "smithy.api#documentation": "Creates a Kinesis data stream. A stream captures and transports data records that are\n continuously emitted from different data sources or producers.\n Scale-out within a stream is explicitly supported by means of shards, which are uniquely\n identified groups of data records in a stream.
\nYou can create your data stream using either on-demand or provisioned capacity mode. Data streams with an on-demand mode require no capacity planning and automatically scale to handle gigabytes of write and read throughput per minute. With the on-demand mode, Kinesis Data Streams automatically manages the shards in order to provide the necessary throughput.
\nIf you'd still like to proactively scale your on-demand data stream\u2019s capacity, you can unlock the warm throughput feature for on-demand data streams by enabling MinimumThroughputBillingCommitment for your account. Once your account has MinimumThroughputBillingCommitment enabled, you can specify the warm throughput in MiB per second that your stream can support in writes.
For the data streams with a provisioned mode, you must specify the number of shards for the data stream. Each shard can support reads up to five transactions per second, up to a maximum data read total of 2 MiB per second. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MiB per second. If the amount of data input increases or decreases, you can add or remove shards.
\nThe stream name identifies the stream. The name is scoped to the Amazon Web Services\n account used by the application. It is also scoped by Amazon Web Services Region. That\n is, two streams in two different accounts can have the same name, and two streams in the\n same account, but in two different Regions, can have the same name.
\n\n CreateStream is an asynchronous operation. Upon receiving a\n CreateStream request, Kinesis Data Streams immediately returns and sets\n the stream status to CREATING. After the stream is created, Kinesis Data\n Streams sets the stream status to ACTIVE. You should perform read and write\n operations only on an ACTIVE stream.
You receive a LimitExceededException when making a\n CreateStream request when you try to do one of the following:
Have more than five streams in the CREATING state at any point in\n time.
Create more shards than are authorized for your account.
\nFor the default shard or on-demand throughput limits for an Amazon Web Services account, see Amazon Kinesis Data Streams Limits in the Amazon Kinesis Data Streams Developer Guide. To increase this limit, contact Amazon Web Services Support.
\nYou can use DescribeStreamSummary to check the stream status, which\n is returned in StreamStatus.
\n CreateStream has a limit of five transactions per second per\n account.
\nYou can add tags to the stream when making a CreateStream request by setting the Tags parameter. If you pass the Tags parameter, in addition to having the kinesis:CreateStream permission, you must also have the kinesis:AddTagsToStream permission for the stream that will be created. The kinesis:TagResource permission won\u2019t work to tag streams on creation. Tags will take effect from the CREATING status of the stream, but you can't make any updates to the tags until the stream is in ACTIVE state.
A name to identify the stream. The stream name is scoped to the Amazon Web Services\n account used by the application that creates the stream. It is also scoped by Amazon Web Services Region. That is, two streams in two different Amazon Web Services accounts\n can have the same name. Two streams in the same Amazon Web Services account but in two\n different Regions can also have the same name.
", + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the source Kinesis data stream.
", "smithy.api#required": {} } }, - "ShardCount": { - "target": "com.amazonaws.kinesis#PositiveIntegerObject", - "traits": { - "smithy.api#documentation": "The number of shards that the stream will use. The throughput of the stream is a\n function of the number of shards; more shards are required for greater provisioned\n throughput.
" - } - }, - "StreamModeDetails": { - "target": "com.amazonaws.kinesis#StreamModeDetails", - "traits": { - "smithy.api#documentation": "Indicates the capacity mode of the data stream. Currently, in Kinesis Data Streams,\n you can choose between an on-demand capacity mode and a\n provisioned capacity mode for your data\n streams.
" - } - }, - "Tags": { - "target": "com.amazonaws.kinesis#TagMap", - "traits": { - "smithy.api#documentation": "A set of up to 50 key-value pairs to use to create the tags. A tag consists of a required key and an optional value.
" - } - }, - "WarmThroughputMiBps": { - "target": "com.amazonaws.kinesis#NaturalIntegerObject", - "traits": { - "smithy.api#documentation": "The target warm throughput in MB/s that the stream should be scaled to handle. This represents the throughput capacity that will be immediately available for write operations.
" - } - }, - "MaxRecordSizeInKiB": { - "target": "com.amazonaws.kinesis#MaxRecordSizeInKiB", + "RecordConfiguration": { + "target": "com.amazonaws.kinesis#RecordConfiguration", "traits": { - "smithy.api#documentation": "The maximum record size of a single record in kibibyte (KiB) that you can write to, and read from a stream.
" + "smithy.api#documentation": "The record format configuration for the source stream.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "Represents the input for CreateStream.
Specifies the source stream and record configuration when creating a channel.
" } }, - "com.amazonaws.kinesis#Data": { - "type": "blob", + "com.amazonaws.kinesis#ChannelStreamConfigurationList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#ChannelStreamConfiguration" + }, "traits": { "smithy.api#length": { - "min": 0, - "max": 10485760 + "min": 1, + "max": 10000 } } }, - "com.amazonaws.kinesis#DecreaseStreamRetentionPeriod": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#DecreaseStreamRetentionPeriodInput" - }, - "output": { - "target": "smithy.api#Unit" - }, - "errors": [ - { - "target": "com.amazonaws.kinesis#AccessDeniedException" - }, - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" - }, - { - "target": "com.amazonaws.kinesis#LimitExceededException" - }, - { - "target": "com.amazonaws.kinesis#ResourceInUseException" - }, - { - "target": "com.amazonaws.kinesis#ResourceNotFoundException" - } - ], - "traits": { - "smithy.api#documentation": "Decreases the Kinesis data stream's retention period, which is the length of time data\n records are accessible after they are added to the stream. The minimum value of a\n stream's retention period is 24 hours.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
This operation may result in lost data. For example, if the stream's retention period\n is 48 hours and is decreased to 24 hours, any data already in the stream that is older\n than 24 hours is inaccessible.
", - "smithy.rules#staticContextParams": { - "OperationType": { - "value": "control" - } - } - } - }, - "com.amazonaws.kinesis#DecreaseStreamRetentionPeriodInput": { + "com.amazonaws.kinesis#ChannelStreamDescription": { "type": "structure", "members": { - "StreamName": { - "target": "com.amazonaws.kinesis#StreamName", - "traits": { - "smithy.api#documentation": "The name of the stream to modify.
" - } - }, - "RetentionPeriodHours": { - "target": "com.amazonaws.kinesis#RetentionPeriodHours", + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", "traits": { - "smithy.api#documentation": "The new retention period of the stream, in hours. Must be less than the current\n retention period.
", + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the source Kinesis data stream.
", "smithy.api#required": {} } }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "StreamCreationTimestamp": { + "target": "com.amazonaws.kinesis#Timestamp", "traits": { - "smithy.api#documentation": "The ARN of the stream.
", - "smithy.rules#contextParam": { - "name": "StreamARN" - } + "smithy.api#documentation": "The time at which the source stream was created.
", + "smithy.api#required": {} } }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "RecordConfiguration": { + "target": "com.amazonaws.kinesis#RecordConfiguration", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The record format configuration for the source stream.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "Represents the input for DecreaseStreamRetentionPeriod.
", - "smithy.api#input": {} + "smithy.api#documentation": "Describes the source stream of a channel.
" } }, - "com.amazonaws.kinesis#DeleteResourcePolicy": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#DeleteResourcePolicyInput" - }, - "output": { - "target": "smithy.api#Unit" + "com.amazonaws.kinesis#ChannelStreamDescriptionList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#ChannelStreamDescription" }, - "errors": [ - { - "target": "com.amazonaws.kinesis#AccessDeniedException" - }, - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" - }, - { - "target": "com.amazonaws.kinesis#LimitExceededException" - }, - { - "target": "com.amazonaws.kinesis#ResourceInUseException" - }, - { - "target": "com.amazonaws.kinesis#ResourceNotFoundException" - } - ], "traits": { - "smithy.api#documentation": "Delete a policy for the specified data stream or consumer. Request patterns can be one of the following:
\nData stream pattern: arn:aws.*:kinesis:.*:\\d{12}:.*stream/\\S+\n
Consumer pattern: ^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+\n
The Amazon Resource Name (ARN) of the data stream or consumer.
", - "smithy.api#required": {}, - "smithy.rules#contextParam": { - "name": "ResourceARN" - } + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the source Kinesis data stream.
", + "smithy.api#required": {} } }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "StreamCreationTimestamp": { + "target": "com.amazonaws.kinesis#Timestamp", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The time at which the source stream was created.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#input": {} + "smithy.api#documentation": "Identifies a source stream associated with a channel.
" } }, - "com.amazonaws.kinesis#DeleteStream": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#DeleteStreamInput" - }, - "output": { - "target": "smithy.api#Unit" + "com.amazonaws.kinesis#ChannelStreamIdentifierList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#ChannelStreamIdentifier" }, - "errors": [ - { - "target": "com.amazonaws.kinesis#AccessDeniedException" - }, - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" - }, - { - "target": "com.amazonaws.kinesis#LimitExceededException" - }, - { - "target": "com.amazonaws.kinesis#ResourceInUseException" - }, - { - "target": "com.amazonaws.kinesis#ResourceNotFoundException" - } - ], "traits": { - "smithy.api#documentation": "Deletes a Kinesis data stream and all its shards and data. You must shut down any\n applications that are operating on the stream before you delete the stream. If an\n application attempts to operate on a deleted stream, it receives the exception\n ResourceNotFoundException.
When invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
If the stream is in the ACTIVE state, you can delete it. After a\n DeleteStream request, the specified stream is in the\n DELETING state until Kinesis Data Streams completes the\n deletion.
\n Note: Kinesis Data Streams might continue to accept\n data read and write operations, such as PutRecord, PutRecords, and GetRecords, on a stream in the\n DELETING state until the stream deletion is complete.
When you delete a stream, any shards in that stream are also deleted, and any tags are\n dissociated from the stream.
\nYou can use the DescribeStreamSummary operation to check the state\n of the stream, which is returned in StreamStatus.
\n DeleteStream has a limit of five transactions per second per\n account.
", - "smithy.rules#staticContextParams": { - "OperationType": { - "value": "control" - } + "smithy.api#length": { + "min": 1, + "max": 10000 } } }, - "com.amazonaws.kinesis#DeleteStreamInput": { + "com.amazonaws.kinesis#ChannelSummary": { "type": "structure", "members": { - "StreamName": { - "target": "com.amazonaws.kinesis#StreamName", + "ChannelName": { + "target": "com.amazonaws.kinesis#ChannelName", "traits": { - "smithy.api#documentation": "The name of the stream to delete.
" + "smithy.api#documentation": "The name of the channel.
", + "smithy.api#required": {} } }, - "EnforceConsumerDeletion": { - "target": "com.amazonaws.kinesis#BooleanObject", + "ChannelARN": { + "target": "com.amazonaws.kinesis#ChannelARN", "traits": { - "smithy.api#documentation": "If this parameter is unset (null) or if you set it to false,\n and the stream has registered consumers, the call to DeleteStream fails\n with a ResourceInUseException.
The Amazon Resource Name (ARN) of the channel.
", + "smithy.api#required": {} } }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "ChannelId": { + "target": "com.amazonaws.kinesis#ChannelId", "traits": { - "smithy.api#documentation": "The ARN of the stream.
", - "smithy.rules#contextParam": { - "name": "StreamARN" - } + "smithy.api#documentation": "The unique identifier of the channel.
", + "smithy.api#required": {} } }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "ChannelStatus": { + "target": "com.amazonaws.kinesis#ChannelStatus", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The current status of the channel. Valid values:
\n\n CREATING - The channel is being created.
\n ACTIVE - The channel is ready to deliver records.
\n UPDATING - The channel configuration is being updated.
\n DELETING - The channel is being deleted.
\n FAILED - See ChannelStatusReason for the failure cause.
Represents the input for DeleteStream.
", - "smithy.api#input": {} - } - }, - "com.amazonaws.kinesis#DeregisterStreamConsumer": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#DeregisterStreamConsumerInput" - }, - "output": { - "target": "smithy.api#Unit" - }, - "errors": [ - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" }, - { - "target": "com.amazonaws.kinesis#LimitExceededException" - }, - { - "target": "com.amazonaws.kinesis#ResourceNotFoundException" - } - ], - "traits": { - "smithy.api#documentation": "To deregister a consumer, provide its ARN. Alternatively, you can provide the ARN of\n the data stream and the name you gave the consumer when you registered it. You may also\n provide all three parameters, as long as they don't conflict with each other. If you\n don't know the name or ARN of the consumer that you want to deregister, you can use the\n ListStreamConsumers operation to get a list of the descriptions of\n all the consumers that are currently registered with a given data stream. The\n description of a consumer contains its name and ARN.
\nThis operation has a limit of five transactions per second per stream.
", - "smithy.rules#staticContextParams": { - "OperationType": { - "value": "control" - } - } - } - }, - "com.amazonaws.kinesis#DeregisterStreamConsumerInput": { - "type": "structure", - "members": { - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "ChannelStatusReason": { + "target": "com.amazonaws.kinesis#ChannelStatusReason", "traits": { - "smithy.api#documentation": "The ARN of the Kinesis data stream that the consumer is registered with. For more\n information, see Amazon Resource Names (ARNs) and Amazon Web Services Service\n Namespaces.
", - "smithy.rules#contextParam": { - "name": "StreamARN" - } + "smithy.api#documentation": "A message describing the reason for a FAILED status.
The name that you gave to the consumer.
" + "smithy.api#documentation": "The time at which the channel was created.
", + "smithy.api#required": {} } }, - "ConsumerARN": { - "target": "com.amazonaws.kinesis#ConsumerARN", + "ChannelDestinationType": { + "target": "com.amazonaws.kinesis#ChannelDestinationType", "traits": { - "smithy.api#documentation": "The ARN returned by Kinesis Data Streams when you registered the consumer. If you\n don't know the ARN of the consumer that you want to deregister, you can use the\n ListStreamConsumers operation to get a list of the descriptions of all the consumers\n that are currently registered with a given data stream. The description of a consumer\n contains its ARN.
", - "smithy.rules#contextParam": { - "name": "ConsumerARN" - } + "smithy.api#documentation": "The destination type of the channel. Valid values:
\n\n S3 - Delivery to a general purpose Amazon S3 bucket.
\n S3_TABLES - Delivery to streaming tables on Apache Iceberg.
Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The source streams associated with the channel.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#input": {} + "smithy.api#documentation": "A summary of a channel, returned by ListChannels.
" } }, - "com.amazonaws.kinesis#DescribeAccountSettings": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#DescribeAccountSettingsInput" - }, - "output": { - "target": "com.amazonaws.kinesis#DescribeAccountSettingsOutput" - }, - "errors": [ - { - "target": "com.amazonaws.kinesis#LimitExceededException" - } - ], - "traits": { - "smithy.api#documentation": "Describes the account-level settings for Amazon Kinesis Data Streams. This operation returns information about the minimum throughput billing commitments and other account-level configurations.
\nThis API has a call limit of 5 transactions per second (TPS) for each Amazon Web Services account. TPS over 5 will initiate the LimitExceededException.
The shard ID of the existing child shard of the current shard.
", + "smithy.api#required": {} + } + }, + "ParentShards": { + "target": "com.amazonaws.kinesis#ShardIdList", + "traits": { + "smithy.api#documentation": "The current shard that is the parent of the existing child shard.
", + "smithy.api#required": {} + } + }, + "HashKeyRange": { + "target": "com.amazonaws.kinesis#HashKeyRange", + "traits": { + "smithy.api#required": {} + } + } + }, "traits": { - "smithy.api#input": {} + "smithy.api#documentation": "Output parameter of the GetRecords API. The existing child shard of the current\n shard.
" } }, - "com.amazonaws.kinesis#DescribeAccountSettingsOutput": { + "com.amazonaws.kinesis#ChildShardList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#ChildShard" + } + }, + "com.amazonaws.kinesis#CloudWatchLogGroupName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 512 + }, + "smithy.api#pattern": "^[\\.\\-_/#A-Za-z0-9]+$" + } + }, + "com.amazonaws.kinesis#CloudWatchLogStreamName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 512 + }, + "smithy.api#pattern": "^[^:*]*$" + } + }, + "com.amazonaws.kinesis#CloudWatchLogs": { "type": "structure", "members": { - "MinimumThroughputBillingCommitment": { - "target": "com.amazonaws.kinesis#MinimumThroughputBillingCommitmentOutput", + "Enabled": { + "target": "com.amazonaws.kinesis#BooleanObject", "traits": { - "smithy.api#documentation": "The current configuration of the minimum throughput billing commitment for your Amazon Web Services account.
" + "smithy.api#documentation": "Specifies whether logging to Amazon CloudWatch Logs is enabled.
", + "smithy.api#required": {} + } + }, + "LogGroupName": { + "target": "com.amazonaws.kinesis#CloudWatchLogGroupName", + "traits": { + "smithy.api#documentation": "The name of the Amazon CloudWatch Logs log group. Defaults to /aws/kinesis/{channelName}/{channelId}.
The name of the Amazon CloudWatch Logs log stream. Defaults to DestinationDelivery.
The Amazon CloudWatch Logs settings for channel logging.
" } }, - "com.amazonaws.kinesis#DescribeLimits": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#DescribeLimitsInput" - }, - "output": { - "target": "com.amazonaws.kinesis#DescribeLimitsOutput" - }, - "errors": [ - { - "target": "com.amazonaws.kinesis#LimitExceededException" + "com.amazonaws.kinesis#CloudWatchLogsUpdateInput": { + "type": "structure", + "members": { + "Enabled": { + "target": "com.amazonaws.kinesis#BooleanObject", + "traits": { + "smithy.api#documentation": "Specifies whether logging to Amazon CloudWatch Logs is enabled.
", + "smithy.api#required": {} + } + }, + "LogGroupName": { + "target": "com.amazonaws.kinesis#CloudWatchLogGroupName", + "traits": { + "smithy.api#documentation": "The name of the Amazon CloudWatch Logs log group.
" + } + }, + "LogStreamName": { + "target": "com.amazonaws.kinesis#CloudWatchLogStreamName", + "traits": { + "smithy.api#documentation": "The name of the Amazon CloudWatch Logs log stream.
" + } } - ], + }, "traits": { - "smithy.api#documentation": "Describes the shard limits and usage for the account.
\nIf you update your account limits, the old limits might be returned for a few\n minutes.
\nThis operation has a limit of one transaction per second per account.
", - "smithy.rules#staticContextParams": { - "OperationType": { - "value": "control" + "smithy.api#documentation": "The updated Amazon CloudWatch Logs settings for a channel.
" + } + }, + "com.amazonaws.kinesis#Consumer": { + "type": "structure", + "members": { + "ConsumerName": { + "target": "com.amazonaws.kinesis#ConsumerName", + "traits": { + "smithy.api#documentation": "The name of the consumer is something you choose when you register the\n consumer.
", + "smithy.api#required": {} + } + }, + "ConsumerARN": { + "target": "com.amazonaws.kinesis#ConsumerARN", + "traits": { + "smithy.api#documentation": "When you register a consumer, Kinesis Data Streams generates an ARN for it. You need\n this ARN to be able to call SubscribeToShard.
\nIf you delete a consumer and then create a new one with the same name, it won't have\n the same ARN. That's because consumer ARNs contain the creation timestamp. This is\n important to keep in mind if you have IAM policies that reference consumer ARNs.
", + "smithy.api#required": {} + } + }, + "ConsumerStatus": { + "target": "com.amazonaws.kinesis#ConsumerStatus", + "traits": { + "smithy.api#documentation": "A consumer can't read data while in the CREATING or DELETING\n states.
An object that represents the details of the consumer you registered. This type of\n object is returned by RegisterStreamConsumer.
" } }, - "com.amazonaws.kinesis#DescribeLimitsInput": { - "type": "structure", - "members": {}, + "com.amazonaws.kinesis#ConsumerARN": { + "type": "string", "traits": { - "smithy.api#input": {} + "smithy.api#length": { + "min": 1, + "max": 2048 + }, + "smithy.api#pattern": "^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+$" } }, - "com.amazonaws.kinesis#DescribeLimitsOutput": { + "com.amazonaws.kinesis#ConsumerCountObject": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 0, + "max": 1000000 + } + } + }, + "com.amazonaws.kinesis#ConsumerDescription": { "type": "structure", "members": { - "ShardLimit": { - "target": "com.amazonaws.kinesis#ShardCountObject", + "ConsumerName": { + "target": "com.amazonaws.kinesis#ConsumerName", "traits": { - "smithy.api#documentation": "The maximum number of shards.
", + "smithy.api#documentation": "The name of the consumer is something you choose when you register the\n consumer.
", "smithy.api#required": {} } }, - "OpenShardCount": { - "target": "com.amazonaws.kinesis#ShardCountObject", + "ConsumerARN": { + "target": "com.amazonaws.kinesis#ConsumerARN", "traits": { - "smithy.api#documentation": "The number of open shards.
", + "smithy.api#documentation": "When you register a consumer, Kinesis Data Streams generates an ARN for it. You need\n this ARN to be able to call SubscribeToShard.
\nIf you delete a consumer and then create a new one with the same name, it won't have\n the same ARN. That's because consumer ARNs contain the creation timestamp. This is\n important to keep in mind if you have IAM policies that reference consumer ARNs.
", "smithy.api#required": {} } }, - "OnDemandStreamCount": { - "target": "com.amazonaws.kinesis#OnDemandStreamCountObject", + "ConsumerStatus": { + "target": "com.amazonaws.kinesis#ConsumerStatus", "traits": { - "smithy.api#documentation": "Indicates the number of data streams with the on-demand capacity mode.
", + "smithy.api#documentation": "A consumer can't read data while in the CREATING or DELETING\n states.
The maximum number of data streams with the on-demand capacity mode.
", + "smithy.api#documentation": "", + "smithy.api#required": {} + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", + "traits": { + "smithy.api#documentation": "The ARN of the stream with which you registered the consumer.
", "smithy.api#required": {} } } }, "traits": { - "smithy.api#output": {} + "smithy.api#documentation": "An object that represents the details of a registered consumer. This type of object is\n returned by DescribeStreamConsumer.
" } }, - "com.amazonaws.kinesis#DescribeStream": { + "com.amazonaws.kinesis#ConsumerList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#Consumer" + } + }, + "com.amazonaws.kinesis#ConsumerName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 128 + }, + "smithy.api#pattern": "^[a-zA-Z0-9_.-]+$" + } + }, + "com.amazonaws.kinesis#ConsumerStatus": { + "type": "enum", + "members": { + "CREATING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CREATING" + } + }, + "DELETING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DELETING" + } + }, + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + } + } + }, + "com.amazonaws.kinesis#CreateChannel": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#DescribeStreamInput" + "target": "com.amazonaws.kinesis#CreateChannelInput" }, "output": { - "target": "com.amazonaws.kinesis#DescribeStreamOutput" + "target": "com.amazonaws.kinesis#CreateChannelOutput" }, "errors": [ { @@ -783,86 +824,227 @@ { "target": "com.amazonaws.kinesis#InvalidArgumentException" }, + { + "target": "com.amazonaws.kinesis#KMSAccessDeniedException" + }, + { + "target": "com.amazonaws.kinesis#KMSDisabledException" + }, + { + "target": "com.amazonaws.kinesis#KMSInvalidStateException" + }, + { + "target": "com.amazonaws.kinesis#KMSNotFoundException" + }, + { + "target": "com.amazonaws.kinesis#KMSOptInRequired" + }, + { + "target": "com.amazonaws.kinesis#KMSThrottlingException" + }, { "target": "com.amazonaws.kinesis#LimitExceededException" }, + { + "target": "com.amazonaws.kinesis#ResourceInUseException" + }, { "target": "com.amazonaws.kinesis#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.kinesis#ValidationException" } ], "traits": { - "smithy.api#documentation": "Describes the specified Kinesis data stream.
\nThis API has been revised. It's highly recommended that you use the DescribeStreamSummary API to get a summarized description of the\n specified Kinesis data stream and the ListShards API to list the\n shards in a specified data stream and obtain information about each shard.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
The information returned includes the stream name, Amazon Resource Name (ARN),\n creation time, enhanced metric configuration, and shard map. The shard map is an array\n of shard objects. For each shard object, there is the hash key and sequence number\n ranges that the shard spans, and the IDs of any earlier shards that played in a role in\n creating the shard. Every record ingested in the stream is identified by a sequence\n number, which is assigned when the record is put into the stream.
\nYou can limit the number of shards returned by each call. For more information, see\n Retrieving\n Shards from a Stream in the Amazon Kinesis Data Streams Developer\n Guide.
\nThere are no guarantees about the chronological order shards returned. To process\n shards in chronological order, use the ID of the parent shard to track the lineage to\n the oldest shard.
\nThis operation has a limit of 10 transactions per second per account.
", - "smithy.rules#staticContextParams": { - "OperationType": { - "value": "control" - } - }, - "smithy.test#smokeTests": [ + "smithy.api#documentation": "Creates a channel that delivers records from a Kinesis data stream to a destination. A channel reads records from the specified stream and writes them to streaming tables on Apache Iceberg (Amazon S3 Tables) or to a general purpose Amazon S3 bucket.
\nYou must specify either S3DestinationConfiguration or S3TablesDestinationConfiguration, but not both.
To use this operation, you must have permission to pass the specified service execution IAM role to Amazon Kinesis Data Streams (the iam:PassRole permission on that role).
Creating a channel is an asynchronous operation. Upon receiving the request, Amazon Kinesis Data Streams returns immediately with the channel in the CREATING state. After provisioning is complete, Amazon Kinesis Data Streams sets the state to ACTIVE. You can use DescribeChannel to check the current state.
This operation is only supported for data streams with the on-demand capacity mode.
\nThis operation has a call limit of 5 transactions per second (TPS) for each Amazon Web Services account. Exceeding 5 TPS results in a LimitExceededException.
To get the description of a registered consumer, provide the ARN of the consumer.\n Alternatively, you can provide the ARN of the data stream and the name you gave the\n consumer when you registered it. You may also provide all three parameters, as long as\n they don't conflict with each other. If you don't know the name or ARN of the consumer\n that you want to describe, you can use the ListStreamConsumers\n operation to get a list of the descriptions of all the consumers that are currently\n registered with a given data stream.
\nThis operation has a limit of 20 transactions per second per stream.
\nWhen making a cross-account call with DescribeStreamConsumer, make sure to provide the ARN of the consumer.
The ARN of the Kinesis data stream that the consumer is registered with. For more\n information, see Amazon Resource Names (ARNs) and Amazon Web Services Service\n Namespaces.
", - "smithy.rules#contextParam": { - "name": "StreamARN" - } + "smithy.api#documentation": "The name of the channel. The name is unique within your Amazon Web Services account and Amazon Web Services Region.
", + "smithy.api#required": {} } }, - "ConsumerName": { - "target": "com.amazonaws.kinesis#ConsumerName", + "ServiceExecutionRoleARN": { + "target": "com.amazonaws.kinesis#RoleARN", "traits": { - "smithy.api#documentation": "The name that you gave to the consumer.
" + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the IAM role that Amazon Kinesis Data Streams assumes to write records to the destination.
", + "smithy.api#required": {} } }, - "ConsumerARN": { - "target": "com.amazonaws.kinesis#ConsumerARN", + "StreamConfigurationList": { + "target": "com.amazonaws.kinesis#ChannelStreamConfigurationList", "traits": { - "smithy.api#documentation": "The ARN returned by Kinesis Data Streams when you registered the consumer.
", - "smithy.rules#contextParam": { - "name": "ConsumerARN" - } + "smithy.api#documentation": "The source stream configuration for the channel. Currently, one stream is supported per channel.
", + "smithy.api#required": {} } }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "S3DestinationConfiguration": { + "target": "com.amazonaws.kinesis#S3DestinationConfiguration", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The configuration for delivery to a general purpose Amazon S3 bucket. You must specify either S3DestinationConfiguration or S3TablesDestinationConfiguration, but not both.
The configuration for delivery to streaming tables on Apache Iceberg in Amazon S3 Tables. You must specify either S3DestinationConfiguration or S3TablesDestinationConfiguration, but not both.
The server-side encryption configuration that uses an Amazon Web Services KMS key to encrypt data delivered to the destination.
" + } + }, + "Tags": { + "target": "com.amazonaws.kinesis#TagMap", + "traits": { + "smithy.api#documentation": "A set of key-value pairs to assign to the channel. A tag consists of a required key and an optional value.
" + } + }, + "LoggingConfiguration": { + "target": "com.amazonaws.kinesis#ChannelLoggingConfiguration", + "traits": { + "smithy.api#documentation": "The Amazon CloudWatch Logs configuration for the channel.
" } } }, @@ -911,13 +1111,13 @@ "smithy.api#input": {} } }, - "com.amazonaws.kinesis#DescribeStreamConsumerOutput": { + "com.amazonaws.kinesis#CreateChannelOutput": { "type": "structure", "members": { - "ConsumerDescription": { - "target": "com.amazonaws.kinesis#ConsumerDescription", + "ChannelDescription": { + "target": "com.amazonaws.kinesis#ChannelDescription", "traits": { - "smithy.api#documentation": "An object that represents the details of the consumer.
", + "smithy.api#documentation": "The configuration and current status of the channel.
", "smithy.api#required": {} } } @@ -926,83 +1126,130 @@ "smithy.api#output": {} } }, - "com.amazonaws.kinesis#DescribeStreamInput": { + "com.amazonaws.kinesis#CreateStream": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#CreateStreamInput" + }, + "output": { + "target": "smithy.api#Unit" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ResourceInUseException" + }, + { + "target": "com.amazonaws.kinesis#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "Creates a Kinesis data stream. A stream captures and transports data records that are\n continuously emitted from different data sources or producers.\n Scale-out within a stream is explicitly supported by means of shards, which are uniquely\n identified groups of data records in a stream.
\nYou can create your data stream using either on-demand or provisioned capacity mode. Data streams with an on-demand mode require no capacity planning and automatically scale to handle gigabytes of write and read throughput per minute. With the on-demand mode, Kinesis Data Streams automatically manages the shards in order to provide the necessary throughput.
\nIf you'd still like to proactively scale your on-demand data stream\u2019s capacity, you can unlock the warm throughput feature for on-demand data streams by enabling MinimumThroughputBillingCommitment for your account. Once your account has MinimumThroughputBillingCommitment enabled, you can specify the warm throughput in MiB per second that your stream can support in writes.
For the data streams with a provisioned mode, you must specify the number of shards for the data stream. Each shard can support reads up to five transactions per second, up to a maximum data read total of 2 MiB per second. Each shard can support writes up to 1,000 records per second, up to a maximum data write total of 1 MiB per second. If the amount of data input increases or decreases, you can add or remove shards.
\nThe stream name identifies the stream. The name is scoped to the Amazon Web Services\n account used by the application. It is also scoped by Amazon Web Services Region. That\n is, two streams in two different accounts can have the same name, and two streams in the\n same account, but in two different Regions, can have the same name.
\n\n CreateStream is an asynchronous operation. Upon receiving a\n CreateStream request, Kinesis Data Streams immediately returns and sets\n the stream status to CREATING. After the stream is created, Kinesis Data\n Streams sets the stream status to ACTIVE. You should perform read and write\n operations only on an ACTIVE stream.
You receive a LimitExceededException when making a\n CreateStream request when you try to do one of the following:
Have more than five streams in the CREATING state at any point in\n time.
Create more shards than are authorized for your account.
\nFor the default shard or on-demand throughput limits for an Amazon Web Services account, see Amazon Kinesis Data Streams Limits in the Amazon Kinesis Data Streams Developer Guide. To increase this limit, contact Amazon Web Services Support.
\nYou can use DescribeStreamSummary to check the stream status, which\n is returned in StreamStatus.
\n CreateStream has a limit of five transactions per second per\n account.
\nYou can add tags to the stream when making a CreateStream request by setting the Tags parameter. If you pass the Tags parameter, in addition to having the kinesis:CreateStream permission, you must also have the kinesis:AddTagsToStream permission for the stream that will be created. The kinesis:TagResource permission won\u2019t work to tag streams on creation. Tags will take effect from the CREATING status of the stream, but you can't make any updates to the tags until the stream is in ACTIVE state.
The name of the stream to describe.
" + "smithy.api#documentation": "A name to identify the stream. The stream name is scoped to the Amazon Web Services\n account used by the application that creates the stream. It is also scoped by Amazon Web Services Region. That is, two streams in two different Amazon Web Services accounts\n can have the same name. Two streams in the same Amazon Web Services account but in two\n different Regions can also have the same name.
", + "smithy.api#required": {} } }, - "Limit": { - "target": "com.amazonaws.kinesis#DescribeStreamInputLimit", + "ShardCount": { + "target": "com.amazonaws.kinesis#PositiveIntegerObject", "traits": { - "smithy.api#documentation": "The maximum number of shards to return in a single call. The default value is 100. If\n you specify a value greater than 100, at most 100 results are returned.
" + "smithy.api#documentation": "The number of shards that the stream will use. The throughput of the stream is a\n function of the number of shards; more shards are required for greater provisioned\n throughput.
" } }, - "ExclusiveStartShardId": { - "target": "com.amazonaws.kinesis#ShardId", + "StreamModeDetails": { + "target": "com.amazonaws.kinesis#StreamModeDetails", "traits": { - "smithy.api#documentation": "The shard ID of the shard to start with.
\nSpecify this parameter to indicate that you want to describe the stream starting with\n the shard whose ID immediately follows ExclusiveStartShardId.
If you don't specify this parameter, the default behavior for\n DescribeStream is to describe the stream starting with the first shard\n in the stream.
Indicates the capacity mode of the data stream. Currently, in Kinesis Data Streams,\n you can choose between an on-demand capacity mode and a\n provisioned capacity mode for your data\n streams.
" } }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "Tags": { + "target": "com.amazonaws.kinesis#TagMap", "traits": { - "smithy.api#documentation": "The ARN of the stream.
", - "smithy.rules#contextParam": { - "name": "StreamARN" - } + "smithy.api#documentation": "A set of up to 50 key-value pairs to use to create the tags. A tag consists of a required key and an optional value.
" } }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "WarmThroughputMiBps": { + "target": "com.amazonaws.kinesis#NaturalIntegerObject", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The target warm throughput in MB/s that the stream should be scaled to handle. This represents the throughput capacity that will be immediately available for write operations.
" + } + }, + "MaxRecordSizeInKiB": { + "target": "com.amazonaws.kinesis#MaxRecordSizeInKiB", + "traits": { + "smithy.api#documentation": "The maximum record size of a single record in kibibyte (KiB) that you can write to, and read from a stream.
" } } }, "traits": { - "smithy.api#documentation": "Represents the input for DescribeStream.
Represents the input for CreateStream.
The current status of the stream, the stream Amazon Resource Name (ARN), an array of\n shard objects that comprise the stream, and whether there are more shards\n available.
", + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the dead-letter queue Amazon S3 bucket.
", + "smithy.api#required": {} + } + }, + "ExpectedBucketOwner": { + "target": "com.amazonaws.kinesis#ExpectedBucketOwner", + "traits": { + "smithy.api#documentation": "The Amazon Web Services account ID of the expected owner of the dead-letter queue bucket.
", "smithy.api#required": {} } + }, + "ErrorOutputPrefix": { + "target": "com.amazonaws.kinesis#S3ErrorOutputPrefix", + "traits": { + "smithy.api#documentation": "The Amazon S3 key prefix for error records.
" + } } }, "traits": { - "smithy.api#documentation": "Represents the output for DescribeStream.
The Amazon S3 dead-letter queue configuration for records that cannot be delivered.
" } }, - "com.amazonaws.kinesis#DescribeStreamSummary": { + "com.amazonaws.kinesis#DecreaseStreamRetentionPeriod": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#DescribeStreamSummaryInput" + "target": "com.amazonaws.kinesis#DecreaseStreamRetentionPeriodInput" }, "output": { - "target": "com.amazonaws.kinesis#DescribeStreamSummaryOutput" + "target": "smithy.api#Unit" }, "errors": [ { @@ -1014,12 +1261,15 @@ { "target": "com.amazonaws.kinesis#LimitExceededException" }, + { + "target": "com.amazonaws.kinesis#ResourceInUseException" + }, { "target": "com.amazonaws.kinesis#ResourceNotFoundException" } ], "traits": { - "smithy.api#documentation": "Provides a summarized description of the specified Kinesis data stream without the\n shard list.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
The information returned includes the stream name, Amazon Resource Name (ARN), status,\n record retention period, approximate creation time, monitoring, encryption details, and\n open shard count.
\n\n DescribeStreamSummary has a limit of 20 transactions per second per\n account.
", + "smithy.api#documentation": "Decreases the Kinesis data stream's retention period, which is the length of time data\n records are accessible after they are added to the stream. The minimum value of a\n stream's retention period is 24 hours.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
This operation may result in lost data. For example, if the stream's retention period\n is 48 hours and is decreased to 24 hours, any data already in the stream that is older\n than 24 hours is inaccessible.
", "smithy.rules#staticContextParams": { "OperationType": { "value": "control" @@ -1027,13 +1277,20 @@ } } }, - "com.amazonaws.kinesis#DescribeStreamSummaryInput": { + "com.amazonaws.kinesis#DecreaseStreamRetentionPeriodInput": { "type": "structure", "members": { "StreamName": { "target": "com.amazonaws.kinesis#StreamName", "traits": { - "smithy.api#documentation": "The name of the stream to describe.
" + "smithy.api#documentation": "The name of the stream to modify.
" + } + }, + "RetentionPeriodHours": { + "target": "com.amazonaws.kinesis#RetentionPeriodHours", + "traits": { + "smithy.api#documentation": "The new retention period of the stream, in hours. Must be less than the current\n retention period.
", + "smithy.api#required": {} } }, "StreamARN": { @@ -1056,31 +1313,78 @@ } }, "traits": { + "smithy.api#documentation": "Represents the input for DecreaseStreamRetentionPeriod.
", "smithy.api#input": {} } }, - "com.amazonaws.kinesis#DescribeStreamSummaryOutput": { + "com.amazonaws.kinesis#DeleteChannel": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#DeleteChannelInput" + }, + "output": { + "target": "smithy.api#Unit" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#AccessDeniedException" + }, + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.kinesis#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "Deletes the specified channel. Deleting a channel stops delivery from the source stream to the destination. Data already delivered to the destination is not deleted.
\nA stream cannot be deleted while it has active channels. To delete the stream, first delete all channels attached to it. To find them, use ListChannels with a stream filter.
\nThis operation has a call limit of 5 transactions per second (TPS) for each Amazon Web Services account. Exceeding 5 TPS results in a LimitExceededException.
A StreamDescriptionSummary containing information about the\n stream.
", - "smithy.api#required": {} + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the channel to delete.
", + "smithy.api#required": {}, + "smithy.rules#contextParam": { + "name": "ChannelARN" + } } } }, "traits": { - "smithy.api#output": {} + "smithy.api#input": {} } }, - "com.amazonaws.kinesis#DisableEnhancedMonitoring": { + "com.amazonaws.kinesis#DeleteResourcePolicy": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#DisableEnhancedMonitoringInput" + "target": "com.amazonaws.kinesis#DeleteResourcePolicyInput" }, "output": { - "target": "com.amazonaws.kinesis#EnhancedMonitoringOutput" + "target": "smithy.api#Unit" }, "errors": [ { @@ -1100,7 +1404,7 @@ } ], "traits": { - "smithy.api#documentation": "Disables enhanced monitoring.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
Delete a policy for the specified data stream or consumer. Request patterns can be one of the following:
\nData stream pattern: arn:aws.*:kinesis:.*:\\d{12}:.*stream/\\S+\n
Consumer pattern: ^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+\n
The name of the Kinesis data stream for which to disable enhanced monitoring.
" - } - }, - "ShardLevelMetrics": { - "target": "com.amazonaws.kinesis#MetricsNameList", - "traits": { - "smithy.api#documentation": "List of shard-level metrics to disable.
\nThe following are the valid shard-level metrics. The value \"ALL\" disables\n every metric.
\n IncomingBytes\n
\n IncomingRecords\n
\n OutgoingBytes\n
\n OutgoingRecords\n
\n WriteProvisionedThroughputExceeded\n
\n ReadProvisionedThroughputExceeded\n
\n IteratorAgeMilliseconds\n
\n ALL\n
For more information, see Monitoring the Amazon\n Kinesis Data Streams Service with Amazon CloudWatch in the Amazon\n Kinesis Data Streams Developer Guide.
", - "smithy.api#required": {} - } - }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "ResourceARN": { + "target": "com.amazonaws.kinesis#ResourceARN", "traits": { - "smithy.api#documentation": "The ARN of the stream.
", + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the data stream or consumer.
", + "smithy.api#required": {}, "smithy.rules#contextParam": { - "name": "StreamARN" + "name": "ResourceARN" } } }, @@ -1144,17 +1436,16 @@ } }, "traits": { - "smithy.api#documentation": "Represents the input for DisableEnhancedMonitoring.
", "smithy.api#input": {} } }, - "com.amazonaws.kinesis#EnableEnhancedMonitoring": { + "com.amazonaws.kinesis#DeleteStream": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#EnableEnhancedMonitoringInput" + "target": "com.amazonaws.kinesis#DeleteStreamInput" }, "output": { - "target": "com.amazonaws.kinesis#EnhancedMonitoringOutput" + "target": "smithy.api#Unit" }, "errors": [ { @@ -1174,7 +1465,7 @@ } ], "traits": { - "smithy.api#documentation": "Enables enhanced Kinesis data stream monitoring for shard-level metrics.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
Deletes a Kinesis data stream and all its shards and data. You must shut down any\n applications that are operating on the stream before you delete the stream. If an\n application attempts to operate on a deleted stream, it receives the exception\n ResourceNotFoundException.
When invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
If the stream is in the ACTIVE state, you can delete it. After a\n DeleteStream request, the specified stream is in the\n DELETING state until Kinesis Data Streams completes the\n deletion.
\n Note: Kinesis Data Streams might continue to accept\n data read and write operations, such as PutRecord, PutRecords, and GetRecords, on a stream in the\n DELETING state until the stream deletion is complete.
When you delete a stream, any shards in that stream are also deleted, and any tags are\n dissociated from the stream.
\nYou can use the DescribeStreamSummary operation to check the state\n of the stream, which is returned in StreamStatus.
\n DeleteStream has a limit of five transactions per second per\n account.
", "smithy.rules#staticContextParams": { "OperationType": { "value": "control" @@ -1182,20 +1473,19 @@ } } }, - "com.amazonaws.kinesis#EnableEnhancedMonitoringInput": { + "com.amazonaws.kinesis#DeleteStreamInput": { "type": "structure", "members": { "StreamName": { "target": "com.amazonaws.kinesis#StreamName", "traits": { - "smithy.api#documentation": "The name of the stream for which to enable enhanced monitoring.
" + "smithy.api#documentation": "The name of the stream to delete.
" } }, - "ShardLevelMetrics": { - "target": "com.amazonaws.kinesis#MetricsNameList", + "EnforceConsumerDeletion": { + "target": "com.amazonaws.kinesis#BooleanObject", "traits": { - "smithy.api#documentation": "List of shard-level metrics to enable.
\nThe following are the valid shard-level metrics. The value \"ALL\" enables\n every metric.
\n IncomingBytes\n
\n IncomingRecords\n
\n OutgoingBytes\n
\n OutgoingRecords\n
\n WriteProvisionedThroughputExceeded\n
\n ReadProvisionedThroughputExceeded\n
\n IteratorAgeMilliseconds\n
\n ALL\n
For more information, see Monitoring the Amazon\n Kinesis Data Streams Service with Amazon CloudWatch in the Amazon\n Kinesis Data Streams Developer Guide.
", - "smithy.api#required": {} + "smithy.api#documentation": "If this parameter is unset (null) or if you set it to false,\n and the stream has registered consumers, the call to DeleteStream fails\n with a ResourceInUseException.
Represents the input for EnableEnhancedMonitoring.
", + "smithy.api#documentation": "Represents the input for DeleteStream.
", "smithy.api#input": {} } }, - "com.amazonaws.kinesis#EncryptionType": { - "type": "enum", - "members": { - "NONE": { - "target": "smithy.api#Unit", - "traits": { - "smithy.api#enumValue": "NONE" - } + "com.amazonaws.kinesis#DeregisterStreamConsumer": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#DeregisterStreamConsumerInput" + }, + "output": { + "target": "smithy.api#Unit" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" }, - "KMS": { - "target": "smithy.api#Unit", - "traits": { - "smithy.api#enumValue": "KMS" - } + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ResourceNotFoundException" } - } - }, - "com.amazonaws.kinesis#EnhancedMetrics": { - "type": "structure", - "members": { - "ShardLevelMetrics": { - "target": "com.amazonaws.kinesis#MetricsNameList", - "traits": { - "smithy.api#documentation": "List of shard-level metrics.
\nThe following are the valid shard-level metrics. The value \"ALL\" enhances\n every metric.
\n IncomingBytes\n
\n IncomingRecords\n
\n OutgoingBytes\n
\n OutgoingRecords\n
\n WriteProvisionedThroughputExceeded\n
\n ReadProvisionedThroughputExceeded\n
\n IteratorAgeMilliseconds\n
\n ALL\n
For more information, see Monitoring the Amazon\n Kinesis Data Streams Service with Amazon CloudWatch in the Amazon\n Kinesis Data Streams Developer Guide.
" + ], + "traits": { + "smithy.api#documentation": "To deregister a consumer, provide its ARN. Alternatively, you can provide the ARN of\n the data stream and the name you gave the consumer when you registered it. You may also\n provide all three parameters, as long as they don't conflict with each other. If you\n don't know the name or ARN of the consumer that you want to deregister, you can use the\n ListStreamConsumers operation to get a list of the descriptions of\n all the consumers that are currently registered with a given data stream. The\n description of a consumer contains its name and ARN.
\nThis operation has a limit of five transactions per second per stream.
", + "smithy.rules#staticContextParams": { + "OperationType": { + "value": "control" } } - }, - "traits": { - "smithy.api#documentation": "Represents enhanced metrics types.
" - } - }, - "com.amazonaws.kinesis#EnhancedMonitoringList": { - "type": "list", - "member": { - "target": "com.amazonaws.kinesis#EnhancedMetrics" } }, - "com.amazonaws.kinesis#EnhancedMonitoringOutput": { + "com.amazonaws.kinesis#DeregisterStreamConsumerInput": { "type": "structure", "members": { - "StreamName": { - "target": "com.amazonaws.kinesis#StreamName", + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", "traits": { - "smithy.api#documentation": "The name of the Kinesis data stream.
" + "smithy.api#documentation": "The ARN of the Kinesis data stream that the consumer is registered with. For more\n information, see Amazon Resource Names (ARNs) and Amazon Web Services Service\n Namespaces.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } } }, - "CurrentShardLevelMetrics": { - "target": "com.amazonaws.kinesis#MetricsNameList", + "ConsumerName": { + "target": "com.amazonaws.kinesis#ConsumerName", "traits": { - "smithy.api#documentation": "Represents the current state of the metrics that are in the enhanced state before the\n operation.
" + "smithy.api#documentation": "The name that you gave to the consumer.
" } }, - "DesiredShardLevelMetrics": { - "target": "com.amazonaws.kinesis#MetricsNameList", + "ConsumerARN": { + "target": "com.amazonaws.kinesis#ConsumerARN", "traits": { - "smithy.api#documentation": "Represents the list of all the metrics that would be in the enhanced state after the\n operation.
" + "smithy.api#documentation": "The ARN returned by Kinesis Data Streams when you registered the consumer. If you\n don't know the ARN of the consumer that you want to deregister, you can use the\n ListStreamConsumers operation to get a list of the descriptions of all the consumers\n that are currently registered with a given data stream. The description of a consumer\n contains its ARN.
", + "smithy.rules#contextParam": { + "name": "ConsumerARN" + } } }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", "traits": { - "smithy.api#documentation": "The ARN of the stream.
" + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } } } }, "traits": { - "smithy.api#documentation": "Represents the output for EnableEnhancedMonitoring and DisableEnhancedMonitoring.
" + "smithy.api#input": {} } }, - "com.amazonaws.kinesis#ErrorCode": { - "type": "string" - }, - "com.amazonaws.kinesis#ErrorMessage": { - "type": "string" - }, - "com.amazonaws.kinesis#ExpiredIteratorException": { - "type": "structure", - "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", - "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" + "com.amazonaws.kinesis#DescribeAccountSettings": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#DescribeAccountSettingsInput" + }, + "output": { + "target": "com.amazonaws.kinesis#DescribeAccountSettingsOutput" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#LimitExceededException" + } + ], + "traits": { + "smithy.api#documentation": "Describes the account-level settings for Amazon Kinesis Data Streams. This operation returns information about the minimum throughput billing commitments and other account-level configurations.
\nThis API has a call limit of 5 transactions per second (TPS) for each Amazon Web Services account. TPS over 5 will initiate the LimitExceededException.
The provided iterator exceeds the maximum age allowed.
", - "smithy.api#error": "client" + "smithy.api#input": {} } }, - "com.amazonaws.kinesis#ExpiredNextTokenException": { + "com.amazonaws.kinesis#DescribeAccountSettingsOutput": { "type": "structure", "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage" + "MinimumThroughputBillingCommitment": { + "target": "com.amazonaws.kinesis#MinimumThroughputBillingCommitmentOutput", + "traits": { + "smithy.api#documentation": "The current configuration of the minimum throughput billing commitment for your Amazon Web Services account.
" + } } }, "traits": { - "smithy.api#documentation": "The pagination token passed to the operation is expired.
", - "smithy.api#error": "client" + "smithy.api#output": {} } }, - "com.amazonaws.kinesis#GetRecords": { + "com.amazonaws.kinesis#DescribeChannel": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#GetRecordsInput" + "target": "com.amazonaws.kinesis#DescribeChannelInput" }, "output": { - "target": "com.amazonaws.kinesis#GetRecordsOutput" + "target": "com.amazonaws.kinesis#DescribeChannelOutput" }, "errors": [ { "target": "com.amazonaws.kinesis#AccessDeniedException" }, { - "target": "com.amazonaws.kinesis#ExpiredIteratorException" + "target": "com.amazonaws.kinesis#InvalidArgumentException" }, { - "target": "com.amazonaws.kinesis#InternalFailureException" - }, - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" - }, - { - "target": "com.amazonaws.kinesis#KMSAccessDeniedException" - }, - { - "target": "com.amazonaws.kinesis#KMSDisabledException" - }, - { - "target": "com.amazonaws.kinesis#KMSInvalidStateException" - }, - { - "target": "com.amazonaws.kinesis#KMSNotFoundException" - }, - { - "target": "com.amazonaws.kinesis#KMSOptInRequired" - }, - { - "target": "com.amazonaws.kinesis#KMSThrottlingException" + "target": "com.amazonaws.kinesis#LimitExceededException" }, { - "target": "com.amazonaws.kinesis#ProvisionedThroughputExceededException" + "target": "com.amazonaws.kinesis#ResourceNotFoundException" }, { - "target": "com.amazonaws.kinesis#ResourceNotFoundException" + "target": "com.amazonaws.kinesis#ValidationException" } ], "traits": { - "smithy.api#documentation": "Gets data records from a Kinesis data stream's shard.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
Specify a shard iterator using the ShardIterator parameter. The shard\n iterator specifies the position in the shard from which you want to start reading data\n records sequentially. If there are no records available in the portion of the shard that\n the iterator points to, GetRecords returns an empty list. It might\n take multiple calls to get to a portion of the shard that contains records.
You can scale by provisioning multiple shards per stream while considering service\n limits (for more information, see Amazon Kinesis Data Streams\n Limits in the Amazon Kinesis Data Streams Developer\n Guide). Your application should have one thread per shard, each reading\n continuously from its stream. To read from a stream continually, call GetRecords in a loop. Use GetShardIterator to get the\n shard iterator to specify in the first GetRecords call. GetRecords returns a new shard iterator in\n NextShardIterator. Specify the shard iterator returned in\n NextShardIterator in subsequent calls to GetRecords.\n If the shard has been closed, the shard iterator can't return more data and GetRecords returns null in NextShardIterator.\n You can terminate the loop when the shard is closed, or when the shard iterator reaches\n the record with the sequence number or other attribute that marks it as the last record\n to process.
Each data record can be up to 1 MiB in size by default. Amazon Kinesis Data Streams supports \n large records up to 10 MiB in size, but the average throughput for your stream cannot exceed \n 1 MiB per second. For more information about how large records are handled, see \n Large records. \n Each shard can read up to 2 MiB per second. You can ensure that your calls don't exceed \n the maximum supported size or throughput by using the Limit parameter to \n specify the maximum number of records that GetRecords can return. \n Consider your average record size when determining this limit. The maximum number of records \n that can be returned per call is 10,000.
The size of the data returned by GetRecords varies depending on the\n utilization of the shard. It is recommended that consumer applications retrieve records\n via the GetRecords command using the 5 TPS limit to remain caught up.\n Retrieving records less frequently can lead to consumer applications falling behind. The\n maximum size of data that GetRecords can return is 10 MiB. If a call\n returns this amount of data, subsequent calls made within the next 5 seconds throw\n ProvisionedThroughputExceededException. If there is insufficient\n provisioned throughput on the stream, subsequent calls made within the next 1 second\n throw ProvisionedThroughputExceededException. GetRecords\n doesn't return any data when it throws an exception. For this reason, we recommend that\n you wait 1 second between calls to GetRecords. However, it's possible\n that the application will get exceptions for longer than 1 second.
To detect whether the application is falling behind in processing, you can use the\n MillisBehindLatest response attribute. You can also monitor the stream\n using CloudWatch metrics and other mechanisms (see Monitoring in the Amazon\n Kinesis Data Streams Developer Guide).
Each Amazon Kinesis record includes a value, ApproximateArrivalTimestamp,\n that is set when a stream successfully receives and stores a record. This is commonly\n referred to as a server-side time stamp, whereas a client-side time stamp is set when a\n data producer creates or sends the record to a stream (a data producer is any data\n source putting data records into a stream, for example with PutRecords). The time stamp has millisecond precision. There are no guarantees about the time\n stamp accuracy, or that the time stamp is always increasing. For example, records in a\n shard or across a stream might have time stamps that are out of order.
This operation has a limit of five transactions per second per shard.
", + "smithy.api#documentation": "Describes the specified channel, including its configuration and current status.
\nUse this operation to verify that a channel reached the ACTIVE state after creation, or to diagnose a channel in the FAILED state by reading the ChannelStatusReason.
This operation has a call limit of 5 transactions per second (TPS) for each Amazon Web Services account. Exceeding 5 TPS results in a LimitExceededException.
The position in the shard from which you want to start sequentially reading data\n records. A shard iterator specifies this position using the sequence number of a data\n record in the shard.
", - "smithy.api#required": {} - } - }, - "Limit": { - "target": "com.amazonaws.kinesis#GetRecordsInputLimit", - "traits": { - "smithy.api#documentation": "The maximum number of records to return. Specify a value of up to 10,000. If you\n specify a value that is greater than 10,000, GetRecords throws\n InvalidArgumentException. The default value is 10,000.
The ARN of the stream.
", - "smithy.rules#contextParam": { - "name": "StreamARN" - } - } - }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "ChannelARN": { + "target": "com.amazonaws.kinesis#ChannelARN", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the channel to describe.
", + "smithy.api#required": {}, "smithy.rules#contextParam": { - "name": "StreamId" + "name": "ChannelARN" } } } }, "traits": { - "smithy.api#documentation": "Represents the input for GetRecords.
", "smithy.api#input": {} } }, - "com.amazonaws.kinesis#GetRecordsInputLimit": { - "type": "integer", - "traits": { - "smithy.api#range": { - "min": 1, - "max": 10000 - } - } - }, - "com.amazonaws.kinesis#GetRecordsOutput": { + "com.amazonaws.kinesis#DescribeChannelOutput": { "type": "structure", "members": { - "Records": { - "target": "com.amazonaws.kinesis#RecordList", + "ChannelDescription": { + "target": "com.amazonaws.kinesis#ChannelDescription", "traits": { - "smithy.api#documentation": "The data records retrieved from the shard.
", + "smithy.api#documentation": "The configuration and current status of the channel.
", "smithy.api#required": {} } - }, - "NextShardIterator": { - "target": "com.amazonaws.kinesis#ShardIterator", - "traits": { - "smithy.api#documentation": "The next position in the shard from which to start sequentially reading data records.\n If set to null, the shard has been closed and the requested iterator does\n not return any more data.
The number of milliseconds the GetRecords response is from the tip\n of the stream, indicating how far behind current time the consumer is. A value of zero\n indicates that record processing is caught up, and there are no new records to process\n at this moment.
" - } - }, - "ChildShards": { - "target": "com.amazonaws.kinesis#ChildShardList", - "traits": { - "smithy.api#documentation": "The list of the current shard's child shards, returned in the GetRecords\n API's response only when the end of the current shard is reached.
Represents the output for GetRecords.
", "smithy.api#output": {} } }, - "com.amazonaws.kinesis#GetResourcePolicy": { + "com.amazonaws.kinesis#DescribeLimits": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#GetResourcePolicyInput" + "target": "com.amazonaws.kinesis#DescribeLimitsInput" }, "output": { - "target": "com.amazonaws.kinesis#GetResourcePolicyOutput" + "target": "com.amazonaws.kinesis#DescribeLimitsOutput" }, "errors": [ - { - "target": "com.amazonaws.kinesis#AccessDeniedException" - }, - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" - }, { "target": "com.amazonaws.kinesis#LimitExceededException" - }, - { - "target": "com.amazonaws.kinesis#ResourceInUseException" - }, - { - "target": "com.amazonaws.kinesis#ResourceNotFoundException" } ], "traits": { - "smithy.api#documentation": "Returns a policy attached to the specified data stream or consumer. Request patterns can be one of the following:
\nData stream pattern: arn:aws.*:kinesis:.*:\\d{12}:.*stream/\\S+\n
Consumer pattern: ^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+\n
Describes the shard limits and usage for the account.
\nIf you update your account limits, the old limits might be returned for a few\n minutes.
\nThis operation has a limit of one transaction per second per account.
", "smithy.rules#staticContextParams": { "OperationType": { "value": "control" @@ -1496,123 +1824,187 @@ } } }, - "com.amazonaws.kinesis#GetResourcePolicyInput": { + "com.amazonaws.kinesis#DescribeLimitsInput": { "type": "structure", - "members": { - "ResourceARN": { - "target": "com.amazonaws.kinesis#ResourceARN", - "traits": { - "smithy.api#documentation": "The Amazon Resource Name (ARN) of the data stream or consumer.
", - "smithy.api#required": {}, - "smithy.rules#contextParam": { - "name": "ResourceARN" - } - } - }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", - "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } - } - } - }, + "members": {}, "traits": { "smithy.api#input": {} } }, - "com.amazonaws.kinesis#GetResourcePolicyOutput": { + "com.amazonaws.kinesis#DescribeLimitsOutput": { "type": "structure", "members": { - "Policy": { - "target": "com.amazonaws.kinesis#Policy", + "ShardLimit": { + "target": "com.amazonaws.kinesis#ShardCountObject", "traits": { - "smithy.api#documentation": "Details of the resource policy. This is formatted as a JSON string.
", + "smithy.api#documentation": "The maximum number of shards.
", + "smithy.api#required": {} + } + }, + "OpenShardCount": { + "target": "com.amazonaws.kinesis#ShardCountObject", + "traits": { + "smithy.api#documentation": "The number of open shards.
", + "smithy.api#required": {} + } + }, + "OnDemandStreamCount": { + "target": "com.amazonaws.kinesis#OnDemandStreamCountObject", + "traits": { + "smithy.api#documentation": "Indicates the number of data streams with the on-demand capacity mode.
", + "smithy.api#required": {} + } + }, + "OnDemandStreamCountLimit": { + "target": "com.amazonaws.kinesis#OnDemandStreamCountLimitObject", + "traits": { + "smithy.api#documentation": "The maximum number of data streams with the on-demand capacity mode.
", "smithy.api#required": {} } + }, + "ChannelCount": { + "target": "com.amazonaws.kinesis#ChannelCountObject", + "traits": { + "smithy.api#documentation": "The number of channels in the account.
" + } + }, + "ChannelCountLimit": { + "target": "com.amazonaws.kinesis#ChannelCountObject", + "traits": { + "smithy.api#documentation": "The maximum number of channels allowed in the account.
" + } } }, "traits": { "smithy.api#output": {} } }, - "com.amazonaws.kinesis#GetShardIterator": { + "com.amazonaws.kinesis#DescribeStream": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#GetShardIteratorInput" + "target": "com.amazonaws.kinesis#DescribeStreamInput" }, "output": { - "target": "com.amazonaws.kinesis#GetShardIteratorOutput" + "target": "com.amazonaws.kinesis#DescribeStreamOutput" }, "errors": [ { "target": "com.amazonaws.kinesis#AccessDeniedException" }, - { - "target": "com.amazonaws.kinesis#InternalFailureException" - }, { "target": "com.amazonaws.kinesis#InvalidArgumentException" }, { - "target": "com.amazonaws.kinesis#ProvisionedThroughputExceededException" + "target": "com.amazonaws.kinesis#LimitExceededException" }, { "target": "com.amazonaws.kinesis#ResourceNotFoundException" } ], "traits": { - "smithy.api#documentation": "Gets an Amazon Kinesis shard iterator. A shard iterator expires 5 minutes after it is\n returned to the requester.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
A shard iterator specifies the shard position from which to start reading data records\n sequentially. The position is specified using the sequence number of a data record in a\n shard. A sequence number is the identifier associated with every record ingested in the\n stream, and is assigned when a record is put into the stream. Each stream has one or\n more shards.
\nYou must specify the shard iterator type. For example, you can set the\n ShardIteratorType parameter to read exactly from the position denoted\n by a specific sequence number by using the AT_SEQUENCE_NUMBER shard\n iterator type. Alternatively, the parameter can read right after the sequence number by\n using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers\n returned by earlier calls to PutRecord, PutRecords,\n GetRecords, or DescribeStream. In the request,\n you can specify the shard iterator type AT_TIMESTAMP to read records from\n an arbitrary point in time, TRIM_HORIZON to cause\n ShardIterator to point to the last untrimmed record in the shard in the\n system (the oldest data record in the shard), or LATEST so that you always\n read the most recent data in the shard.
When you read repeatedly from a stream, use a GetShardIterator\n request to get the first shard iterator for use in your first GetRecords request and for subsequent reads use the shard iterator returned by the GetRecords request in NextShardIterator. A new shard\n iterator is returned by every GetRecords request in\n NextShardIterator, which you use in the ShardIterator\n parameter of the next GetRecords request.
If a GetShardIterator request is made too often, you receive a\n ProvisionedThroughputExceededException. For more information about\n throughput limits, see GetRecords, and Streams Limits in the\n Amazon Kinesis Data Streams Developer Guide.
If the shard is closed, GetShardIterator returns a valid iterator\n for the last sequence number of the shard. A shard can be closed as a result of using\n SplitShard or MergeShards.
\n\n GetShardIterator has a limit of five transactions per second per\n account per open shard.
", + "smithy.api#documentation": "Describes the specified Kinesis data stream.
\nThis API has been revised. It's highly recommended that you use the DescribeStreamSummary API to get a summarized description of the\n specified Kinesis data stream and the ListShards API to list the\n shards in a specified data stream and obtain information about each shard.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
The information returned includes the stream name, Amazon Resource Name (ARN),\n creation time, enhanced metric configuration, and shard map. The shard map is an array\n of shard objects. For each shard object, there is the hash key and sequence number\n ranges that the shard spans, and the IDs of any earlier shards that played in a role in\n creating the shard. Every record ingested in the stream is identified by a sequence\n number, which is assigned when the record is put into the stream.
\nYou can limit the number of shards returned by each call. For more information, see\n Retrieving\n Shards from a Stream in the Amazon Kinesis Data Streams Developer\n Guide.
\nThere are no guarantees about the chronological order shards returned. To process\n shards in chronological order, use the ID of the parent shard to track the lineage to\n the oldest shard.
\nThis operation has a limit of 10 transactions per second per account.
", "smithy.rules#staticContextParams": { "OperationType": { - "value": "data" - } - } - } - }, - "com.amazonaws.kinesis#GetShardIteratorInput": { - "type": "structure", - "members": { - "StreamName": { - "target": "com.amazonaws.kinesis#StreamName", - "traits": { - "smithy.api#documentation": "The name of the Amazon Kinesis data stream.
" + "value": "control" } }, - "ShardId": { - "target": "com.amazonaws.kinesis#ShardId", - "traits": { - "smithy.api#documentation": "The shard ID of the Kinesis Data Streams shard to get the iterator for.
", - "smithy.api#required": {} + "smithy.test#smokeTests": [ + { + "id": "DescribeStreamFailure", + "params": { + "StreamName": "bogus-stream-name" + }, + "vendorParams": { + "region": "us-west-2" + }, + "vendorParamsShape": "aws.test#AwsVendorParams", + "expect": { + "failure": {} + } } - }, - "ShardIteratorType": { - "target": "com.amazonaws.kinesis#ShardIteratorType", - "traits": { - "smithy.api#documentation": "Determines how the shard iterator is used to start reading data records from the\n shard.
\nThe following are the valid Amazon Kinesis shard iterator types:
\nAT_SEQUENCE_NUMBER - Start reading from the position denoted by a specific\n sequence number, provided in the value\n StartingSequenceNumber.
AFTER_SEQUENCE_NUMBER - Start reading right after the position denoted by a\n specific sequence number, provided in the value\n StartingSequenceNumber.
AT_TIMESTAMP - Start reading from the position denoted by a specific time\n stamp, provided in the value Timestamp.
TRIM_HORIZON - Start reading at the last untrimmed record in the shard in the\n system, which is the oldest data record in the shard.
\nLATEST - Start reading just after the most recent record in the shard, so that\n you always read the most recent data in the shard.
\nTo get the description of a registered consumer, provide the ARN of the consumer.\n Alternatively, you can provide the ARN of the data stream and the name you gave the\n consumer when you registered it. You may also provide all three parameters, as long as\n they don't conflict with each other. If you don't know the name or ARN of the consumer\n that you want to describe, you can use the ListStreamConsumers\n operation to get a list of the descriptions of all the consumers that are currently\n registered with a given data stream.
\nThis operation has a limit of 20 transactions per second per stream.
\nWhen making a cross-account call with DescribeStreamConsumer, make sure to provide the ARN of the consumer.
The sequence number of the data record in the shard from which to start reading. Used\n with shard iterator type AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER.
" + "smithy.api#documentation": "The ARN of the Kinesis data stream that the consumer is registered with. For more\n information, see Amazon Resource Names (ARNs) and Amazon Web Services Service\n Namespaces.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } } }, - "Timestamp": { - "target": "com.amazonaws.kinesis#Timestamp", + "ConsumerName": { + "target": "com.amazonaws.kinesis#ConsumerName", "traits": { - "smithy.api#documentation": "The time stamp of the data record from which to start reading. Used with shard\n iterator type AT_TIMESTAMP. A time stamp is the Unix epoch date with precision in\n milliseconds. For example, 2016-04-04T19:58:46.480-00:00 or\n 1459799926.480. If a record with this exact time stamp does not exist,\n the iterator returned is for the next (later) record. If the time stamp is older than\n the current trim horizon, the iterator returned is for the oldest untrimmed data record\n (TRIM_HORIZON).
The name that you gave to the consumer.
" } }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "ConsumerARN": { + "target": "com.amazonaws.kinesis#ConsumerARN", "traits": { - "smithy.api#documentation": "The ARN of the stream.
", + "smithy.api#documentation": "The ARN returned by Kinesis Data Streams when you registered the consumer.
", "smithy.rules#contextParam": { - "name": "StreamARN" + "name": "ConsumerARN" } } }, @@ -1627,60 +2019,101 @@ } }, "traits": { - "smithy.api#documentation": "Represents the input for GetShardIterator.
The position in the shard from which to start reading data records sequentially. A\n shard iterator specifies this position using the sequence number of a data record in a\n shard.
" + "smithy.api#documentation": "An object that represents the details of the consumer.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "Represents the output for GetShardIterator.
The starting hash key of the hash key range.
", - "smithy.api#required": {} + "smithy.api#documentation": "The name of the stream to describe.
" } }, - "EndingHashKey": { - "target": "com.amazonaws.kinesis#HashKey", + "Limit": { + "target": "com.amazonaws.kinesis#DescribeStreamInputLimit", "traits": { - "smithy.api#documentation": "The ending hash key of the hash key range.
", + "smithy.api#documentation": "The maximum number of shards to return in a single call. The default value is 100. If\n you specify a value greater than 100, at most 100 results are returned.
" + } + }, + "ExclusiveStartShardId": { + "target": "com.amazonaws.kinesis#ShardId", + "traits": { + "smithy.api#documentation": "The shard ID of the shard to start with.
\nSpecify this parameter to indicate that you want to describe the stream starting with\n the shard whose ID immediately follows ExclusiveStartShardId.
If you don't specify this parameter, the default behavior for\n DescribeStream is to describe the stream starting with the first shard\n in the stream.
The ARN of the stream.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } + } + }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } + } + } + }, + "traits": { + "smithy.api#documentation": "Represents the input for DescribeStream.
The current status of the stream, the stream Amazon Resource Name (ARN), an array of\n shard objects that comprise the stream, and whether there are more shards\n available.
", "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "The range of possible hash key values for the shard, which is a set of ordered\n contiguous positive integers.
" + "smithy.api#documentation": "Represents the output for DescribeStream.
Increases the Kinesis data stream's retention period, which is the length of time data\n records are accessible after they are added to the stream. The maximum value of a\n stream's retention period is 8760 hours (365 days).
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
If you choose a longer stream retention period, this operation increases the time\n period during which records that have not yet expired are accessible. However, it does\n not make previous, expired data (older than the stream's previous retention period)\n accessible after the operation has been called. For example, if a stream's retention\n period is set to 24 hours and is increased to 168 hours, any data that is older than 24\n hours remains inaccessible to consumer applications.
", + "smithy.api#documentation": "Provides a summarized description of the specified Kinesis data stream without the\n shard list.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
The information returned includes the stream name, Amazon Resource Name (ARN), status,\n record retention period, approximate creation time, monitoring, encryption details, and\n open shard count.
\n\n DescribeStreamSummary has a limit of 20 transactions per second per\n account.
", "smithy.rules#staticContextParams": { "OperationType": { "value": "control" @@ -1708,20 +2138,13 @@ } } }, - "com.amazonaws.kinesis#IncreaseStreamRetentionPeriodInput": { + "com.amazonaws.kinesis#DescribeStreamSummaryInput": { "type": "structure", "members": { "StreamName": { "target": "com.amazonaws.kinesis#StreamName", "traits": { - "smithy.api#documentation": "The name of the stream to modify.
" - } - }, - "RetentionPeriodHours": { - "target": "com.amazonaws.kinesis#RetentionPeriodHours", - "traits": { - "smithy.api#documentation": "The new retention period of the stream, in hours. Must be more than the current\n retention period.
", - "smithy.api#required": {} + "smithy.api#documentation": "The name of the stream to describe.
" } }, "StreamARN": { @@ -1744,113 +2167,270 @@ } }, "traits": { - "smithy.api#documentation": "Represents the input for IncreaseStreamRetentionPeriod.
", "smithy.api#input": {} } }, - "com.amazonaws.kinesis#InternalFailureException": { - "type": "structure", - "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage" - } - }, - "traits": { - "smithy.api#documentation": "The processing of the request failed because of an unknown error, exception, or\n failure.
", - "smithy.api#error": "server" - } - }, - "com.amazonaws.kinesis#InvalidArgumentException": { + "com.amazonaws.kinesis#DescribeStreamSummaryOutput": { "type": "structure", "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", + "StreamDescriptionSummary": { + "target": "com.amazonaws.kinesis#StreamDescriptionSummary", "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" + "smithy.api#documentation": "A StreamDescriptionSummary containing information about the\n stream.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "A specified parameter exceeds its restrictions, is not supported, or can't be used.\n For more information, see the returned message.
", - "smithy.api#error": "client" + "smithy.api#output": {} } }, - "com.amazonaws.kinesis#KMSAccessDeniedException": { - "type": "structure", - "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", - "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" - } - } + "com.amazonaws.kinesis#DisableEnhancedMonitoring": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#DisableEnhancedMonitoringInput" }, - "traits": { - "smithy.api#documentation": "The ciphertext references a key that doesn't exist or that you don't have access\n to.
", - "smithy.api#error": "client" - } - }, - "com.amazonaws.kinesis#KMSDisabledException": { - "type": "structure", - "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", - "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" + "output": { + "target": "com.amazonaws.kinesis#EnhancedMonitoringOutput" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#AccessDeniedException" + }, + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ResourceInUseException" + }, + { + "target": "com.amazonaws.kinesis#ResourceNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "Disables enhanced monitoring.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
The name of the Kinesis data stream for which to disable enhanced monitoring.
" + } + }, + "ShardLevelMetrics": { + "target": "com.amazonaws.kinesis#MetricsNameList", + "traits": { + "smithy.api#documentation": "List of shard-level metrics to disable.
\nThe following are the valid shard-level metrics. The value \"ALL\" disables\n every metric.
\n IncomingBytes\n
\n IncomingRecords\n
\n OutgoingBytes\n
\n OutgoingRecords\n
\n WriteProvisionedThroughputExceeded\n
\n ReadProvisionedThroughputExceeded\n
\n IteratorAgeMilliseconds\n
\n ALL\n
For more information, see Monitoring the Amazon\n Kinesis Data Streams Service with Amazon CloudWatch in the Amazon\n Kinesis Data Streams Developer Guide.
", + "smithy.api#required": {} + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", + "traits": { + "smithy.api#documentation": "The ARN of the stream.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } + } + }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } } } }, "traits": { - "smithy.api#documentation": "The request was rejected because the specified customer master key (CMK) isn't\n enabled.
", - "smithy.api#error": "client" + "smithy.api#documentation": "Represents the input for DisableEnhancedMonitoring.
", + "smithy.api#input": {} } }, - "com.amazonaws.kinesis#KMSInvalidStateException": { + "com.amazonaws.kinesis#DryRunOperationException": { "type": "structure", "members": { "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", + "target": "com.amazonaws.kinesis#ErrorMessage" + } + }, + "traits": { + "smithy.api#documentation": "The request was rejected because the DryRun parameter was specified.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#EnableEnhancedMonitoring": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#EnableEnhancedMonitoringInput" + }, + "output": { + "target": "com.amazonaws.kinesis#EnhancedMonitoringOutput" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#AccessDeniedException" + }, + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ResourceInUseException" + }, + { + "target": "com.amazonaws.kinesis#ResourceNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "Enables enhanced Kinesis data stream monitoring for shard-level metrics.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
A message that provides information about the error.
" + "smithy.api#documentation": "The name of the stream for which to enable enhanced monitoring.
" + } + }, + "ShardLevelMetrics": { + "target": "com.amazonaws.kinesis#MetricsNameList", + "traits": { + "smithy.api#documentation": "List of shard-level metrics to enable.
\nThe following are the valid shard-level metrics. The value \"ALL\" enables\n every metric.
\n IncomingBytes\n
\n IncomingRecords\n
\n OutgoingBytes\n
\n OutgoingRecords\n
\n WriteProvisionedThroughputExceeded\n
\n ReadProvisionedThroughputExceeded\n
\n IteratorAgeMilliseconds\n
\n ALL\n
For more information, see Monitoring the Amazon\n Kinesis Data Streams Service with Amazon CloudWatch in the Amazon\n Kinesis Data Streams Developer Guide.
", + "smithy.api#required": {} + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", + "traits": { + "smithy.api#documentation": "The ARN of the stream.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } + } + }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } } } }, "traits": { - "smithy.api#documentation": "The request was rejected because the state of the specified resource isn't valid for\n this request. For more information, see How Key State Affects Use of a\n Customer Master Key in the Amazon Web Services Key Management\n Service Developer Guide.
", - "smithy.api#error": "client" + "smithy.api#documentation": "Represents the input for EnableEnhancedMonitoring.
", + "smithy.api#input": {} } }, - "com.amazonaws.kinesis#KMSNotFoundException": { + "com.amazonaws.kinesis#EncryptionType": { + "type": "enum", + "members": { + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + }, + "KMS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KMS" + } + } + } + }, + "com.amazonaws.kinesis#EnhancedMetrics": { "type": "structure", "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", + "ShardLevelMetrics": { + "target": "com.amazonaws.kinesis#MetricsNameList", "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" + "smithy.api#documentation": "List of shard-level metrics.
\nThe following are the valid shard-level metrics. The value \"ALL\" enhances\n every metric.
\n IncomingBytes\n
\n IncomingRecords\n
\n OutgoingBytes\n
\n OutgoingRecords\n
\n WriteProvisionedThroughputExceeded\n
\n ReadProvisionedThroughputExceeded\n
\n IteratorAgeMilliseconds\n
\n ALL\n
For more information, see Monitoring the Amazon\n Kinesis Data Streams Service with Amazon CloudWatch in the Amazon\n Kinesis Data Streams Developer Guide.
" } } }, "traits": { - "smithy.api#documentation": "The request was rejected because the specified entity or resource can't be\n found.
", - "smithy.api#error": "client" + "smithy.api#documentation": "Represents enhanced metrics types.
" } }, - "com.amazonaws.kinesis#KMSOptInRequired": { + "com.amazonaws.kinesis#EnhancedMonitoringList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#EnhancedMetrics" + } + }, + "com.amazonaws.kinesis#EnhancedMonitoringOutput": { "type": "structure", "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", + "StreamName": { + "target": "com.amazonaws.kinesis#StreamName", "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" + "smithy.api#documentation": "The name of the Kinesis data stream.
" + } + }, + "CurrentShardLevelMetrics": { + "target": "com.amazonaws.kinesis#MetricsNameList", + "traits": { + "smithy.api#documentation": "Represents the current state of the metrics that are in the enhanced state before the\n operation.
" + } + }, + "DesiredShardLevelMetrics": { + "target": "com.amazonaws.kinesis#MetricsNameList", + "traits": { + "smithy.api#documentation": "Represents the list of all the metrics that would be in the enhanced state after the\n operation.
" + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", + "traits": { + "smithy.api#documentation": "The ARN of the stream.
" } } }, "traits": { - "smithy.api#documentation": "The Amazon Web Services access key ID needs a subscription for the service.
", - "smithy.api#error": "client" + "smithy.api#documentation": "Represents the output for EnableEnhancedMonitoring and DisableEnhancedMonitoring.
" } }, - "com.amazonaws.kinesis#KMSThrottlingException": { + "com.amazonaws.kinesis#ErrorCode": { + "type": "string" + }, + "com.amazonaws.kinesis#ErrorMessage": { + "type": "string" + }, + "com.amazonaws.kinesis#ExpectedBucketOwner": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 12, + "max": 12 + }, + "smithy.api#pattern": "^\\d{12}$" + } + }, + "com.amazonaws.kinesis#ExpiredIteratorException": { "type": "structure", "members": { "message": { @@ -1861,155 +2441,751 @@ } }, "traits": { - "smithy.api#documentation": "The request was denied due to request throttling. For more information about\n throttling, see Limits in\n the Amazon Web Services Key Management Service Developer\n Guide.
", + "smithy.api#documentation": "The provided iterator exceeds the maximum age allowed.
", "smithy.api#error": "client" } }, - "com.amazonaws.kinesis#KeyId": { + "com.amazonaws.kinesis#ExpiredNextTokenException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage" + } + }, + "traits": { + "smithy.api#documentation": "The pagination token passed to the operation is expired.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#GSRSchemaARN": { "type": "string", "traits": { "smithy.api#length": { "min": 1, - "max": 2048 - } + "max": 512 + }, + "smithy.api#pattern": "^arn:aws[-a-z0-9]*:glue:[-a-z0-9]+:\\d{12}:schema/[-a-zA-Z0-9_$#.]+/[-a-zA-Z0-9_$#.]+$" } }, - "com.amazonaws.kinesis#Kinesis_20131202": { - "type": "service", - "version": "2013-12-02", - "operations": [ + "com.amazonaws.kinesis#GetRecords": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#GetRecordsInput" + }, + "output": { + "target": "com.amazonaws.kinesis#GetRecordsOutput" + }, + "errors": [ { - "target": "com.amazonaws.kinesis#AddTagsToStream" + "target": "com.amazonaws.kinesis#AccessDeniedException" }, { - "target": "com.amazonaws.kinesis#CreateStream" + "target": "com.amazonaws.kinesis#DryRunOperationException" }, { - "target": "com.amazonaws.kinesis#DecreaseStreamRetentionPeriod" - }, - { - "target": "com.amazonaws.kinesis#DeleteResourcePolicy" - }, - { - "target": "com.amazonaws.kinesis#DeleteStream" - }, - { - "target": "com.amazonaws.kinesis#DeregisterStreamConsumer" - }, - { - "target": "com.amazonaws.kinesis#DescribeAccountSettings" - }, - { - "target": "com.amazonaws.kinesis#DescribeLimits" - }, - { - "target": "com.amazonaws.kinesis#DescribeStream" - }, - { - "target": "com.amazonaws.kinesis#DescribeStreamConsumer" - }, - { - "target": "com.amazonaws.kinesis#DescribeStreamSummary" - }, - { - "target": "com.amazonaws.kinesis#DisableEnhancedMonitoring" + "target": "com.amazonaws.kinesis#ExpiredIteratorException" }, { - "target": "com.amazonaws.kinesis#EnableEnhancedMonitoring" + "target": "com.amazonaws.kinesis#InternalFailureException" }, { - "target": "com.amazonaws.kinesis#GetRecords" + "target": "com.amazonaws.kinesis#InvalidArgumentException" }, { - "target": "com.amazonaws.kinesis#GetResourcePolicy" + "target": "com.amazonaws.kinesis#KMSAccessDeniedException" }, { - "target": "com.amazonaws.kinesis#GetShardIterator" + "target": "com.amazonaws.kinesis#KMSDisabledException" }, { - "target": "com.amazonaws.kinesis#IncreaseStreamRetentionPeriod" + "target": "com.amazonaws.kinesis#KMSInvalidStateException" }, { - "target": "com.amazonaws.kinesis#ListShards" + "target": "com.amazonaws.kinesis#KMSNotFoundException" }, { - "target": "com.amazonaws.kinesis#ListStreamConsumers" + "target": "com.amazonaws.kinesis#KMSOptInRequired" }, { - "target": "com.amazonaws.kinesis#ListStreams" + "target": "com.amazonaws.kinesis#KMSThrottlingException" }, { - "target": "com.amazonaws.kinesis#ListTagsForResource" + "target": "com.amazonaws.kinesis#ProvisionedThroughputExceededException" }, { - "target": "com.amazonaws.kinesis#ListTagsForStream" + "target": "com.amazonaws.kinesis#ResourceNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "Gets data records from a Kinesis data stream's shard.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
Specify a shard iterator using the ShardIterator parameter. The shard\n iterator specifies the position in the shard from which you want to start reading data\n records sequentially. If there are no records available in the portion of the shard that\n the iterator points to, GetRecords returns an empty list. It might\n take multiple calls to get to a portion of the shard that contains records.
You can scale by provisioning multiple shards per stream while considering service\n limits (for more information, see Amazon Kinesis Data Streams\n Limits in the Amazon Kinesis Data Streams Developer\n Guide). Your application should have one thread per shard, each reading\n continuously from its stream. To read from a stream continually, call GetRecords in a loop. Use GetShardIterator to get the\n shard iterator to specify in the first GetRecords call. GetRecords returns a new shard iterator in\n NextShardIterator. Specify the shard iterator returned in\n NextShardIterator in subsequent calls to GetRecords.\n If the shard has been closed, the shard iterator can't return more data and GetRecords returns null in NextShardIterator.\n You can terminate the loop when the shard is closed, or when the shard iterator reaches\n the record with the sequence number or other attribute that marks it as the last record\n to process.
Each data record can be up to 1 MiB in size by default. Amazon Kinesis Data Streams supports \n large records up to 10 MiB in size, but the average throughput for your stream cannot exceed \n 1 MiB per second. For more information about how large records are handled, see \n Large records. \n Each shard can read up to 2 MiB per second. You can ensure that your calls don't exceed \n the maximum supported size or throughput by using the Limit parameter to \n specify the maximum number of records that GetRecords can return. \n Consider your average record size when determining this limit. The maximum number of records \n that can be returned per call is 10,000.
The size of the data returned by GetRecords varies depending on the\n utilization of the shard. It is recommended that consumer applications retrieve records\n via the GetRecords command using the 5 TPS limit to remain caught up.\n Retrieving records less frequently can lead to consumer applications falling behind. The\n maximum size of data that GetRecords can return is 10 MiB. If a call\n returns this amount of data, subsequent calls made within the next 5 seconds throw\n ProvisionedThroughputExceededException. If there is insufficient\n provisioned throughput on the stream, subsequent calls made within the next 1 second\n throw ProvisionedThroughputExceededException. GetRecords\n doesn't return any data when it throws an exception. For this reason, we recommend that\n you wait 1 second between calls to GetRecords. However, it's possible\n that the application will get exceptions for longer than 1 second.
To detect whether the application is falling behind in processing, you can use the\n MillisBehindLatest response attribute. You can also monitor the stream\n using CloudWatch metrics and other mechanisms (see Monitoring in the Amazon\n Kinesis Data Streams Developer Guide).
Each Amazon Kinesis record includes a value, ApproximateArrivalTimestamp,\n that is set when a stream successfully receives and stores a record. This is commonly\n referred to as a server-side time stamp, whereas a client-side time stamp is set when a\n data producer creates or sends the record to a stream (a data producer is any data\n source putting data records into a stream, for example with PutRecords). The time stamp has millisecond precision. There are no guarantees about the time\n stamp accuracy, or that the time stamp is always increasing. For example, records in a\n shard or across a stream might have time stamps that are out of order.
This operation has a limit of five transactions per second per shard.
", + "smithy.rules#staticContextParams": { + "OperationType": { + "value": "data" + } + } + } + }, + "com.amazonaws.kinesis#GetRecordsInput": { + "type": "structure", + "members": { + "ShardIterator": { + "target": "com.amazonaws.kinesis#ShardIterator", + "traits": { + "smithy.api#documentation": "The position in the shard from which you want to start sequentially reading data\n records. A shard iterator specifies this position using the sequence number of a data\n record in the shard.
", + "smithy.api#required": {} + } }, - { - "target": "com.amazonaws.kinesis#MergeShards" + "Limit": { + "target": "com.amazonaws.kinesis#GetRecordsInputLimit", + "traits": { + "smithy.api#documentation": "The maximum number of records to return. Specify a value of up to 10,000. If you\n specify a value that is greater than 10,000, GetRecords throws\n InvalidArgumentException. The default value is 10,000.
The ARN of the stream.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } + } }, - { - "target": "com.amazonaws.kinesis#PutRecords" + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } + } }, - { - "target": "com.amazonaws.kinesis#PutResourcePolicy" + "DryRun": { + "target": "com.amazonaws.kinesis#BooleanObject", + "traits": { + "smithy.api#documentation": "Checks if your request will succeed. DryRun is an optional\n parameter.
Represents the input for GetRecords.
", + "smithy.api#input": {} + } + }, + "com.amazonaws.kinesis#GetRecordsInputLimit": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 1, + "max": 10000 + } + } + }, + "com.amazonaws.kinesis#GetRecordsOutput": { + "type": "structure", + "members": { + "Records": { + "target": "com.amazonaws.kinesis#RecordList", + "traits": { + "smithy.api#documentation": "The data records retrieved from the shard.
", + "smithy.api#required": {} + } }, - { - "target": "com.amazonaws.kinesis#RegisterStreamConsumer" + "NextShardIterator": { + "target": "com.amazonaws.kinesis#ShardIterator", + "traits": { + "smithy.api#documentation": "The next position in the shard from which to start sequentially reading data records.\n If set to null, the shard has been closed and the requested iterator does\n not return any more data.
The number of milliseconds the GetRecords response is from the tip\n of the stream, indicating how far behind current time the consumer is. A value of zero\n indicates that record processing is caught up, and there are no new records to process\n at this moment.
" + } }, + "ChildShards": { + "target": "com.amazonaws.kinesis#ChildShardList", + "traits": { + "smithy.api#documentation": "The list of the current shard's child shards, returned in the GetRecords\n API's response only when the end of the current shard is reached.
Represents the output for GetRecords.
", + "smithy.api#output": {} + } + }, + "com.amazonaws.kinesis#GetResourcePolicy": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#GetResourcePolicyInput" + }, + "output": { + "target": "com.amazonaws.kinesis#GetResourcePolicyOutput" + }, + "errors": [ { - "target": "com.amazonaws.kinesis#SplitShard" + "target": "com.amazonaws.kinesis#AccessDeniedException" }, { - "target": "com.amazonaws.kinesis#StartStreamEncryption" + "target": "com.amazonaws.kinesis#InvalidArgumentException" }, { - "target": "com.amazonaws.kinesis#StopStreamEncryption" + "target": "com.amazonaws.kinesis#LimitExceededException" }, { - "target": "com.amazonaws.kinesis#SubscribeToShard" + "target": "com.amazonaws.kinesis#ResourceInUseException" }, { - "target": "com.amazonaws.kinesis#TagResource" + "target": "com.amazonaws.kinesis#ResourceNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "Returns a policy attached to the specified data stream or consumer. Request patterns can be one of the following:
\nData stream pattern: arn:aws.*:kinesis:.*:\\d{12}:.*stream/\\S+\n
Consumer pattern: ^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+\n
The Amazon Resource Name (ARN) of the data stream or consumer.
", + "smithy.api#required": {}, + "smithy.rules#contextParam": { + "name": "ResourceARN" + } + } }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.kinesis#GetResourcePolicyOutput": { + "type": "structure", + "members": { + "Policy": { + "target": "com.amazonaws.kinesis#Policy", + "traits": { + "smithy.api#documentation": "Details of the resource policy. This is formatted as a JSON string.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.kinesis#GetShardIterator": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#GetShardIteratorInput" + }, + "output": { + "target": "com.amazonaws.kinesis#GetShardIteratorOutput" + }, + "errors": [ { - "target": "com.amazonaws.kinesis#UntagResource" + "target": "com.amazonaws.kinesis#AccessDeniedException" }, { - "target": "com.amazonaws.kinesis#UpdateAccountSettings" + "target": "com.amazonaws.kinesis#DryRunOperationException" }, { - "target": "com.amazonaws.kinesis#UpdateMaxRecordSize" + "target": "com.amazonaws.kinesis#InternalFailureException" }, { - "target": "com.amazonaws.kinesis#UpdateShardCount" + "target": "com.amazonaws.kinesis#InvalidArgumentException" }, { - "target": "com.amazonaws.kinesis#UpdateStreamMode" + "target": "com.amazonaws.kinesis#ProvisionedThroughputExceededException" }, { - "target": "com.amazonaws.kinesis#UpdateStreamWarmThroughput" + "target": "com.amazonaws.kinesis#ResourceNotFoundException" } ], "traits": { - "aws.api#service": { - "sdkId": "Kinesis", - "arnNamespace": "kinesis", - "cloudFormationName": "Kinesis", - "cloudTrailEventSource": "kinesis.amazonaws.com", - "endpointPrefix": "kinesis" - }, - "aws.auth#sigv4": { - "name": "kinesis" - }, - "aws.protocols#awsJson1_1": { - "http": [ - "http/1.1", + "smithy.api#documentation": "Gets an Amazon Kinesis shard iterator. A shard iterator expires 5 minutes after it is\n returned to the requester.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
A shard iterator specifies the shard position from which to start reading data records\n sequentially. The position is specified using the sequence number of a data record in a\n shard. A sequence number is the identifier associated with every record ingested in the\n stream, and is assigned when a record is put into the stream. Each stream has one or\n more shards.
\nYou must specify the shard iterator type. For example, you can set the\n ShardIteratorType parameter to read exactly from the position denoted\n by a specific sequence number by using the AT_SEQUENCE_NUMBER shard\n iterator type. Alternatively, the parameter can read right after the sequence number by\n using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers\n returned by earlier calls to PutRecord, PutRecords,\n GetRecords, or DescribeStream. In the request,\n you can specify the shard iterator type AT_TIMESTAMP to read records from\n an arbitrary point in time, TRIM_HORIZON to cause\n ShardIterator to point to the last untrimmed record in the shard in the\n system (the oldest data record in the shard), or LATEST so that you always\n read the most recent data in the shard.
When you read repeatedly from a stream, use a GetShardIterator\n request to get the first shard iterator for use in your first GetRecords request and for subsequent reads use the shard iterator returned by the GetRecords request in NextShardIterator. A new shard\n iterator is returned by every GetRecords request in\n NextShardIterator, which you use in the ShardIterator\n parameter of the next GetRecords request.
If a GetShardIterator request is made too often, you receive a\n ProvisionedThroughputExceededException. For more information about\n throughput limits, see GetRecords, and Streams Limits in the\n Amazon Kinesis Data Streams Developer Guide.
If the shard is closed, GetShardIterator returns a valid iterator\n for the last sequence number of the shard. A shard can be closed as a result of using\n SplitShard or MergeShards.
\n\n GetShardIterator has a limit of five transactions per second per\n account per open shard.
", + "smithy.rules#staticContextParams": { + "OperationType": { + "value": "data" + } + } + } + }, + "com.amazonaws.kinesis#GetShardIteratorInput": { + "type": "structure", + "members": { + "StreamName": { + "target": "com.amazonaws.kinesis#StreamName", + "traits": { + "smithy.api#documentation": "The name of the Amazon Kinesis data stream.
" + } + }, + "ShardId": { + "target": "com.amazonaws.kinesis#ShardId", + "traits": { + "smithy.api#documentation": "The shard ID of the Kinesis Data Streams shard to get the iterator for.
", + "smithy.api#required": {} + } + }, + "ShardIteratorType": { + "target": "com.amazonaws.kinesis#ShardIteratorType", + "traits": { + "smithy.api#documentation": "Determines how the shard iterator is used to start reading data records from the\n shard.
\nThe following are the valid Amazon Kinesis shard iterator types:
\nAT_SEQUENCE_NUMBER - Start reading from the position denoted by a specific\n sequence number, provided in the value\n StartingSequenceNumber.
AFTER_SEQUENCE_NUMBER - Start reading right after the position denoted by a\n specific sequence number, provided in the value\n StartingSequenceNumber.
AT_TIMESTAMP - Start reading from the position denoted by a specific time\n stamp, provided in the value Timestamp.
TRIM_HORIZON - Start reading at the last untrimmed record in the shard in the\n system, which is the oldest data record in the shard.
\nLATEST - Start reading just after the most recent record in the shard, so that\n you always read the most recent data in the shard.
\nThe sequence number of the data record in the shard from which to start reading. Used\n with shard iterator type AT_SEQUENCE_NUMBER and AFTER_SEQUENCE_NUMBER.
" + } + }, + "Timestamp": { + "target": "com.amazonaws.kinesis#Timestamp", + "traits": { + "smithy.api#documentation": "The time stamp of the data record from which to start reading. Used with shard\n iterator type AT_TIMESTAMP. A time stamp is the Unix epoch date with precision in\n milliseconds. For example, 2016-04-04T19:58:46.480-00:00 or\n 1459799926.480. If a record with this exact time stamp does not exist,\n the iterator returned is for the next (later) record. If the time stamp is older than\n the current trim horizon, the iterator returned is for the oldest untrimmed data record\n (TRIM_HORIZON).
The ARN of the stream.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } + } + }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } + } + }, + "DryRun": { + "target": "com.amazonaws.kinesis#BooleanObject", + "traits": { + "smithy.api#documentation": "Checks if your request will succeed. DryRun is an optional\n parameter.
Represents the input for GetShardIterator.
The position in the shard from which to start reading data records sequentially. A\n shard iterator specifies this position using the sequence number of a data record in a\n shard.
" + } + } + }, + "traits": { + "smithy.api#documentation": "Represents the output for GetShardIterator.
The starting hash key of the hash key range.
", + "smithy.api#required": {} + } + }, + "EndingHashKey": { + "target": "com.amazonaws.kinesis#HashKey", + "traits": { + "smithy.api#documentation": "The ending hash key of the hash key range.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The range of possible hash key values for the shard, which is a set of ordered\n contiguous positive integers.
" + } + }, + "com.amazonaws.kinesis#IncreaseStreamRetentionPeriod": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#IncreaseStreamRetentionPeriodInput" + }, + "output": { + "target": "smithy.api#Unit" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#AccessDeniedException" + }, + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ResourceInUseException" + }, + { + "target": "com.amazonaws.kinesis#ResourceNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "Increases the Kinesis data stream's retention period, which is the length of time data\n records are accessible after they are added to the stream. The maximum value of a\n stream's retention period is 8760 hours (365 days).
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
If you choose a longer stream retention period, this operation increases the time\n period during which records that have not yet expired are accessible. However, it does\n not make previous, expired data (older than the stream's previous retention period)\n accessible after the operation has been called. For example, if a stream's retention\n period is set to 24 hours and is increased to 168 hours, any data that is older than 24\n hours remains inaccessible to consumer applications.
", + "smithy.rules#staticContextParams": { + "OperationType": { + "value": "control" + } + } + } + }, + "com.amazonaws.kinesis#IncreaseStreamRetentionPeriodInput": { + "type": "structure", + "members": { + "StreamName": { + "target": "com.amazonaws.kinesis#StreamName", + "traits": { + "smithy.api#documentation": "The name of the stream to modify.
" + } + }, + "RetentionPeriodHours": { + "target": "com.amazonaws.kinesis#RetentionPeriodHours", + "traits": { + "smithy.api#documentation": "The new retention period of the stream, in hours. Must be more than the current\n retention period.
", + "smithy.api#required": {} + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", + "traits": { + "smithy.api#documentation": "The ARN of the stream.
", + "smithy.rules#contextParam": { + "name": "StreamARN" + } + } + }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } + } + } + }, + "traits": { + "smithy.api#documentation": "Represents the input for IncreaseStreamRetentionPeriod.
", + "smithy.api#input": {} + } + }, + "com.amazonaws.kinesis#InternalFailureException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage" + } + }, + "traits": { + "smithy.api#documentation": "The processing of the request failed because of an unknown error, exception, or\n failure.
", + "smithy.api#error": "server" + } + }, + "com.amazonaws.kinesis#InvalidArgumentException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage", + "traits": { + "smithy.api#documentation": "A message that provides information about the error.
" + } + } + }, + "traits": { + "smithy.api#documentation": "A specified parameter exceeds its restrictions, is not supported, or can't be used.\n For more information, see the returned message.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#KMSAccessDeniedException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage", + "traits": { + "smithy.api#documentation": "A message that provides information about the error.
" + } + } + }, + "traits": { + "smithy.api#documentation": "The ciphertext references a key that doesn't exist or that you don't have access\n to.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#KMSDisabledException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage", + "traits": { + "smithy.api#documentation": "A message that provides information about the error.
" + } + } + }, + "traits": { + "smithy.api#documentation": "The request was rejected because the specified customer master key (CMK) isn't\n enabled.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#KMSInvalidStateException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage", + "traits": { + "smithy.api#documentation": "A message that provides information about the error.
" + } + } + }, + "traits": { + "smithy.api#documentation": "The request was rejected because the state of the specified resource isn't valid for\n this request. For more information, see How Key State Affects Use of a\n Customer Master Key in the Amazon Web Services Key Management\n Service Developer Guide.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#KMSNotFoundException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage", + "traits": { + "smithy.api#documentation": "A message that provides information about the error.
" + } + } + }, + "traits": { + "smithy.api#documentation": "The request was rejected because the specified entity or resource can't be\n found.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#KMSOptInRequired": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage", + "traits": { + "smithy.api#documentation": "A message that provides information about the error.
" + } + } + }, + "traits": { + "smithy.api#documentation": "The Amazon Web Services access key ID needs a subscription for the service.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#KMSThrottlingException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.kinesis#ErrorMessage", + "traits": { + "smithy.api#documentation": "A message that provides information about the error.
" + } + } + }, + "traits": { + "smithy.api#documentation": "The request was denied due to request throttling. For more information about\n throttling, see Limits in\n the Amazon Web Services Key Management Service Developer\n Guide.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#KeyId": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 2048 + } + } + }, + "com.amazonaws.kinesis#Kinesis_20131202": { + "type": "service", + "version": "2013-12-02", + "operations": [ + { + "target": "com.amazonaws.kinesis#AddTagsToStream" + }, + { + "target": "com.amazonaws.kinesis#CreateChannel" + }, + { + "target": "com.amazonaws.kinesis#CreateStream" + }, + { + "target": "com.amazonaws.kinesis#DecreaseStreamRetentionPeriod" + }, + { + "target": "com.amazonaws.kinesis#DeleteChannel" + }, + { + "target": "com.amazonaws.kinesis#DeleteResourcePolicy" + }, + { + "target": "com.amazonaws.kinesis#DeleteStream" + }, + { + "target": "com.amazonaws.kinesis#DeregisterStreamConsumer" + }, + { + "target": "com.amazonaws.kinesis#DescribeAccountSettings" + }, + { + "target": "com.amazonaws.kinesis#DescribeChannel" + }, + { + "target": "com.amazonaws.kinesis#DescribeLimits" + }, + { + "target": "com.amazonaws.kinesis#DescribeStream" + }, + { + "target": "com.amazonaws.kinesis#DescribeStreamConsumer" + }, + { + "target": "com.amazonaws.kinesis#DescribeStreamSummary" + }, + { + "target": "com.amazonaws.kinesis#DisableEnhancedMonitoring" + }, + { + "target": "com.amazonaws.kinesis#EnableEnhancedMonitoring" + }, + { + "target": "com.amazonaws.kinesis#GetRecords" + }, + { + "target": "com.amazonaws.kinesis#GetResourcePolicy" + }, + { + "target": "com.amazonaws.kinesis#GetShardIterator" + }, + { + "target": "com.amazonaws.kinesis#IncreaseStreamRetentionPeriod" + }, + { + "target": "com.amazonaws.kinesis#ListChannels" + }, + { + "target": "com.amazonaws.kinesis#ListShards" + }, + { + "target": "com.amazonaws.kinesis#ListStreamConsumers" + }, + { + "target": "com.amazonaws.kinesis#ListStreams" + }, + { + "target": "com.amazonaws.kinesis#ListTagsForResource" + }, + { + "target": "com.amazonaws.kinesis#ListTagsForStream" + }, + { + "target": "com.amazonaws.kinesis#MergeShards" + }, + { + "target": "com.amazonaws.kinesis#PutRecord" + }, + { + "target": "com.amazonaws.kinesis#PutRecords" + }, + { + "target": "com.amazonaws.kinesis#PutResourcePolicy" + }, + { + "target": "com.amazonaws.kinesis#RegisterStreamConsumer" + }, + { + "target": "com.amazonaws.kinesis#RemoveTagsFromStream" + }, + { + "target": "com.amazonaws.kinesis#SplitShard" + }, + { + "target": "com.amazonaws.kinesis#StartStreamEncryption" + }, + { + "target": "com.amazonaws.kinesis#StopStreamEncryption" + }, + { + "target": "com.amazonaws.kinesis#SubscribeToShard" + }, + { + "target": "com.amazonaws.kinesis#TagResource" + }, + { + "target": "com.amazonaws.kinesis#UntagResource" + }, + { + "target": "com.amazonaws.kinesis#UpdateAccountSettings" + }, + { + "target": "com.amazonaws.kinesis#UpdateChannel" + }, + { + "target": "com.amazonaws.kinesis#UpdateMaxRecordSize" + }, + { + "target": "com.amazonaws.kinesis#UpdateShardCount" + }, + { + "target": "com.amazonaws.kinesis#UpdateStreamMode" + }, + { + "target": "com.amazonaws.kinesis#UpdateStreamWarmThroughput" + } + ], + "traits": { + "aws.api#service": { + "sdkId": "Kinesis", + "arnNamespace": "kinesis", + "cloudFormationName": "Kinesis", + "cloudTrailEventSource": "kinesis.amazonaws.com", + "endpointPrefix": "kinesis" + }, + "aws.auth#sigv4": { + "name": "kinesis" + }, + "aws.protocols#awsJson1_1": { + "http": [ + "http/1.1", "h2" ], "eventStreamHttp": [ @@ -2075,6 +3251,11 @@ "documentation": "The ARN of the Kinesis resource", "type": "string" }, + "ChannelARN": { + "required": false, + "documentation": "The ARN of the Kinesis data channel", + "type": "string" + }, "AccountId": { "builtIn": "AWS::Auth::AccountId", "required": false, @@ -2222,6 +3403,31 @@ } ] }, + { + "fn": "isSet", + "argv": [ + { + "ref": "StreamARN" + } + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "ConsumerARN" + } + ] + }, + { + "fn": "aws.parseArn", + "argv": [ + { + "ref": "ConsumerARN" + } + ], + "assign": "arn_ssa_2" + }, { "fn": "substring", "argv": [ @@ -2293,11 +3499,67 @@ "assign": "PlainCustomEndpointSuffixValue" }, { - "fn": "isSet", + "fn": "isValidHostLabel", "argv": [ { - "ref": "StreamARN" - } + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_2" + }, + "accountId" + ] + }, + false + ] + }, + { + "fn": "isValidHostLabel", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_2" + }, + "region" + ] + }, + false + ] + }, + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_2" + }, + "service" + ] + }, + "kinesis" + ] + }, + { + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_2" + }, + "resourceId[0]" + ], + "assign": "arnType_ssa_2" + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType_ssa_2" + }, + "" ] }, { @@ -2307,7 +3569,7 @@ "ref": "StreamARN" } ], - "assign": "arn_ssa_3" + "assign": "arn_ssa_4" }, { "fn": "isValidHostLabel", @@ -2316,7 +3578,7 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_3" + "ref": "arn_ssa_4" }, "accountId" ] @@ -2324,6 +3586,15 @@ false ] }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType_ssa_2" + }, + "stream" + ] + }, { "fn": "isValidHostLabel", "argv": [ @@ -2331,7 +3602,7 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_3" + "ref": "arn_ssa_4" }, "region" ] @@ -2346,40 +3617,114 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_3" + "ref": "PartitionResult" }, - "service" + "name" ] }, - "kinesis" + { + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_2" + }, + "partition" + ] + } ] }, { - "fn": "isSet", + "fn": "stringEquals", "argv": [ { - "ref": "ConsumerARN" - } + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_4" + }, + "service" + ] + }, + "kinesis" ] }, { "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_3" + "ref": "arn_ssa_4" }, "resourceId[0]" ], "assign": "arnType_ssa_1" }, { - "fn": "aws.parseArn", + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType_ssa_1" + }, + "" + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "ResourceARN" + } + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "ChannelARN" + } + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "AccountIdEndpointMode" + } + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "AccountId" + } + ] + }, + { + "fn": "aws.parseArn", + "argv": [ + { + "ref": "ChannelARN" + } + ], + "assign": "arn_ssa_1" + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "AccountIdEndpointMode" + }, + "disabled" + ] + }, + { + "fn": "isValidHostLabel", "argv": [ { - "ref": "ConsumerARN" - } - ], - "assign": "arn_ssa_1" + "ref": "AccountId" + }, + false + ] }, { "fn": "isValidHostLabel", @@ -2434,13 +3779,13 @@ }, "resourceId[0]" ], - "assign": "arnType_ssa_2" + "assign": "arnType_ssa_4" }, { "fn": "stringEquals", "argv": [ { - "ref": "arnType_ssa_2" + "ref": "arnType_ssa_4" }, "" ] @@ -2449,9 +3794,9 @@ "fn": "stringEquals", "argv": [ { - "ref": "arnType_ssa_2" + "ref": "arnType_ssa_4" }, - "stream" + "channel" ] }, { @@ -2477,14 +3822,6 @@ } ] }, - { - "fn": "isSet", - "argv": [ - { - "ref": "ResourceARN" - } - ] - }, { "fn": "aws.parseArn", "argv": [ @@ -2492,15 +3829,7 @@ "ref": "ResourceARN" } ], - "assign": "arn_ssa_2" - }, - { - "fn": "isSet", - "argv": [ - { - "ref": "AccountIdEndpointMode" - } - ] + "assign": "arn_ssa_3" }, { "fn": "isValidHostLabel", @@ -2509,7 +3838,7 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_2" + "ref": "arn_ssa_3" }, "accountId" ] @@ -2524,7 +3853,7 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_2" + "ref": "arn_ssa_3" }, "region" ] @@ -2539,7 +3868,7 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_2" + "ref": "arn_ssa_3" }, "service" ] @@ -2551,7 +3880,7 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_2" + "ref": "arn_ssa_3" }, "resourceId[0]" ], @@ -2575,6 +3904,15 @@ "stream" ] }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType_ssa_3" + }, + "channel" + ] + }, { "fn": "stringEquals", "argv": [ @@ -2591,7 +3929,7 @@ "fn": "getAttr", "argv": [ { - "ref": "arn_ssa_2" + "ref": "arn_ssa_3" }, "partition" ] @@ -2599,20 +3937,35 @@ ] }, { - "fn": "isSet", + "fn": "stringEquals", "argv": [ { - "ref": "AccountId" - } + "ref": "arnType_ssa_1" + }, + "stream" ] }, { "fn": "stringEquals", "argv": [ { - "ref": "AccountIdEndpointMode" + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "name" + ] }, - "disabled" + { + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_4" + }, + "partition" + ] + } ] }, { @@ -2624,69 +3977,98 @@ "required" ] }, + { + "fn": "isSet", + "argv": [ + { + "ref": "OperationType" + } + ] + }, + { + "fn": "getAttr", + "argv": [ + { + "ref": "arn_ssa_3" + }, + "resourceId[1]" + ], + "assign": "resourceId_ssa_1" + }, { "fn": "isValidHostLabel", "argv": [ { - "ref": "AccountId" + "ref": "resourceId_ssa_1" }, false ] }, { - "fn": "stringEquals", + "fn": "getAttr", "argv": [ { - "ref": "arnType_ssa_1" + "ref": "arn_ssa_1" }, - "" + "resourceId[1]" + ], + "assign": "resourceId_ssa_2" + }, + { + "fn": "isValidHostLabel", + "argv": [ + { + "ref": "resourceId_ssa_2" + }, + false ] }, { "fn": "stringEquals", "argv": [ { - "ref": "arnType_ssa_1" + "ref": "OperationType" }, - "stream" + "data" ] }, { "fn": "stringEquals", "argv": [ { - "fn": "getAttr", + "fn": "coalesce", "argv": [ { - "ref": "PartitionResult" + "fn": "substring", + "argv": [ + { + "ref": "Endpoint" + }, + 7, + 8, + false + ] }, - "name" + "" ] }, - { - "fn": "getAttr", - "argv": [ - { - "ref": "arn_ssa_3" - }, - "partition" - ] - } + "-" ] }, { - "fn": "isSet", + "fn": "booleanEquals", "argv": [ { - "ref": "OperationType" - } + "ref": "UseFIPS" + }, + true ] }, { "fn": "booleanEquals", "argv": [ { - "ref": "UseFIPS" + "ref": "UseDualStack" }, true ] @@ -2706,15 +4088,6 @@ true ] }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - }, { "fn": "booleanEquals", "argv": [ @@ -2767,29 +4140,6 @@ }, "." ] - }, - { - "fn": "stringEquals", - "argv": [ - { - "fn": "coalesce", - "argv": [ - { - "fn": "substring", - "argv": [ - { - "ref": "Endpoint" - }, - 7, - 8, - false - ] - }, - "" - ] - }, - "-" - ] } ], "results": [ @@ -2929,7 +4279,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{arn_ssa_4#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -2938,7 +4288,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "url": "https://{arn_ssa_4#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -2947,7 +4297,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{arn_ssa_4#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -2956,7 +4306,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "url": "https://{arn_ssa_4#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -2964,7 +4314,7 @@ }, { "conditions": [], - "error": "Partition: {arn_ssa_3#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", + "error": "Partition: {arn_ssa_4#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", "type": "error" }, { @@ -2979,28 +4329,120 @@ }, { "conditions": [], - "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn_ssa_3#service}.", + "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn_ssa_4#service}.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: Invalid region.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: Invalid account id.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: Failed to parse ARN.", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "error": "Partition: {arn_ssa_2#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: Kinesis ARNs don't support `{arnType_ssa_2}` arn types.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn_ssa_2#service}.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: Unsupported resource type `{arnType_ssa_3}`. Expected: stream or channel", "type": "error" }, { "conditions": [], - "error": "Invalid ARN: Invalid region.", - "type": "error" + "endpoint": { + "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" }, { "conditions": [], - "error": "Invalid ARN: Invalid account id.", - "type": "error" + "endpoint": { + "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" }, { "conditions": [], - "error": "Invalid ARN: Failed to parse ARN.", - "type": "error" + "endpoint": { + "url": "https://{arn_ssa_3#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" }, { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_1#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{resourceId_ssa_1}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -3009,7 +4451,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_1#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "url": "https://{resourceId_ssa_1}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -3018,7 +4460,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_1#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{resourceId_ssa_1}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -3027,7 +4469,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_1#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "url": "https://{resourceId_ssa_1}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -3035,23 +4477,28 @@ }, { "conditions": [], - "error": "Partition: {arn_ssa_1#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", + "error": "Invalid ARN: Invalid channel id.", "type": "error" }, { "conditions": [], - "error": "Invalid ARN: Kinesis ARNs don't support `{arnType_ssa_2}` arn types.", + "error": "Invalid ARN: Missing channel id.", "type": "error" }, { "conditions": [], - "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn_ssa_1#service}.", + "error": "Partition: {arn_ssa_3#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn_ssa_3#service}.", "type": "error" }, { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{resourceId_ssa_2}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -3060,7 +4507,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "url": "https://{resourceId_ssa_2}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -3069,7 +4516,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{resourceId_ssa_2}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -3078,7 +4525,7 @@ { "conditions": [], "endpoint": { - "url": "https://{arn_ssa_2#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "url": "https://{resourceId_ssa_2}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -3086,17 +4533,22 @@ }, { "conditions": [], - "error": "Partition: {arn_ssa_2#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", + "error": "ChannelARN does not support the `data` operation type.", "type": "error" }, { "conditions": [], - "error": "Invalid ARN: Kinesis ARNs don't support `{arnType_ssa_3}` arn types.", + "error": "Partition: {arn_ssa_1#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", "type": "error" }, { "conditions": [], - "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn_ssa_2#service}.", + "error": "Invalid ARN: ChannelARN only supports `channel` arn types, found: `{arnType_ssa_4}`.", + "type": "error" + }, + { + "conditions": [], + "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn_ssa_1#service}.", "type": "error" }, { @@ -3244,8 +4696,8 @@ } ], "root": 2, - "nodeCount": 120, - "nodes": "/////wAAAAH/////AAAAAAAAAAMAAAAEAAAAAQAAAAUAAAAEAAAACQAAAHcF9eE7AAAAAgAAAGwAAAAGAAAAAwAAAGwAAAAHAAAABAAAAAgAAAAMAAAABQAAAAkAAAAMAAAABgAAAAoAAAAMAAAABwAAAAsAAAAMAAAACAAAAEkAAAAMAAAACQAAAHcAAAANAAAADgAAADoAAAAOAAAAEwAAACsAAAAPAAAAHQAAABwAAAAQAAAAHwAAABEAAABvAAAAJwAAABIAAAAbAAAAKAAAABsAAAATAAAAKgAAABQF9eEvAAAALgAAABUF9eERAAAALwAAABgAAAAWAAAAMQAAABcF9eEuAAAAMgX14S0F9eEHAAAAMAAAABkAAABpAAAAMQAAABoF9eEsAAAAMgX14SsF9eECAAAAKQX14TAAAABvAAAAHgAAAB0F9eEcAAAAIAAAAB4F9eEbAAAAIQAAAB8F9eEaAAAAIgAAACAF9eEqAAAAIwAAACEF9eEYAAAAJAX14RgAAAAiAAAAJQAAACMF9eEpAAAAJgAAACQF9eEoAAAALgAAACUF9eERAAAALwAAACgAAAAmAAAAMQAAACcF9eEnAAAAMgX14SYF9eEHAAAAMAAAACkAAABpAAAAMQAAACoF9eElAAAAMgX14SQF9eECAAAAFQAAACwF9eEcAAAAFgAAAC0F9eEbAAAAFwAAAC4F9eEaAAAAGAAAAC8F9eEjAAAAGQAAADAF9eEYAAAAGgX14RgAAAAxAAAAGwAAADIF9eEiAAAAHAAAADMF9eEhAAAALgAAADQF9eERAAAALwAAADcAAAA1AAAAMQAAADYF9eEgAAAAMgX14R8F9eEHAAAAMAAAADgAAABpAAAAMQAAADkF9eEeAAAAMgX14R0F9eECAAAADwAAADsF9eEcAAAAEAAAADwF9eEbAAAAEQAAAD0F9eEaAAAAEgAAAD4F9eEZAAAAFAAAAD8F9eEYAAAAKwX14RgAAABAAAAALAAAAEEF9eEXAAAALQAAAEIF9eEWAAAALgAAAEMF9eERAAAALwAAAEYAAABEAAAAMQAAAEUF9eEVAAAAMgX14RQF9eEHAAAAMAAAAEcAAABpAAAAMQAAAEgF9eETAAAAMgX14RIF9eECAAAACQAAAEoAAABOAAAACgAAAEsAAABNAAAACwAAAEwAAABNAAAADAAAAGQAAABNAAAADQAAAFUAAABOAAAALgAAAE8F9eERAAAALwAAAFIAAABQAAAAMQAAAFEF9eEQAAAAMgX14Q8F9eEHAAAAMAAAAFMAAABpAAAAMQAAAFQF9eEOAAAAMgX14Q0F9eECAAAALgAAAFYF9eERAAAALwAAAF0AAABXAAAAMQAAAFoAAABYAAAANAAAAFkF9eEQAAAANQX14QwF9eEQAAAAMgAAAFsF9eEHAAAANAAAAFwF9eEPAAAANQX14QsF9eEPAAAAMAAAAF4AAABpAAAAMQAAAGEAAABfAAAANAAAAGAF9eEOAAAANQX14QoF9eEOAAAAMgAAAGIF9eECAAAANAAAAGMF9eENAAAANQX14QkF9eENAAAALgAAAGUF9eERAAAALwAAAGgAAABmAAAAMQAAAGcF9eEIAAAAMgX14QYF9eEHAAAAMAAAAGoAAABpAAAAMQX14QMF9eEFAAAAMQAAAGsF9eEEAAAAMgX14QEF9eECAAAACQAAAHcAAABtAAAAHwAAAG4AAABvAAAAKQX14TEAAABvAAAALwAAAHIAAABwAAAAMQAAAHEF9eE6AAAAMgX14TkF9eEHAAAAMAAAAHQAAABzAAAAMQX14TYF9eEFAAAAMQAAAHYAAAB1AAAAMwX14TcF9eE4AAAAMgX14TUF9eE2AAAALwX14TIAAAB4AAAAMQX14TMF9eE0" + "nodeCount": 155, + "nodes": "/////wAAAAH/////AAAAAAAAAAMAAAAEAAAAAQAAAAUAAAAEAAAACQAAAJoF9eFJAAAAAgAAAI8AAAAGAAAAAwAAAI8AAAAHAAAABAAAAAgAAAAMAAAABQAAAAkAAAAMAAAABgAAAAoAAAAMAAAABwAAAAsAAAAMAAAACAAAAG0AAAAMAAAACQAAAJoAAAANAAAACgAAAF0AAAAOAAAACwAAAE0AAAAPAAAAHgAAADEAAAAQAAAAHwAAAB4AAAARAAAAIAAAABIAAACSAAAAIQAAABMAAAAdAAAAIwAAAB0AAAAUAAAAJAAAABUF9eE9AAAAOAAAABYF9eERAAAAPwAAABkAAAAXAAAAQAAAABgF9eE8AAAAQgX14TsF9eEHAAAAQAAAABsAAAAaAAAAQQX14ToF9eEFAAAAQQAAABwF9eEDAAAAQgX14TkF9eECAAAANwX14T4AAACSAAAAIgAAAB8F9eEcAAAAJQAAACAF9eEbAAAAJgAAACEF9eEaAAAAJwAAACIF9eE4AAAAKAAAACMF9eEYAAAAKQX14RgAAAAkAAAAKgAAACUF9eE3AAAAKwAAACYF9eE2AAAAOAAAACcF9eERAAAAOwAAACgF9eEuAAAAPAAAACkF9eEtAAAAPQX14TUAAAAqAAAAPwAAAC0AAAArAAAAQAAAACwF9eE0AAAAQgX14TMF9eEHAAAAQAAAAC8AAAAuAAAAQQX14TIF9eEFAAAAQQAAADAF9eEDAAAAQgX14TEF9eECAAAALAAAADIF9eEcAAAALQAAADMF9eEbAAAALgAAADQF9eEaAAAALwAAADUF9eEwAAAAMAAAADYF9eEYAAAAMQX14RgAAAA3AAAAMgAAAEQAAAA4AAAAMwAAADkF9eEkAAAANAAAADoF9eEvAAAAOAAAADsF9eERAAAAOQAAADwF9eEuAAAAOgAAAD0F9eEtAAAAPwAAAEAAAAA+AAAAQAAAAD8F9eEsAAAAQgX14SsF9eEHAAAAQAAAAEIAAABBAAAAQQX14SoF9eEFAAAAQQAAAEMF9eEDAAAAQgX14SkF9eECAAAANAAAAEUF9eEvAAAAOAAAAEYF9eERAAAAPwAAAEkAAABHAAAAQAAAAEgF9eEoAAAAQgX14ScF9eEHAAAAQAAAAEsAAABKAAAAQQX14SYF9eEFAAAAQQAAAEwF9eEDAAAAQgX14SUF9eECAAAADAAAAE4F9eEcAAAAEQAAAE8F9eEbAAAAEgAAAFAF9eEaAAAAEwAAAFEF9eEjAAAAFAAAAFIF9eEYAAAAFQX14RgAAABTAAAAGAAAAFQF9eEiAAAAGgAAAFUF9eEhAAAAOAAAAFYF9eERAAAAPwAAAFkAAABXAAAAQAAAAFgF9eEgAAAAQgX14R8F9eEHAAAAQAAAAFsAAABaAAAAQQX14R4F9eEFAAAAQQAAAFwF9eEDAAAAQgX14R0F9eECAAAAFgAAAF4F9eEcAAAAFwAAAF8F9eEbAAAAGQAAAGAF9eEaAAAAGwAAAGEF9eEZAAAAHAAAAGIF9eEYAAAAHQX14RgAAABjAAAANQAAAGQF9eEXAAAANgAAAGUF9eEWAAAAOAAAAGYF9eERAAAAPwAAAGkAAABnAAAAQAAAAGgF9eEVAAAAQgX14RQF9eEHAAAAQAAAAGsAAABqAAAAQQX14RMF9eEFAAAAQQAAAGwF9eEDAAAAQgX14RIF9eECAAAACQAAAG4AAAByAAAADQAAAG8AAABxAAAADgAAAHAAAABxAAAADwAAAIcAAABxAAAAEAAAAHMAAAByAAAAOAAAAHUF9eERAAAAOAAAAHQF9eERAAAAPgAAAHwAAAB1AAAAPwAAAHgAAAB2AAAAQAAAAHcF9eEQAAAAQgX14Q8F9eEHAAAAQAAAAHoAAAB5AAAAQQX14Q4F9eEFAAAAQQAAAHsF9eEDAAAAQgX14Q0F9eECAAAAPwAAAIEAAAB9AAAAQAAAAH8AAAB+AAAARAX14QwF9eEQAAAAQgAAAIAF9eEHAAAARAX14QsF9eEPAAAAQAAAAIQAAACCAAAAQQAAAIMF9eEFAAAARAX14QoF9eEOAAAAQQAAAIUF9eEDAAAAQgAAAIYF9eECAAAARAX14QkF9eENAAAAOAAAAIgF9eERAAAAPwAAAIsAAACJAAAAQAAAAIoF9eEIAAAAQgX14QYF9eEHAAAAQAAAAI0AAACMAAAAQQX14QQF9eEFAAAAQQAAAI4F9eEDAAAAQgX14QEF9eECAAAACQAAAJoAAACQAAAAIAAAAJEAAACSAAAANwX14T8AAACSAAAAPwAAAJUAAACTAAAAQAAAAJQF9eFIAAAAQgX14UcF9eEHAAAAQAAAAJgAAACWAAAAQQAAAJcF9eEFAAAAQwX14UUF9eFGAAAAQQAAAJkF9eFEAAAAQgX14UMF9eFEAAAAPwX14UAAAACbAAAAQAX14UEF9eFC" }, "smithy.rules#endpointRuleSet": { "version": "1.0", @@ -3301,6 +4753,11 @@ "documentation": "The ARN of the Kinesis resource", "type": "string" }, + "ChannelARN": { + "required": false, + "documentation": "The ARN of the Kinesis data channel", + "type": "string" + }, "AccountId": { "builtIn": "AWS::Auth::AccountId", "required": false, @@ -3418,50 +4875,320 @@ "fn": "getAttr", "argv": [ { - "ref": "PartitionResult" + "ref": "PartitionResult" + }, + "name" + ] + }, + "aws-iso" + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "name" + ] + }, + "aws-iso-b" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "OperationType" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + }, + { + "fn": "substring", + "argv": [ + { + "ref": "Endpoint" + }, + 15, + 16, + false + ], + "assign": "HttpsCustomEndpointDelimiterValue" + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "HttpsCustomEndpointDelimiterValue" + }, + "-" + ] + }, + { + "fn": "substring", + "argv": [ + { + "ref": "Endpoint" + }, + 20, + 21, + false + ], + "assign": "HttpsEndpointDelimiterValue" + }, + { + "fn": "stringEquals", + "argv": [ + { + "ref": "HttpsEndpointDelimiterValue" + }, + "." + ] + }, + { + "fn": "substring", + "argv": [ + { + "ref": "Endpoint" + }, + 15, + 20, + false + ], + "assign": "HttpsCustomEndpointSuffixValue" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled, but this partition does not support DualStack.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled, but this partition does not support FIPS.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" }, - "name" - ] + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" }, - "aws-iso" - ] - } - ] - }, - { - "fn": "not", - "argv": [ - { - "fn": "stringEquals", - "argv": [ { - "fn": "getAttr", - "argv": [ + "conditions": [ { - "ref": "PartitionResult" + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" }, - "name" - ] + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" }, - "aws-iso-b" - ] - } - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "isSet", - "argv": [ { - "ref": "OperationType" + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" } - ] - } - ], - "rules": [ + ], + "type": "tree" + }, { "conditions": [ { @@ -3478,17 +5205,17 @@ { "ref": "Endpoint" }, - 15, - 16, + 7, + 8, false ], - "assign": "HttpsCustomEndpointDelimiterValue" + "assign": "PlainCustomEndpointDelimiterValue" }, { "fn": "stringEquals", "argv": [ { - "ref": "HttpsCustomEndpointDelimiterValue" + "ref": "PlainCustomEndpointDelimiterValue" }, "-" ] @@ -3499,17 +5226,17 @@ { "ref": "Endpoint" }, - 20, - 21, + 12, + 13, false ], - "assign": "HttpsEndpointDelimiterValue" + "assign": "PlainEndpointDelimiterValue" }, { "fn": "stringEquals", "argv": [ { - "ref": "HttpsEndpointDelimiterValue" + "ref": "PlainEndpointDelimiterValue" }, "." ] @@ -3520,11 +5247,11 @@ { "ref": "Endpoint" }, - 15, - 20, + 7, + 12, false ], - "assign": "HttpsCustomEndpointSuffixValue" + "assign": "PlainCustomEndpointSuffixValue" } ], "rules": [ @@ -3591,7 +5318,7 @@ { "conditions": [], "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -3651,7 +5378,7 @@ { "conditions": [], "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dnsSuffix}", + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -3703,7 +5430,99 @@ { "conditions": [], "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", "properties": {}, "headers": {} }, @@ -3714,7 +5533,7 @@ }, { "conditions": [], - "error": "DualStack is enabled but this partition does not support DualStack", + "error": "DualStack is enabled, but this partition does not support DualStack.", "type": "error" } ], @@ -3722,12 +5541,8 @@ }, { "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{HttpsCustomEndpointSuffixValue}.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" + "error": "FIPS is enabled, but this partition does not support FIPS.", + "type": "error" } ], "type": "tree" @@ -3735,87 +5550,256 @@ { "conditions": [ { - "fn": "isSet", + "fn": "booleanEquals", "argv": [ { - "ref": "Endpoint" - } + "ref": "UseFIPS" + }, + true ] - }, + } + ], + "rules": [ { - "fn": "substring", - "argv": [ + "conditions": [ { - "ref": "Endpoint" - }, - 7, - 8, - false + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } ], - "assign": "PlainCustomEndpointDelimiterValue" + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" }, { - "fn": "stringEquals", + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", "argv": [ { - "ref": "PlainCustomEndpointDelimiterValue" + "ref": "UseDualStack" }, - "-" + true ] - }, + } + ], + "rules": [ { - "fn": "substring", - "argv": [ + "conditions": [ { - "ref": "Endpoint" - }, - 12, - 13, - false + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } ], - "assign": "PlainEndpointDelimiterValue" + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" }, { - "fn": "stringEquals", + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Operation Type is not set. Please contact service team for resolution.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "StreamARN" + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ] + }, + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + }, + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", "argv": [ { - "ref": "PlainEndpointDelimiterValue" + "ref": "PartitionResult" }, - "." + "name" ] }, + "aws-iso" + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ { - "fn": "substring", + "fn": "getAttr", "argv": [ { - "ref": "Endpoint" + "ref": "PartitionResult" }, - 7, - 12, - false - ], - "assign": "PlainCustomEndpointSuffixValue" + "name" + ] + }, + "aws-iso-b" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.parseArn", + "argv": [ + { + "ref": "StreamARN" } ], - "rules": [ + "assign": "arn" + } + ], + "rules": [ + { + "conditions": [ { - "conditions": [ + "fn": "isValidHostLabel", + "argv": [ { - "fn": "booleanEquals", + "fn": "getAttr", "argv": [ { - "ref": "UseFIPS" + "ref": "arn" }, - true + "accountId" ] }, + false + ] + } + ], + "rules": [ + { + "conditions": [ { - "fn": "booleanEquals", + "fn": "isValidHostLabel", "argv": [ { - "ref": "UseDualStack" + "fn": "getAttr", + "argv": [ + { + "ref": "arn" + }, + "region" + ] }, - true + false ] } ], @@ -3823,18 +5807,18 @@ { "conditions": [ { - "fn": "booleanEquals", + "fn": "stringEquals", "argv": [ { "fn": "getAttr", "argv": [ { - "ref": "PartitionResult" + "ref": "arn" }, - "supportsFIPS" + "service" ] }, - true + "kinesis" ] } ], @@ -3842,241 +5826,314 @@ { "conditions": [ { - "fn": "booleanEquals", + "fn": "getAttr", "argv": [ { - "fn": "getAttr", + "ref": "arn" + }, + "resourceId[0]" + ], + "assign": "arnType" + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", "argv": [ { - "ref": "PartitionResult" + "ref": "arnType" + }, + "" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "stream" + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "name" + ] + }, + "{arn#partition}" + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "OperationType" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{arn#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled, but this partition does not support DualStack.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled, but this partition does not support FIPS.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{arn#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" }, - "supportsDualStack" - ] - }, - true - ] - } - ], - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "DualStack is enabled, but this partition does not support DualStack.", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "FIPS is enabled, but this partition does not support FIPS.", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" + { + "conditions": [], + "error": "Operation Type is not set. Please contact service team for resolution.", + "type": "error" + } + ], + "type": "tree" }, - "supportsFIPS" - ] - }, - true - ] - } - ], - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}-fips.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "FIPS is enabled but this partition does not support FIPS", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ { - "ref": "PartitionResult" - }, - "supportsDualStack" - ] - }, - true - ] - } - ], - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "DualStack is enabled but this partition does not support DualStack", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis{PlainCustomEndpointSuffixValue}.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" + "conditions": [], + "error": "Partition: {arn#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", + "type": "error" + } + ], + "type": "tree" }, - "supportsFIPS" - ] - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" - }, - "supportsDualStack" - ] - }, - true - ] - } - ], - "rules": [ + "conditions": [], + "error": "Invalid ARN: Kinesis ARNs don't support `{arnType}` arn types.", + "type": "error" + } + ], + "type": "tree" + }, { "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" + "error": "Invalid ARN: No ARN type specified", + "type": "error" } ], "type": "tree" }, { "conditions": [], - "error": "DualStack is enabled, but this partition does not support DualStack.", + "error": "Invalid ARN: The ARN was not for the Kinesis service, found: {arn#service}.", "type": "error" } ], @@ -4084,111 +6141,7 @@ }, { "conditions": [], - "error": "FIPS is enabled, but this partition does not support FIPS.", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" - }, - "supportsFIPS" - ] - }, - true - ] - } - ], - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "FIPS is enabled but this partition does not support FIPS", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" - }, - "supportsDualStack" - ] - }, - true - ] - } - ], - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "DualStack is enabled but this partition does not support DualStack", + "error": "Invalid ARN: Invalid region.", "type": "error" } ], @@ -4196,19 +6149,15 @@ }, { "conditions": [], - "endpoint": { - "url": "https://{StreamIdPrefixValue}.{StreamIdSuffixValue}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" + "error": "Invalid ARN: Invalid account id.", + "type": "error" } ], "type": "tree" }, { "conditions": [], - "error": "Operation Type is not set. Please contact service team for resolution.", + "error": "Invalid ARN: Failed to parse ARN.", "type": "error" } ], @@ -4220,7 +6169,7 @@ "fn": "isSet", "argv": [ { - "ref": "StreamARN" + "ref": "ConsumerARN" } ] }, @@ -4302,7 +6251,7 @@ "fn": "aws.parseArn", "argv": [ { - "ref": "StreamARN" + "ref": "ConsumerARN" } ], "assign": "arn" @@ -4712,7 +6661,7 @@ "fn": "isSet", "argv": [ { - "ref": "ConsumerARN" + "ref": "ResourceARN" } ] }, @@ -4794,7 +6743,7 @@ "fn": "aws.parseArn", "argv": [ { - "ref": "ConsumerARN" + "ref": "ResourceARN" } ], "assign": "arn" @@ -4886,15 +6835,55 @@ } ], "rules": [ + { + "conditions": [ + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "stream" + ] + } + ] + }, + { + "fn": "not", + "argv": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "channel" + ] + } + ] + } + ], + "error": "Invalid ARN: Unsupported resource type `{arnType}`. Expected: stream or channel", + "type": "error" + }, { "conditions": [ { "fn": "stringEquals", "argv": [ { - "ref": "arnType" + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "name" + ] }, - "stream" + "{arn#partition}" ] } ], @@ -4902,18 +6891,11 @@ { "conditions": [ { - "fn": "stringEquals", + "fn": "isSet", "argv": [ { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" - }, - "name" - ] - }, - "{arn#partition}" + "ref": "OperationType" + } ] } ], @@ -4921,11 +6903,12 @@ { "conditions": [ { - "fn": "isSet", + "fn": "stringEquals", "argv": [ { - "ref": "OperationType" - } + "ref": "arnType" + }, + "stream" ] } ], @@ -5073,39 +7056,303 @@ { "conditions": [ { - "fn": "booleanEquals", + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "stringEquals", + "argv": [ + { + "ref": "arnType" + }, + "channel" + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "getAttr", "argv": [ { - "ref": "UseDualStack" + "ref": "arn" }, - true - ] + "resourceId[1]" + ], + "assign": "resourceId" } ], "rules": [ { "conditions": [ { - "fn": "booleanEquals", + "fn": "isValidHostLabel", "argv": [ { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" - }, - "supportsDualStack" - ] + "ref": "resourceId" }, - true + false ] } ], "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{resourceId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled, but this partition does not support DualStack.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled, but this partition does not support FIPS.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{resourceId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{resourceId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, { "conditions": [], "endpoint": { - "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "url": "https://{resourceId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", "properties": {}, "headers": {} }, @@ -5116,7 +7363,7 @@ }, { "conditions": [], - "error": "DualStack is enabled but this partition does not support DualStack", + "error": "Invalid ARN: Invalid channel id.", "type": "error" } ], @@ -5124,27 +7371,18 @@ }, { "conditions": [], - "endpoint": { - "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" + "error": "Invalid ARN: Missing channel id.", + "type": "error" } ], "type": "tree" - }, - { - "conditions": [], - "error": "Operation Type is not set. Please contact service team for resolution.", - "type": "error" } ], "type": "tree" }, { "conditions": [], - "error": "Partition: {arn#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", + "error": "Operation Type is not set. Please contact service team for resolution.", "type": "error" } ], @@ -5152,7 +7390,7 @@ }, { "conditions": [], - "error": "Invalid ARN: Kinesis ARNs don't support `{arnType}` arn types.", + "error": "Partition: {arn#partition} from ARN doesn't match with partition name: {PartitionResult#name}.", "type": "error" } ], @@ -5204,7 +7442,7 @@ "fn": "isSet", "argv": [ { - "ref": "ResourceARN" + "ref": "ChannelARN" } ] }, @@ -5286,7 +7524,7 @@ "fn": "aws.parseArn", "argv": [ { - "ref": "ResourceARN" + "ref": "ChannelARN" } ], "assign": "arn" @@ -5386,7 +7624,7 @@ { "ref": "arnType" }, - "stream" + "channel" ] } ], @@ -5425,40 +7663,26 @@ { "conditions": [ { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", + "fn": "getAttr", "argv": [ { - "ref": "UseDualStack" + "ref": "arn" }, - true - ] + "resourceId[1]" + ], + "assign": "channelId" } ], "rules": [ { "conditions": [ { - "fn": "booleanEquals", + "fn": "isValidHostLabel", "argv": [ { - "fn": "getAttr", - "argv": [ - { - "ref": "PartitionResult" - }, - "supportsFIPS" - ] + "ref": "channelId" }, - true + false ] } ], @@ -5466,149 +7690,236 @@ { "conditions": [ { - "fn": "booleanEquals", + "fn": "not", "argv": [ { - "fn": "getAttr", + "fn": "stringEquals", "argv": [ { - "ref": "PartitionResult" + "ref": "OperationType" }, - "supportsDualStack" + "data" ] - }, - true + } ] } ], "rules": [ { - "conditions": [], - "endpoint": { - "url": "https://{arn#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "DualStack is enabled, but this partition does not support DualStack.", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "FIPS is enabled, but this partition does not support FIPS.", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "fn": "getAttr", - "argv": [ + "conditions": [ { - "ref": "PartitionResult" + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] }, - "supportsFIPS" - ] - }, - true - ] - } - ], - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://{arn#accountId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ], - "type": "tree" - }, - { - "conditions": [], - "error": "FIPS is enabled but this partition does not support FIPS", - "type": "error" - } - ], - "type": "tree" - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{channelId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled, but this partition does not support DualStack.", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled, but this partition does not support FIPS.", + "type": "error" + } + ], + "type": "tree" + }, { - "fn": "getAttr", - "argv": [ + "conditions": [ { - "ref": "PartitionResult" + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{channelId}.{OperationType}-kinesis-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" }, - "supportsDualStack" - ] + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" }, - true - ] - } - ], - "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://{channelId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "endpoint": { + "url": "https://{channelId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + }, { "conditions": [], - "endpoint": { - "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" + "error": "ChannelARN does not support the `data` operation type.", + "type": "error" } ], "type": "tree" }, { "conditions": [], - "error": "DualStack is enabled but this partition does not support DualStack", + "error": "Invalid ARN: Invalid channel id.", "type": "error" } ], @@ -5616,12 +7927,8 @@ }, { "conditions": [], - "endpoint": { - "url": "https://{arn#accountId}.{OperationType}-kinesis.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" + "error": "Invalid ARN: Missing channel id.", + "type": "error" } ], "type": "tree" @@ -5644,7 +7951,7 @@ }, { "conditions": [], - "error": "Invalid ARN: Kinesis ARNs don't support `{arnType}` arn types.", + "error": "Invalid ARN: ChannelARN only supports `channel` arn types, found: `{arnType}`.", "type": "error" } ], @@ -7963,7 +10270,7 @@ { "documentation": "ResourceARN as StreamARN test: Invalid ARN: Kinesis ARNs only support stream arn types", "expect": { - "error": "Invalid ARN: Kinesis ARNs don't support `accesspoint` arn types." + "error": "Invalid ARN: Unsupported resource type `accesspoint`. Expected: stream or channel" }, "params": { "Region": "us-east-1", @@ -8314,7 +10621,7 @@ { "documentation": "ResourceARN as ConsumerARN test: Invalid ARN: Kinesis ARNs only support stream arn/consumer arn types", "expect": { - "error": "Invalid ARN: Kinesis ARNs don't support `accesspoint` arn types." + "error": "Invalid ARN: Unsupported resource type `accesspoint`. Expected: stream or channel" }, "params": { "Region": "us-east-1", @@ -8547,33 +10854,261 @@ } }, { - "documentation": "ResourceARN as ConsumerARN test: Account endpoint with fips targeting control operation type in ADC regions", + "documentation": "ResourceARN as ConsumerARN test: Account endpoint with fips targeting control operation type in ADC regions", + "expect": { + "endpoint": { + "url": "https://kinesis-fips.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws-iso:kinesis:us-iso-east-1:123:stream/test-stream/consumer/test-consumer:1525898737" + } + }, + { + "documentation": "ResourceARN as ConsumerARN test: Account endpoint with fips targeting data operation type in ADC regions", + "expect": { + "endpoint": { + "url": "https://kinesis-fips.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": false, + "OperationType": "data", + "ResourceARN": "arn:aws-iso-b:kinesis:us-isob-east-1:123:stream/test-stream/consumer/test-consumer:1525898737" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Invalid ARN: unsupported resource type", + "expect": { + "error": "Invalid ARN: Unsupported resource type `accesspoint`. Expected: stream or channel" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:accesspoint/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Invalid ARN: Not Kinesis", + "expect": { + "error": "Invalid ARN: The ARN was not for the Kinesis service, found: s3." + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:s3:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Invalid ARN: partitions mismatch", + "expect": { + "error": "Partition: aws from ARN doesn't match with partition name: aws-us-gov." + }, + "params": { + "Region": "us-gov-west-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-west-2:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: OperationType not set", + "expect": { + "error": "Operation Type is not set. Please contact service team for resolution." + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Missing channel id", + "expect": { + "error": "Invalid ARN: Missing channel id." + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Invalid channel id (subdomains not allowed)", + "expect": { + "error": "Invalid ARN: Invalid channel id." + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8.ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Custom Endpoint is specified", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe", + "Endpoint": "https://example.com" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: endpoint targeting control operation type", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: endpoint with fips targeting control operation type", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis-fips.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: endpoint with Dual Stack enabled", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: endpoint with Dual Stack and FIPS enabled", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: RegionMismatch: client region should be used for endpoint region", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws:kinesis:us-west-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Account endpoint with FIPS enabled for cn regions", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis-fips.cn-northwest-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-northwest-1", + "UseFIPS": true, + "UseDualStack": false, + "OperationType": "control", + "ResourceARN": "arn:aws-cn:kinesis:cn-northwest-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Account endpoint with FIPS and DualStack enabled for cn regions", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis-fips.cn-northwest-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-northwest-1", + "UseFIPS": true, + "UseDualStack": true, + "OperationType": "control", + "ResourceARN": "arn:aws-cn:kinesis:cn-northwest-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ResourceARN as ChannelARN test: Account endpoint targeting control operation type in ADC regions", "expect": { "endpoint": { - "url": "https://kinesis-fips.us-iso-east-1.c2s.ic.gov" + "url": "https://kinesis.us-iso-east-1.c2s.ic.gov" } }, "params": { "Region": "us-iso-east-1", - "UseFIPS": true, + "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "ResourceARN": "arn:aws-iso:kinesis:us-iso-east-1:123:stream/test-stream/consumer/test-consumer:1525898737" + "ResourceARN": "arn:aws-iso:kinesis:us-iso-east-1:298091445058:channel/apu0zt8ge6utbndxe" } }, { - "documentation": "ResourceARN as ConsumerARN test: Account endpoint with fips targeting data operation type in ADC regions", + "documentation": "ResourceARN as ChannelARN test: Account endpoint with fips targeting control operation type in ADC regions", "expect": { "endpoint": { - "url": "https://kinesis-fips.us-isob-east-1.sc2s.sgov.gov" + "url": "https://kinesis-fips.us-iso-east-1.c2s.ic.gov" } }, "params": { - "Region": "us-isob-east-1", + "Region": "us-iso-east-1", "UseFIPS": true, "UseDualStack": false, - "OperationType": "data", - "ResourceARN": "arn:aws-iso-b:kinesis:us-isob-east-1:123:stream/test-stream/consumer/test-consumer:1525898737" + "OperationType": "control", + "ResourceARN": "arn:aws-iso:kinesis:us-iso-east-1:298091445058:channel/apu0zt8ge6utbndxe" } }, { @@ -9013,147 +11548,384 @@ } }, { - "documentation": "StreamId test: Stream endpoint with ResourceARN targeting data operation type", + "documentation": "StreamId test: Stream endpoint with ResourceARN targeting data operation type", + "expect": { + "endpoint": { + "url": "https://af4lwng4k01746835071.xyz.data-kinesis.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "data", + "StreamId": "af4lwng4k01746835071-xyz", + "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + } + }, + { + "documentation": "StreamId test: Invalid StreamId with ARN", + "expect": { + "endpoint": { + "url": "https://123.data-kinesis.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "data", + "StreamId": "af4lwng4k01746835071=xyz", + "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + } + }, + { + "documentation": "StreamId test: Invalid streamId with custom endpoint", + "expect": { + "endpoint": { + "url": "https://kinesis-pod2.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k01746835071=xyz", + "Endpoint": "https://kinesis-pod2.us-west-2.amazonaws.com" + } + }, + { + "documentation": "StreamId test: Invalid streamId", + "expect": { + "endpoint": { + "url": "https://kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k01746835071=xyz" + } + }, + { + "documentation": "StreamId test: Invalid streamId with custom endpoint and ARN", + "expect": { + "endpoint": { + "url": "https://kinesis-pod2.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k01746835071=xyz", + "Endpoint": "https://kinesis-pod2.us-west-2.amazonaws.com", + "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + } + }, + { + "documentation": "StreamId test: Invalid streamId with longer prefix", + "expect": { + "endpoint": { + "url": "https://123.control-kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k0174683507123-xyz", + "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + } + }, + { + "documentation": "StreamId test: Invalid streamId with shorter prefix", + "expect": { + "endpoint": { + "url": "https://123.control-kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k01746835-xyz", + "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + } + }, + { + "documentation": "StreamId test: Invalid streamId with longer suffix", + "expect": { + "endpoint": { + "url": "https://123.control-kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k01746835071-wxyz", + "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + } + }, + { + "documentation": "StreamId test: Invalid streamId with shorter suffix", + "expect": { + "endpoint": { + "url": "https://123.control-kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k01746835071-yz", + "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + } + }, + { + "documentation": "ChannelARN: endpoint targeting control operation type", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis.us-east-1.amazonaws.com" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1" + }, + "operationName": "DescribeChannel", + "operationParams": { + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + } + ], + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ChannelARN: endpoint with FIPS targeting control operation type", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis-fips.us-east-1.amazonaws.com" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::UseFIPS": true + }, + "operationName": "DeleteChannel", + "operationParams": { + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + } + ], + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false, + "OperationType": "control", + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ChannelARN: endpoint with DualStack targeting control operation type", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis.us-east-1.api.aws" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::UseDualStack": true + }, + "operationName": "UpdateChannel", + "operationParams": { + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + } + ], + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true, + "OperationType": "control", + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "ChannelARN: endpoint with FIPS and DualStack targeting control operation type", + "expect": { + "endpoint": { + "url": "https://apu0zt8ge6utbndxe.control-kinesis-fips.us-east-1.api.aws" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::UseFIPS": true, + "AWS::UseDualStack": true + }, + "operationName": "DescribeChannel", + "operationParams": { + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + } + ], + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true, + "OperationType": "control", + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" + } + }, + { + "documentation": "Invalid ChannelARN: ChannelARN only supports channel arn types", + "expect": { + "error": "Invalid ARN: ChannelARN only supports `channel` arn types, found: `stream`." + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "data", + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:stream/test-stream" + } + }, + { + "documentation": "Invalid ChannelARN: ARN was not for the Kinesis service", "expect": { - "endpoint": { - "url": "https://af4lwng4k01746835071.xyz.data-kinesis.us-east-1.amazonaws.com" - } + "error": "Invalid ARN: The ARN was not for the Kinesis service, found: s3." }, "params": { "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, "OperationType": "data", - "StreamId": "af4lwng4k01746835071-xyz", - "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + "ChannelARN": "arn:aws:s3:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" } }, { - "documentation": "StreamId test: Invalid StreamId with ARN", + "documentation": "Invalid ChannelARN: OperationType not set", "expect": { - "endpoint": { - "url": "https://123.data-kinesis.us-east-1.amazonaws.com" - } + "error": "Operation Type is not set. Please contact service team for resolution." }, "params": { "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, - "OperationType": "data", - "StreamId": "af4lwng4k01746835071=xyz", - "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" } }, { - "documentation": "StreamId test: Invalid streamId with custom endpoint", + "documentation": "Invalid ChannelARN: partitions mismatch", "expect": { - "endpoint": { - "url": "https://kinesis-pod2.us-west-2.amazonaws.com" - } + "error": "Partition: aws from ARN doesn't match with partition name: aws-us-gov." }, "params": { - "Region": "us-west-2", + "Region": "us-gov-west-1", "UseFIPS": false, "UseDualStack": false, - "OperationType": "control", - "StreamId": "af4lwng4k01746835071=xyz", - "Endpoint": "https://kinesis-pod2.us-west-2.amazonaws.com" + "OperationType": "data", + "ChannelARN": "arn:aws:kinesis:us-west-2:298091445058:channel/apu0zt8ge6utbndxe" } }, { - "documentation": "StreamId test: Invalid streamId", + "documentation": "Invalid ChannelARN: missing channel id", "expect": { - "endpoint": { - "url": "https://kinesis.us-west-2.amazonaws.com" - } + "error": "Invalid ARN: Missing channel id." }, "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, - "OperationType": "control", - "StreamId": "af4lwng4k01746835071=xyz" + "OperationType": "data", + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel" } }, { - "documentation": "StreamId test: Invalid streamId with custom endpoint and ARN", + "documentation": "Invalid ChannelARN: channel id contains a period (subdomains not allowed)", "expect": { - "endpoint": { - "url": "https://kinesis-pod2.us-west-2.amazonaws.com" - } + "error": "Invalid ARN: Invalid channel id." }, "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "StreamId": "af4lwng4k01746835071=xyz", - "Endpoint": "https://kinesis-pod2.us-west-2.amazonaws.com", - "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8.ge6utbndxe" } }, { - "documentation": "StreamId test: Invalid streamId with longer prefix", + "documentation": "Invalid ChannelARN: channel id exceeds 63 character host label limit", "expect": { - "endpoint": { - "url": "https://123.control-kinesis.us-west-2.amazonaws.com" - } + "error": "Invalid ARN: Invalid channel id." }, "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "StreamId": "af4lwng4k0174683507123-xyz", - "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" } }, { - "documentation": "StreamId test: Invalid streamId with shorter prefix", + "documentation": "Invalid ChannelARN: channel id starts with a hyphen", "expect": { - "endpoint": { - "url": "https://123.control-kinesis.us-west-2.amazonaws.com" - } + "error": "Invalid ARN: Invalid channel id." }, "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "StreamId": "af4lwng4k01746835-xyz", - "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/-pu0zt8ge6utbndxe" } }, { - "documentation": "StreamId test: Invalid streamId with longer suffix", + "documentation": "Invalid ChannelARN: channel id contains an invalid character", "expect": { - "endpoint": { - "url": "https://123.control-kinesis.us-west-2.amazonaws.com" - } + "error": "Invalid ARN: Invalid channel id." }, "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "StreamId": "af4lwng4k01746835071-wxyz", - "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8_ge6utbndxe" } }, { - "documentation": "StreamId test: Invalid streamId with shorter suffix", + "documentation": "Invalid ChannelARN: data operation type is not supported for channel", "expect": { - "endpoint": { - "url": "https://123.control-kinesis.us-west-2.amazonaws.com" - } + "error": "ChannelARN does not support the `data` operation type." }, "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, - "OperationType": "control", - "StreamId": "af4lwng4k01746835071-yz", - "ResourceARN": "arn:aws:kinesis:us-east-1:123:stream/test-stream" + "OperationType": "data", + "ChannelARN": "arn:aws:kinesis:us-east-1:298091445058:channel/apu0zt8ge6utbndxe" } }, { @@ -9396,33 +12168,194 @@ "url": "https://kinesis.us-west-2.amazonaws.com" } }, - "operationInputs": [ - { - "builtInParams": { - "AWS::Region": "us-west-2", - "AWS::Auth::AccountId": "123", - "AWS::Auth::AccountIdEndpointMode": "disabled" - }, - "operationName": "ListShards", - "operationParams": { - "StreamName": "testStream" - } - } - ], + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-west-2", + "AWS::Auth::AccountId": "123", + "AWS::Auth::AccountIdEndpointMode": "disabled" + }, + "operationName": "ListShards", + "operationParams": { + "StreamName": "testStream" + } + } + ], + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountId": "123", + "AccountIdEndpointMode": "disabled" + } + }, + { + "documentation": "Account Id and StreamArn with account id endpoint mode disabled", + "expect": { + "endpoint": { + "url": "https://456.control-kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamARN": "arn:aws:kinesis:us-west-2:456:stream/testStream", + "AccountId": "123", + "AccountIdEndpointMode": "disabled" + } + }, + { + "documentation": "Account Id missing with account id endpoint mode required", + "expect": { + "error": "AccountIdEndpointMode is required but no AccountID was provided or able to be loaded" + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-west-2", + "AWS::Auth::AccountIdEndpointMode": "required" + }, + "operationName": "ListShards", + "operationParams": { + "StreamName": "testStream" + } + } + ], + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountIdEndpointMode": "required" + } + }, + { + "documentation": "Account Id missing with account id endpoint mode required, fips and dual stack enabled", + "expect": { + "error": "AccountIdEndpointMode is required but no AccountID was provided or able to be loaded" + }, + "params": { + "Region": "us-west-2", + "UseFIPS": true, + "UseDualStack": true, + "OperationType": "control", + "AccountIdEndpointMode": "required" + } + }, + { + "documentation": "Account Id missing with account id endpoint mode required in ADC region", + "expect": { + "error": "Invalid Configuration: AccountIdEndpointMode is required but account endpoints are not supported in this partition" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountIdEndpointMode": "required" + } + }, + { + "documentation": "Account Id present with account id endpoint mode required in ADC region", + "expect": { + "error": "Invalid Configuration: AccountIdEndpointMode is required but account endpoints are not supported in this partition" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountId": "123456789012", + "AccountIdEndpointMode": "required" + } + }, + { + "documentation": "Account Id present with account id endpoint mode preferred in ADC region", + "expect": { + "endpoint": { + "url": "https://kinesis.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountId": "123456789012", + "AccountIdEndpointMode": "preferred" + } + }, + { + "documentation": "Account Id missing with account id endpoint mode required and endpoint override", + "expect": { + "endpoint": { + "url": "https://kinesis-pod1.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "Endpoint": "https://kinesis-pod1.us-west-2.amazonaws.com", + "AccountIdEndpointMode": "required" + } + }, + { + "documentation": "Account Id missing with StreamArn and account id endpoint mode required", + "expect": { + "endpoint": { + "url": "https://456.control-kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamARN": "arn:aws:kinesis:us-west-2:456:stream/testStream", + "AccountIdEndpointMode": "required" + } + }, + { + "documentation": "Account Id missing with StreamId and account id endpoint mode required", + "expect": { + "endpoint": { + "url": "https://af4lwng4k01746835071.xyz.control-kinesis.us-west-2.amazonaws.com" + } + }, + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "StreamId": "af4lwng4k01746835071-xyz", + "AccountIdEndpointMode": "required" + } + }, + { + "documentation": "Account Id missing with account id endpoint mode preferred", + "expect": { + "endpoint": { + "url": "https://kinesis.us-west-2.amazonaws.com" + } + }, "params": { "Region": "us-west-2", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "AccountId": "123", - "AccountIdEndpointMode": "disabled" + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "Account Id and StreamArn with account id endpoint mode disabled", + "documentation": "Account Id missing with account id endpoint mode disabled", "expect": { "endpoint": { - "url": "https://456.control-kinesis.us-west-2.amazonaws.com" + "url": "https://kinesis.us-west-2.amazonaws.com" } }, "params": { @@ -9430,85 +12363,104 @@ "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "StreamARN": "arn:aws:kinesis:us-west-2:456:stream/testStream", - "AccountId": "123", "AccountIdEndpointMode": "disabled" } }, { - "documentation": "Account Id missing with account id endpoint mode required", + "documentation": "CreateStream: control operation type with AccountId", "expect": { - "error": "AccountIdEndpointMode is required but no AccountID was provided or able to be loaded" + "endpoint": { + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis.us-east-1.amazonaws.com" + } }, "operationInputs": [ { "builtInParams": { - "AWS::Region": "us-west-2", - "AWS::Auth::AccountIdEndpointMode": "required" + "AWS::Region": "us-east-1", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred" }, - "operationName": "ListShards", + "operationName": "CreateStream", "operationParams": { - "StreamName": "testStream" + "StreamName": "test-stream", + "ShardCount": 1 } } ], "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "AccountIdEndpointMode": "required" + "AccountId": "123456789012", + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "Account Id missing with account id endpoint mode required, fips and dual stack enabled", + "documentation": "CreateStream: control operation type with FIPS and AccountId", "expect": { - "error": "AccountIdEndpointMode is required but no AccountID was provided or able to be loaded" + "endpoint": { + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis-fips.us-east-1.amazonaws.com" + } }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::UseFIPS": true + }, + "operationName": "CreateStream", + "operationParams": { + "StreamName": "test-stream", + "ShardCount": 1 + } + } + ], "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": true, - "UseDualStack": true, - "OperationType": "control", - "AccountIdEndpointMode": "required" - } - }, - { - "documentation": "Account Id missing with account id endpoint mode required in ADC region", - "expect": { - "error": "Invalid Configuration: AccountIdEndpointMode is required but account endpoints are not supported in this partition" - }, - "params": { - "Region": "us-iso-east-1", - "UseFIPS": false, - "UseDualStack": false, - "OperationType": "control", - "AccountIdEndpointMode": "required" - } - }, - { - "documentation": "Account Id present with account id endpoint mode required in ADC region", - "expect": { - "error": "Invalid Configuration: AccountIdEndpointMode is required but account endpoints are not supported in this partition" - }, - "params": { - "Region": "us-iso-east-1", - "UseFIPS": false, "UseDualStack": false, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "required" + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "Account Id present with account id endpoint mode preferred in ADC region", + "documentation": "ListStreams: control operation type with AccountId", "expect": { "endpoint": { - "url": "https://kinesis.us-iso-east-1.c2s.ic.gov" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis.us-west-2.amazonaws.com" } }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-west-2", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred" + }, + "operationName": "ListStreams" + } + ], "params": { - "Region": "us-iso-east-1", + "Region": "us-west-2", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", @@ -9517,85 +12469,167 @@ } }, { - "documentation": "Account Id missing with account id endpoint mode required and endpoint override", + "documentation": "ListStreams: control operation type with FIPS and DualStack", "expect": { "endpoint": { - "url": "https://kinesis-pod1.us-west-2.amazonaws.com" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis-fips.us-west-2.api.aws" } }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-west-2", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::UseFIPS": true, + "AWS::UseDualStack": true + }, + "operationName": "ListStreams" + } + ], "params": { "Region": "us-west-2", - "UseFIPS": false, - "UseDualStack": false, + "UseFIPS": true, + "UseDualStack": true, "OperationType": "control", - "Endpoint": "https://kinesis-pod1.us-west-2.amazonaws.com", - "AccountIdEndpointMode": "required" + "AccountId": "123456789012", + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "Account Id missing with StreamArn and account id endpoint mode required", + "documentation": "DescribeLimits: control operation type with AccountId", "expect": { "endpoint": { - "url": "https://456.control-kinesis.us-west-2.amazonaws.com" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis.us-east-1.amazonaws.com" } }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred" + }, + "operationName": "DescribeLimits" + } + ], "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", - "StreamARN": "arn:aws:kinesis:us-west-2:456:stream/testStream", - "AccountIdEndpointMode": "required" + "AccountId": "123456789012", + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "Account Id missing with StreamId and account id endpoint mode required", + "documentation": "DescribeLimits: control operation type with FIPS", "expect": { "endpoint": { - "url": "https://af4lwng4k01746835071.xyz.control-kinesis.us-west-2.amazonaws.com" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis-fips.us-east-1.amazonaws.com" } }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::UseFIPS": true + }, + "operationName": "DescribeLimits" + } + ], "params": { - "Region": "us-west-2", - "UseFIPS": false, + "Region": "us-east-1", + "UseFIPS": true, "UseDualStack": false, "OperationType": "control", - "StreamId": "af4lwng4k01746835071-xyz", - "AccountIdEndpointMode": "required" + "AccountId": "123456789012", + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "Account Id missing with account id endpoint mode preferred", + "documentation": "DescribeAccountSettings: control operation type with AccountId", "expect": { "endpoint": { - "url": "https://kinesis.us-west-2.amazonaws.com" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis.us-west-2.amazonaws.com" } }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-west-2", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred" + }, + "operationName": "DescribeAccountSettings" + } + ], "params": { "Region": "us-west-2", "UseFIPS": false, "UseDualStack": false, "OperationType": "control", + "AccountId": "123456789012", "AccountIdEndpointMode": "preferred" } }, { - "documentation": "Account Id missing with account id endpoint mode disabled", + "documentation": "DescribeAccountSettings: control operation type with FIPS and DualStack", "expect": { "endpoint": { - "url": "https://kinesis.us-west-2.amazonaws.com" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis-fips.us-west-2.api.aws" } }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-west-2", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::UseFIPS": true, + "AWS::UseDualStack": true + }, + "operationName": "DescribeAccountSettings" + } + ], "params": { "Region": "us-west-2", - "UseFIPS": false, - "UseDualStack": false, + "UseFIPS": true, + "UseDualStack": true, "OperationType": "control", - "AccountIdEndpointMode": "disabled" + "AccountId": "123456789012", + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "CreateStream: control operation type with AccountId", + "documentation": "UpdateAccountSettings: control operation type with AccountId", "expect": { "endpoint": { "properties": { @@ -9613,10 +12647,11 @@ "AWS::Auth::AccountId": "123456789012", "AWS::Auth::AccountIdEndpointMode": "preferred" }, - "operationName": "CreateStream", + "operationName": "UpdateAccountSettings", "operationParams": { - "StreamName": "test-stream", - "ShardCount": 1 + "MinimumThroughputBillingCommitment": { + "Status": "ENABLED" + } } } ], @@ -9630,7 +12665,7 @@ } }, { - "documentation": "CreateStream: control operation type with FIPS and AccountId", + "documentation": "UpdateAccountSettings: control operation type with FIPS", "expect": { "endpoint": { "properties": { @@ -9649,10 +12684,11 @@ "AWS::Auth::AccountIdEndpointMode": "preferred", "AWS::UseFIPS": true }, - "operationName": "CreateStream", + "operationName": "UpdateAccountSettings", "operationParams": { - "StreamName": "test-stream", - "ShardCount": 1 + "MinimumThroughputBillingCommitment": { + "Status": "ENABLED" + } } } ], @@ -9666,15 +12702,40 @@ } }, { - "documentation": "ListStreams: control operation type with AccountId", + "documentation": "CreateStream: account id endpoint mode disabled falls back to regional endpoint", "expect": { "endpoint": { - "properties": { - "metricValues": [ - "O" - ] + "url": "https://kinesis.us-east-1.amazonaws.com" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "disabled" }, - "url": "https://123456789012.control-kinesis.us-west-2.amazonaws.com" + "operationName": "CreateStream", + "operationParams": { + "StreamName": "test-stream", + "ShardCount": 1 + } + } + ], + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountId": "123456789012", + "AccountIdEndpointMode": "disabled" + } + }, + { + "documentation": "ListStreams: account id endpoint mode disabled falls back to regional endpoint", + "expect": { + "endpoint": { + "url": "https://kinesis.us-west-2.amazonaws.com" } }, "operationInputs": [ @@ -9682,7 +12743,7 @@ "builtInParams": { "AWS::Region": "us-west-2", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "preferred" + "AWS::Auth::AccountIdEndpointMode": "disabled" }, "operationName": "ListStreams" } @@ -9693,19 +12754,40 @@ "UseDualStack": false, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "preferred" + "AccountIdEndpointMode": "disabled" } }, { - "documentation": "ListStreams: control operation type with FIPS and DualStack", + "documentation": "DescribeLimits: account id endpoint mode disabled falls back to regional endpoint", "expect": { "endpoint": { - "properties": { - "metricValues": [ - "O" - ] + "url": "https://kinesis.us-east-1.amazonaws.com" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-east-1", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "disabled" }, - "url": "https://123456789012.control-kinesis-fips.us-west-2.api.aws" + "operationName": "DescribeLimits" + } + ], + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountId": "123456789012", + "AccountIdEndpointMode": "disabled" + } + }, + { + "documentation": "DescribeAccountSettings: account id endpoint mode disabled falls back to regional endpoint", + "expect": { + "endpoint": { + "url": "https://kinesis.us-west-2.amazonaws.com" } }, "operationInputs": [ @@ -9713,32 +12795,25 @@ "builtInParams": { "AWS::Region": "us-west-2", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "preferred", - "AWS::UseFIPS": true, - "AWS::UseDualStack": true + "AWS::Auth::AccountIdEndpointMode": "disabled" }, - "operationName": "ListStreams" + "operationName": "DescribeAccountSettings" } ], "params": { "Region": "us-west-2", - "UseFIPS": true, - "UseDualStack": true, + "UseFIPS": false, + "UseDualStack": false, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "preferred" + "AccountIdEndpointMode": "disabled" } }, { - "documentation": "DescribeLimits: control operation type with AccountId", + "documentation": "UpdateAccountSettings: account id endpoint mode disabled falls back to regional endpoint", "expect": { "endpoint": { - "properties": { - "metricValues": [ - "O" - ] - }, - "url": "https://123456789012.control-kinesis.us-east-1.amazonaws.com" + "url": "https://kinesis.us-east-1.amazonaws.com" } }, "operationInputs": [ @@ -9746,9 +12821,14 @@ "builtInParams": { "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "preferred" + "AWS::Auth::AccountIdEndpointMode": "disabled" }, - "operationName": "DescribeLimits" + "operationName": "UpdateAccountSettings", + "operationParams": { + "MinimumThroughputBillingCommitment": { + "Status": "ENABLED" + } + } } ], "params": { @@ -9757,19 +12837,14 @@ "UseDualStack": false, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "preferred" + "AccountIdEndpointMode": "disabled" } }, { - "documentation": "DescribeLimits: control operation type with FIPS", + "documentation": "CreateStream: account id endpoint mode disabled with FIPS falls back to regional FIPS endpoint", "expect": { "endpoint": { - "properties": { - "metricValues": [ - "O" - ] - }, - "url": "https://123456789012.control-kinesis-fips.us-east-1.amazonaws.com" + "url": "https://kinesis-fips.us-east-1.amazonaws.com" } }, "operationInputs": [ @@ -9777,10 +12852,14 @@ "builtInParams": { "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::Auth::AccountIdEndpointMode": "disabled", "AWS::UseFIPS": true }, - "operationName": "DescribeLimits" + "operationName": "CreateStream", + "operationParams": { + "StreamName": "test-stream", + "ShardCount": 1 + } } ], "params": { @@ -9789,75 +12868,74 @@ "UseDualStack": false, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "preferred" + "AccountIdEndpointMode": "disabled" } }, { - "documentation": "DescribeAccountSettings: control operation type with AccountId", + "documentation": "CreateStream: account id endpoint mode disabled with DualStack falls back to regional DualStack endpoint", "expect": { "endpoint": { - "properties": { - "metricValues": [ - "O" - ] - }, - "url": "https://123456789012.control-kinesis.us-west-2.amazonaws.com" + "url": "https://kinesis.us-east-1.api.aws" } }, "operationInputs": [ { "builtInParams": { - "AWS::Region": "us-west-2", + "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "preferred" + "AWS::Auth::AccountIdEndpointMode": "disabled", + "AWS::UseDualStack": true }, - "operationName": "DescribeAccountSettings" + "operationName": "CreateStream", + "operationParams": { + "StreamName": "test-stream", + "ShardCount": 1 + } } ], "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": false, - "UseDualStack": false, + "UseDualStack": true, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "preferred" + "AccountIdEndpointMode": "disabled" } }, { - "documentation": "DescribeAccountSettings: control operation type with FIPS and DualStack", + "documentation": "CreateStream: account id endpoint mode disabled with FIPS and DualStack falls back to regional FIPS DualStack endpoint", "expect": { "endpoint": { - "properties": { - "metricValues": [ - "O" - ] - }, - "url": "https://123456789012.control-kinesis-fips.us-west-2.api.aws" + "url": "https://kinesis-fips.us-east-1.api.aws" } }, "operationInputs": [ { "builtInParams": { - "AWS::Region": "us-west-2", + "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::Auth::AccountIdEndpointMode": "disabled", "AWS::UseFIPS": true, "AWS::UseDualStack": true }, - "operationName": "DescribeAccountSettings" + "operationName": "CreateStream", + "operationParams": { + "StreamName": "test-stream", + "ShardCount": 1 + } } ], "params": { - "Region": "us-west-2", + "Region": "us-east-1", "UseFIPS": true, "UseDualStack": true, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "preferred" + "AccountIdEndpointMode": "disabled" } }, { - "documentation": "UpdateAccountSettings: control operation type with AccountId", + "documentation": "CreateChannel: control operation type with AccountId", "expect": { "endpoint": { "properties": { @@ -9875,11 +12953,18 @@ "AWS::Auth::AccountId": "123456789012", "AWS::Auth::AccountIdEndpointMode": "preferred" }, - "operationName": "UpdateAccountSettings", + "operationName": "CreateChannel", "operationParams": { - "MinimumThroughputBillingCommitment": { - "Status": "ENABLED" - } + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] } } ], @@ -9893,7 +12978,7 @@ } }, { - "documentation": "UpdateAccountSettings: control operation type with FIPS", + "documentation": "CreateChannel: control operation type with FIPS and AccountId", "expect": { "endpoint": { "properties": { @@ -9912,11 +12997,18 @@ "AWS::Auth::AccountIdEndpointMode": "preferred", "AWS::UseFIPS": true }, - "operationName": "UpdateAccountSettings", + "operationName": "CreateChannel", "operationParams": { - "MinimumThroughputBillingCommitment": { - "Status": "ENABLED" - } + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] } } ], @@ -9930,10 +13022,15 @@ } }, { - "documentation": "CreateStream: account id endpoint mode disabled falls back to regional endpoint", + "documentation": "CreateChannel: control operation type with DualStack and AccountId", "expect": { "endpoint": { - "url": "https://kinesis.us-east-1.amazonaws.com" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis.us-east-1.api.aws" } }, "operationInputs": [ @@ -9941,52 +13038,80 @@ "builtInParams": { "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "disabled" + "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::UseDualStack": true }, - "operationName": "CreateStream", + "operationName": "CreateChannel", "operationParams": { - "StreamName": "test-stream", - "ShardCount": 1 + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] } } ], "params": { "Region": "us-east-1", "UseFIPS": false, - "UseDualStack": false, + "UseDualStack": true, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "disabled" + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "ListStreams: account id endpoint mode disabled falls back to regional endpoint", + "documentation": "CreateChannel: control operation type with FIPS and DualStack and AccountId", "expect": { "endpoint": { - "url": "https://kinesis.us-west-2.amazonaws.com" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis-fips.us-east-1.api.aws" } }, "operationInputs": [ { "builtInParams": { - "AWS::Region": "us-west-2", + "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "disabled" + "AWS::Auth::AccountIdEndpointMode": "preferred", + "AWS::UseFIPS": true, + "AWS::UseDualStack": true }, - "operationName": "ListStreams" + "operationName": "CreateChannel", + "operationParams": { + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] + } } ], "params": { - "Region": "us-west-2", - "UseFIPS": false, - "UseDualStack": false, + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "disabled" + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "DescribeLimits: account id endpoint mode disabled falls back to regional endpoint", + "documentation": "CreateChannel: account id endpoint mode disabled falls back to regional endpoint", "expect": { "endpoint": { "url": "https://kinesis.us-east-1.amazonaws.com" @@ -9999,7 +13124,19 @@ "AWS::Auth::AccountId": "123456789012", "AWS::Auth::AccountIdEndpointMode": "disabled" }, - "operationName": "DescribeLimits" + "operationName": "CreateChannel", + "operationParams": { + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] + } } ], "params": { @@ -10012,25 +13149,38 @@ } }, { - "documentation": "DescribeAccountSettings: account id endpoint mode disabled falls back to regional endpoint", + "documentation": "CreateChannel: account id endpoint mode disabled with FIPS falls back to regional FIPS endpoint", "expect": { "endpoint": { - "url": "https://kinesis.us-west-2.amazonaws.com" + "url": "https://kinesis-fips.us-east-1.amazonaws.com" } }, "operationInputs": [ { "builtInParams": { - "AWS::Region": "us-west-2", + "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "disabled" + "AWS::Auth::AccountIdEndpointMode": "disabled", + "AWS::UseFIPS": true }, - "operationName": "DescribeAccountSettings" + "operationName": "CreateChannel", + "operationParams": { + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] + } } ], "params": { - "Region": "us-west-2", - "UseFIPS": false, + "Region": "us-east-1", + "UseFIPS": true, "UseDualStack": false, "OperationType": "control", "AccountId": "123456789012", @@ -10038,10 +13188,10 @@ } }, { - "documentation": "UpdateAccountSettings: account id endpoint mode disabled falls back to regional endpoint", + "documentation": "CreateChannel: account id endpoint mode disabled with DualStack falls back to regional DualStack endpoint", "expect": { "endpoint": { - "url": "https://kinesis.us-east-1.amazonaws.com" + "url": "https://kinesis.us-east-1.api.aws" } }, "operationInputs": [ @@ -10049,30 +13199,38 @@ "builtInParams": { "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "disabled" + "AWS::Auth::AccountIdEndpointMode": "disabled", + "AWS::UseDualStack": true }, - "operationName": "UpdateAccountSettings", + "operationName": "CreateChannel", "operationParams": { - "MinimumThroughputBillingCommitment": { - "Status": "ENABLED" - } + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] } } ], "params": { "Region": "us-east-1", "UseFIPS": false, - "UseDualStack": false, + "UseDualStack": true, "OperationType": "control", "AccountId": "123456789012", "AccountIdEndpointMode": "disabled" } }, { - "documentation": "CreateStream: account id endpoint mode disabled with FIPS falls back to regional FIPS endpoint", + "documentation": "CreateChannel: account id endpoint mode disabled with FIPS and DualStack falls back to regional FIPS DualStack endpoint", "expect": { "endpoint": { - "url": "https://kinesis-fips.us-east-1.amazonaws.com" + "url": "https://kinesis-fips.us-east-1.api.aws" } }, "operationInputs": [ @@ -10081,84 +13239,120 @@ "AWS::Region": "us-east-1", "AWS::Auth::AccountId": "123456789012", "AWS::Auth::AccountIdEndpointMode": "disabled", - "AWS::UseFIPS": true + "AWS::UseFIPS": true, + "AWS::UseDualStack": true }, - "operationName": "CreateStream", + "operationName": "CreateChannel", "operationParams": { - "StreamName": "test-stream", - "ShardCount": 1 + "ChannelName": "test-channel", + "ServiceExecutionRoleARN": "arn:aws:iam::123456789012:role/test-role", + "StreamConfigurationList": [ + { + "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "RecordConfiguration": { + "RecordFormatType": "JSON" + } + } + ] } } ], "params": { "Region": "us-east-1", "UseFIPS": true, - "UseDualStack": false, + "UseDualStack": true, "OperationType": "control", "AccountId": "123456789012", "AccountIdEndpointMode": "disabled" } }, { - "documentation": "CreateStream: account id endpoint mode disabled with DualStack falls back to regional DualStack endpoint", + "documentation": "ListChannels: control operation type with AccountId", "expect": { "endpoint": { - "url": "https://kinesis.us-east-1.api.aws" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis.us-west-2.amazonaws.com" } }, "operationInputs": [ { "builtInParams": { - "AWS::Region": "us-east-1", + "AWS::Region": "us-west-2", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "disabled", - "AWS::UseDualStack": true + "AWS::Auth::AccountIdEndpointMode": "preferred" }, - "operationName": "CreateStream", - "operationParams": { - "StreamName": "test-stream", - "ShardCount": 1 - } + "operationName": "ListChannels" } ], "params": { - "Region": "us-east-1", + "Region": "us-west-2", "UseFIPS": false, - "UseDualStack": true, + "UseDualStack": false, "OperationType": "control", "AccountId": "123456789012", - "AccountIdEndpointMode": "disabled" + "AccountIdEndpointMode": "preferred" } }, { - "documentation": "CreateStream: account id endpoint mode disabled with FIPS and DualStack falls back to regional FIPS DualStack endpoint", + "documentation": "ListChannels: control operation type with FIPS and DualStack", "expect": { "endpoint": { - "url": "https://kinesis-fips.us-east-1.api.aws" + "properties": { + "metricValues": [ + "O" + ] + }, + "url": "https://123456789012.control-kinesis-fips.us-west-2.api.aws" } }, "operationInputs": [ { "builtInParams": { - "AWS::Region": "us-east-1", + "AWS::Region": "us-west-2", "AWS::Auth::AccountId": "123456789012", - "AWS::Auth::AccountIdEndpointMode": "disabled", + "AWS::Auth::AccountIdEndpointMode": "preferred", "AWS::UseFIPS": true, "AWS::UseDualStack": true }, - "operationName": "CreateStream", - "operationParams": { - "StreamName": "test-stream", - "ShardCount": 1 - } + "operationName": "ListChannels" } ], "params": { - "Region": "us-east-1", + "Region": "us-west-2", "UseFIPS": true, "UseDualStack": true, "OperationType": "control", "AccountId": "123456789012", + "AccountIdEndpointMode": "preferred" + } + }, + { + "documentation": "ListChannels: account id endpoint mode disabled falls back to regional endpoint", + "expect": { + "endpoint": { + "url": "https://kinesis.us-west-2.amazonaws.com" + } + }, + "operationInputs": [ + { + "builtInParams": { + "AWS::Region": "us-west-2", + "AWS::Auth::AccountId": "123456789012", + "AWS::Auth::AccountIdEndpointMode": "disabled" + }, + "operationName": "ListChannels" + } + ], + "params": { + "Region": "us-west-2", + "UseFIPS": false, + "UseDualStack": false, + "OperationType": "control", + "AccountId": "123456789012", "AccountIdEndpointMode": "disabled" } } @@ -10182,6 +13376,156 @@ "smithy.api#error": "client" } }, + "com.amazonaws.kinesis#ListChannels": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#ListChannelsInput" + }, + "output": { + "target": "com.amazonaws.kinesis#ListChannelsOutput" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#AccessDeniedException" + }, + { + "target": "com.amazonaws.kinesis#ExpiredNextTokenException" + }, + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "Lists the channels in your account. You can filter the results by source stream. The results are paginated. Use the NextToken value returned in the response to retrieve additional results.
Use this operation to find channels before deleting a stream, or to audit the channels configured in an Amazon Web Services Region.
\nThis operation has a call limit of 5 transactions per second (TPS) for each Amazon Web Services account. Exceeding 5 TPS results in a LimitExceededException.
Filters the results to channels associated with the specified streams.
" + } + }, + "MaxResults": { + "target": "com.amazonaws.kinesis#ListChannelsInputLimit", + "traits": { + "smithy.api#documentation": "The maximum number of channels to return in a single call. The default value is 100. If you specify a value greater than 100, at most 100 results are returned.
" + } + }, + "NextToken": { + "target": "com.amazonaws.kinesis#NextToken", + "traits": { + "smithy.api#documentation": "The pagination token returned by a previous call. Specify this token to retrieve the next page of results. This value is null when there are no more results to return.
A list of channel summaries.
", + "smithy.api#required": {} + } + }, + "NextToken": { + "target": "com.amazonaws.kinesis#NextToken", + "traits": { + "smithy.api#documentation": "The pagination token to use in a subsequent call to retrieve the next page of results. This value is null when there are no more results to return.
The partition transform to apply. The only valid value is TIME_HOUR.
The name of the source column used for partitioning. This column must be of the timestamptz type.
Specifies a single partition field.
" + } + }, + "com.amazonaws.kinesis#PartitionFieldList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#PartitionField" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 10 + } + } + }, + "com.amazonaws.kinesis#PartitionKey": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 256 + } + } + }, + "com.amazonaws.kinesis#PartitionSourceName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 255 + }, + "smithy.api#pattern": "^[a-zA-Z0-9\\.\\_]+$" + } + }, + "com.amazonaws.kinesis#PartitionSpec": { + "type": "structure", + "members": { + "PartitionFields": { + "target": "com.amazonaws.kinesis#PartitionFieldList", + "traits": { + "smithy.api#documentation": "The list of partition fields.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Specifies how the destination table is partitioned.
" + } + }, + "com.amazonaws.kinesis#PartitionTransform": { + "type": "enum", + "members": { + "TIME_HOUR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TIME_HOUR" + } } } }, @@ -11059,6 +14473,9 @@ { "target": "com.amazonaws.kinesis#AccessDeniedException" }, + { + "target": "com.amazonaws.kinesis#DryRunOperationException" + }, { "target": "com.amazonaws.kinesis#InternalFailureException" }, @@ -11151,6 +14568,12 @@ "name": "StreamId" } } + }, + "DryRun": { + "target": "com.amazonaws.kinesis#BooleanObject", + "traits": { + "smithy.api#documentation": "Checks if your request will succeed. DryRun is an optional\n parameter.
Checks if your request will succeed. DryRun is an optional\n parameter.
The error code for an individual record result. ErrorCodes can be either\n ProvisionedThroughputExceededException or\n InternalFailure.
The error code for an individual record result. ErrorCodes can be either\n ProvisionedThroughputExceededException or\n InternalFailure.
The error message for an individual record result. An ErrorCode value of\n ProvisionedThroughputExceededException has an error message that\n includes the account ID, stream name, and shard ID. An ErrorCode value of\n InternalFailure has the error message \"Internal Service\n Failure\".
Represents the result of an individual record from a PutRecords request.\n A record that is successfully added to a stream includes SequenceNumber and\n ShardId in the result. A record that fails to be added to the stream\n includes ErrorCode and ErrorMessage in the result.
Attaches a resource-based policy to a data stream or registered consumer. If you are using an identity other than the root user of \n the Amazon Web Services account that owns the resource, the calling identity must have the PutResourcePolicy permissions on the \n specified Kinesis Data Streams resource and belong to the owner's account in order to use this operation.\n If you don't have PutResourcePolicy permissions, Amazon Kinesis Data Streams returns a 403 Access Denied error. \n If you receive a ResourceNotFoundException, check to see if you passed a valid stream or consumer resource.\n
Request patterns can be one of the following:
\nData stream pattern: arn:aws.*:kinesis:.*:\\d{12}:.*stream/\\S+\n
Consumer pattern: ^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+\n
For more information, see Controlling Access to Amazon Kinesis Data Streams Resources Using IAM.
", + "smithy.rules#staticContextParams": { + "OperationType": { + "value": "control" + } + } + } + }, + "com.amazonaws.kinesis#PutResourcePolicyInput": { + "type": "structure", + "members": { + "ResourceARN": { + "target": "com.amazonaws.kinesis#ResourceARN", + "traits": { + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the data stream or consumer.
", + "smithy.api#required": {}, + "smithy.rules#contextParam": { + "name": "ResourceARN" + } + } + }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } + } + }, + "Policy": { + "target": "com.amazonaws.kinesis#Policy", + "traits": { + "smithy.api#documentation": "Details of the resource policy. It must include the identity of the principal and the actions allowed on this resource. This is formatted as a JSON string.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.kinesis#Record": { + "type": "structure", + "members": { + "SequenceNumber": { + "target": "com.amazonaws.kinesis#SequenceNumber", + "traits": { + "smithy.api#documentation": "The unique identifier of the record within its shard.
", + "smithy.api#required": {} + } + }, + "ApproximateArrivalTimestamp": { + "target": "com.amazonaws.kinesis#Timestamp", + "traits": { + "smithy.api#documentation": "The approximate time that the record was inserted into the stream.
" + } + }, + "Data": { + "target": "com.amazonaws.kinesis#Data", + "traits": { + "smithy.api#documentation": "The data blob. The data in the blob is both opaque and immutable to Kinesis Data\n Streams, which does not inspect, interpret, or change the data in the blob in any way.\n When the data blob (the payload before base64-encoding) is added to the partition key\n size, the total size must not exceed the maximum record size (10 MiB).
", + "smithy.api#required": {} + } + }, + "PartitionKey": { + "target": "com.amazonaws.kinesis#PartitionKey", + "traits": { + "smithy.api#documentation": "Identifies which shard in the stream the data record is assigned to.
", + "smithy.api#required": {} + } + }, + "EncryptionType": { + "target": "com.amazonaws.kinesis#EncryptionType", + "traits": { + "smithy.api#documentation": "The encryption type used on the record. This parameter can be one of the following\n values:
\n\n NONE: Do not encrypt the records in the stream.
\n KMS: Use server-side encryption on the records in the stream\n using a customer-managed Amazon Web Services KMS key.
The unit of data of the Kinesis data stream, which is composed of a sequence number, a\n partition key, and a data blob.
" + } + }, + "com.amazonaws.kinesis#RecordConfiguration": { + "type": "structure", + "members": { + "RecordFormatType": { + "target": "com.amazonaws.kinesis#RecordFormatType", + "traits": { + "smithy.api#documentation": "The format of records on the source stream. Valid values:
\n\n GSR_JSON - Supported only for streaming table (Amazon S3 Tables) destinations.
\n JSON - Supported for both general purpose Amazon S3 and streaming table destinations.
\n STRING - Supported only for general purpose Amazon S3 destinations.
\n BYTE_ARRAY - Supported only for general purpose Amazon S3 destinations.
The Amazon Resource Name (ARN) of the Amazon Web Services Glue Schema Registry schema used to validate records. Required when the channel destination is a streaming table (Amazon S3 Tables), for both the JSON and GSR_JSON record formats.
Specifies the format of records read from the source stream.
" + } + }, + "com.amazonaws.kinesis#RecordFormatType": { + "type": "enum", + "members": { + "GSR_JSON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GSR_JSON" + } + }, + "JSON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JSON" + } + }, + "STRING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "STRING" + } + }, + "BYTE_ARRAY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BYTE_ARRAY" + } + } + } + }, + "com.amazonaws.kinesis#RecordList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#Record" + } + }, + "com.amazonaws.kinesis#RegisterStreamConsumer": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesis#RegisterStreamConsumerInput" + }, + "output": { + "target": "com.amazonaws.kinesis#RegisterStreamConsumerOutput" + }, + "errors": [ + { + "target": "com.amazonaws.kinesis#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesis#LimitExceededException" + }, + { + "target": "com.amazonaws.kinesis#ResourceInUseException" + }, + { + "target": "com.amazonaws.kinesis#ResourceNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "Registers a consumer with a Kinesis data stream. When you use this operation, the\n consumer you register can then call SubscribeToShard to receive data\n from the stream using enhanced fan-out, at a rate of up to 2 MiB per second for every\n shard you subscribe to. This rate is unaffected by the total number of consumers that\n read from the same stream.
\nYou can add tags to the registered consumer when making a RegisterStreamConsumer request by setting the Tags parameter. If you pass the Tags parameter, in addition to having the kinesis:RegisterStreamConsumer permission, you must also have the kinesis:TagResource permission for the consumer that will be registered. Tags will take effect from the CREATING status of the consumer.
With On-demand Advantage streams, you can register up to 50 consumers per stream to use Enhanced Fan-out. With On-demand Standard and Provisioned streams, you can register up to 20 consumers per stream to use Enhanced Fan-out. A given consumer can only be \n registered with one stream at a time.
\nFor an example of how to use this operation, see Enhanced Fan-Out\n Using the Kinesis Data Streams API.
\nThe use of this operation has a limit of five transactions per second per account.\n Also, only 5 consumers can be created simultaneously. In other words, you cannot have\n more than 5 consumers in a CREATING status at the same time. Registering a\n 6th consumer while there are 5 in a CREATING status results in a\n LimitExceededException.
The ARN of the Kinesis data stream that you want to register the consumer with. For\n more info, see Amazon Resource Names (ARNs) and Amazon Web Services Service\n Namespaces.
", + "smithy.api#required": {}, + "smithy.rules#contextParam": { + "name": "StreamARN" + } + } + }, + "ConsumerName": { + "target": "com.amazonaws.kinesis#ConsumerName", + "traits": { + "smithy.api#documentation": "For a given Kinesis data stream, each consumer must have a unique name. However,\n consumer names don't have to be unique across data streams.
", + "smithy.api#required": {} + } + }, + "StreamId": { + "target": "com.amazonaws.kinesis#StreamId", + "traits": { + "smithy.api#documentation": "Not Implemented. Reserved for future use.
", + "smithy.rules#contextParam": { + "name": "StreamId" + } } }, - "ErrorMessage": { - "target": "com.amazonaws.kinesis#ErrorMessage", + "Tags": { + "target": "com.amazonaws.kinesis#TagMap", "traits": { - "smithy.api#documentation": "The error message for an individual record result. An ErrorCode value of\n ProvisionedThroughputExceededException has an error message that\n includes the account ID, stream name, and shard ID. An ErrorCode value of\n InternalFailure has the error message \"Internal Service\n Failure\".
A set of up to 50 key-value pairs. A tag consists of a required key and an optional value.
" } } }, "traits": { - "smithy.api#documentation": "Represents the result of an individual record from a PutRecords request.\n A record that is successfully added to a stream includes SequenceNumber and\n ShardId in the result. A record that fails to be added to the stream\n includes ErrorCode and ErrorMessage in the result.
An object that represents the details of the consumer you registered. When you\n register a consumer, it gets an ARN that is generated by Kinesis Data Streams.
", + "smithy.api#required": {} + } + } }, "traits": { - "smithy.api#length": { - "min": 1, - "max": 500 - } + "smithy.api#output": {} } }, - "com.amazonaws.kinesis#PutResourcePolicy": { + "com.amazonaws.kinesis#RemoveTagsFromStream": { "type": "operation", "input": { - "target": "com.amazonaws.kinesis#PutResourcePolicyInput" + "target": "com.amazonaws.kinesis#RemoveTagsFromStreamInput" }, "output": { "target": "smithy.api#Unit" @@ -11417,7 +15100,7 @@ } ], "traits": { - "smithy.api#documentation": "Attaches a resource-based policy to a data stream or registered consumer. If you are using an identity other than the root user of \n the Amazon Web Services account that owns the resource, the calling identity must have the PutResourcePolicy permissions on the \n specified Kinesis Data Streams resource and belong to the owner's account in order to use this operation.\n If you don't have PutResourcePolicy permissions, Amazon Kinesis Data Streams returns a 403 Access Denied error. \n If you receive a ResourceNotFoundException, check to see if you passed a valid stream or consumer resource.\n
Request patterns can be one of the following:
\nData stream pattern: arn:aws.*:kinesis:.*:\\d{12}:.*stream/\\S+\n
Consumer pattern: ^(arn):aws.*:kinesis:.*:\\d{12}:.*stream\\/[a-zA-Z0-9_.-]+\\/consumer\\/[a-zA-Z0-9_.-]+:[0-9]+\n
For more information, see Controlling Access to Amazon Kinesis Data Streams Resources Using IAM.
", + "smithy.api#documentation": "Removes tags from the specified Kinesis data stream. Removed tags are deleted and\n cannot be recovered after this operation successfully completes.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
If you specify a tag that does not exist, it is ignored.
\n\n RemoveTagsFromStream has a limit of five transactions per second per\n account.
", "smithy.rules#staticContextParams": { "OperationType": { "value": "control" @@ -11425,16 +15108,28 @@ } } }, - "com.amazonaws.kinesis#PutResourcePolicyInput": { + "com.amazonaws.kinesis#RemoveTagsFromStreamInput": { "type": "structure", "members": { - "ResourceARN": { - "target": "com.amazonaws.kinesis#ResourceARN", + "StreamName": { + "target": "com.amazonaws.kinesis#StreamName", "traits": { - "smithy.api#documentation": "The Amazon Resource Name (ARN) of the data stream or consumer.
", - "smithy.api#required": {}, + "smithy.api#documentation": "The name of the stream.
" + } + }, + "TagKeys": { + "target": "com.amazonaws.kinesis#TagKeyList", + "traits": { + "smithy.api#documentation": "A list of tag keys. Each corresponding tag is removed from the stream.
", + "smithy.api#required": {} + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", + "traits": { + "smithy.api#documentation": "The ARN of the stream.
", "smithy.rules#contextParam": { - "name": "ResourceARN" + "name": "StreamARN" } } }, @@ -11446,268 +15141,412 @@ "name": "StreamId" } } + } + }, + "traits": { + "smithy.api#documentation": "Represents the input for RemoveTagsFromStream.
Details of the resource policy. It must include the identity of the principal and the actions allowed on this resource. This is formatted as a JSON string.
", - "smithy.api#required": {} + "smithy.api#documentation": "A message that provides information about the error.
" } } }, "traits": { - "smithy.api#input": {} + "smithy.api#documentation": "The resource is not available for this operation. For successful operation, the\n resource must be in the ACTIVE state.
The unique identifier of the record within its shard.
", - "smithy.api#required": {} + "smithy.api#documentation": "A message that provides information about the error.
" } + } + }, + "traits": { + "smithy.api#documentation": "The requested resource could not be found. The stream might not be specified\n correctly.
", + "smithy.api#error": "client" + } + }, + "com.amazonaws.kinesis#RetentionPeriodHours": { + "type": "integer" + }, + "com.amazonaws.kinesis#RoleARN": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 512 }, - "ApproximateArrivalTimestamp": { - "target": "com.amazonaws.kinesis#Timestamp", + "smithy.api#pattern": "^arn:aws[-a-z0-9]*:iam::\\d{12}:role/[a-zA-Z_0-9+=,.@\\-_/]+$" + } + }, + "com.amazonaws.kinesis#S3CompressionType": { + "type": "enum", + "members": { + "NONE": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "The approximate time that the record was inserted into the stream.
" + "smithy.api#enumValue": "NONE" } }, - "Data": { - "target": "com.amazonaws.kinesis#Data", + "GZIP": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "The data blob. The data in the blob is both opaque and immutable to Kinesis Data\n Streams, which does not inspect, interpret, or change the data in the blob in any way.\n When the data blob (the payload before base64-encoding) is added to the partition key\n size, the total size must not exceed the maximum record size (10 MiB).
", + "smithy.api#enumValue": "GZIP" + } + }, + "ZSTD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ZSTD" + } + } + } + }, + "com.amazonaws.kinesis#S3DestinationConfiguration": { + "type": "structure", + "members": { + "DataFreshnessInSeconds": { + "target": "com.amazonaws.kinesis#DataFreshnessInSeconds", + "traits": { + "smithy.api#documentation": "The maximum age, in seconds, of undelivered data. Valid range is 300 to 900 seconds (5 to 15 minutes). The default value is 300 seconds.
" + } + }, + "DeadLetterQueueS3Configuration": { + "target": "com.amazonaws.kinesis#DeadLetterQueueS3Configuration", + "traits": { + "smithy.api#documentation": "The dead-letter queue configuration for records that cannot be delivered. Optional for general purpose Amazon S3 destinations. If not specified, it defaults to the destination bucket with an error prefix.
" + } + }, + "StorageConfiguration": { + "target": "com.amazonaws.kinesis#S3StorageConfiguration", + "traits": { + "smithy.api#documentation": "The Amazon S3 storage configuration for the channel.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The configuration for delivery to a general purpose Amazon S3 bucket. Used in CreateChannel.
" + } + }, + "com.amazonaws.kinesis#S3DestinationDescription": { + "type": "structure", + "members": { + "DataFreshnessInSeconds": { + "target": "com.amazonaws.kinesis#DataFreshnessInSeconds", + "traits": { + "smithy.api#documentation": "The maximum age, in seconds, of undelivered data.
", "smithy.api#required": {} } }, - "PartitionKey": { - "target": "com.amazonaws.kinesis#PartitionKey", + "DeadLetterQueueS3Configuration": { + "target": "com.amazonaws.kinesis#DeadLetterQueueS3Configuration", "traits": { - "smithy.api#documentation": "Identifies which shard in the stream the data record is assigned to.
", + "smithy.api#documentation": "The dead-letter queue configuration for records that cannot be delivered.
", "smithy.api#required": {} } }, - "EncryptionType": { - "target": "com.amazonaws.kinesis#EncryptionType", + "StorageConfiguration": { + "target": "com.amazonaws.kinesis#S3StorageConfiguration", "traits": { - "smithy.api#documentation": "The encryption type used on the record. This parameter can be one of the following\n values:
\n\n NONE: Do not encrypt the records in the stream.
\n KMS: Use server-side encryption on the records in the stream\n using a customer-managed Amazon Web Services KMS key.
The Amazon S3 storage configuration for the channel.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "The unit of data of the Kinesis data stream, which is composed of a sequence number, a\n partition key, and a data blob.
" + "smithy.api#documentation": "The configuration for delivery to a general purpose Amazon S3 bucket. Returned in ChannelDescription.
" } }, - "com.amazonaws.kinesis#RecordList": { - "type": "list", - "member": { - "target": "com.amazonaws.kinesis#Record" + "com.amazonaws.kinesis#S3DestinationUpdateInput": { + "type": "structure", + "members": { + "DataFreshnessInSeconds": { + "target": "com.amazonaws.kinesis#DataFreshnessInSeconds", + "traits": { + "smithy.api#documentation": "The maximum age, in seconds, of undelivered data. Valid range is 300 to 900 seconds (5 to 15 minutes).
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The updated configuration for a general purpose Amazon S3 destination. Used in UpdateChannel. Only DataFreshnessInSeconds can be updated.
Registers a consumer with a Kinesis data stream. When you use this operation, the\n consumer you register can then call SubscribeToShard to receive data\n from the stream using enhanced fan-out, at a rate of up to 2 MiB per second for every\n shard you subscribe to. This rate is unaffected by the total number of consumers that\n read from the same stream.
\nYou can add tags to the registered consumer when making a RegisterStreamConsumer request by setting the Tags parameter. If you pass the Tags parameter, in addition to having the kinesis:RegisterStreamConsumer permission, you must also have the kinesis:TagResource permission for the consumer that will be registered. Tags will take effect from the CREATING status of the consumer.
With On-demand Advantage streams, you can register up to 50 consumers per stream to use Enhanced Fan-out. With On-demand Standard and Provisioned streams, you can register up to 20 consumers per stream to use Enhanced Fan-out. A given consumer can only be \n registered with one stream at a time.
\nFor an example of how to use this operation, see Enhanced Fan-Out\n Using the Kinesis Data Streams API.
\nThe use of this operation has a limit of five transactions per second per account.\n Also, only 5 consumers can be created simultaneously. In other words, you cannot have\n more than 5 consumers in a CREATING status at the same time. Registering a\n 6th consumer while there are 5 in a CREATING status results in a\n LimitExceededException.
The ARN of the Kinesis data stream that you want to register the consumer with. For\n more info, see Amazon Resource Names (ARNs) and Amazon Web Services Service\n Namespaces.
", - "smithy.api#required": {}, - "smithy.rules#contextParam": { - "name": "StreamARN" - } + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the destination Amazon S3 bucket.
", + "smithy.api#required": {} } }, - "ConsumerName": { - "target": "com.amazonaws.kinesis#ConsumerName", + "ExpectedBucketOwner": { + "target": "com.amazonaws.kinesis#ExpectedBucketOwner", "traits": { - "smithy.api#documentation": "For a given Kinesis data stream, each consumer must have a unique name. However,\n consumer names don't have to be unique across data streams.
", + "smithy.api#documentation": "The Amazon Web Services account ID of the expected owner of the destination bucket. This value helps prevent delivery to an unintended bucket if ownership changes.
", "smithy.api#required": {} } }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "OutputKeyTemplate": { + "target": "com.amazonaws.kinesis#S3OutputKeyTemplate", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The template used to construct the Amazon S3 object key for delivered objects. If not specified, a default template is used.
" } }, - "Tags": { - "target": "com.amazonaws.kinesis#TagMap", + "StorageClass": { + "target": "com.amazonaws.kinesis#S3StorageClass", "traits": { - "smithy.api#documentation": "A set of up to 50 key-value pairs. A tag consists of a required key and an optional value.
" + "smithy.api#documentation": "The Amazon S3 storage class for delivered objects. Valid values:
\n\n STANDARD - Default storage class for frequently accessed data. (default)
\n INTELLIGENT_TIERING - Automatically moves objects to the most cost-effective access tier based on usage patterns.
\n GLACIER_IR - Low-cost storage for rarely accessed data that requires millisecond retrieval.
An object that represents the details of the consumer you registered. When you\n register a consumer, it gets an ARN that is generated by Kinesis Data Streams.
", + "smithy.api#documentation": "The compression applied to delivered objects. Valid values:
\n\n NONE - No compression.
\n GZIP - gzip compression.
\n ZSTD - Zstandard compression.
The Amazon S3 storage settings for a general purpose Amazon S3 destination.
" } }, - "com.amazonaws.kinesis#RemoveTagsFromStream": { - "type": "operation", - "input": { - "target": "com.amazonaws.kinesis#RemoveTagsFromStreamInput" - }, - "output": { - "target": "smithy.api#Unit" - }, - "errors": [ - { - "target": "com.amazonaws.kinesis#AccessDeniedException" - }, - { - "target": "com.amazonaws.kinesis#InvalidArgumentException" - }, - { - "target": "com.amazonaws.kinesis#LimitExceededException" + "com.amazonaws.kinesis#S3TablesCompressionType": { + "type": "enum", + "members": { + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } }, - { - "target": "com.amazonaws.kinesis#ResourceInUseException" + "ZSTD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ZSTD" + } }, - { - "target": "com.amazonaws.kinesis#ResourceNotFoundException" - } - ], - "traits": { - "smithy.api#documentation": "Removes tags from the specified Kinesis data stream. Removed tags are deleted and\n cannot be recovered after this operation successfully completes.
\nWhen invoking this API, you must use either the StreamARN or the\n StreamName parameter, or both. It is recommended that you use the\n StreamARN input parameter when you invoke this API.
If you specify a tag that does not exist, it is ignored.
\n\n RemoveTagsFromStream has a limit of five transactions per second per\n account.
", - "smithy.rules#staticContextParams": { - "OperationType": { - "value": "control" + "SNAPPY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNAPPY" } } } }, - "com.amazonaws.kinesis#RemoveTagsFromStreamInput": { + "com.amazonaws.kinesis#S3TablesConfiguration": { "type": "structure", "members": { - "StreamName": { - "target": "com.amazonaws.kinesis#StreamName", + "TableBucketARN": { + "target": "com.amazonaws.kinesis#TableBucketARN", "traits": { - "smithy.api#documentation": "The name of the stream.
" + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the Amazon S3 table bucket.
", + "smithy.api#required": {} } }, - "TagKeys": { - "target": "com.amazonaws.kinesis#TagKeyList", + "Namespace": { + "target": "com.amazonaws.kinesis#S3TablesNamespace", "traits": { - "smithy.api#documentation": "A list of tag keys. Each corresponding tag is removed from the stream.
", + "smithy.api#documentation": "The namespace (database) of the destination table.
", "smithy.api#required": {} } }, - "StreamARN": { - "target": "com.amazonaws.kinesis#StreamARN", + "TableName": { + "target": "com.amazonaws.kinesis#S3TablesTableName", "traits": { - "smithy.api#documentation": "The ARN of the stream.
", - "smithy.rules#contextParam": { - "name": "StreamARN" - } + "smithy.api#documentation": "The name of the destination table. Amazon Kinesis Data Streams creates this table in the specified table bucket.
", + "smithy.api#required": {} } }, - "StreamId": { - "target": "com.amazonaws.kinesis#StreamId", + "CompressionType": { + "target": "com.amazonaws.kinesis#S3TablesCompressionType", "traits": { - "smithy.api#documentation": "Not Implemented. Reserved for future use.
", - "smithy.rules#contextParam": { - "name": "StreamId" - } + "smithy.api#documentation": "The compression applied to Parquet data files. Valid values:
\n\n NONE - No compression.
\n ZSTD - Zstandard compression.
\n SNAPPY - Snappy compression.
The partitioning specification for the destination table.
" } } }, "traits": { - "smithy.api#documentation": "Represents the input for RemoveTagsFromStream.
Specifies a destination streaming table on Apache Iceberg.
" } }, - "com.amazonaws.kinesis#ResourceARN": { - "type": "string", + "com.amazonaws.kinesis#S3TablesConfigurationList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#S3TablesConfiguration" + }, "traits": { "smithy.api#length": { "min": 1, - "max": 2048 + "max": 10000 + } + } + }, + "com.amazonaws.kinesis#S3TablesDestinationConfiguration": { + "type": "structure", + "members": { + "DataFreshnessInSeconds": { + "target": "com.amazonaws.kinesis#DataFreshnessInSeconds", + "traits": { + "smithy.api#documentation": "The maximum age, in seconds, of undelivered data. Valid range is 300 to 900 seconds (5 to 15 minutes). The default value is 300 seconds.
" + } + }, + "DeadLetterQueueS3Configuration": { + "target": "com.amazonaws.kinesis#DeadLetterQueueS3Configuration", + "traits": { + "smithy.api#documentation": "The dead-letter queue configuration for records that cannot be delivered. Required for streaming table destinations.
", + "smithy.api#required": {} + } }, - "smithy.api#pattern": "^arn:aws.*:kinesis:.*:\\d{12}:.*stream/\\S+$" + "S3TablesConfigurationList": { + "target": "com.amazonaws.kinesis#S3TablesConfigurationList", + "traits": { + "smithy.api#documentation": "The list of streaming table configurations. Currently, one table is supported per channel.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The configuration for delivery to streaming tables on Apache Iceberg. Used in CreateChannel.
" } }, - "com.amazonaws.kinesis#ResourceInUseException": { + "com.amazonaws.kinesis#S3TablesDestinationDescription": { "type": "structure", "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", + "DataFreshnessInSeconds": { + "target": "com.amazonaws.kinesis#DataFreshnessInSeconds", "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" + "smithy.api#documentation": "The maximum age, in seconds, of undelivered data.
", + "smithy.api#required": {} + } + }, + "DeadLetterQueueS3Configuration": { + "target": "com.amazonaws.kinesis#DeadLetterQueueS3Configuration", + "traits": { + "smithy.api#documentation": "The dead-letter queue configuration for records that cannot be delivered.
", + "smithy.api#required": {} + } + }, + "S3TablesConfigurationList": { + "target": "com.amazonaws.kinesis#S3TablesConfigurationList", + "traits": { + "smithy.api#documentation": "The list of streaming table configurations.
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "The resource is not available for this operation. For successful operation, the\n resource must be in the ACTIVE state.
The configuration for delivery to streaming tables on Apache Iceberg. Returned in ChannelDescription.
" } }, - "com.amazonaws.kinesis#ResourceNotFoundException": { + "com.amazonaws.kinesis#S3TablesDestinationUpdateInput": { "type": "structure", "members": { - "message": { - "target": "com.amazonaws.kinesis#ErrorMessage", + "DataFreshnessInSeconds": { + "target": "com.amazonaws.kinesis#DataFreshnessInSeconds", "traits": { - "smithy.api#documentation": "A message that provides information about the error.
" + "smithy.api#documentation": "The maximum age, in seconds, of undelivered data. Valid range is 300 to 900 seconds (5 to 15 minutes).
", + "smithy.api#required": {} } } }, "traits": { - "smithy.api#documentation": "The requested resource could not be found. The stream might not be specified\n correctly.
", - "smithy.api#error": "client" + "smithy.api#documentation": "The updated configuration for a streaming table destination. Used in UpdateChannel. Only DataFreshnessInSeconds can be updated.
The maximum record size of a single record in kibibyte (KiB) that you can write to, and read from a stream.
" } + }, + "ChannelCount": { + "target": "com.amazonaws.kinesis#ChannelCountObject", + "traits": { + "smithy.api#documentation": "The number of channels associated with the stream.
" + } } }, "traits": { "smithy.api#documentation": "Represents the output for DescribeStreamSummary\n
" } }, + "com.amazonaws.kinesis#StreamFilter": { + "type": "structure", + "members": { + "StreamARN": { + "target": "com.amazonaws.kinesis#StreamARN", + "traits": { + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the source stream to filter by.
", + "smithy.api#required": {} + } + }, + "StreamCreationTimestamp": { + "target": "com.amazonaws.kinesis#Timestamp", + "traits": { + "smithy.api#documentation": "The creation timestamp of the source stream.
" + } + } + }, + "traits": { + "smithy.api#documentation": "Filters ListChannels results by source stream.
" + } + }, + "com.amazonaws.kinesis#StreamFilterList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesis#StreamFilter" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 10000 + } + } + }, "com.amazonaws.kinesis#StreamId": { "type": "string", "traits": { @@ -12554,6 +16432,9 @@ { "target": "com.amazonaws.kinesis#AccessDeniedException" }, + { + "target": "com.amazonaws.kinesis#DryRunOperationException" + }, { "target": "com.amazonaws.kinesis#InvalidArgumentException" }, @@ -12691,6 +16572,12 @@ "smithy.api#documentation": "The starting position in the data stream from which to start streaming.
", "smithy.api#required": {} } + }, + "DryRun": { + "target": "com.amazonaws.kinesis#BooleanObject", + "traits": { + "smithy.api#documentation": "Checks if your request will succeed. DryRun is an optional\n parameter.
Updates the data freshness interval or the Amazon CloudWatch Logs configuration of an existing channel. You cannot change the destination, source stream, record format, schema, encryption configuration, or service execution role of an existing channel. To change any other setting, delete the channel and create a new one.
\nUpdating a channel is an asynchronous operation. Upon receiving the request, Amazon Kinesis Data Streams sets the channel to the UPDATING state and returns immediately. After the change is applied, Amazon Kinesis Data Streams sets the channel back to the ACTIVE state.
This operation has a call limit of 5 transactions per second (TPS) for each Amazon Web Services account. Exceeding 5 TPS results in a LimitExceededException.
The Amazon Resource Name (ARN) of the channel to update.
", + "smithy.api#required": {}, + "smithy.rules#contextParam": { + "name": "ChannelARN" + } + } + }, + "S3DestinationConfiguration": { + "target": "com.amazonaws.kinesis#S3DestinationUpdateInput", + "traits": { + "smithy.api#documentation": "The updated configuration for a general purpose Amazon S3 destination. Only DataFreshnessInSeconds can be updated.
The updated configuration for a streaming table destination. Only DataFreshnessInSeconds can be updated.
The updated Amazon CloudWatch Logs configuration for the channel.
" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.kinesis#UpdateChannelOutput": { + "type": "structure", + "members": { + "ChannelDescription": { + "target": "com.amazonaws.kinesis#ChannelDescription", + "traits": { + "smithy.api#documentation": "The configuration and current status of the updated channel.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.kinesis#UpdateMaxRecordSize": { "type": "operation", "input": { diff --git a/aws-models/lambda.json b/aws-models/lambda.json index 3d933812d..5d3c9b6fb 100644 --- a/aws-models/lambda.json +++ b/aws-models/lambda.json @@ -6816,7 +6816,7 @@ }, "smithy.api#idempotent": {}, "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -6830,7 +6830,7 @@ "smithy.api#httpLabel": {}, "smithy.api#required": {}, "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -6840,7 +6840,7 @@ "smithy.api#documentation": "The revision ID that the existing policy must match for the deletion to proceed. If the revision ID doesn't match, the operation fails with a PreconditionFailedException error. To retrieve the current revision ID, use the GetResourcePolicy operation.
The ARN of the Key Management Service (KMS) customer managed key that is used to encrypt your durable execution's payload data, including input, output, and error payloads.
", "smithy.api#tags": [ - "feature:dar-cmkms" + "feature:public" ] } }, @@ -9249,10 +9286,19 @@ "feature:public" ] } + }, + "S3FilesConfig": { + "target": "com.amazonaws.lambda#S3FilesConfig", + "traits": { + "smithy.api#documentation": "The configuration for how your function accesses data on an Amazon S3 file system. Valid only when the file system access point ARN is an Amazon S3 Files access point. If you specify a different access point type (for example, Amazon Elastic File System), the operation returns an InvalidParameterException.
Details about the connection between a Lambda function and an Amazon EFS file system or an Amazon S3 Files file system.
", + "smithy.api#documentation": "Details about the connection between a Lambda function and an Amazon EFS file system or an Amazon S3 file system.
", "smithy.api#tags": [ "feature:public" ] @@ -10033,7 +10079,7 @@ "FileSystemConfigs": { "target": "com.amazonaws.lambda#FileSystemConfigList", "traits": { - "smithy.api#documentation": "Connection settings for an Amazon EFS file system or an Amazon S3 Files file system.
", + "smithy.api#documentation": "Connection settings for an Amazon EFS file system or an Amazon S3 file system.
", "smithy.api#tags": [ "feature:public" ] @@ -13532,7 +13578,7 @@ }, "smithy.api#readonly": {}, "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -13546,7 +13592,7 @@ "smithy.api#httpLabel": {}, "smithy.api#required": {}, "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } } @@ -13554,7 +13600,7 @@ "traits": { "smithy.api#input": {}, "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -13566,7 +13612,7 @@ "traits": { "smithy.api#documentation": "The resource-based policy attached to the Lambda resource you specified.
", "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -13575,7 +13621,7 @@ "traits": { "smithy.api#documentation": "The revision ID of the policy. Pass this value as the RevisionId in a PutResourcePolicy or DeleteResourcePolicy request. Doing so ensures the operation acts on the expected version of the policy.
The policy document you want to add to your Lambda resource. This is formatted as a JSON string.
For more information, see Working with resource-based policies in Lambda in the Lambda Developer Guide.
", "smithy.api#required": {}, "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -21526,7 +21572,7 @@ "traits": { "smithy.api#documentation": "The revision ID that the existing policy must match for the replacement to proceed. If the revision ID doesn't match, the operation fails with a PreconditionFailedException error. To retrieve the current revision ID, use the GetResourcePolicy operation.
The resource-based policy that Lambda adds to the resource.
", "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -21555,7 +21601,7 @@ "traits": { "smithy.api#documentation": "The revision ID of the policy that Lambda adds to your Lambda resource.
", "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } } @@ -21563,7 +21609,7 @@ "traits": { "smithy.api#output": {}, "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -22268,7 +22314,7 @@ }, "smithy.api#pattern": "^[\\s\\S]+$", "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -22359,7 +22405,7 @@ }, "smithy.api#pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", "smithy.api#tags": [ - "feature:rbp" + "feature:public" ] } }, @@ -22816,7 +22862,7 @@ "traits": { "smithy.api#enumValue": "java8.al2023", "smithy.api#tags": [ - "feature:java-al2023" + "feature:public" ] } }, @@ -22825,7 +22871,7 @@ "traits": { "smithy.api#enumValue": "java11.al2023", "smithy.api#tags": [ - "feature:java-al2023" + "feature:public" ] } }, @@ -22834,7 +22880,7 @@ "traits": { "smithy.api#enumValue": "java17.al2023", "smithy.api#tags": [ - "feature:java-al2023" + "feature:public" ] } } @@ -22929,6 +22975,26 @@ ] } }, + "com.amazonaws.lambda#S3FilesConfig": { + "type": "structure", + "members": { + "DirectS3Read": { + "target": "com.amazonaws.lambda#DirectS3Read", + "traits": { + "smithy.api#documentation": "Specifies if a function reads from the file system for the lowest latency, or through Amazon S3 Files feature \"direct Amazon S3 bucket reads\" for the highest throughput. Valid values:
AUTO (default) \u2013 Direct reads are active for functions you configure with 512 MB or more of memory.
ENABLED \u2013 Enforces all reads are directly from the Amazon S3 bucket, regardless of available memory (less than 512 MB).
DISABLED \u2013 Routes all reads through the file system, regardless of memory configuration.
To use direct reads, you must grant the execution role the s3:GetObject and s3:GetObjectVersion permissions. If a direct read fails, Lambda automatically falls back to reading through the file system.
Setting controls how your function accesses data from an Amazon S3 file system.
", + "smithy.api#tags": [ + "feature:s3files-rbp" + ] + } + }, "com.amazonaws.lambda#S3FilesMountConnectivityException": { "type": "structure", "members": { diff --git a/aws-models/mediaconvert.json b/aws-models/mediaconvert.json index 88af1db5a..a01d8ce33 100644 --- a/aws-models/mediaconvert.json +++ b/aws-models/mediaconvert.json @@ -145,6 +145,26 @@ "smithy.api#documentation": "Choose the loudness measurement mode for your audio content. For music or advertisements: We recommend that you keep the default value, Program. For speech or other content: We recommend that you choose Anchor. When you do, MediaConvert optimizes the loudness of your output for clarify by applying speech gates." } }, + "com.amazonaws.mediaconvert#AacPassthroughControl": { + "type": "enum", + "members": { + "WHEN_POSSIBLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WHEN_POSSIBLE" + } + }, + "NO_PASSTHROUGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_PASSTHROUGH" + } + } + }, + "traits": { + "smithy.api#documentation": "When set to WHEN_POSSIBLE, input AAC audio will be passed through if it is present on the input. This detection is dynamic over the life of the transcode. Inputs that alternate between AAC and non-AAC content will have a consistent AAC output as the system alternates between passthrough and encoding." + } + }, "com.amazonaws.mediaconvert#AacRateControlMode": { "type": "enum", "members": { @@ -223,6 +243,13 @@ "smithy.api#jsonName": "loudnessMeasurementMode" } }, + "PassthroughControl": { + "target": "com.amazonaws.mediaconvert#AacPassthroughControl", + "traits": { + "smithy.api#documentation": "When set to WHEN_POSSIBLE, input AAC audio will be passed through if it is present on the input. This detection is dynamic over the life of the transcode. Inputs that alternate between AAC and non-AAC content will have a consistent AAC output as the system alternates between passthrough and encoding.", + "smithy.api#jsonName": "passthroughControl" + } + }, "RapInterval": { "target": "com.amazonaws.mediaconvert#__integerMin2000Max30000", "traits": { @@ -1226,6 +1253,28 @@ "smithy.api#documentation": "The anti-alias filter is automatically applied to all outputs. The service no longer accepts the value DISABLED for AntiAlias. If you specify that in your job, the service will ignore the setting." } }, + "com.amazonaws.mediaconvert#AspectRatio": { + "type": "structure", + "members": { + "Denominator": { + "target": "com.amazonaws.mediaconvert#__integer", + "traits": { + "smithy.api#documentation": "The denominator, or bottom number, in the fractional aspect ratio. For example, for a display aspect ratio of 16 / 9, the denominator would be 9.", + "smithy.api#jsonName": "denominator" + } + }, + "Numerator": { + "target": "com.amazonaws.mediaconvert#__integer", + "traits": { + "smithy.api#documentation": "The numerator, or top number, in the fractional aspect ratio. For example, for a display aspect ratio of 16 / 9, the numerator would be 16.", + "smithy.api#jsonName": "numerator" + } + } + }, + "traits": { + "smithy.api#documentation": "An aspect ratio expressed as a fraction with numerator and denominator values, reduced to lowest terms. Used for the sample (pixel) aspect ratio and the display aspect ratio of a video track. For example, a 720x576 anamorphic track has a sample aspect ratio of 64 / 45 and a display aspect ratio of 16 / 9." + } + }, "com.amazonaws.mediaconvert#AssociateCertificate": { "type": "operation", "input": { @@ -1571,7 +1620,7 @@ } }, "traits": { - "smithy.api#documentation": "Choose the audio codec for this output. Note that the option Dolby Digital passthrough applies only to Dolby Digital and Dolby Digital Plus audio inputs. Make sure that you choose a codec that's supported with your output container: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#reference-codecs-containers-output-audio For audio-only outputs, make sure that both your input audio codec and your output audio codec are supported for audio-only workflows. For more information, see: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only and https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#audio-only-output" + "smithy.api#documentation": "Choose the audio codec for this output. Note that the option passthrough applies only to Dolby Digital, Dolby Digital Plus, AAC LC, AAC HEV1, and AAC HEV2 audio inputs. Make sure that you choose a codec that's supported with your output container: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#reference-codecs-containers-output-audio For audio-only outputs, make sure that both your input audio codec and your output audio codec are supported for audio-only workflows. For more information, see: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only and https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#audio-only-output" } }, "com.amazonaws.mediaconvert#AudioCodecSettings": { @@ -1608,7 +1657,7 @@ "Codec": { "target": "com.amazonaws.mediaconvert#AudioCodec", "traits": { - "smithy.api#documentation": "Choose the audio codec for this output. Note that the option Dolby Digital passthrough applies only to Dolby Digital and Dolby Digital Plus audio inputs. Make sure that you choose a codec that's supported with your output container: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#reference-codecs-containers-output-audio For audio-only outputs, make sure that both your input audio codec and your output audio codec are supported for audio-only workflows. For more information, see: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only and https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#audio-only-output", + "smithy.api#documentation": "Choose the audio codec for this output. Note that the option passthrough applies only to Dolby Digital, Dolby Digital Plus, AAC LC, AAC HEV1, and AAC HEV2 audio inputs. Make sure that you choose a codec that's supported with your output container: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#reference-codecs-containers-output-audio For audio-only outputs, make sure that both your input audio codec and your output audio codec are supported for audio-only workflows. For more information, see: https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html#reference-codecs-containers-input-audio-only and https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers.html#audio-only-output", "smithy.api#jsonName": "codec" } }, @@ -2024,6 +2073,13 @@ "smithy.api#jsonName": "bitRate" } }, + "ChannelLayout": { + "target": "com.amazonaws.mediaconvert#__string", + "traits": { + "smithy.api#documentation": "The audio channel layout of the track, such as \"mono\", \"stereo\", \"5.1\", or \"7.1\". Object-based or immersive audio is reported as \"5.1.4\" or \"7.1.4\".", + "smithy.api#jsonName": "channelLayout" + } + }, "Channels": { "target": "com.amazonaws.mediaconvert#__integer", "traits": { @@ -5251,10 +5307,16 @@ "traits": { "smithy.api#enumValue": "NONE" } + }, + "MANIFEST_CUES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANIFEST_CUES" + } } }, "traits": { - "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output." + "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output. When your input is an HLS manifest, choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest." } }, "com.amazonaws.mediaconvert#CmfcSettings": { @@ -5340,7 +5402,7 @@ "Scte35Source": { "target": "com.amazonaws.mediaconvert#CmfcScte35Source", "traits": { - "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output.", + "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output. When your input is an HLS manifest, choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest.", "smithy.api#jsonName": "scte35Source" } }, @@ -5445,6 +5507,12 @@ "smithy.api#enumValue": "AC3" } }, + "AMR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AMR" + } + }, "EAC3": { "target": "smithy.api#Unit", "traits": { @@ -5487,6 +5555,24 @@ "smithy.api#enumValue": "VORBIS" } }, + "WMA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WMA" + } + }, + "WMA2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WMA2" + } + }, + "WMAPRO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WMAPRO" + } + }, "AV1": { "target": "smithy.api#Unit", "traits": { @@ -5499,6 +5585,18 @@ "smithy.api#enumValue": "AVC" } }, + "DV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DV" + } + }, + "H263": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "H263" + } + }, "HEVC": { "target": "smithy.api#Unit", "traits": { @@ -5559,6 +5657,18 @@ "smithy.api#enumValue": "UNCOMPRESSED" } }, + "VC1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VC1" + } + }, + "VC3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VC3" + } + }, "VFW": { "target": "smithy.api#Unit", "traits": { @@ -5642,6 +5752,13 @@ "smithy.api#jsonName": "fieldOrder" } }, + "Hdr10PlusPresence": { + "target": "com.amazonaws.mediaconvert#Hdr10PlusPresence", + "traits": { + "smithy.api#documentation": "Indicates that HDR10+ (SMPTE ST 2094-40) dynamic metadata was detected in the HEVC bitstream. Present only when detected.", + "smithy.api#jsonName": "hdr10PlusPresence" + } + }, "Height": { "target": "com.amazonaws.mediaconvert#__integer", "traits": { @@ -6137,7 +6254,7 @@ "Format": { "target": "com.amazonaws.mediaconvert#Format", "traits": { - "smithy.api#documentation": "The format of your media file. For example: MP4, QuickTime (MOV), Matroska (MKV), WebM, MXF, Wave, AVI, MPEG-TS, MPEG-PS, or MP3. Note that this will be blank if your media file has a format that the MediaConvert Probe operation does not recognize.", + "smithy.api#documentation": "The format of your media file. For example: MP4, QuickTime (MOV), Matroska (MKV), WebM, MXF, Wave, AVI, MPEG-TS, MPEG-PS, MP3, FLAC, ASF (Windows Media / WMA), OGG. Note that this will be blank if your media file has a format that the MediaConvert Probe operation does not recognize.", "smithy.api#jsonName": "format" } }, @@ -6992,7 +7109,7 @@ "PlaybackDeviceCompatibility": { "target": "com.amazonaws.mediaconvert#DashIsoPlaybackDeviceCompatibility", "traits": { - "smithy.api#documentation": "This setting can improve the compatibility of your output with video players on obsolete devices. It applies only to DASH H.264 outputs with DRM encryption. Choose Unencrypted SEI only to correct problems with playback on older devices. Otherwise, keep the default setting CENC v1. If you choose Unencrypted SEI, for that output, the service will exclude the access unit delimiter and will leave the SEI NAL units unencrypted.", + "smithy.api#documentation": "This setting can improve the compatibility of your output with video players on obsolete devices. It applies only to DASH outputs with DRM encryption. Choose Unencrypted SEI only to correct problems with playback on older H.264 devices. Choose CENC v1 unencrypted headers to leave NAL unit headers and slice headers unencrypted for H.265 outputs, improving compatibility with strict HEVC decoders. Otherwise, keep the default setting CENC v1.", "smithy.api#jsonName": "playbackDeviceCompatibility" } }, @@ -7435,10 +7552,16 @@ "traits": { "smithy.api#enumValue": "UNENCRYPTED_SEI" } + }, + "CENC_V1_UNENCRYPTED_HEADERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CENC_V1_UNENCRYPTED_HEADERS" + } } }, "traits": { - "smithy.api#documentation": "This setting can improve the compatibility of your output with video players on obsolete devices. It applies only to DASH H.264 outputs with DRM encryption. Choose Unencrypted SEI only to correct problems with playback on older devices. Otherwise, keep the default setting CENC v1. If you choose Unencrypted SEI, for that output, the service will exclude the access unit delimiter and will leave the SEI NAL units unencrypted." + "smithy.api#documentation": "This setting can improve the compatibility of your output with video players on obsolete devices. It applies only to DASH outputs with DRM encryption. Choose Unencrypted SEI only to correct problems with playback on older H.264 devices. Choose CENC v1 unencrypted headers to leave NAL unit headers and slice headers unencrypted for H.265 outputs, improving compatibility with strict HEVC decoders. Otherwise, keep the default setting CENC v1." } }, "com.amazonaws.mediaconvert#DashIsoPtsOffsetHandlingForBFrames": { @@ -10714,6 +10837,24 @@ "traits": { "smithy.api#enumValue": "mp3" } + }, + "flac": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "flac" + } + }, + "asf": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "asf" + } + }, + "ogg": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ogg" + } } } }, @@ -13840,6 +13981,20 @@ "smithy.api#documentation": "Setting for HDR10+ metadata insertion" } }, + "com.amazonaws.mediaconvert#Hdr10PlusPresence": { + "type": "enum", + "members": { + "PRESENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRESENT" + } + } + }, + "traits": { + "smithy.api#documentation": "Indicates that HDR10+ (SMPTE ST 2094-40) dynamic metadata was detected in the HEVC bitstream. Present only when detected." + } + }, "com.amazonaws.mediaconvert#HdrMetadata": { "type": "structure", "members": { @@ -16332,7 +16487,7 @@ "FollowSource": { "target": "com.amazonaws.mediaconvert#__integerMin1Max150", "traits": { - "smithy.api#documentation": "Specify the input that MediaConvert references for your default output settings. MediaConvert uses this input's Resolution, Frame rate, and Pixel aspect ratio for all outputs that you don't manually specify different output settings for. Enabling this setting will disable \"Follow source\" for all other inputs. If MediaConvert cannot follow your source, for example if you specify an audio-only input, MediaConvert uses the first followable input instead. In your JSON job specification, enter an integer from 1 to 150 corresponding to the order of your inputs.", + "smithy.api#documentation": "Specify the input that MediaConvert references for your default output settings. MediaConvert uses this input's Resolution, Frame rate, and Pixel aspect ratio for all outputs that you don't manually specify different output settings for. Enabling this setting will disable \"Follow source\" for all other inputs. If MediaConvert cannot follow your source, for example if you specify an audio-only input, MediaConvert uses the first followable input instead. In your JSON job specification, enter an integer from 1 to 150 corresponding to the order of your inputs.", "smithy.api#jsonName": "followSource" } }, @@ -16605,7 +16760,7 @@ "FollowSource": { "target": "com.amazonaws.mediaconvert#__integerMin1Max150", "traits": { - "smithy.api#documentation": "Specify the input that MediaConvert references for your default output settings. MediaConvert uses this input's Resolution, Frame rate, and Pixel aspect ratio for all outputs that you don't manually specify different output settings for. Enabling this setting will disable \"Follow source\" for all other inputs. If MediaConvert cannot follow your source, for example if you specify an audio-only input, MediaConvert uses the first followable input instead. In your JSON job specification, enter an integer from 1 to 150 corresponding to the order of your inputs.", + "smithy.api#documentation": "Specify the input that MediaConvert references for your default output settings. MediaConvert uses this input's Resolution, Frame rate, and Pixel aspect ratio for all outputs that you don't manually specify different output settings for. Enabling this setting will disable \"Follow source\" for all other inputs. If MediaConvert cannot follow your source, for example if you specify an audio-only input, MediaConvert uses the first followable input instead. In your JSON job specification, enter an integer from 1 to 150 corresponding to the order of your inputs.", "smithy.api#jsonName": "followSource" } }, @@ -16676,7 +16831,7 @@ "Key": { "target": "com.amazonaws.mediaconvert#JobsQueryFilterKey", "traits": { - "smithy.api#documentation": "Specify job details to filter for while performing a jobs query. You specify these filters as part of a key-value pair within the JobsQueryFilter array. The following list describes which keys are available and their possible values: * queue - Your Queue's name or ARN. * status - Your job's status. (SUBMITTED | PROGRESSING | COMPLETE | CANCELED | ERROR) * fileInput - Your input file URL, or partial input file name. * jobEngineVersionRequested - The Job engine version that you requested for your job. Valid versions are in a YYYY-MM-DD format. * jobEngineVersionUsed - The Job engine version that your job used. This may differ from the version that you requested. Valid versions are in a YYYY-MM-DD format. * audioCodec - Your output's audio codec. (AAC | MP2 | MP3 | WAV | AIFF | AC3| EAC3 | EAC3_ATMOS | VORBIS | OPUS | PASSTHROUGH | FLAC) * videoCodec - Your output's video codec. (AV1 | AVC_INTRA | FRAME_CAPTURE | H_264 | H_265 | MPEG2 | PASSTHROUGH | PRORES | UNCOMPRESSED | VC3 | VP8 | VP9 | XAVC)", + "smithy.api#documentation": "Specify job details to filter for while performing a jobs query. You specify these filters as part of a key-value pair within the JobsQueryFilter array. The following list describes which keys are available and their possible values: * queue - Your Queue's name or ARN. * status - Your job's status. (SUBMITTED | PROGRESSING | COMPLETE | CANCELED | ERROR) * fileInput - Your input file URL, or partial input file name. * jobEngineVersionRequested - The Job engine version that you requested for your job. Valid versions are in a YYYY-MM-DD format. * jobEngineVersionUsed - The Job engine version that your job used. This may differ from the version that you requested. Valid versions are in a YYYY-MM-DD format. * audioCodec - Your output's audio codec. (AAC | MP2 | MP3 | WAV | AIFF | AC3| EAC3 | EAC3_ATMOS | VORBIS | OPUS | PASSTHROUGH | FLAC) * videoCodec - Your output's video codec. (AV1 | AVC_INTRA | FRAME_CAPTURE | H_264 | H_265 | MPEG2 | PASSTHROUGH | PRORES | UNCOMPRESSED | VC3 | VP8 | VP9 | XAVC) * errorCode - The error code that your job failed with. For example, 1010. For more information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/mediaconvert_error_codes.html", "smithy.api#jsonName": "key" } }, @@ -16736,10 +16891,16 @@ "traits": { "smithy.api#enumValue": "videoCodec" } + }, + "errorCode": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "errorCode" + } } }, "traits": { - "smithy.api#documentation": "Specify job details to filter for while performing a jobs query. You specify these filters as part of a key-value pair within the JobsQueryFilter array. The following list describes which keys are available and their possible values: * queue - Your Queue's name or ARN. * status - Your job's status. (SUBMITTED | PROGRESSING | COMPLETE | CANCELED | ERROR) * fileInput - Your input file URL, or partial input file name. * jobEngineVersionRequested - The Job engine version that you requested for your job. Valid versions are in a YYYY-MM-DD format. * jobEngineVersionUsed - The Job engine version that your job used. This may differ from the version that you requested. Valid versions are in a YYYY-MM-DD format. * audioCodec - Your output's audio codec. (AAC | MP2 | MP3 | WAV | AIFF | AC3| EAC3 | EAC3_ATMOS | VORBIS | OPUS | PASSTHROUGH | FLAC) * videoCodec - Your output's video codec. (AV1 | AVC_INTRA | FRAME_CAPTURE | H_264 | H_265 | MPEG2 | PASSTHROUGH | PRORES | UNCOMPRESSED | VC3 | VP8 | VP9 | XAVC)" + "smithy.api#documentation": "Specify job details to filter for while performing a jobs query. You specify these filters as part of a key-value pair within the JobsQueryFilter array. The following list describes which keys are available and their possible values: * queue - Your Queue's name or ARN. * status - Your job's status. (SUBMITTED | PROGRESSING | COMPLETE | CANCELED | ERROR) * fileInput - Your input file URL, or partial input file name. * jobEngineVersionRequested - The Job engine version that you requested for your job. Valid versions are in a YYYY-MM-DD format. * jobEngineVersionUsed - The Job engine version that your job used. This may differ from the version that you requested. Valid versions are in a YYYY-MM-DD format. * audioCodec - Your output's audio codec. (AAC | MP2 | MP3 | WAV | AIFF | AC3| EAC3 | EAC3_ATMOS | VORBIS | OPUS | PASSTHROUGH | FLAC) * videoCodec - Your output's video codec. (AV1 | AVC_INTRA | FRAME_CAPTURE | H_264 | H_265 | MPEG2 | PASSTHROUGH | PRORES | UNCOMPRESSED | VC3 | VP8 | VP9 | XAVC) * errorCode - The error code that your job failed with. For example, 1010. For more information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/mediaconvert_error_codes.html" } }, "com.amazonaws.mediaconvert#JobsQueryStatus": { @@ -18934,10 +19095,16 @@ "traits": { "smithy.api#enumValue": "NONE" } + }, + "MANIFEST_CUES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANIFEST_CUES" + } } }, "traits": { - "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. For SCTE-35 markers from an ESAM XML document-- Choose None. Also provide the ESAM XML as a string in the setting Signal processing notification XML. Also enable ESAM SCTE-35 (include the property scte35Esam)." + "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. When your input is an HLS manifest, choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest. For SCTE-35 markers from an ESAM XML document-- Choose None. Also provide the ESAM XML as a string in the setting Signal processing notification XML. Also enable ESAM SCTE-35 (include the property scte35Esam)." } }, "com.amazonaws.mediaconvert#M2tsSegmentationMarkers": { @@ -19262,7 +19429,7 @@ "Scte35Source": { "target": "com.amazonaws.mediaconvert#M2tsScte35Source", "traits": { - "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. For SCTE-35 markers from an ESAM XML document-- Choose None. Also provide the ESAM XML as a string in the setting Signal processing notification XML. Also enable ESAM SCTE-35 (include the property scte35Esam).", + "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. When your input is an HLS manifest, choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest. For SCTE-35 markers from an ESAM XML document-- Choose None. Also provide the ESAM XML as a string in the setting Signal processing notification XML. Also enable ESAM SCTE-35 (include the property scte35Esam).", "smithy.api#jsonName": "scte35Source" } }, @@ -19407,10 +19574,16 @@ "traits": { "smithy.api#enumValue": "NONE" } + }, + "MANIFEST_CUES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANIFEST_CUES" + } } }, "traits": { - "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. For SCTE-35 markers from an ESAM XML document-- Choose None if you don't want manifest conditioning. Choose Passthrough and choose Ad markers if you do want manifest conditioning. In both cases, also provide the ESAM XML as a string in the setting Signal processing notification XML." + "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. For SCTE-35 markers from an ESAM XML document-- Choose None if you don't want manifest conditioning. Choose Passthrough and choose Ad markers if you do want manifest conditioning. In both cases, also provide the ESAM XML as a string in the setting Signal processing notification XML. For SCTE-35 markers from your input HLS manifest-- Choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest." } }, "com.amazonaws.mediaconvert#M3u8Settings": { @@ -19538,7 +19711,7 @@ "Scte35Source": { "target": "com.amazonaws.mediaconvert#M3u8Scte35Source", "traits": { - "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. For SCTE-35 markers from an ESAM XML document-- Choose None if you don't want manifest conditioning. Choose Passthrough and choose Ad markers if you do want manifest conditioning. In both cases, also provide the ESAM XML as a string in the setting Signal processing notification XML.", + "smithy.api#documentation": "For SCTE-35 markers from your input-- Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want SCTE-35 markers in this output. For SCTE-35 markers from an ESAM XML document-- Choose None if you don't want manifest conditioning. Choose Passthrough and choose Ad markers if you do want manifest conditioning. In both cases, also provide the ESAM XML as a string in the setting Signal processing notification XML. For SCTE-35 markers from your input HLS manifest-- Choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest.", "smithy.api#jsonName": "scte35Source" } }, @@ -21827,10 +22000,16 @@ "traits": { "smithy.api#enumValue": "NONE" } + }, + "MANIFEST_CUES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANIFEST_CUES" + } } }, "traits": { - "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output." + "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output. When your input is an HLS manifest, choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest." } }, "com.amazonaws.mediaconvert#MpdSettings": { @@ -21895,7 +22074,7 @@ "Scte35Source": { "target": "com.amazonaws.mediaconvert#MpdScte35Source", "traits": { - "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output.", + "smithy.api#documentation": "Ignore this setting unless you have SCTE-35 markers in your input video file. Choose Passthrough if you want SCTE-35 markers that appear in your input to also appear in this output. Choose None if you don't want those SCTE-35 markers in this output. When your input is an HLS manifest, choose Manifest cues to pass through CUE markers in your HLS manifest as segment boundaries and SCTE-35 markers in this output at each EXT-X-CUE-OUT splice point in the input manifest.", "smithy.api#jsonName": "scte35Source" } }, @@ -26814,21 +26993,199 @@ "smithy.api#documentation": "Specify the initial presentation timestamp (PTS) offset for your transport stream output. To let MediaConvert automatically determine the initial PTS offset: Keep the default value, Auto. We recommend that you choose Auto for the widest player compatibility. The initial PTS will be at least two seconds and vary depending on your output's bitrate, HRD buffer size and HRD buffer initial fill percentage. To manually specify an initial PTS offset: Choose Seconds or Milliseconds. Then specify the number of seconds or milliseconds with PTS offset." } }, + "com.amazonaws.mediaconvert#TtmlBackgroundColor": { + "type": "enum", + "members": { + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + }, + "BLACK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BLACK" + } + }, + "WHITE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WHITE" + } + }, + "AUTO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUTO" + } + } + }, + "traits": { + "smithy.api#documentation": "Specify the background color for TTML captions output." + } + }, "com.amazonaws.mediaconvert#TtmlDestinationSettings": { "type": "structure", "members": { + "BackgroundColor": { + "target": "com.amazonaws.mediaconvert#TtmlBackgroundColor", + "traits": { + "smithy.api#documentation": "Specify the color of the rectangle behind the captions. If Style passthrough is set to enabled, leave blank or set to Auto to pass through the background color from your input captions. If Style passthrough is set to disabled, leave blank or set to Auto to use the default black.", + "smithy.api#jsonName": "backgroundColor" + } + }, + "BackgroundOpacity": { + "target": "com.amazonaws.mediaconvert#__integerMin0Max255", + "traits": { + "smithy.api#documentation": "Specify the opacity of the background rectangle. Enter a value from 0 to 255, where 0 is transparent and 255 is opaque. If Style passthrough is set to enabled, leave blank to pass through the background style information in your input captions to your output captions. If Style passthrough is set to disabled and backgroundColor is set, leave blank to use a value of 255 (opaque).", + "smithy.api#jsonName": "backgroundOpacity" + } + }, + "FontColor": { + "target": "com.amazonaws.mediaconvert#TtmlFontColor", + "traits": { + "smithy.api#documentation": "Specify the color of the captions text. If Style passthrough is set to enabled, leave blank or set to Auto to pass through the font color from your input captions. If Style passthrough is set to disabled, leave blank or set to Auto to use the default white.", + "smithy.api#jsonName": "fontColor" + } + }, + "FontOpacity": { + "target": "com.amazonaws.mediaconvert#__integerMin0Max255", + "traits": { + "smithy.api#documentation": "Specify the opacity of the captions. Enter a value from 0 to 255, where 0 is transparent and 255 is opaque. If Style passthrough is set to enabled, leave blank to pass through the font opacity information in your input captions to your output captions. If Style passthrough is set to disabled and fontColor is set, leave blank to use a value of 255 (opaque).", + "smithy.api#jsonName": "fontOpacity" + } + }, + "FontSize": { + "target": "com.amazonaws.mediaconvert#__integerMin0Max96", + "traits": { + "smithy.api#documentation": "Specify the Font size in pixels. Must be a positive integer. Set to 0, or leave blank, for automatic font size.", + "smithy.api#jsonName": "fontSize" + } + }, + "FontStyle": { + "target": "com.amazonaws.mediaconvert#TtmlFontStyle", + "traits": { + "smithy.api#documentation": "Specify the font style of the caption text. If Style passthrough is set to enabled, leave blank to pass through the font style from your input captions. If Style passthrough is set to disabled, leave blank to use the default normal style.", + "smithy.api#jsonName": "fontStyle" + } + }, + "FontWeight": { + "target": "com.amazonaws.mediaconvert#TtmlFontWeight", + "traits": { + "smithy.api#documentation": "Specify the font weight of the caption text. If Style passthrough is set to enabled, leave blank to pass through the font weight from your input captions. If Style passthrough is set to disabled, leave blank to use the default normal weight.", + "smithy.api#jsonName": "fontWeight" + } + }, "StylePassthrough": { "target": "com.amazonaws.mediaconvert#TtmlStylePassthrough", "traits": { "smithy.api#documentation": "Pass through style and position information from a TTML-like input source (TTML, IMSC, SMPTE-TT) to the TTML output.", "smithy.api#jsonName": "stylePassthrough" } + }, + "TextDecoration": { + "target": "com.amazonaws.mediaconvert#TtmlTextDecoration", + "traits": { + "smithy.api#documentation": "Specify the text decoration of the caption text. If Style passthrough is set to enabled, leave blank to pass through the text decoration from your input captions. If Style passthrough is set to disabled, leave blank to use the default of none.", + "smithy.api#jsonName": "textDecoration" + } } }, "traits": { "smithy.api#documentation": "Settings related to TTML captions. TTML is a sidecar format that holds captions in a file that is separate from the video container. Set up sidecar captions in the same output group, but different output from your video. For more information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/ttml-and-webvtt-output-captions.html." } }, + "com.amazonaws.mediaconvert#TtmlFontColor": { + "type": "enum", + "members": { + "WHITE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WHITE" + } + }, + "BLACK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BLACK" + } + }, + "YELLOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "YELLOW" + } + }, + "RED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RED" + } + }, + "GREEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GREEN" + } + }, + "BLUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BLUE" + } + }, + "AUTO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUTO" + } + } + }, + "traits": { + "smithy.api#documentation": "Specify the font color for TTML captions output." + } + }, + "com.amazonaws.mediaconvert#TtmlFontStyle": { + "type": "enum", + "members": { + "NORMAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NORMAL" + } + }, + "ITALIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ITALIC" + } + } + }, + "traits": { + "smithy.api#documentation": "Specify the font style for TTML captions output." + } + }, + "com.amazonaws.mediaconvert#TtmlFontWeight": { + "type": "enum", + "members": { + "NORMAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NORMAL" + } + }, + "BOLD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BOLD" + } + } + }, + "traits": { + "smithy.api#documentation": "Specify the font weight for TTML captions output." + } + }, "com.amazonaws.mediaconvert#TtmlStylePassthrough": { "type": "enum", "members": { @@ -26849,6 +27206,26 @@ "smithy.api#documentation": "Pass through style and position information from a TTML-like input source (TTML, IMSC, SMPTE-TT) to the TTML output." } }, + "com.amazonaws.mediaconvert#TtmlTextDecoration": { + "type": "enum", + "members": { + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + }, + "UNDERLINE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNDERLINE" + } + } + }, + "traits": { + "smithy.api#documentation": "Specify the text decoration for TTML captions output." + } + }, "com.amazonaws.mediaconvert#Type": { "type": "enum", "members": { @@ -28479,6 +28856,13 @@ "smithy.api#jsonName": "colorPrimaries" } }, + "DisplayAspectRatio": { + "target": "com.amazonaws.mediaconvert#AspectRatio", + "traits": { + "smithy.api#documentation": "An aspect ratio expressed as a fraction with numerator and denominator values, reduced to lowest terms. Used for the sample (pixel) aspect ratio and the display aspect ratio of a video track. For example, a 720x576 anamorphic track has a sample aspect ratio of 64 / 45 and a display aspect ratio of 16 / 9.", + "smithy.api#jsonName": "displayAspectRatio" + } + }, "FrameRate": { "target": "com.amazonaws.mediaconvert#FrameRate", "traits": { @@ -28514,6 +28898,13 @@ "smithy.api#jsonName": "rotation" } }, + "SampleAspectRatio": { + "target": "com.amazonaws.mediaconvert#AspectRatio", + "traits": { + "smithy.api#documentation": "An aspect ratio expressed as a fraction with numerator and denominator values, reduced to lowest terms. Used for the sample (pixel) aspect ratio and the display aspect ratio of a video track. For example, a 720x576 anamorphic track has a sample aspect ratio of 64 / 45 and a display aspect ratio of 16 / 9.", + "smithy.api#jsonName": "sampleAspectRatio" + } + }, "TransferCharacteristics": { "target": "com.amazonaws.mediaconvert#TransferCharacteristics", "traits": { @@ -29775,6 +30166,13 @@ "com.amazonaws.mediaconvert#XavcHdIntraCbgProfileSettings": { "type": "structure", "members": { + "InterlaceMode": { + "target": "com.amazonaws.mediaconvert#XavcInterlaceMode", + "traits": { + "smithy.api#documentation": "Choose the scan line type for the output. Keep the default value, Progressive to create a progressive output, regardless of the scan type of your input. Use Top field first or Bottom field first to create an output that's interlaced with the same field polarity throughout. Use Follow, default top or Follow, default bottom to produce outputs with the same field polarity as the source. For jobs that have multiple inputs, the output field polarity might change over the course of the output. Follow behavior depends on the input scan type. If the source is interlaced, the output will be interlaced with the same polarity as the source. If the source is progressive, the output will be interlaced with top field bottom field first, depending on which of the Follow options you choose.", + "smithy.api#jsonName": "interlaceMode" + } + }, "XavcClass": { "target": "com.amazonaws.mediaconvert#XavcHdIntraCbgProfileClass", "traits": { diff --git a/aws-models/mwaa.json b/aws-models/mwaa.json index 916092e89..9bcf23481 100644 --- a/aws-models/mwaa.json +++ b/aws-models/mwaa.json @@ -2595,7 +2595,7 @@ "type": "string", "traits": { "smithy.api#length": { - "min": 1, + "min": 0, "max": 1024 }, "smithy.api#pattern": ".*" @@ -2720,7 +2720,7 @@ "type": "string", "traits": { "smithy.api#length": { - "min": 1, + "min": 0, "max": 1024 } } diff --git a/aws-models/sagemaker.json b/aws-models/sagemaker.json index f717c7a1c..d837579ca 100644 --- a/aws-models/sagemaker.json +++ b/aws-models/sagemaker.json @@ -64421,7 +64421,7 @@ "StorageType": { "target": "com.amazonaws.sagemaker#StorageType", "traits": { - "smithy.api#documentation": "Option for different tiers of low latency storage for real-time data retrieval.
Standard: A managed low latency data store for feature groups.
InMemory: A managed data store for feature groups that supports very low latency retrieval.
Option for different tiers of low latency storage for real-time data retrieval.
Standard: A managed low latency data store for feature groups.
Standard_V2: A managed low latency data store for feature groups that supports partial updates to individual features using the UpdateRecord operation. Choose this storage type at feature group creation time if your use case requires updating specific feature values without rewriting the entire record.
InMemory: A managed data store for feature groups that supports very low latency retrieval.
Time to live duration, where the record is hard deleted after the expiration time is reached; ExpiresAt = EventTime + TtlDuration. For information on HardDelete, see the DeleteRecord API in the Amazon SageMaker API Reference guide.
The online store storage type to migrate the feature group to. Use this parameter to migrate an existing feature group from Standard to Standard_V2 storage format, enabling support for the UpdateRecord operation. Migration is a one-way operation and cannot be reversed.
Used to associate a configuration set with a MailManager archive.
" } }, + "com.amazonaws.sesv2#AssociateEmailIdentityCertificate": { + "type": "operation", + "input": { + "target": "com.amazonaws.sesv2#AssociateEmailIdentityCertificateRequest" + }, + "output": { + "target": "com.amazonaws.sesv2#AssociateEmailIdentityCertificateResponse" + }, + "errors": [ + { + "target": "com.amazonaws.sesv2#AlreadyExistsException" + }, + { + "target": "com.amazonaws.sesv2#BadRequestException" + }, + { + "target": "com.amazonaws.sesv2#NotFoundException" + }, + { + "target": "com.amazonaws.sesv2#TooManyRequestsException" + } + ], + "traits": { + "smithy.api#documentation": "Associates an S/MIME certificate with an email identity. After the certificate is\n active, Amazon SES API v2 can add an S/MIME signature to messages that you send from the associated\n address when signing is enabled on the configuration set used to send the message.
\nThe certificate is an X.509 certificate that you manage in Certificate Manager\n (ACM). You identify it by its Amazon Resource Name (ARN).
\nIf the email identity is a domain, you must specify a FromAddress\n that belongs to that domain or one of its subdomains. The certificate applies to\n messages sent from that address.
If the email identity is an email address, FromAddress is\n optional. If you specify it, it must exactly match the email identity.
When the association is created, the certificate begins provisioning and its status is\n PROVISIONING. The status changes to ACTIVE when the certificate\n is ready to use for signing. Each email address can have only one certificate\n association. If an association already exists for the address, this operation returns an\n error, unless the existing association is in the DEPROVISIONING state.
The email identity, either an email address or a domain, to associate the certificate\n with.
", + "smithy.api#required": {} + } + }, + "FromAddress": { + "target": "com.amazonaws.sesv2#EmailAddress", + "traits": { + "smithy.api#documentation": "The email address that the certificate applies to. This value is required when the\n email identity is a domain, and the address must belong to that domain or one of its\n subdomains. When the email identity is an email address, this value is optional. If you\n specify it, it must exactly match the email identity.
" + } + }, + "CertificateArn": { + "target": "com.amazonaws.sesv2#CertificateArn", + "traits": { + "smithy.api#documentation": "The Amazon Resource Name (ARN) of the Certificate Manager (ACM) certificate to\n associate with the email identity.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A request to associate an S/MIME certificate with an email identity.
", + "smithy.api#input": {} + } + }, + "com.amazonaws.sesv2#AssociateEmailIdentityCertificateResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#documentation": "An HTTP 200 response if the request succeeds, or an error message if the request\n fails.
", + "smithy.api#output": {} + } + }, "com.amazonaws.sesv2#Attachment": { "type": "structure", "members": { @@ -833,6 +901,16 @@ "com.amazonaws.sesv2#CaseId": { "type": "string" }, + "com.amazonaws.sesv2#CertificateArn": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 20, + "max": 2048 + }, + "smithy.api#pattern": "^arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]+:certificate/[\\w+=,.@-]+$" + } + }, "com.amazonaws.sesv2#Charset": { "type": "string" }, @@ -1276,6 +1354,12 @@ "traits": { "smithy.api#documentation": "An object that defines the MailManager archiving options for emails that you send\n using the configuration set.
" } + }, + "MessageSecurityOptions": { + "target": "com.amazonaws.sesv2#MessageSecurityOptions", + "traits": { + "smithy.api#documentation": "The message security options to apply to the configuration set, such as the signing\n scheme used for messages that you send with the configuration set.
" + } } }, "traits": { @@ -2546,6 +2630,13 @@ "smithy.api#documentation": "The default value of the dimension that is published to Amazon CloudWatch if you don't provide the\n value of the dimension when you send an email. This value has to meet the following\n criteria:
\nIt can only contain ASCII letters (a\u2013z, A\u2013Z), numbers (0\u20139),\n underscores (_), or dashes (-).
\nIt can contain no more than 255 characters.
\nSpecifies the default signing scheme, in which Amazon SES API v2 doesn't apply S/MIME signing to\n messages sent with the configuration set.
" + } + }, "com.amazonaws.sesv2#DeleteConfigurationSet": { "type": "operation", "input": { @@ -3555,6 +3646,64 @@ } } }, + "com.amazonaws.sesv2#DisassociateEmailIdentityCertificate": { + "type": "operation", + "input": { + "target": "com.amazonaws.sesv2#DisassociateEmailIdentityCertificateRequest" + }, + "output": { + "target": "com.amazonaws.sesv2#DisassociateEmailIdentityCertificateResponse" + }, + "errors": [ + { + "target": "com.amazonaws.sesv2#BadRequestException" + }, + { + "target": "com.amazonaws.sesv2#NotFoundException" + }, + { + "target": "com.amazonaws.sesv2#TooManyRequestsException" + } + ], + "traits": { + "smithy.api#documentation": "Removes the association between an S/MIME certificate and an email identity. After the\n association is removed, Amazon SES API v2 stops adding an S/MIME signature to messages sent from\n that address.
\nIf the email identity is a domain, specify the FromAddress whose\n certificate association you want to remove.
This operation is idempotent. If the specified email identity exists but there's no\n matching certificate association, the operation succeeds without making any changes.\n Amazon SES API v2 returns a NotFoundException only when the specified email identity\n doesn't exist.
The email identity whose certificate association you want to remove.
", + "smithy.api#required": {} + } + }, + "FromAddress": { + "target": "com.amazonaws.sesv2#EmailAddress", + "traits": { + "smithy.api#documentation": "The email address whose certificate association you want to remove. This value is\n required when the email identity is a domain. When the email identity is an email\n address, this value is optional.
" + } + } + }, + "traits": { + "smithy.api#documentation": "A request to remove the association between an S/MIME certificate and an email\n identity.
", + "smithy.api#input": {} + } + }, + "com.amazonaws.sesv2#DisassociateEmailIdentityCertificateResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#documentation": "An HTTP 200 response if the request succeeds, or an error message if the request\n fails.
", + "smithy.api#output": {} + } + }, "com.amazonaws.sesv2#DisplayName": { "type": "string" }, @@ -5205,6 +5354,12 @@ "traits": { "smithy.api#documentation": "An object that defines the MailManager archive where sent emails are archived that you send\n using the configuration set.
" } + }, + "MessageSecurityOptions": { + "target": "com.amazonaws.sesv2#MessageSecurityOptions", + "traits": { + "smithy.api#documentation": "The message security options that are applied to the configuration set, such as the\n signing scheme used for messages that you send with the configuration set.
" + } } }, "traits": { @@ -7010,6 +7165,82 @@ } } }, + "com.amazonaws.sesv2#IdentityCertificate": { + "type": "structure", + "members": { + "FromAddress": { + "target": "com.amazonaws.sesv2#EmailAddress", + "traits": { + "smithy.api#documentation": "The email address that the certificate applies to.
" + } + }, + "Status": { + "target": "com.amazonaws.sesv2#IdentityCertificateStatus", + "traits": { + "smithy.api#documentation": "The status of the certificate association. A status of ACTIVE indicates\n that the certificate is ready to use for signing.
The Amazon Resource Name (ARN) of the Certificate Manager (ACM) certificate that's\n associated with the email identity.
" + } + }, + "CertificateExpiryTime": { + "target": "com.amazonaws.sesv2#Timestamp", + "traits": { + "smithy.api#documentation": "The timestamp after which the certificate is no longer valid.
" + } + } + }, + "traits": { + "smithy.api#documentation": "An object that contains information about an S/MIME certificate that's associated with\n an email identity.
" + } + }, + "com.amazonaws.sesv2#IdentityCertificateList": { + "type": "list", + "member": { + "target": "com.amazonaws.sesv2#IdentityCertificate" + } + }, + "com.amazonaws.sesv2#IdentityCertificateStatus": { + "type": "enum", + "members": { + "PROVISIONING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROVISIONING" + } + }, + "INACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INACTIVE" + } + }, + "DEPROVISIONING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEPROVISIONING" + } + }, + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "FAILED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAILED" + } + } + }, + "traits": { + "smithy.api#documentation": "The status of an S/MIME certificate that's associated with an email identity. The\n status can be one of the following values:
\n\n PROVISIONING \u2013 The certificate association was created and\n the certificate is being prepared for use.
\n ACTIVE \u2013 The certificate is ready to use for signing.
\n INACTIVE \u2013 The certificate is no longer used \n for signing.
\n DEPROVISIONING \u2013 The certificate association is being\n cleaned up.
\n FAILED \u2013 The certificate couldn't be prepared for use, or\n the certificate has expired.
Lists the S/MIME certificates that are associated with the specified email identity.\n The results include certificates in all states, such as PROVISIONING,\n ACTIVE, INACTIVE, DEPROVISIONING, and\n FAILED.
If a certificate has passed its expiration time, it's returned with a status of\n FAILED.
We recommend using pagination to ensure that the operation returns quickly and\n successfully. When there are more results than fit in a single response, the response\n includes a NextToken value that you use in a subsequent call to retrieve\n the next set of results.
The email identity whose certificate associations you want to list.
", + "smithy.api#required": {} + } + }, + "NextToken": { + "target": "com.amazonaws.sesv2#NextToken", + "traits": { + "smithy.api#documentation": "A token returned from a previous call to ListEmailIdentityCertificates to\n indicate the position in the list of certificates.
The number of results to show in a single call to\n ListEmailIdentityCertificates. If the number of results is larger than the\n number you specified in this parameter, then the response includes a\n NextToken element, which you can use to obtain additional results.
A request to list the S/MIME certificates that are associated with an email\n identity.
", + "smithy.api#input": {} + } + }, + "com.amazonaws.sesv2#ListEmailIdentityCertificatesResponse": { + "type": "structure", + "members": { + "Certificates": { + "target": "com.amazonaws.sesv2#IdentityCertificateList", + "traits": { + "smithy.api#documentation": "An array that contains the certificate associations for the email identity. Each entry\n includes the from address, the certificate's status, its Amazon Resource Name (ARN),\n and its expiry time.
" + } + }, + "NextToken": { + "target": "com.amazonaws.sesv2#NextToken", + "traits": { + "smithy.api#documentation": "A token that indicates that there are additional certificates to list. To view\n additional certificates, issue another request to\n ListEmailIdentityCertificates, and pass this token in the\n NextToken parameter.
Information about the S/MIME certificates that are associated with an email\n identity.
", + "smithy.api#output": {} + } + }, "com.amazonaws.sesv2#ListEmailTemplates": { "type": "operation", "input": { @@ -9393,7 +9707,7 @@ "MaxResults": { "target": "com.amazonaws.sesv2#MessageInsightsExportMaxResults", "traits": { - "smithy.api#documentation": "The maximum number of results.
" + "smithy.api#documentation": "The maximum number of results.
\nIf you don't specify MaxResults, the export returns a maximum of\n 1,000 results.
The signing scheme that Amazon SES API v2 applies to messages sent with the configuration\n set.
" + } + } + }, + "traits": { + "smithy.api#documentation": "An object that defines the message-level security options that apply to messages that\n you send using the configuration set. Currently, these options determine whether Amazon SES API v2\n adds an S/MIME signature to your messages and, if so, the format of that\n signature.
" + } + }, "com.amazonaws.sesv2#MessageTag": { "type": "structure", "members": { @@ -12666,10 +12994,47 @@ "smithy.api#default": 0 } }, + "com.amazonaws.sesv2#SignatureFormat": { + "type": "enum", + "members": { + "DETACHED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DETACHED" + } + } + }, + "traits": { + "smithy.api#documentation": "The format of the S/MIME signature that's applied to a message. The following value is\n supported:
\n\n DETACHED \u2013 The signature is carried in a separate MIME part\n alongside the signed content.
Use the default signing behavior. When you select this option, Amazon SES API v2 doesn't add an\n S/MIME signature to messages sent with the configuration set.
" + } + }, + "SmimeScheme": { + "target": "com.amazonaws.sesv2#SmimeSigningScheme", + "traits": { + "smithy.api#documentation": "Sign messages sent with the configuration set using S/MIME. For signing to apply, the\n email identity used to send a message must have an active S/MIME certificate\n association.
" + } + } + }, + "traits": { + "smithy.api#documentation": "Specifies the signing scheme to apply to messages sent with a configuration set. This\n is a union type, so you specify exactly one of its members.
" + } + }, "com.amazonaws.sesv2#SimpleEmailService_v2": { "type": "service", "version": "2019-09-27", "operations": [ + { + "target": "com.amazonaws.sesv2#AssociateEmailIdentityCertificate" + }, { "target": "com.amazonaws.sesv2#BatchGetMetricData" }, @@ -12760,6 +13125,9 @@ { "target": "com.amazonaws.sesv2#DeleteTenantResourceAssociation" }, + { + "target": "com.amazonaws.sesv2#DisassociateEmailIdentityCertificate" + }, { "target": "com.amazonaws.sesv2#GetAccount" }, @@ -12859,6 +13227,9 @@ { "target": "com.amazonaws.sesv2#ListEmailIdentities" }, + { + "target": "com.amazonaws.sesv2#ListEmailIdentityCertificates" + }, { "target": "com.amazonaws.sesv2#ListEmailTemplates" }, @@ -12982,6 +13353,9 @@ { "target": "com.amazonaws.sesv2#UntagResource" }, + { + "target": "com.amazonaws.sesv2#UpdateConfigurationSet" + }, { "target": "com.amazonaws.sesv2#UpdateConfigurationSetEventDestination" }, @@ -14927,6 +15301,20 @@ } } }, + "com.amazonaws.sesv2#SmimeSigningScheme": { + "type": "structure", + "members": { + "SignatureFormat": { + "target": "com.amazonaws.sesv2#SignatureFormat", + "traits": { + "smithy.api#documentation": "The format of the S/MIME signature that Amazon SES API v2 applies to messages.
" + } + } + }, + "traits": { + "smithy.api#documentation": "Specifies that Amazon SES API v2 signs messages sent with the configuration set using\n S/MIME.
" + } + }, "com.amazonaws.sesv2#SnsDestination": { "type": "structure", "members": { @@ -15959,6 +16347,34 @@ "smithy.api#output": {} } }, + "com.amazonaws.sesv2#UpdateConfigurationSet": { + "type": "operation", + "input": { + "target": "com.amazonaws.sesv2#UpdateConfigurationSetRequest" + }, + "output": { + "target": "com.amazonaws.sesv2#UpdateConfigurationSetResponse" + }, + "errors": [ + { + "target": "com.amazonaws.sesv2#BadRequestException" + }, + { + "target": "com.amazonaws.sesv2#NotFoundException" + }, + { + "target": "com.amazonaws.sesv2#TooManyRequestsException" + } + ], + "traits": { + "smithy.api#documentation": "Updates an existing configuration set.
\nThis operation performs a partial update. Only the attributes that you include in the\n request are updated; any omitted attribute is left unchanged.
", + "smithy.api#http": { + "method": "POST", + "uri": "/v2/email/update-configuration-sets", + "code": 200 + } + } + }, "com.amazonaws.sesv2#UpdateConfigurationSetEventDestination": { "type": "operation", "input": { @@ -16027,6 +16443,36 @@ "smithy.api#output": {} } }, + "com.amazonaws.sesv2#UpdateConfigurationSetRequest": { + "type": "structure", + "members": { + "ConfigurationSetName": { + "target": "com.amazonaws.sesv2#ConfigurationSetName", + "traits": { + "smithy.api#documentation": "The name of the configuration set to update.
", + "smithy.api#required": {} + } + }, + "MessageSecurityOptions": { + "target": "com.amazonaws.sesv2#MessageSecurityOptions", + "traits": { + "smithy.api#documentation": "The security options that apply to the MIME message itself for messages sent with the\n configuration set.
" + } + } + }, + "traits": { + "smithy.api#documentation": "A request to update the configuration of an existing configuration set.
", + "smithy.api#input": {} + } + }, + "com.amazonaws.sesv2#UpdateConfigurationSetResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#documentation": "An HTTP 200 response if the request succeeds, or an error message if the request\n fails.
", + "smithy.api#output": {} + } + }, "com.amazonaws.sesv2#UpdateContact": { "type": "operation", "input": { diff --git a/aws-models/sfn.json b/aws-models/sfn.json index df2def9da..1a30c7df2 100644 --- a/aws-models/sfn.json +++ b/aws-models/sfn.json @@ -1546,7 +1546,7 @@ "name": { "target": "com.amazonaws.sfn#Name", "traits": { - "smithy.api#documentation": "The name of the activity to create. This name must be unique for your Amazon Web Services account and region for 90 days. For more information,\n see \n Limits Related to State Machine Executions in the Step Functions Developer Guide.
\nA name must not contain:
\nwhite space
\nbrackets < > { } [ ]\n
wildcard characters ? *\n
special characters \" # % \\ ^ | ~ ` $ & , ; : /\n
control characters (U+0000-001F, U+007F-009F, U+FFFE-FFFF)
surrogates (U+D800-DFFF)
invalid characters ( U+10FFFF)
To enable logging with CloudWatch Logs, the name should only contain 0-9, A-Z, a-z, - and _.
", + "smithy.api#documentation": "The name of the activity to create. This name must be unique for your Amazon Web Services account and region.
\nA name must not contain:
\nwhite space
\nbrackets < > { } [ ]\n
wildcard characters ? *\n
special characters \" # % \\ ^ | ~ ` $ & , ; : /\n
control characters (U+0000-001F, U+007F-009F, U+FFFE-FFFF)
surrogates (U+D800-DFFF)
invalid characters ( U+10FFFF)
To enable logging with CloudWatch Logs, the name should only contain 0-9, A-Z, a-z, - and _.
", "smithy.api#required": {} } }, @@ -3243,7 +3243,7 @@ } ], "traits": { - "smithy.api#documentation": "Used by workers to retrieve a task (with the specified activity ARN) which has been\n scheduled for execution by a running state machine. This initiates a long poll, where the\n service holds the HTTP connection open and responds as soon as a task becomes available (i.e.\n an execution of a task of this type is needed.) The maximum time the service holds on to the\n request before responding is 60 seconds. If no task is available within 60 seconds, the poll\n returns a taskToken with a null string.
This API action isn't logged in CloudTrail.
\nWorkers should set their client side socket timeout to at least 65 seconds (5 seconds\n higher than the maximum time the service may hold the poll request).
\nPolling with GetActivityTask can cause latency in some implementations. See\n Avoid\n Latency When Polling for Activity Tasks in the Step Functions Developer Guide.
Used by workers to retrieve a task (with the specified activity ARN) which has been\n scheduled for execution by a running state machine. This initiates a long poll, where the\n service holds the HTTP connection open and responds as soon as a task becomes available (i.e.\n an execution of a task of this type is needed.) The maximum time the service holds on to the\n request before responding is 60 seconds. If no task is available within 60 seconds, the poll\n returns a taskToken with a null string.
Workers should set their client side socket timeout to at least 65 seconds (5 seconds\n higher than the maximum time the service may hold the poll request).
\nPolling with GetActivityTask can cause latency in some implementations. See\n Avoid\n Latency When Polling for Activity Tasks in the Step Functions Developer Guide.
Lists all executions of a state machine or a Map Run. You can list all executions related to a state machine by specifying a state machine Amazon Resource Name (ARN), or those related to a Map Run by specifying a Map Run ARN. Using this API action, you can also list all redriven executions.
\nYou can also provide a state machine alias ARN or version ARN to list the executions associated with a specific alias or version.
\nResults are\n sorted by time, with the most recent execution first.
\nIf nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page.\n Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.
This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.
\nThis API action is not supported by EXPRESS state machines.
Lists all executions of a state machine or a Map Run. You can list all executions related to a state machine by specifying a state machine Amazon Resource Name (ARN), or those related to a Map Run by specifying a Map Run ARN. Using this API action, you can also list all redriven executions.
\nYou can also provide a state machine alias ARN or version ARN to list the executions associated with a specific alias or version.
\nResults are sorted by time, with the most recent execution first. Running executions are sorted by their startDate or redriveDate, and other executions are sorted by their stopDate.
If nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page.\n Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination token will return an HTTP 400 InvalidToken error.
This operation is eventually consistent. The results are best effort and may not reflect very recent updates and changes.
\nThis API action is not supported by EXPRESS state machines. However, you may list EXPRESS children started by a map run using the mapRunArn parameter.
Starts a state machine execution.
\nA qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, a version ARN, or an alias ARN.
\nThe following are some examples of qualified and unqualified state machine ARNs:
\nThe following qualified state machine ARN refers to a Distributed Map state with a label mapStateLabel in a state machine named myStateMachine.
\n arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel\n
If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails with ValidationException.
The following qualified state machine ARN refers to an alias named PROD.
\n arn:\n
If you provide a qualified state machine ARN that refers to a version ARN or an alias ARN, the request starts execution for that version or alias.
\nThe following unqualified state machine ARN refers to a state machine named myStateMachine.
\n arn:\n
If you start an execution with an unqualified state machine ARN, Step Functions uses the latest revision of the state machine for the execution.
\nTo start executions of a state machine version, call\n StartExecution and provide the version ARN or the ARN of an alias that points to the version.
\n StartExecution is idempotent for STANDARD workflows. For a\n STANDARD workflow, if you call StartExecution with the same name\n and input as a running execution, the call succeeds and return the same response as the\n original request. If the execution is closed or if the input is different, it returns a\n 400 ExecutionAlreadyExists error. You can reuse names after 90 days.
\n StartExecution isn't idempotent for EXPRESS workflows.
Starts a state machine execution.
\nA qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, a version ARN, or an alias ARN.
\nThe following are some examples of qualified and unqualified state machine ARNs:
\nThe following qualified state machine ARN refers to a Distributed Map state with a label mapStateLabel in a state machine named myStateMachine.
\n arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel\n
If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails with ValidationException.
The following qualified state machine ARN refers to an alias named PROD.
\n arn:\n
If you provide a qualified state machine ARN that refers to a version ARN or an alias ARN, the request starts execution for that version or alias.
\nThe following unqualified state machine ARN refers to a state machine named myStateMachine.
\n arn:\n
If you start an execution with an unqualified state machine ARN, Step Functions uses the latest revision of the state machine for the execution.
\nTo start executions of a state machine version, call\n StartExecution and provide the version ARN or the ARN of an alias that points to the version.
\n StartExecution is idempotent for STANDARD workflows. For a\n STANDARD workflow, if you call StartExecution with the same name\n and input as a running execution, the call succeeds and return the same response as the\n original request. If the execution is closed or if the input is different, it returns a\n 400 ExecutionAlreadyExists error. You can reuse the name 90 days after it closes.
\n StartExecution isn't idempotent for EXPRESS workflows.
Optional name of the execution. This name must be unique for your Amazon Web Services account, Region, and state machine for 90 days. For more information,\n see \n Limits Related to State Machine Executions in the Step Functions Developer Guide.
\nIf you don't provide a name for the execution, Step Functions automatically generates a universally unique identifier (UUID) as the execution name.
\nA name must not contain:
\nwhite space
\nbrackets < > { } [ ]\n
wildcard characters ? *\n
special characters \" # % \\ ^ | ~ ` $ & , ; : /\n
control characters (U+0000-001F, U+007F-009F, U+FFFE-FFFF)
surrogates (U+D800-DFFF)
invalid characters ( U+10FFFF)
To enable logging with CloudWatch Logs, the name should only contain 0-9, A-Z, a-z, - and _.
" + "smithy.api#documentation": "Optional name of the execution. For STANDARD workflows, this name must be unique for your Amazon Web Services account, region, and state machine.\n If a previous execution with the same name exists, you can reuse the name 90 days after it closes. For EXPRESS workflows, execution names\n can be reused immediately.\n For more information, see \n Limits Related to State Machine Executions in the Step Functions Developer Guide.
\nIf you don't provide a name for the execution, Step Functions automatically generates a universally unique identifier (UUID) as the execution name.
\nA name must not contain:
\nwhite space
\nbrackets < > { } [ ]\n
wildcard characters ? *\n
special characters \" # % \\ ^ | ~ ` $ & , ; : /\n
control characters (U+0000-001F, U+007F-009F, U+FFFE-FFFF)
surrogates (U+D800-DFFF)
invalid characters ( U+10FFFF)
To enable logging with CloudWatch Logs, the name should only contain 0-9, A-Z, a-z, - and _.
" } }, "input": { @@ -6359,7 +6359,7 @@ } ], "traits": { - "smithy.api#documentation": "Starts a Synchronous Express state machine execution. StartSyncExecution \n\t\t\t is not available for STANDARD workflows.
\n StartSyncExecution will return a 200 OK response, even if your\n execution fails, because the status code in the API response doesn't reflect function\n errors. Error codes are reserved for errors that prevent your execution from running, such\n as permissions errors, limit errors, or issues with your state machine code and\n configuration.
This API action isn't logged in CloudTrail.
\nStarts a Synchronous Express state machine execution. StartSyncExecution \n\t\t\t is not available for STANDARD workflows.
\n StartSyncExecution will return a 200 OK response, even if your\n execution fails, because the status code in the API response doesn't reflect function\n errors. Error codes are reserved for errors that prevent your execution from running, such\n as permissions errors, limit errors, or issues with your state machine code and\n configuration.
The Amazon Web Services Support API Reference is intended for programmers who need detailed\n information about the Amazon Web Services Support operations and data types. You can use the API to manage\n your support cases programmatically. The Amazon Web Services Support API uses HTTP methods that return\n results in JSON format.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
You can also use the Amazon Web Services Support API to access features for Trusted Advisor. You can return a list of\n checks and their descriptions, get check results, specify checks to refresh, and get the\n refresh status of checks.
\nYou can manage your support cases with the following Amazon Web Services Support API operations:
\nThe CreateCase, DescribeCases, DescribeAttachment, and ResolveCase operations\n create Amazon Web Services Support cases, retrieve information about cases, and resolve cases.
\nThe DescribeCommunications, AddCommunicationToCase, and AddAttachmentsToSet operations retrieve and add communications and attachments to Amazon Web Services Support\n cases.
\nThe DescribeServices and DescribeSeverityLevels operations return Amazon Web Services service names, service codes, service categories, and problem\n severity levels. You use these values when you call the CreateCase operation.
\nYou can also use the Amazon Web Services Support API to call the Trusted Advisor operations. For more\n information, see Trusted Advisor in the\n Amazon Web Services Support User Guide.
\nFor authentication of requests, Amazon Web Services Support uses Signature Version 4 Signing\n Process.
\nFor more information about this service and the endpoints to use, see About the\n Amazon Web Services Support API in the Amazon Web Services Support User Guide.
", + "smithy.api#documentation": "The Amazon Web Services Support API Reference is intended for programmers who need detailed\n information about the Amazon Web Services Support operations and data types. You can use the API to manage\n your support cases programmatically. The Amazon Web Services Support API uses HTTP methods that return\n results in JSON format.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
You can also use the Amazon Web Services Support API to access features for Trusted Advisor. You can return a list of\n checks and their descriptions, get check results, specify checks to refresh, and get the\n refresh status of checks.
\nYou can manage your support cases with the following Amazon Web Services Support API operations:
\nThe CreateCase, DescribeCases, DescribeAttachment, and ResolveCase operations\n create Amazon Web Services Support cases, retrieve information about cases, and resolve cases.
\nThe DescribeCommunications, AddCommunicationToCase, and AddAttachmentsToSet operations retrieve and add communications and attachments to Amazon Web Services Support\n cases.
\nThe DescribeServices and DescribeSeverityLevels operations return Amazon Web Services service names, service codes, service categories, and problem\n severity levels. You use these values when you call the CreateCase operation.
\nYou can also use the Amazon Web Services Support API to call the Trusted Advisor operations. For more\n information, see Trusted Advisor in the\n Amazon Web Services Support User Guide.
\nFor authentication of requests, Amazon Web Services Support uses Signature Version 4 Signing\n Process.
\nFor more information about this service and the endpoints to use, see About the\n Amazon Web Services Support API in the Amazon Web Services Support User Guide.
", "smithy.api#title": "AWS Support", "smithy.api#xmlNamespace": { "uri": "http://support.amazonaws.com/doc/2013-04-15/" @@ -1546,12 +1558,15 @@ { "target": "com.amazonaws.support#AttachmentSetSizeLimitExceeded" }, + { + "target": "com.amazonaws.support#DryRunOperationException" + }, { "target": "com.amazonaws.support#InternalServerError" } ], "traits": { - "smithy.api#documentation": "Adds one or more attachments to an attachment set.
\nAn attachment set is a temporary container for attachments that you add to a case or\n case communication. The set is available for 1 hour after it's created. The\n expiryTime returned in the response is when the set expires.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Adds one or more attachments to an attachment set.
\nAn attachment set is a temporary container for attachments that you add to a case or\n case communication. The set is available for 1 hour after it's created. The\n expiryTime returned in the response is when the set expires.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
One or more attachments to add to the set. You can add up to three attachments per\n set. The size limit is 5 MB per attachment.
\nIn the Attachment object, use the data parameter to specify\n the contents of the attachment file. In the previous request syntax, the value for\n data appear as blob, which is represented as a\n base64-encoded string. The value for fileName is the name of the\n attachment, such as troubleshoot-screenshot.png.
Specifies whether to validate the request without actually adding the attachments. When set\n to true, the request is validated but no attachments are stored, and the operation\n returns a DryRunOperationException. When omitted or set to false, the\n request runs normally.
Adds additional customer communication to an Amazon Web Services Support case. Use the caseId\n parameter to identify the case to which to add communication. You can list a set of\n email addresses to copy on the communication by using the ccEmailAddresses\n parameter. The communicationBody value contains the text of the\n communication.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Adds additional customer communication to a Amazon Web Services Support case. Use the caseId\n parameter to identify the case to which to add communication. To list a set of\n email addresses to copy on the communication, use the ccEmailAddresses\n parameter. The communicationBody value contains the text of the\n communication.
To attach files larger than 5 MB to the communication, use the uploadIds parameter.
Amazon Web Services Support automatically redacts sensitive information from support cases to protect your data. The following information is replaced with [REDACTED_BY_Amazon Web Services] and is not stored:
Amazon Web Services secret keys - The complete key is replaced. Example: [REDACTED_BY_Amazon Web Services]\n
Private keys - The complete key is replaced. Example: [REDACTED_BY_Amazon Web Services]\n
Credit card numbers - The number is redacted, but the last 4 digits remain. Example: [REDACTED_BY_Amazon Web Services]-7016\n
This sensitive information is never required by Amazon Web Services Support.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-2013-c4c1d2bf33c5cf47\n
" + "smithy.api#documentation": "The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-exen-2025-c4c1d2bf33c5cf47\n
" } }, "communicationBody": { @@ -1647,7 +1671,19 @@ "attachmentSetId": { "target": "com.amazonaws.support#AttachmentSetId", "traits": { - "smithy.api#documentation": "The ID of a set of one or more attachments for the communication to add to the case.\n Create the set by calling AddAttachmentsToSet\n
" + "smithy.api#documentation": "The ID of a set of one or more attachments for the communication to add to the case.\n Create the set by calling AddAttachmentsToSet. Each attachment in the\n set must be 5 MB or smaller. To attach files larger than 5 MB, use uploadIds.
A list of upload IDs that identify attachments to add to the case. Each\n uploadId is returned by the GetAttachmentUploadLinks\n operation. The upload must reach the attachment-ready state by calling CompleteAttachmentUpload before it can be passed here.\n Use\n uploadIds to attach files of any supported size, including files larger than\n 5 MB.
Specifies whether to validate the request without actually adding the communication to the\n case. When set to true, the request is validated but the communication isn't\n added, and the operation returns a DryRunOperationException. When omitted or set\n to false, the request runs normally.
The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-2013-c4c1d2bf33c5cf47\n
" + "smithy.api#documentation": "The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-exen-2025-c4c1d2bf33c5cf47\n
" } }, "displayId": { @@ -1906,12 +1942,12 @@ "language": { "target": "com.amazonaws.support#Language", "traits": { - "smithy.api#documentation": "The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") and Korean (\u201cko\u201d). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") , Chinese (\"zh\"), Spanish (\"es\"), Portuguese (\"pt\"), French (\"fr\"), Korean (\u201cko\u201d), and Turkish (\"tr\"). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
A JSON-formatted object that contains the metadata for a support case. It is contained\n in the response from a DescribeCases request. CaseDetails contains the following fields:
\n\n caseId - The support case ID requested\n or returned in the call. The case ID is an alphanumeric string formatted as\n shown in this example:\n case-12345678910-2013-c4c1d2bf33c5cf47.
\n\n categoryCode - The category of problem\n for the support case. Corresponds to the CategoryCode values\n returned by a call to DescribeServices.
\n displayId - The identifier for the case\n on pages in the Amazon Web Services Support Center.
\n\n language - The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") and Korean (\u201cko\u201d). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
\n nextToken - A resumption point for\n pagination.
\n\n recentCommunications - One or more Communication objects. Fields of these objects are\n attachments, body, caseId,\n submittedBy, and timeCreated.
\n serviceCode - The identifier for the\n Amazon Web Services service that corresponds to the service code defined in the call to DescribeServices.
\n\n severityCode - The severity code\n assigned to the case. Contains one of the values returned by the call to DescribeSeverityLevels. The possible values are:\n low, normal, high,\n urgent, and critical.
\n status - The status of the case in the\n Amazon Web Services Support Center. Valid values:
\n\n all-open\n
\n customer-action-completed\n
\n opened\n
\n pending-customer-action\n
\n reopened\n
\n resolved\n
\n unassigned\n
\n work-in-progress\n
\n subject - The subject line of the\n case.
\n\n submittedBy - The email address of the\n account that submitted the case.
\n\n timeCreated - The time the case was\n created, in ISO-8601 format.
\nA JSON-formatted object that contains the metadata for a support case. It is contained\n in the response from a DescribeCases request. CaseDetails contains the following fields:
\n\n caseId - The support case ID requested\n or returned in the call. The case ID is an alphanumeric string formatted as\n shown in this example:\n case-12345678910-exen-2025-c4c1d2bf33c5cf47.
\n\n categoryCode - The category of problem\n for the support case. Corresponds to the CategoryCode values\n returned by a call to DescribeServices.
\n displayId - The identifier for the case\n on pages in the Amazon Web Services Support Center.
\n\n language - The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") , Chinese (\"zh\"), Spanish (\"es\"), Portuguese (\"pt\"), French (\"fr\"), Korean (\u201cko\u201d), and Turkish (\"tr\"). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
\n nextToken - A resumption point for\n pagination.
\n\n recentCommunications - One or more Communication objects. Fields of these objects are\n attachments, body, caseId,\n submittedBy, and timeCreated.
\n serviceCode - The identifier for the\n Amazon Web Services service that corresponds to the service code defined in the call to DescribeServices.
\n\n severityCode - The severity code\n assigned to the case. Contains one of the values returned by the call to DescribeSeverityLevels. The possible values are:\n low, normal, high,\n urgent, and critical.
\n status - The status of the case in the\n Amazon Web Services Support Center. Valid values:
\n\n all-open\n
\n customer-action-completed\n
\n opened\n
\n pending-customer-action\n
\n reopened\n
\n resolved\n
\n unassigned\n
\n work-in-progress\n
\n subject - The subject line of the\n case.
\n\n submittedBy - The email address of the\n account that submitted the case.
\n\n timeCreated - The time the case was\n created, in ISO-8601 format.
\nThe support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-2013-c4c1d2bf33c5cf47\n
" + "smithy.api#documentation": "The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-exen-2025-c4c1d2bf33c5cf47\n
" } }, "body": { @@ -2030,10 +2066,16 @@ "smithy.api#documentation": "The time the communication was created.
" } }, + "attachments": { + "target": "com.amazonaws.support#AttachmentSet", + "traits": { + "smithy.api#documentation": "Information about all attachments on the case communication. This includes attachments added through AddAttachmentsToSet and attachments uploaded through GetAttachmentUploadLinks.
Use this field to enumerate every attachment on the communication. To download an attachment listed in this field, use GetAttachmentDownloadLink. GetAttachmentDownloadLink returns a presigned URL that works for attachments of any size.
Information about the attachments to the case communication.
" + "smithy.api#documentation": "Information about the attachments to the case communication that are 5 MB or smaller.\n This field doesn't include attachments larger than 5 MB. To enumerate every attachment on\n the communication, including attachments larger than 5 MB, use the\n attachments field instead.
Completes an attachment upload that was started with GetAttachmentUploadLinks. After you upload a part of the file to its\n presigned Amazon S3 URL, call CompleteAttachmentUpload with the\n partIndex and eTag of that part. You can include one part per\n call, or multiple parts in a single call. After CompleteAttachmentUpload has\n been called for every part of the file, the service processes the upload asynchronously. The\n attachment-ready status might not be reflected immediately. Use DescribeAttachmentUploadStatus to poll for the uploadStatus to\n become attachment-ready before passing the uploadId to CreateCase or AddCommunicationToCase.
The identifier associated with the upload to complete.
", + "smithy.api#required": {} + } + }, + "completedUploads": { + "target": "com.amazonaws.support#CompletedUploadList", + "traits": { + "smithy.api#documentation": "The list of parts being reported as completed in this call. Each entry must contain the partIndex of an uploaded part and the ETag returned by Amazon S3 when that part was uploaded.
Specifies whether to validate the request without actually completing the upload. When set\n to true, the request is validated but the upload isn't finalized, and the\n operation returns a DryRunOperationException. When omitted or set to\n false, the request runs normally.
The status of the multipart upload after the operation finalizes the\n attachment. Valid values: attachment-ready, attachment-not-ready,\n and failed.
The index of the uploaded part. This is the same partIndex value returned for the corresponding entry in the uploadUrls field of the GetAttachmentUploadLinks response.
The ETag returned in the response headers when the part was uploaded to Amazon S3. The ETag value identifies the part contents.
Identifies a single uploaded part of a multipart attachment upload. Pass a list of\n CompletedUpload objects to CompleteAttachmentUpload to\n finalize the upload.
Creates a case in the Amazon Web Services Support Center. This operation is similar to how you create a case\n in the Amazon Web Services Support Center Create\n Case page.
\nThe Amazon Web Services Support API doesn't support requesting service limit increases. You can submit a\n service limit increase in the following ways:
\nSubmit a request from the Amazon Web Services Support Center Create Case page.
\nUse the Service Quotas RequestServiceQuotaIncrease operation.
\nA successful CreateCase request returns an Amazon Web Services Support case number. You can use\n the DescribeCases operation and specify the case number to get\n existing Amazon Web Services Support cases. After you create a case, use the AddCommunicationToCase operation to add additional communication or\n attachments to an existing case.
The caseId is separate from the displayId that appears in\n the Amazon Web Services Support Center. Use the DescribeCases operation to get the displayId.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Creates a case in the Amazon Web Services Support Center. This operation is similar to how you create a case\n in the Amazon Web Services Support Center Create\n Case page.
\nThe Amazon Web Services Support API doesn't support requesting service limit increases. You can submit a\n service limit increase in the following ways:
\nSubmit a request from the Amazon Web Services Support Center Create Case page.
\nUse the Service Quotas RequestServiceQuotaIncrease operation.
\nAmazon Web Services Support automatically redacts sensitive information from support cases to protect your data. The following information is replaced with [REDACTED_BY_Amazon Web Services] and is not stored:
Amazon Web Services secret keys - The complete key is replaced. Example: [REDACTED_BY_Amazon Web Services]\n
Private keys - The complete key is replaced. Example: [REDACTED_BY_Amazon Web Services]\n
Credit card numbers - The number is redacted, but the last 4 digits remain. Example: [REDACTED_BY_Amazon Web Services]-7016\n
This sensitive information is never required by Amazon Web Services Support.
\nA successful CreateCase request returns a Amazon Web Services Support case number. You can use\n the DescribeCases operation and specify the case number to get\n existing Amazon Web Services Support cases. After you create a case, use the AddCommunicationToCase operation to add additional communication or\n attachments to an existing case.
The caseId is separate from the displayId that appears in\n the Amazon Web Services Support Center. Use the DescribeCases operation to get the displayId.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") and Korean (\u201cko\u201d). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") , Chinese (\"zh\"), Spanish (\"es\"), Portuguese (\"pt\"), French (\"fr\"), Korean (\u201cko\u201d), and Turkish (\"tr\"). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The ID of a set of one or more attachments for the case. Create the set by using the\n AddAttachmentsToSet operation.
" + "smithy.api#documentation": "The ID of a set of one or more attachments for the case. Create the set by using the\n AddAttachmentsToSet operation. Each attachment in the set must be 5\n MB or smaller. To attach files larger than 5 MB, use uploadIds.
A list of upload IDs that identify attachments to add to the case. Each\n uploadId is returned by the GetAttachmentUploadLinks\n operation. The upload must reach the attachment-ready state by calling CompleteAttachmentUpload before it can be passed here.\n Use\n uploadIds to attach files of any supported size, including files larger than\n 5 MB.
Specifies whether to validate the request without actually creating the case. When set to\n true, the request is validated but no case is created, and the operation\n returns a DryRunOperationException. When omitted or set to false, the\n request runs normally.
The support case ID requested or returned in the call. The case ID is an alphanumeric\n string in the following format:\n case-12345678910-2013-c4c1d2bf33c5cf47\n
" + "smithy.api#documentation": "The support case ID requested or returned in the call. The case ID is an alphanumeric\n string in the following format:\n case-12345678910-exen-2025-c4c1d2bf33c5cf47\n
" } } }, @@ -2243,12 +2400,15 @@ { "target": "com.amazonaws.support#DescribeAttachmentLimitExceeded" }, + { + "target": "com.amazonaws.support#DryRunOperationException" + }, { "target": "com.amazonaws.support#InternalServerError" } ], "traits": { - "smithy.api#documentation": "Returns the attachment that has the specified ID. Attachments can include screenshots,\n error logs, or other files that describe your issue. Attachment IDs are generated by the\n case management system when you add an attachment to a case or case communication.\n Attachment IDs are returned in the AttachmentDetails objects that are\n returned by the DescribeCommunications operation.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Returns the attachment that has the specified ID. Attachments can include screenshots,\n error logs, or other files that describe your issue. Attachment IDs are generated by the\n case management system when you add an attachment to a case or case communication.\n Attachment IDs are returned in the AttachmentDetails objects that are\n returned by the DescribeCommunications operation.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
\n DescribeAttachment can't return attachments larger than 5 MB. If the\n specified attachmentId refers to an attachment larger than 5 MB, the\n request fails with InvalidParameterValueException.
To download an attachment of any size, including attachments larger than 5 MB, use\n GetAttachmentDownloadLink.\n GetAttachmentDownloadLink returns an Amazon S3 presigned URL that you can\n use to download the attachment directly.
The ID of the attachment to return. Attachment IDs are returned by the DescribeCommunications operation.
", + "smithy.api#documentation": "The ID of the attachment to return. Attachment IDs are returned by the DescribeCommunications operation.
\nIf the specified attachment is larger than 5 MB, this operation returns\n InvalidParameterValueException. To download attachments larger than 5\n MB, use GetAttachmentDownloadLink.
Specifies whether to validate the request without actually retrieving the attachment. When\n set to true, the request is validated but no attachment content is returned, and\n the operation returns a DryRunOperationException. When omitted or set to\n false, the request runs normally.
Returns the current status, file name, and progress of a multipart attachment upload that\n was started with GetAttachmentUploadLinks. Use this operation to track\n where an upload is in the workflow. While parts are still being uploaded and reported through\n CompleteAttachmentUpload, the uploadStatus is\n attachment-not-ready and uploadProgress reports the total number\n of parts and how many have been completed so far. After every part has been reported and the\n service finishes processing the upload asynchronously, the uploadStatus becomes\n attachment-ready and the uploadId can be attached to a case\n through CreateCase or AddCommunicationToCase.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The unique identifier for the upload. The uploadId is returned by\n GetAttachmentUploadLinks when you initiate the upload.
Specifies whether to validate the request without actually returning upload status. When\n set to true, the request is validated but no status is returned, and the operation\n returns a DryRunOperationException. When omitted or set to false, the\n request runs normally.
The current status of the multipart upload. Valid values: attachment-ready,\n attachment-not-ready, and failed.
The name of the file being uploaded, including the file extension.
", + "smithy.api#required": {} + } + }, + "uploadProgress": { + "target": "com.amazonaws.support#UploadProgress", + "traits": { + "smithy.api#documentation": "The progress of the multipart upload, including the total number of parts and the number\n of parts that have been successfully uploaded.
" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.support#DescribeCases": { "type": "operation", "input": { @@ -2308,12 +2546,15 @@ { "target": "com.amazonaws.support#CaseIdNotFound" }, + { + "target": "com.amazonaws.support#DryRunOperationException" + }, { "target": "com.amazonaws.support#InternalServerError" } ], "traits": { - "smithy.api#documentation": "Returns a list of cases that you specify by passing one or more case IDs. You can use\n the afterTime and beforeTime parameters to filter the cases by\n date. You can set values for the includeResolvedCases and\n includeCommunications parameters to specify how much information to\n return.
The response returns the following in JSON format:
\nOne or more CaseDetails data types.
\nOne or more nextToken values, which specify where to paginate the\n returned records represented by the CaseDetails objects.
Case data is available for 12 months after creation. If a case was created more than\n 12 months ago, a request might return an error.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Returns a list of cases that you specify by passing one or more case IDs. You can use\n the afterTime and beforeTime parameters to filter the cases by\n date. You can set values for the includeResolvedCases and\n includeCommunications parameters to specify how much information to\n return.
The response returns the following in JSON format:
\nOne or more CaseDetails data types.
\nOne or more nextToken values, which specify where to paginate the\n returned records represented by the CaseDetails objects.
Case data is available for 24 months after creation. If a case was created more than\n 24 months ago, a request might return an error.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Each Communication returned by this operation includes\n attachment information in two fields:
\n\n attachmentSet: returns only attachments that are 5 MB or\n smaller. Attachments larger than 5 MB are not included in this field.
\n attachments: returns all attachments regardless of size.
Amazon Web Services recommends that you use the attachments field and download each\n attachment with GetAttachmentDownloadLink, which supports\n attachments of any size. The attachmentSet field and DescribeAttachment return only attachments that are 5 MB or\n smaller.
The start date for a filtered date search on support case communications. Case\n communications are available for 12 months after creation.
" + "smithy.api#documentation": "The start date for a filtered date search on support case communications. Case\n communications are available for 24 months after creation.
" } }, "beforeTime": { "target": "com.amazonaws.support#BeforeTime", "traits": { - "smithy.api#documentation": "The end date for a filtered date search on support case communications. Case\n communications are available for 12 months after creation.
" + "smithy.api#documentation": "The end date for a filtered date search on support case communications. Case\n communications are available for 24 months after creation.
" } }, "includeResolvedCases": { @@ -2371,7 +2612,7 @@ "language": { "target": "com.amazonaws.support#Language", "traits": { - "smithy.api#documentation": "The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") and Korean (\u201cko\u201d). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") , Chinese (\"zh\"), Spanish (\"es\"), Portuguese (\"pt\"), French (\"fr\"), Korean (\u201cko\u201d), and Turkish (\"tr\"). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
Specifies whether to include communications in the DescribeCases\n response. By default, communications are included.
Specifies whether to validate the request without actually returning case data. When set\n to true, the request is validated but no cases are returned, and the operation\n returns a DryRunOperationException. When omitted or set to false, the\n request runs normally.
Returns communications and attachments for one or more support cases. Use the\n afterTime and beforeTime parameters to filter by date. You\n can use the caseId parameter to restrict the results to a specific\n case.
Case data is available for 12 months after creation. If a case was created more than\n 12 months ago, a request for data might cause an error.
\nYou can use the maxResults and nextToken parameters to\n control the pagination of the results. Set maxResults to the number of\n cases that you want to display on each page, and use nextToken to specify\n the resumption of pagination.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Returns communications and attachments for one or more support cases. Use the\n afterTime and beforeTime parameters to filter by date. You\n can use the caseId parameter to restrict the results to a specific\n case.
Case data is available for 24 months after creation. If a case was created more than\n 24 months ago, a request for data might cause an error.
\nYou can use the maxResults and nextToken parameters to\n control the pagination of the results. Set maxResults to the number of\n cases that you want to display on each page, and use nextToken to specify\n the resumption of pagination.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Each Communication returned by this operation includes\n attachment information in two fields:
\n\n attachmentSet: returns only attachments that are 5 MB or\n smaller. Attachments larger than 5 MB are not included in this field.
\n attachments: returns all attachments regardless of size.
Amazon Web Services recommends that you use the attachments field and download each\n attachment with GetAttachmentDownloadLink, which supports\n attachments of any size. The attachmentSet field and DescribeAttachment return only attachments that are 5 MB or\n smaller.
The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-2013-c4c1d2bf33c5cf47\n
", + "smithy.api#documentation": "The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-exen-2025-c4c1d2bf33c5cf47\n
", "smithy.api#required": {} } }, "beforeTime": { "target": "com.amazonaws.support#BeforeTime", "traits": { - "smithy.api#documentation": "The end date for a filtered date search on support case communications. Case\n communications are available for 12 months after creation.
" + "smithy.api#documentation": "The end date for a filtered date search on support case communications. Case\n communications are available for 24 months after creation.
" } }, "afterTime": { "target": "com.amazonaws.support#AfterTime", "traits": { - "smithy.api#documentation": "The start date for a filtered date search on support case communications. Case\n communications are available for 12 months after creation.
" + "smithy.api#documentation": "The start date for a filtered date search on support case communications. Case\n communications are available for 24 months after creation.
" } }, "nextToken": { @@ -2465,6 +2715,12 @@ "traits": { "smithy.api#documentation": "The maximum number of results to return before paginating.
" } + }, + "dryRun": { + "target": "com.amazonaws.support#NullableBooleanType", + "traits": { + "smithy.api#documentation": "Specifies whether to validate the request without actually returning communications. When\n set to true, the request is validated but no communications are returned, and the\n operation returns a DryRunOperationException. When omitted or set to\n false, the request runs normally.
Returns a list of CreateCaseOption types along with the \n corresponding supported hours and language availability. You can specify the language\n categoryCode, \n issueType and serviceCode used to retrieve the CreateCaseOptions.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Returns a list of CreateCaseOption types along with the \n corresponding supported hours and language availability. You can specify the language\n categoryCode, \n issueType and serviceCode used to retrieve the CreateCaseOptions.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") and Korean (\u201cko\u201d). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") , Chinese (\"zh\"), Spanish (\"es\"), Portuguese (\"pt\"), French (\"fr\"), Korean (\u201cko\u201d), and Turkish (\"tr\"). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The category of problem for the support case. You also use the DescribeServices operation to get the category code for a service. Each\n Amazon Web Services service defines its own set of category codes.
", "smithy.api#required": {} } + }, + "dryRun": { + "target": "com.amazonaws.support#NullableBooleanType", + "traits": { + "smithy.api#documentation": "Specifies whether to validate the request without actually returning case option data.\n When set to true, the request is validated but no options are returned, and the\n operation returns a DryRunOperationException. When omitted or set to\n false, the request runs normally.
Returns the current list of Amazon Web Services services and a list of service categories for each\n service. You then use service names and categories in your CreateCase\n requests. Each Amazon Web Services service has its own set of categories.
\nThe service codes and category codes correspond to the values that appear in the\n Service and Category lists on the Amazon Web Services Support Center Create Case page. The values in those fields\n don't necessarily match the service codes and categories returned by the\n DescribeServices operation. Always use the service codes and categories\n that the DescribeServices operation returns, so that you have the most\n recent set of service and category codes.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Returns the current list of Amazon Web Services services and a list of service categories for each\n service. You then use service names and categories in your CreateCase\n requests. Each Amazon Web Services service has its own set of categories.
\nThe service codes and category codes correspond to the values that appear in the\n Service and Category lists on the Amazon Web Services Support Center Create Case page. The values in those fields\n don't necessarily match the service codes and categories returned by the\n DescribeServices operation. Always use the service codes and categories\n that the DescribeServices operation returns, so that you have the most\n recent set of service and category codes.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") and Korean (\u201cko\u201d). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") , Chinese (\"zh\"), Spanish (\"es\"), Portuguese (\"pt\"), French (\"fr\"), Korean (\u201cko\u201d), and Turkish (\"tr\"). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
Specifies whether to validate the request without actually returning the list of services.\n When set to true, the request is validated but no services are returned, and the\n operation returns a DryRunOperationException. When omitted or set to\n false, the request runs normally.
Returns the list of severity levels that you can assign to a support case. The\n severity level for a case is also a field in the CaseDetails data type\n that you include for a CreateCase request.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Returns the list of severity levels that you can assign to a support case. The\n severity level for a case is also a field in the CaseDetails data type\n that you include for a CreateCase request.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") and Korean (\u201cko\u201d). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
The language in which Amazon Web Services Support handles the case. Amazon Web Services Support\ncurrently supports Chinese (\u201czh\u201d), English (\"en\"), Japanese (\"ja\") , Chinese (\"zh\"), Spanish (\"es\"), Portuguese (\"pt\"), French (\"fr\"), Korean (\u201cko\u201d), and Turkish (\"tr\"). You must specify the ISO 639-1\ncode for the language parameter if you want support in that language.
Specifies whether to validate the request without actually returning severity levels. When\n set to true, the request is validated but no severity levels are returned, and the\n operation returns a DryRunOperationException. When omitted or set to\n false, the request runs normally.
Returns a list of supported languages for a specified categoryCode, \n issueType and serviceCode. The returned supported languages will \n include a ISO 639-1 code for the language, and the language display name.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Returns a list of supported languages for a specified categoryCode, \n issueType and serviceCode. The returned supported languages will \n include a ISO 639-1 code for the language, and the language display name.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The category of problem for the support case. You also use the DescribeServices operation to get the category code for a service. Each\n Amazon Web Services service defines its own set of category codes.
", "smithy.api#required": {} } + }, + "dryRun": { + "target": "com.amazonaws.support#NullableBooleanType", + "traits": { + "smithy.api#documentation": "Specifies whether to validate the request without actually returning supported languages.\n When set to true, the request is validated but no languages are returned, and the\n operation returns a DryRunOperationException. When omitted or set to\n false, the request runs normally.
Returns the refresh status of the Trusted Advisor checks that have the specified check\n IDs. You can get the check IDs by calling the DescribeTrustedAdvisorChecks operation.
\nSome checks are refreshed automatically, and you can't return their refresh statuses\n by using the DescribeTrustedAdvisorCheckRefreshStatuses operation. If you\n call this operation for these checks, you might see an\n InvalidParameterValue error.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" + "smithy.api#documentation": "Returns the refresh status of the Trusted Advisor checks that have the specified check\n IDs. You can get the check IDs by calling the DescribeTrustedAdvisorChecks operation.
\nSome checks are refreshed automatically, and you can't return their refresh statuses\n by using the DescribeTrustedAdvisorCheckRefreshStatuses operation. If you\n call this operation for these checks, you might see an\n InvalidParameterValue error.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" } }, "com.amazonaws.support#DescribeTrustedAdvisorCheckRefreshStatusesRequest": { @@ -2797,7 +3089,7 @@ } ], "traits": { - "smithy.api#documentation": "Returns the results of the Trusted Advisor check that has the specified check ID. You\n can get the check IDs by calling the DescribeTrustedAdvisorChecks\n operation.
\nThe response contains a TrustedAdvisorCheckResult object, which\n contains these three objects:
\nIn addition, the response contains these fields:
\n\n status - The alert status of the check\n can be ok (green), warning (yellow),\n error (red), or not_available.
\n timestamp - The time of the last refresh\n of the check.
\n\n checkId - The unique identifier for the\n check.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" + "smithy.api#documentation": "Returns the results of the Trusted Advisor check that has the specified check ID. You\n can get the check IDs by calling the DescribeTrustedAdvisorChecks\n operation.
\nThe response contains a TrustedAdvisorCheckResult object, which\n contains these three objects:
\nIn addition, the response contains these fields:
\n\n status - The alert status of the check\n can be ok (green), warning (yellow),\n error (red), or not_available.
\n timestamp - The time of the last refresh\n of the check.
\n\n checkId - The unique identifier for the\n check.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" } }, "com.amazonaws.support#DescribeTrustedAdvisorCheckResultRequest": { @@ -2854,7 +3146,7 @@ } ], "traits": { - "smithy.api#documentation": "Returns the results for the Trusted Advisor check summaries for the check IDs that you\n specified. You can get the check IDs by calling the DescribeTrustedAdvisorChecks operation.
\nThe response contains an array of TrustedAdvisorCheckSummary\n objects.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" + "smithy.api#documentation": "Returns the results for the Trusted Advisor check summaries for the check IDs that you\n specified. You can get the check IDs by calling the DescribeTrustedAdvisorChecks operation.
\nThe response contains an array of TrustedAdvisorCheckSummary\n objects.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
\n\n Understanding the Trusted Advisor Resources processed value\n
\nThe Resources processed value, resourcesProcessed, usually shows both flagged resources (those with warnings or errors) and resources in good standing (ok status resources). However, some checks report flagged resources only. To understand what a specific check reports, review the detailed check information in the Trusted Advisor check reference. If you see a Green criterion listed in the Alert criteria, then the check reports all resources. If there's no Green criterion listed in the Alert criteria, then the check reports only flagged resources. For example, the Amazon EC2 Reserved Instance optimization check (cX3c2R1chu) doesn't list a Green criterion in the Alert criteria. So, this check only reports flagged resources.
Returns information about all available Trusted Advisor checks, including the name, ID,\n category, description, and metadata. You must specify a language code.
\nThe response contains a TrustedAdvisorCheckDescription object for\n each check. You must set the Amazon Web Services Region to us-east-1.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the SubscriptionRequiredException error\n message appears. For information about changing your support plan, see\n Amazon Web Services Support.
The names and descriptions for Trusted Advisor checks are subject to change. We\n recommend that you specify the check ID in your code to uniquely identify a\n check.
\nTo call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" + "smithy.api#documentation": "Returns information about all available Trusted Advisor checks, including the name, ID,\n category, description, and metadata. You must specify a language code.
\nThe response contains a TrustedAdvisorCheckDescription object for\n each check. You must set the Amazon Web Services Region to us-east-1.
\nYou must have a Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the SubscriptionRequiredException error\n message appears. For information about changing your support plan, see\n Amazon Web Services Support.
The names and descriptions for Trusted Advisor checks are subject to change. We\n recommend that you specify the check ID in your code to uniquely identify a\n check.
\nTo call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" } }, "com.amazonaws.support#DescribeTrustedAdvisorChecksRequest": { @@ -2951,6 +3243,57 @@ "smithy.api#default": 0 } }, + "com.amazonaws.support#DownloadUrl": { + "type": "structure", + "members": { + "url": { + "target": "com.amazonaws.support#HttpsUrl", + "traits": { + "smithy.api#documentation": "The presigned HTTPS URL that you can use to download the attachment. Download URLs are\n served from downloadv1.attachments.support.{region}.amazonaws.com. The\n downloadv1 prefix is subject to change.
The date and time, in ISO-8601 format, when the presigned URL expires. Download the\n attachment before this time.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A presigned URL for downloading an attachment, along with the date and time the URL\n expires. Returned by GetAttachmentDownloadLink.
" + } + }, + "com.amazonaws.support#DryRunOperationException": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.support#ErrorMessage" + } + }, + "traits": { + "smithy.api#documentation": "The request was valid, but the operation wasn't performed because dryRun was\n set to true.
Returns a presigned download URL for an attachment that is associated with a case\n communication. The download link works for an attachment of any size, including attachments\n added through AddAttachmentsToSet and attachments uploaded through GetAttachmentUploadLinks. The download URL is time-limited and expires at the\n date and time indicated in the downloadUrl response field. Download the\n attachment from the URL before it expires.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The unique identifier of the attachment for which to retrieve a download link. Attachment\n IDs are returned in the AttachmentDetails objects in the attachments\n field of a Communication returned by DescribeCommunications\n or DescribeCases.
Specifies whether to validate the request without actually returning a download link. When\n set to true, the request is validated but no URL is returned, and the operation\n returns a DryRunOperationException. When omitted or set to false, the\n request runs normally.
The name of the attachment file, including the file extension.
", + "smithy.api#required": {} + } + }, + "downloadUrl": { + "target": "com.amazonaws.support#DownloadUrl", + "traits": { + "smithy.api#documentation": "The presigned download URL and the date and time the URL expires.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.support#GetAttachmentUploadLinks": { + "type": "operation", + "input": { + "target": "com.amazonaws.support#GetAttachmentUploadLinksRequest" + }, + "output": { + "target": "com.amazonaws.support#GetAttachmentUploadLinksResponse" + }, + "errors": [ + { + "target": "com.amazonaws.support#DryRunOperationException" + }, + { + "target": "com.amazonaws.support#InternalServerError" + }, + { + "target": "com.amazonaws.support#UploadIdNotFound" + } + ], + "traits": { + "smithy.api#documentation": "Returns one or more presigned upload URLs for uploading a large file attachment to a\n support case by using a multipart upload workflow. The maximum file size that you can upload\n with this workflow is 150 MB, and parts can be up to 100 MB each. Initiate a new upload by\n providing fileName and fileSizeBytes; the response returns a unique\n uploadId, the part size, the total number of parts, and a list of presigned\n upload URLs for the requested range of parts. A maximum of 10 upload URLs are returned per\n call. To retrieve more upload URLs for an upload\n that's already in progress, call GetAttachmentUploadLinks again with the existing\n uploadId and a new uploadRange.
Upload each part to its presigned URL by using HTTP PUT and capture the ETag\n from the response. After you upload all parts, call CompleteAttachmentUpload\n with the uploadId and the list of part indexes and ETags to finalize the upload.\n You can then attach the upload to a case by passing the uploadId in the\n uploadIds parameter of CreateCase or AddCommunicationToCase. To monitor progress before completion, call DescribeAttachmentUploadStatus.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The name of the file to upload, including the file extension. This value is required when\n you initiate a new upload.
", + "smithy.api#required": {} + } + }, + "fileSizeBytes": { + "target": "com.amazonaws.support#FileSize", + "traits": { + "smithy.api#documentation": "The total size of the file in bytes. The service uses this value to calculate the total\n number of parts and the size of each part. Required when you initiate a new upload (when\n uploadId isn't provided). Valid range: 1 to 157,286,400 bytes (approximately\n 150 MB).
The unique identifier of an in-progress multipart upload, returned by a previous call to\n GetAttachmentUploadLinks. Specify uploadId to retrieve additional\n presigned upload URLs for an upload that has already been initiated. Required when\n fileSizeBytes isn't provided. Length: 1 to 2,048 characters.
The range of part indexes for which to return presigned upload URLs. Use this parameter\n to page through the upload URLs for a large file across multiple calls. If you omit this\n parameter, the service determines the range to return.
" + } + }, + "dryRun": { + "target": "com.amazonaws.support#NullableBooleanType", + "traits": { + "smithy.api#documentation": "Specifies whether to validate the request without actually generating upload URLs. When\n set to true, the request is validated but no URLs are returned, and the operation\n returns a DryRunOperationException. When omitted or set to false, the\n request runs normally.
The unique identifier for the multipart upload. Use this value in subsequent calls to\n GetAttachmentUploadLinks, DescribeAttachmentUploadStatus,\n and CompleteAttachmentUpload, and to attach the upload to a case through the\n uploadIds parameter on CreateCase or AddCommunicationToCase.
The size, in bytes, of each part. Split the file into parts of this size before you upload\n them to the presigned URLs. For an upload with n total parts, parts 1 through\n n - 1 are exactly this size; the last part may be smaller. Maximum:\n 104,857,600 bytes (approximately 100 MB).
The total number of parts that the file is split into. Upload one part to each presigned\n URL.
", + "smithy.api#required": {} + } + }, + "nextIndex": { + "target": "com.amazonaws.support#Integer", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "The next part index to request presigned URLs for. If all upload URLs for the file have\n been returned, this field is null. Use this value as the startIndex in\n uploadRange on a subsequent call to GetAttachmentUploadLinks to\n retrieve the next batch of upload URLs.
The list of presigned upload URLs for the requested range of parts. The list contains at\n most 10 URLs per call. Upload each part to its corresponding URL by using HTTP\n PUT before the URL expires.
Refreshes the Trusted Advisor check that you specify using the check ID. You can get the\n check IDs by calling the DescribeTrustedAdvisorChecks\n operation.
\nSome checks are refreshed automatically. If you call the\n RefreshTrustedAdvisorCheck operation to refresh them, you might see\n the InvalidParameterValue error.
The response contains a TrustedAdvisorCheckRefreshStatus\n object.
\nYou must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" + "smithy.api#documentation": "Refreshes the Trusted Advisor check that you specify using the check ID. You can get the\n check IDs by calling the DescribeTrustedAdvisorChecks\n operation.
\nSome checks are refreshed automatically. If you call the\n RefreshTrustedAdvisorCheck operation to refresh them, you might see\n the InvalidParameterValue error.
The response contains a TrustedAdvisorCheckRefreshStatus\n object.
\nYou must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
To call the Trusted Advisor operations in\nthe Amazon Web Services Support API, you must use the US East (N. Virginia) endpoint. Currently, the US West (Oregon) and Europe (Ireland) \nendpoints don't support the Trusted Advisor operations. For more information, see About the Amazon Web Services Support\nAPI in the Amazon Web Services Support User Guide.
" } }, "com.amazonaws.support#RefreshTrustedAdvisorCheckRequest": { @@ -3092,12 +3646,15 @@ { "target": "com.amazonaws.support#CaseIdNotFound" }, + { + "target": "com.amazonaws.support#DryRunOperationException" + }, { "target": "com.amazonaws.support#InternalServerError" } ], "traits": { - "smithy.api#documentation": "Resolves a support case. This operation takes a caseId and returns the\n initial and final state of the case.
You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the Amazon Web Services Support\n API.
\nIf you call the Amazon Web Services Support API from an account that doesn't have a\n Business, Enterprise On-Ramp, or Enterprise Support plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
Resolves a support case. This operation takes a caseId and returns the\n initial and final state of the case.
You must have an Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan to use the Amazon Web Services Support\n API. If you're in an Amazon Web Services Region that doesn't offer one of these Amazon Web Services Support plans, or if you haven't transitioned to one of these plans, you can use the Amazon Web Services Support API with a Business, Enterprise On-Ramp, or Enterprise Support plan.
\nIf you call the Amazon Web Services Support API from an account that doesn't have an\n Amazon Web Services Business Support+, Amazon Web Services Enterprise Support, or Amazon Web Services Unified Operations plan, the\n SubscriptionRequiredException error message appears. For\n information about changing your support plan, see Amazon Web Services Support.
The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-2013-c4c1d2bf33c5cf47\n
" + "smithy.api#documentation": "The support case ID requested or returned in the call. The case ID is an alphanumeric\n string formatted as shown in this example:\n case-12345678910-exen-2025-c4c1d2bf33c5cf47\n
" + } + }, + "dryRun": { + "target": "com.amazonaws.support#NullableBooleanType", + "traits": { + "smithy.api#documentation": "Specifies whether to validate the request without actually resolving the case. When set\n to true, the request is validated but the case isn't resolved, and the operation\n returns a DryRunOperationException. When omitted or set to false, the\n request runs normally.
A list of one or more reasons that the request was throttled.
" + } } }, "traits": { @@ -3337,6 +3914,32 @@ "smithy.api#httpError": 400 } }, + "com.amazonaws.support#ThrottlingReason": { + "type": "structure", + "members": { + "reason": { + "target": "com.amazonaws.support#CoralAvailabilityThrottlingReason", + "traits": { + "smithy.api#documentation": "The reason that the request was throttled.
" + } + }, + "resource": { + "target": "com.amazonaws.support#CoralAvailabilityThrottledResource", + "traits": { + "smithy.api#documentation": "The resource that caused the request to be throttled.
" + } + } + }, + "traits": { + "smithy.api#documentation": "Information about why a request was throttled.
" + } + }, + "com.amazonaws.support#ThrottlingReasonList": { + "type": "list", + "member": { + "target": "com.amazonaws.support#ThrottlingReason" + } + }, "com.amazonaws.support#TimeCreated": { "type": "string" }, @@ -3658,6 +4261,139 @@ "com.amazonaws.support#Type": { "type": "string" }, + "com.amazonaws.support#UploadId": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 2048 + } + } + }, + "com.amazonaws.support#UploadIdNotFound": { + "type": "structure", + "members": { + "message": { + "target": "com.amazonaws.support#ErrorMessage" + } + }, + "traits": { + "smithy.api#documentation": "The specified uploadId couldn't be located.
The total number of parts that the file is split into.
" + } + }, + "completedPartsCount": { + "target": "com.amazonaws.support#FieldIntegerValue", + "traits": { + "smithy.api#documentation": "The number of parts that have been successfully uploaded.
" + } + } + }, + "traits": { + "smithy.api#documentation": "The progress of a multipart attachment upload, returned by DescribeAttachmentUploadStatus.
" + } + }, + "com.amazonaws.support#UploadRange": { + "type": "structure", + "members": { + "startIndex": { + "target": "com.amazonaws.support#StartIndex", + "traits": { + "smithy.api#documentation": "The starting part index of the range, inclusive. Part indexes start at 1.
", + "smithy.api#required": {} + } + }, + "endIndex": { + "target": "com.amazonaws.support#EndIndex", + "traits": { + "smithy.api#documentation": "The ending part index of the range, exclusive. The range is half-open:\n startIndex is inclusive and endIndex is exclusive. For example,\n a range with startIndex of 1 and endIndex of 4 requests URLs for\n parts 1, 2, and 3. The range size (endIndex - startIndex)\n must not exceed 10. If you omit endIndex, the service defaults to\n startIndex + 10, capped by the total number of parts.
The range of part indexes for which to return presigned upload URLs from GetAttachmentUploadLinks.
" + } + }, + "com.amazonaws.support#UploadStatus": { + "type": "enum", + "members": { + "ATTACHMENT_READY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "attachment-ready" + } + }, + "ATTACHMENT_NOT_READY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "attachment-not-ready" + } + }, + "FAILED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "failed" + } + } + } + }, + "com.amazonaws.support#UploadUrl": { + "type": "structure", + "members": { + "url": { + "target": "com.amazonaws.support#HttpsUrl", + "traits": { + "smithy.api#documentation": "The presigned HTTPS URL that you use to upload a single part with HTTP\n PUT. Upload URLs are served from\n uploadv1.attachments.support.{region}.amazonaws.com. The\n uploadv1 prefix is subject to change.
The index of the part that this URL uploads.
", + "smithy.api#required": {} + } + }, + "expiryDate": { + "target": "com.amazonaws.support#ValidatedDateTime", + "traits": { + "smithy.api#documentation": "The date and time, in ISO-8601 format, when the presigned URL expires. Upload the part\n before this time.
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A presigned URL for uploading a single part of a multipart attachment upload, along with\n the part index and the date and time the URL expires. Returned by GetAttachmentUploadLinks.
" + } + }, + "com.amazonaws.support#UploadUrlList": { + "type": "list", + "member": { + "target": "com.amazonaws.support#UploadUrl" + } + }, "com.amazonaws.support#ValidatedCategoryCode": { "type": "string", "traits": { diff --git a/aws-models/transcribe.json b/aws-models/transcribe.json index e26c4d7d8..6956d3cb0 100644 --- a/aws-models/transcribe.json +++ b/aws-models/transcribe.json @@ -5323,6 +5323,114 @@ "smithy.api#enumValue": "SSN" } }, + "DATE_TIME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATE_TIME" + } + }, + "PASSPORT_NUMBER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASSPORT_NUMBER" + } + }, + "DRIVER_ID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DRIVER_ID" + } + }, + "URL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "URL" + } + }, + "AGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AGE" + } + }, + "USERNAME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USERNAME" + } + }, + "PASSWORD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASSWORD" + } + }, + "AWS_ACCESS_KEY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWS_ACCESS_KEY" + } + }, + "AWS_SECRET_KEY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWS_SECRET_KEY" + } + }, + "IP_ADDRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IP_ADDRESS" + } + }, + "MAC_ADDRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAC_ADDRESS" + } + }, + "LICENSE_PLATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LICENSE_PLATE" + } + }, + "VEHICLE_IDENTIFICATION_NUMBER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VEHICLE_IDENTIFICATION_NUMBER" + } + }, + "US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER" + } + }, + "CA_HEALTH_NUMBER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CA_HEALTH_NUMBER" + } + }, + "CA_SOCIAL_INSURANCE_NUMBER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CA_SOCIAL_INSURANCE_NUMBER" + } + }, + "INTERNATIONAL_BANK_ACCOUNT_NUMBER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INTERNATIONAL_BANK_ACCOUNT_NUMBER" + } + }, + "SWIFT_CODE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SWIFT_CODE" + } + }, "ALL": { "target": "smithy.api#Unit", "traits": { @@ -5339,7 +5447,7 @@ "traits": { "smithy.api#length": { "min": 0, - "max": 11 + "max": 29 } } }, diff --git a/aws-models/transfer.json b/aws-models/transfer.json index 3bfbf488a..51e136cc6 100644 --- a/aws-models/transfer.json +++ b/aws-models/transfer.json @@ -7964,6 +7964,28 @@ } } }, + "com.amazonaws.transfer#SecretVersionStage": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 256 + } + } + }, + "com.amazonaws.transfer#SecretVersionStageList": { + "type": "list", + "member": { + "target": "com.amazonaws.transfer#SecretVersionStage" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 2 + }, + "smithy.api#uniqueItems": {} + } + }, "com.amazonaws.transfer#SecurityGroupId": { "type": "string", "traits": { @@ -8306,6 +8328,12 @@ "smithy.api#default": 1, "smithy.api#documentation": "Specify the number of concurrent connections that your connector creates to the remote server. The default value is 1. The maximum values is 5.
If you are using the Amazon Web Services Management Console, the default value is 5.
This parameter specifies the number of active connections that your connector can establish with the remote server at the same time. Increasing this value can enhance connector performance when transferring large file batches by enabling parallel operations.
" } + }, + "OrderedUserSecretVersionStages": { + "target": "com.amazonaws.transfer#SecretVersionStageList", + "traits": { + "smithy.api#documentation": "An ordered list of Amazon Web Services Secrets Manager version stages (staging labels, such as AWSCURRENT and AWSPREVIOUS) for the secret identified by UserSecretId. When establishing a connection, the connector attempts to retrieve the SFTP user's credentials from each version stage in the order listed, and uses the first version it can successfully retrieve. This lets you rotate the user secret without interrupting connector operations.
Transfer Family is a fully managed service that enables the transfer of files over the File Transfer Protocol (FTP), File Transfer Protocol over SSL (FTPS), or Secure Shell (SSH) File Transfer Protocol (SFTP) directly into and out of Amazon Simple Storage Service (Amazon S3) or Amazon EFS. Additionally, you can use Applicability Statement 2 (AS2) to transfer files into and out of Amazon S3. Amazon Web Services helps you seamlessly migrate your file transfer workflows to Transfer Family by integrating with existing authentication systems, and providing DNS routing with Amazon Route 53 so nothing changes for your customers and partners, or their applications. With your data in Amazon S3, you can use it with Amazon Web Services services for processing, analytics, machine learning, and archiving. Getting started with Transfer Family is easy since there is no infrastructure to buy and set up.
", + "smithy.api#documentation": "Transfer Family offers fully managed support for the transfer of files over SFTP, AS2, FTPS, FTP, and web browser-based transfers directly into and out of Amazon Web Services storage services.
File transfer protocols are used in data exchange workflows across different industries such as financial services, healthcare, advertising, and retail, among others. Transfer Family simplifies the migration of file transfer workflows to Amazon Web Services.
To use the Transfer Family service, you instantiate a server in the Amazon Web Services Region of your choice. You can create the server, list available servers, and update and delete servers. The server is the entity that requests file operations from Transfer Family. Servers have a number of important properties. The server is a named instance as identified by a system assigned ServerId identifier. You can optionally assign a hostname, or even a custom hostname to a server. The service bills for any instantiated servers (even ones OFFLINE), and for the amount of data transferred.
Users must be known to the server that requests file operations. A user as identified by their username is assigned to a server. Usernames are used to authenticate requests. A server can have only one authentication method: AWS_DIRECTORY_SERVICE, SERVICE_MANAGED, AWS_LAMBDA, or API_GATEWAY.
Transfer Family also supports web applications that provide browser-based file transfer capabilities. Web applications can be configured with VPC endpoints to enable secure, private connectivity within your Virtual Private Cloud (VPC). This allows you to control network access and route traffic through your VPC infrastructure while maintaining the managed benefits of Transfer Family.
This API interface reference for Transfer Family contains documentation for a programming interface that you can use to manage Transfer Family. The reference structure is as follows:
For the alphabetical list of API actions, see .
For the alphabetical list of data types, see .
For a list of common query parameters, see CommonParameters.
For descriptions of the error codes, see CommonErrors.
Rather than actually running a command, you can use the --generate-cli-skeleton parameter with any API call to generate and display a parameter template. You can then use the generated template to customize and use as input on a later command. For details, see Generate and use a parameter skeleton file.
` element.
+fn body_has_code(body: &str, code: &str) -> bool {
+ body.contains(&format!("{code}"))
+}
diff --git a/crates/fakecloud-conformance/tests/ecs.rs b/crates/fakecloud-conformance/tests/ecs.rs
index 77bddb0e7..fda3444c2 100644
--- a/crates/fakecloud-conformance/tests/ecs.rs
+++ b/crates/fakecloud-conformance/tests/ecs.rs
@@ -1851,7 +1851,7 @@ async fn create_daemon_with_arn(client: &aws_sdk_ecs::Client, name: &str) -> Str
resp.daemon_arn().unwrap().to_string()
}
-#[test_action("ecs", "CreateDaemon", checksum = "8b96e9bf")]
+#[test_action("ecs", "CreateDaemon", checksum = "2c40f5eb")]
#[tokio::test]
async fn ecs_create_daemon() {
let server = TestServer::start().await;
@@ -1861,7 +1861,7 @@ async fn ecs_create_daemon() {
assert!(arn.contains(":daemon/"));
}
-#[test_action("ecs", "DescribeDaemon", checksum = "af1141c6")]
+#[test_action("ecs", "DescribeDaemon", checksum = "25f93304")]
#[tokio::test]
async fn ecs_describe_daemon() {
let server = TestServer::start().await;
@@ -1877,7 +1877,7 @@ async fn ecs_describe_daemon() {
assert!(resp.daemon().is_some());
}
-#[test_action("ecs", "UpdateDaemon", checksum = "87f1f95b")]
+#[test_action("ecs", "UpdateDaemon", checksum = "2b41a668")]
#[tokio::test]
async fn ecs_update_daemon() {
let server = TestServer::start().await;
@@ -1937,7 +1937,7 @@ async fn create_daemon_get_deployment(
)
}
-#[test_action("ecs", "DescribeDaemonDeployments", checksum = "d0f1127a")]
+#[test_action("ecs", "DescribeDaemonDeployments", checksum = "09589af9")]
#[tokio::test]
async fn ecs_describe_daemon_deployments() {
let server = TestServer::start().await;
@@ -1969,7 +1969,7 @@ async fn ecs_list_daemon_deployments() {
assert!(!resp.daemon_deployments().is_empty());
}
-#[test_action("ecs", "DescribeDaemonRevisions", checksum = "4eb9e0f0")]
+#[test_action("ecs", "DescribeDaemonRevisions", checksum = "f3f01047")]
#[tokio::test]
async fn ecs_describe_daemon_revisions() {
let server = TestServer::start().await;
diff --git a/crates/fakecloud-conformance/tests/kinesis.rs b/crates/fakecloud-conformance/tests/kinesis.rs
index d8abb33f3..e687890da 100644
--- a/crates/fakecloud-conformance/tests/kinesis.rs
+++ b/crates/fakecloud-conformance/tests/kinesis.rs
@@ -7,10 +7,11 @@ use aws_sdk_kinesis::types::{
};
use fakecloud_conformance_macros::test_action;
use helpers::TestServer;
+use serde_json::{json, Value};
#[test_action("kinesis", "CreateStream", checksum = "d2d1a234")]
-#[test_action("kinesis", "DescribeStream", checksum = "eca54e4c")]
-#[test_action("kinesis", "DescribeStreamSummary", checksum = "50667cc4")]
+#[test_action("kinesis", "DescribeStream", checksum = "833e726c")]
+#[test_action("kinesis", "DescribeStreamSummary", checksum = "4963083e")]
#[test_action("kinesis", "ListStreams", checksum = "ca5dcdd7")]
#[test_action("kinesis", "DeleteStream", checksum = "51c62afa")]
#[tokio::test]
@@ -149,7 +150,7 @@ async fn kinesis_tags_and_retention() {
assert!(tags.tags().is_empty());
}
-#[test_action("kinesis", "PutRecord", checksum = "ebd87879")]
+#[test_action("kinesis", "PutRecord", checksum = "55718b65")]
#[tokio::test]
async fn kinesis_put_record() {
let server = TestServer::start().await;
@@ -184,7 +185,7 @@ async fn kinesis_put_record() {
assert!(first.sequence_number() < second.sequence_number());
}
-#[test_action("kinesis", "PutRecords", checksum = "27e5bb6b")]
+#[test_action("kinesis", "PutRecords", checksum = "a5b28725")]
#[tokio::test]
async fn kinesis_put_records() {
let server = TestServer::start().await;
@@ -226,8 +227,8 @@ async fn kinesis_put_records() {
);
}
-#[test_action("kinesis", "GetShardIterator", checksum = "8d745e01")]
-#[test_action("kinesis", "GetRecords", checksum = "4f940d65")]
+#[test_action("kinesis", "GetShardIterator", checksum = "02801846")]
+#[test_action("kinesis", "GetRecords", checksum = "a4dec291")]
#[tokio::test]
async fn kinesis_get_records() {
let server = TestServer::start().await;
@@ -284,9 +285,9 @@ async fn stream_arn(client: &aws_sdk_kinesis::Client, stream_name: &str) -> Stri
.to_string()
}
-#[test_action("kinesis", "TagResource", checksum = "b9e8db1d")]
-#[test_action("kinesis", "ListTagsForResource", checksum = "f215bdf3")]
-#[test_action("kinesis", "UntagResource", checksum = "829a3def")]
+#[test_action("kinesis", "TagResource", checksum = "58941b22")]
+#[test_action("kinesis", "ListTagsForResource", checksum = "0eb8b1e3")]
+#[test_action("kinesis", "UntagResource", checksum = "3c1bbd62")]
#[tokio::test]
async fn kinesis_tag_resource_lifecycle() {
let server = TestServer::start().await;
@@ -335,9 +336,9 @@ async fn kinesis_tag_resource_lifecycle() {
assert!(after.tags().iter().all(|t| t.key() != "env"));
}
-#[test_action("kinesis", "PutResourcePolicy", checksum = "17a4f058")]
-#[test_action("kinesis", "GetResourcePolicy", checksum = "3ed90038")]
-#[test_action("kinesis", "DeleteResourcePolicy", checksum = "ba248d13")]
+#[test_action("kinesis", "PutResourcePolicy", checksum = "c58d3c4b")]
+#[test_action("kinesis", "GetResourcePolicy", checksum = "6ef2f6c0")]
+#[test_action("kinesis", "DeleteResourcePolicy", checksum = "991bbf6c")]
#[tokio::test]
async fn kinesis_resource_policy_lifecycle() {
let server = TestServer::start().await;
@@ -488,7 +489,7 @@ async fn kinesis_account_settings_lifecycle() {
);
}
-#[test_action("kinesis", "DescribeLimits", checksum = "c2be62c7")]
+#[test_action("kinesis", "DescribeLimits", checksum = "55f0e704")]
#[tokio::test]
async fn kinesis_describe_limits() {
let server = TestServer::start().await;
@@ -633,7 +634,7 @@ async fn kinesis_stream_consumer_lifecycle() {
.unwrap();
}
-#[test_action("kinesis", "ListShards", checksum = "6033797d")]
+#[test_action("kinesis", "ListShards", checksum = "a453c893")]
#[tokio::test]
async fn kinesis_list_shards() {
let server = TestServer::start().await;
@@ -689,7 +690,7 @@ async fn kinesis_merge_shards() {
.unwrap();
}
-#[test_action("kinesis", "SplitShard", checksum = "46cf42c5")]
+#[test_action("kinesis", "SplitShard", checksum = "3888ccfb")]
#[tokio::test]
async fn kinesis_split_shard() {
let server = TestServer::start().await;
@@ -750,7 +751,7 @@ async fn kinesis_update_shard_count() {
assert_eq!(response.target_shard_count(), Some(2));
}
-#[test_action("kinesis", "SubscribeToShard", checksum = "b6f963e3")]
+#[test_action("kinesis", "SubscribeToShard", checksum = "0c29998f")]
#[tokio::test]
async fn kinesis_subscribe_to_shard_requires_registered_consumer() {
let server = TestServer::start().await;
@@ -791,3 +792,344 @@ async fn kinesis_subscribe_to_shard_requires_registered_consumer() {
.await;
assert!(err.is_err());
}
+
+// ── Channels ──
+//
+// The pinned `aws-sdk-kinesis` in this workspace predates the channel
+// operations, so there is no typed client for them; they are driven over raw
+// awsJson1_1 HTTP with the `X-Amz-Target` header, the same way the acm-pca
+// suite drives a service with no SDK at all.
+
+/// A credential scope naming `region`, so the server resolves the caller's
+/// region the way a real SDK client configured for it would.
+fn channel_auth(region: &str) -> String {
+ format!(
+ "AWS4-HMAC-SHA256 Credential=test/20240101/{region}/kinesis/aws4_request, \
+ SignedHeaders=host, Signature=0"
+ )
+}
+
+/// POST an awsJson1_1 Kinesis action, returning `(status, parsed_body)`.
+async fn channel_op(server: &TestServer, op: &str, body: Value) -> (u16, Value) {
+ channel_op_in_region(server, "us-east-1", op, body).await
+}
+
+/// `channel_op` under a credential scope naming `region`.
+async fn channel_op_in_region(
+ server: &TestServer,
+ region: &str,
+ op: &str,
+ body: Value,
+) -> (u16, Value) {
+ let resp = reqwest::Client::new()
+ .post(format!("{}/", server.endpoint()))
+ .header("content-type", "application/x-amz-json-1.1")
+ .header("x-amz-target", format!("Kinesis_20131202.{op}"))
+ .header("authorization", channel_auth(region))
+ .body(body.to_string())
+ .send()
+ .await
+ .unwrap();
+ let status = resp.status().as_u16();
+ let text = resp.text().await.unwrap();
+ let parsed = serde_json::from_str(&text).unwrap_or(Value::Null);
+ (status, parsed)
+}
+
+#[test_action("kinesis", "CreateChannel", checksum = "367d85db")]
+#[test_action("kinesis", "DescribeChannel", checksum = "c98b8d2a")]
+#[test_action("kinesis", "ListChannels", checksum = "1fbca5f2")]
+#[test_action("kinesis", "UpdateChannel", checksum = "d7b1f070")]
+#[test_action("kinesis", "DeleteChannel", checksum = "f9b9bf41")]
+#[tokio::test]
+async fn kinesis_channel_lifecycle() {
+ let server = TestServer::start().await;
+ let client = server.kinesis_client().await;
+
+ client
+ .create_stream()
+ .stream_name("channel-stream")
+ .shard_count(1)
+ .send()
+ .await
+ .unwrap();
+ let source_arn = stream_arn(&client, "channel-stream").await;
+
+ let (status, created) = channel_op(
+ &server,
+ "CreateChannel",
+ json!({
+ "ChannelName": "conf-channel",
+ "ServiceExecutionRoleARN": "arn:aws:iam::000000000000:role/conf-channel",
+ "StreamConfigurationList": [{
+ "StreamARN": source_arn,
+ "RecordConfiguration": { "RecordFormatType": "JSON" },
+ }],
+ "S3DestinationConfiguration": {
+ "StorageConfiguration": {
+ "BucketARN": "arn:aws:s3:::conf-channel-bucket",
+ "ExpectedBucketOwner": "000000000000",
+ "CompressionType": "ZSTD",
+ }
+ },
+ "Tags": { "suite": "conformance" },
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "create channel: {created}");
+ let description = &created["ChannelDescription"];
+ assert_eq!(description["ChannelName"], "conf-channel");
+ assert_eq!(description["ChannelStatus"], "ACTIVE");
+ assert_eq!(
+ description["S3DestinationConfiguration"]["DataFreshnessInSeconds"],
+ 300
+ );
+ let channel_arn = description["ChannelARN"].as_str().unwrap().to_string();
+ let channel_id = description["ChannelId"].as_str().unwrap();
+ // AWS keys the channel ARN off the channel id, not the channel name.
+ assert!(
+ channel_arn.ends_with(&format!(":channel/{channel_id}")),
+ "{channel_arn}"
+ );
+
+ let (status, described) = channel_op(
+ &server,
+ "DescribeChannel",
+ json!({ "ChannelARN": channel_arn }),
+ )
+ .await;
+ assert_eq!(status, 200, "describe channel: {described}");
+ assert_eq!(
+ described["ChannelDescription"]["ChannelId"],
+ description["ChannelId"]
+ );
+
+ let (status, listed) = channel_op(
+ &server,
+ "ListChannels",
+ json!({ "StreamFilter": [{ "StreamARN": source_arn }], "MaxResults": 10 }),
+ )
+ .await;
+ assert_eq!(status, 200, "list channels: {listed}");
+ let summaries = listed["ChannelSummaries"].as_array().unwrap();
+ assert_eq!(summaries.len(), 1, "{listed}");
+ assert_eq!(summaries[0]["ChannelName"], "conf-channel");
+ assert_eq!(summaries[0]["ChannelDestinationType"], "S3");
+
+ let (status, updated) = channel_op(
+ &server,
+ "UpdateChannel",
+ json!({
+ "ChannelARN": channel_arn,
+ "S3DestinationConfiguration": { "DataFreshnessInSeconds": 900 },
+ "LoggingConfiguration": {
+ "CloudWatchLogs": { "Enabled": true, "LogGroupName": "/aws/kinesis/conf" }
+ },
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "update channel: {updated}");
+ assert_eq!(
+ updated["ChannelDescription"]["S3DestinationConfiguration"]["DataFreshnessInSeconds"],
+ 900
+ );
+ assert_eq!(
+ updated["ChannelDescription"]["LoggingConfiguration"]["CloudWatchLogs"]["Enabled"],
+ true
+ );
+
+ let (status, deleted) = channel_op(
+ &server,
+ "DeleteChannel",
+ json!({ "ChannelARN": channel_arn }),
+ )
+ .await;
+ assert_eq!(status, 200, "delete channel: {deleted}");
+
+ let (status, missing) = channel_op(
+ &server,
+ "DescribeChannel",
+ json!({ "ChannelARN": channel_arn }),
+ )
+ .await;
+ assert_eq!(status, 400, "describe deleted channel: {missing}");
+ assert_eq!(missing["__type"], "ResourceNotFoundException", "{missing}");
+}
+
+#[test_action("kinesis", "TagResource", checksum = "58941b22")]
+#[test_action("kinesis", "ListTagsForResource", checksum = "0eb8b1e3")]
+#[test_action("kinesis", "UntagResource", checksum = "3c1bbd62")]
+#[tokio::test]
+async fn kinesis_channel_tags() {
+ let server = TestServer::start().await;
+ let client = server.kinesis_client().await;
+
+ client
+ .create_stream()
+ .stream_name("channel-tag-stream")
+ .shard_count(1)
+ .send()
+ .await
+ .unwrap();
+ let source_arn = stream_arn(&client, "channel-tag-stream").await;
+
+ let (status, created) = channel_op(
+ &server,
+ "CreateChannel",
+ json!({
+ "ChannelName": "tagged-channel",
+ "ServiceExecutionRoleARN": "arn:aws:iam::000000000000:role/tagged-channel",
+ "StreamConfigurationList": [{
+ "StreamARN": source_arn,
+ "RecordConfiguration": { "RecordFormatType": "JSON" },
+ }],
+ "S3DestinationConfiguration": {
+ "StorageConfiguration": {
+ "BucketARN": "arn:aws:s3:::conf-channel-bucket",
+ "ExpectedBucketOwner": "000000000000",
+ "CompressionType": "ZSTD",
+ }
+ },
+ "Tags": { "team": "data" },
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "create channel: {created}");
+ let channel_arn = created["ChannelDescription"]["ChannelARN"]
+ .as_str()
+ .unwrap()
+ .to_string();
+
+ // The tags CreateChannel accepted are readable through Tags v2, whose
+ // ResourceARN covers channels as well as streams.
+ let listed = client
+ .list_tags_for_resource()
+ .resource_arn(&channel_arn)
+ .send()
+ .await
+ .unwrap();
+ assert!(listed.tags().iter().any(|t| t.key() == "team"));
+
+ client
+ .tag_resource()
+ .resource_arn(&channel_arn)
+ .tags("env", "test")
+ .send()
+ .await
+ .unwrap();
+ client
+ .untag_resource()
+ .resource_arn(&channel_arn)
+ .tag_keys("team")
+ .send()
+ .await
+ .unwrap();
+
+ let after = client
+ .list_tags_for_resource()
+ .resource_arn(&channel_arn)
+ .send()
+ .await
+ .unwrap();
+ assert_eq!(after.tags().len(), 1, "{:?}", after.tags());
+ assert_eq!(after.tags()[0].key(), "env");
+
+ // The source stream's own tags were never touched.
+ let stream_tags = client
+ .list_tags_for_resource()
+ .resource_arn(&source_arn)
+ .send()
+ .await
+ .unwrap();
+ assert!(stream_tags.tags().is_empty(), "{:?}", stream_tags.tags());
+}
+
+#[test_action("kinesis", "ListChannels", checksum = "1fbca5f2")]
+#[test_action("kinesis", "DeleteStream", checksum = "51c62afa")]
+#[tokio::test]
+async fn kinesis_channel_resolution_is_region_tolerant() {
+ let server = TestServer::start().await;
+ let client = server.kinesis_client().await;
+
+ client
+ .create_stream()
+ .stream_name("xregion-stream")
+ .shard_count(1)
+ .send()
+ .await
+ .unwrap();
+ // The stream is stored with a us-east-1 ARN; the channel is created by a
+ // caller whose credential scope is eu-west-1, naming the same stream by
+ // its own regional ARN.
+ let source_arn = stream_arn(&client, "xregion-stream").await;
+ let foreign_arn = source_arn.replace(":us-east-1:", ":eu-west-1:");
+ assert_ne!(foreign_arn, source_arn, "{source_arn}");
+
+ let (status, created) = channel_op_in_region(
+ &server,
+ "eu-west-1",
+ "CreateChannel",
+ json!({
+ "ChannelName": "xregion-channel",
+ "ServiceExecutionRoleARN": "arn:aws:iam::000000000000:role/xregion-channel",
+ "StreamConfigurationList": [{
+ "StreamARN": foreign_arn,
+ "RecordConfiguration": { "RecordFormatType": "JSON" },
+ }],
+ "S3DestinationConfiguration": {
+ "StorageConfiguration": {
+ "BucketARN": "arn:aws:s3:::conf-channel-bucket",
+ "ExpectedBucketOwner": "000000000000",
+ "CompressionType": "ZSTD",
+ }
+ },
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "create channel: {created}");
+ let channel_arn = created["ChannelDescription"]["ChannelARN"]
+ .as_str()
+ .unwrap()
+ .to_string();
+
+ // The creating client filters by the only stream ARN it knows: its own.
+ let (status, listed) = channel_op_in_region(
+ &server,
+ "eu-west-1",
+ "ListChannels",
+ json!({ "StreamFilter": [{ "StreamARN": foreign_arn }] }),
+ )
+ .await;
+ assert_eq!(status, 200, "list channels: {listed}");
+ let summaries = listed["ChannelSummaries"].as_array().unwrap();
+ assert_eq!(summaries.len(), 1, "{listed}");
+ assert_eq!(summaries[0]["ChannelName"], "xregion-channel");
+
+ // And the in-use guard holds for that same client.
+ let (status, in_use) = channel_op_in_region(
+ &server,
+ "eu-west-1",
+ "DeleteStream",
+ json!({ "StreamARN": foreign_arn }),
+ )
+ .await;
+ assert_eq!(status, 400, "delete attached stream: {in_use}");
+ assert_eq!(in_use["__type"], "ResourceInUseException", "{in_use}");
+
+ let (status, deleted) = channel_op_in_region(
+ &server,
+ "eu-west-1",
+ "DeleteChannel",
+ json!({ "ChannelARN": channel_arn }),
+ )
+ .await;
+ assert_eq!(status, 200, "delete channel: {deleted}");
+ let (status, dropped) = channel_op_in_region(
+ &server,
+ "eu-west-1",
+ "DeleteStream",
+ json!({ "StreamARN": foreign_arn }),
+ )
+ .await;
+ assert_eq!(status, 200, "delete detached stream: {dropped}");
+}
diff --git a/crates/fakecloud-conformance/tests/lambda.rs b/crates/fakecloud-conformance/tests/lambda.rs
index 4acd9536b..e8b2435e1 100644
--- a/crates/fakecloud-conformance/tests/lambda.rs
+++ b/crates/fakecloud-conformance/tests/lambda.rs
@@ -20,9 +20,9 @@ fn make_python_zip() -> Vec {
// Function lifecycle
// ---------------------------------------------------------------------------
-#[test_action("lambda", "CreateFunction", checksum = "5f765b54")]
-#[test_action("lambda", "GetFunction", checksum = "99d0a95e")]
-#[test_action("lambda", "DeleteFunction", checksum = "d6c8676a")]
+#[test_action("lambda", "CreateFunction", checksum = "1fca8a44")]
+#[test_action("lambda", "GetFunction", checksum = "7bc6c006")]
+#[test_action("lambda", "DeleteFunction", checksum = "22b50c89")]
#[tokio::test]
async fn lambda_create_get_delete_function() {
let server = TestServer::start().await;
@@ -72,7 +72,7 @@ async fn lambda_create_get_delete_function() {
assert!(result.is_err());
}
-#[test_action("lambda", "ListFunctions", checksum = "73439b22")]
+#[test_action("lambda", "ListFunctions", checksum = "888e068d")]
#[tokio::test]
async fn lambda_list_functions() {
let server = TestServer::start().await;
@@ -103,7 +103,7 @@ async fn lambda_list_functions() {
// Invoke
// ---------------------------------------------------------------------------
-#[test_action("lambda", "Invoke", checksum = "05f6e166")]
+#[test_action("lambda", "Invoke", checksum = "f941254d")]
#[tokio::test]
async fn lambda_invoke() {
let server = TestServer::start().await;
@@ -148,7 +148,7 @@ async fn lambda_invoke() {
// PublishVersion
// ---------------------------------------------------------------------------
-#[test_action("lambda", "PublishVersion", checksum = "63700287")]
+#[test_action("lambda", "PublishVersion", checksum = "c8ab2228")]
#[tokio::test]
async fn lambda_publish_version() {
let server = TestServer::start().await;
@@ -184,7 +184,7 @@ async fn lambda_publish_version() {
// Event source mappings
// ---------------------------------------------------------------------------
-#[test_action("lambda", "CreateEventSourceMapping", checksum = "0cac5a16")]
+#[test_action("lambda", "CreateEventSourceMapping", checksum = "6c00be25")]
#[test_action("lambda", "GetEventSourceMapping", checksum = "4821f650")]
#[test_action("lambda", "DeleteEventSourceMapping", checksum = "8c9643a0")]
#[tokio::test]
@@ -234,7 +234,7 @@ async fn lambda_create_get_delete_event_source_mapping() {
.unwrap();
}
-#[test_action("lambda", "ListEventSourceMappings", checksum = "9e739260")]
+#[test_action("lambda", "ListEventSourceMappings", checksum = "8f52c766")]
#[tokio::test]
async fn lambda_list_event_source_mappings() {
let server = TestServer::start().await;
@@ -271,9 +271,9 @@ async fn lambda_list_event_source_mappings() {
// Resource-based policies
// ---------------------------------------------------------------------------
-#[test_action("lambda", "AddPermission", checksum = "b78cca63")]
-#[test_action("lambda", "GetPolicy", checksum = "80d6c55b")]
-#[test_action("lambda", "RemovePermission", checksum = "ea6d40f6")]
+#[test_action("lambda", "AddPermission", checksum = "08162d94")]
+#[test_action("lambda", "GetPolicy", checksum = "95bf09af")]
+#[test_action("lambda", "RemovePermission", checksum = "ddbad384")]
#[tokio::test]
async fn lambda_resource_policy_roundtrip() {
let server = TestServer::start().await;
@@ -406,7 +406,7 @@ async fn lambda_alias_lifecycle() {
.unwrap();
}
-#[test_action("lambda", "ListVersionsByFunction", checksum = "56aa9ad0")]
+#[test_action("lambda", "ListVersionsByFunction", checksum = "0cbc5f1a")]
#[tokio::test]
async fn lambda_list_versions_by_function() {
let server = TestServer::start().await;
@@ -420,9 +420,9 @@ async fn lambda_list_versions_by_function() {
.unwrap();
}
-#[test_action("lambda", "GetFunctionConfiguration", checksum = "00d485f6")]
-#[test_action("lambda", "UpdateFunctionConfiguration", checksum = "8eb65bb3")]
-#[test_action("lambda", "UpdateFunctionCode", checksum = "c6677048")]
+#[test_action("lambda", "GetFunctionConfiguration", checksum = "fca9b21b")]
+#[test_action("lambda", "UpdateFunctionConfiguration", checksum = "09a98ff8")]
+#[test_action("lambda", "UpdateFunctionCode", checksum = "cdf5efe3")]
#[tokio::test]
async fn lambda_function_configuration_extras() {
let server = TestServer::start().await;
@@ -458,8 +458,8 @@ async fn lambda_get_account_settings() {
client.get_account_settings().send().await.unwrap();
}
-#[test_action("lambda", "InvokeAsync", checksum = "46b98ab0")]
-#[test_action("lambda", "InvokeWithResponseStream", checksum = "78e42557")]
+#[test_action("lambda", "InvokeAsync", checksum = "350f942d")]
+#[test_action("lambda", "InvokeWithResponseStream", checksum = "0189ebbc")]
#[tokio::test]
async fn lambda_invoke_async_and_stream() {
let server = TestServer::start().await;
@@ -682,9 +682,9 @@ async fn lambda_concurrency_lifecycle() {
#[test_action("lambda", "UpdateCodeSigningConfig", checksum = "babf3cfd")]
#[test_action("lambda", "DeleteCodeSigningConfig", checksum = "2b03107b")]
#[test_action("lambda", "ListCodeSigningConfigs", checksum = "d0a0f166")]
-#[test_action("lambda", "PutFunctionCodeSigningConfig", checksum = "dffa379d")]
-#[test_action("lambda", "GetFunctionCodeSigningConfig", checksum = "453777f6")]
-#[test_action("lambda", "DeleteFunctionCodeSigningConfig", checksum = "f95c89b0")]
+#[test_action("lambda", "PutFunctionCodeSigningConfig", checksum = "2d0c93ed")]
+#[test_action("lambda", "GetFunctionCodeSigningConfig", checksum = "eb62995a")]
+#[test_action("lambda", "DeleteFunctionCodeSigningConfig", checksum = "9e53fbf3")]
#[test_action("lambda", "ListFunctionsByCodeSigningConfig", checksum = "fcee00dc")]
#[tokio::test]
async fn lambda_code_signing_lifecycle() {
@@ -757,11 +757,11 @@ async fn lambda_code_signing_lifecycle() {
.unwrap();
}
-#[test_action("lambda", "PutFunctionEventInvokeConfig", checksum = "d2081393")]
-#[test_action("lambda", "GetFunctionEventInvokeConfig", checksum = "958b3c63")]
-#[test_action("lambda", "UpdateFunctionEventInvokeConfig", checksum = "cea9fb91")]
-#[test_action("lambda", "DeleteFunctionEventInvokeConfig", checksum = "1466085b")]
-#[test_action("lambda", "ListFunctionEventInvokeConfigs", checksum = "a7851e11")]
+#[test_action("lambda", "PutFunctionEventInvokeConfig", checksum = "a05d2cbd")]
+#[test_action("lambda", "GetFunctionEventInvokeConfig", checksum = "b8cc0e93")]
+#[test_action("lambda", "UpdateFunctionEventInvokeConfig", checksum = "e3522646")]
+#[test_action("lambda", "DeleteFunctionEventInvokeConfig", checksum = "bba8194f")]
+#[test_action("lambda", "ListFunctionEventInvokeConfigs", checksum = "c2505c63")]
#[tokio::test]
async fn lambda_event_invoke_lifecycle() {
let server = TestServer::start().await;
@@ -802,8 +802,8 @@ async fn lambda_event_invoke_lifecycle() {
.unwrap();
}
-#[test_action("lambda", "PutRuntimeManagementConfig", checksum = "6f41881f")]
-#[test_action("lambda", "GetRuntimeManagementConfig", checksum = "df8416ff")]
+#[test_action("lambda", "PutRuntimeManagementConfig", checksum = "29a12cb3")]
+#[test_action("lambda", "GetRuntimeManagementConfig", checksum = "a21c79cb")]
#[tokio::test]
async fn lambda_runtime_management() {
let server = TestServer::start().await;
@@ -976,11 +976,11 @@ async fn lambda_capacity_provider_lifecycle() {
}
#[test_action("lambda", "GetDurableExecution", checksum = "39fddd6c")]
-#[test_action("lambda", "GetDurableExecutionHistory", checksum = "92185d93")]
+#[test_action("lambda", "GetDurableExecutionHistory", checksum = "79352114")]
#[test_action("lambda", "GetDurableExecutionState", checksum = "38c14d0e")]
-#[test_action("lambda", "CheckpointDurableExecution", checksum = "90a79ff0")]
+#[test_action("lambda", "CheckpointDurableExecution", checksum = "a9768cf1")]
#[test_action("lambda", "StopDurableExecution", checksum = "c1dacd9e")]
-#[test_action("lambda", "ListDurableExecutionsByFunction", checksum = "463e7a91")]
+#[test_action("lambda", "ListDurableExecutionsByFunction", checksum = "d4b6f4ca")]
#[test_action("lambda", "SendDurableExecutionCallbackSuccess", checksum = "16e7c48e")]
#[test_action("lambda", "SendDurableExecutionCallbackFailure", checksum = "9321bea7")]
#[test_action(
@@ -1050,7 +1050,7 @@ async fn lambda_durable_execution_lifecycle() {
.unwrap();
}
-#[test_action("lambda", "UpdateEventSourceMapping", checksum = "eb040ee7")]
+#[test_action("lambda", "UpdateEventSourceMapping", checksum = "b2c589c7")]
#[tokio::test]
async fn lambda_update_event_source_mapping() {
let server = TestServer::start().await;
diff --git a/crates/fakecloud-conformance/tests/ses.rs b/crates/fakecloud-conformance/tests/ses.rs
index 1f460f08b..ed3b0be3b 100644
--- a/crates/fakecloud-conformance/tests/ses.rs
+++ b/crates/fakecloud-conformance/tests/ses.rs
@@ -80,8 +80,8 @@ async fn ses_identity_lifecycle() {
// -- Configuration Set CRUD --
-#[test_action("ses", "CreateConfigurationSet", checksum = "85fe8f9d")]
-#[test_action("ses", "GetConfigurationSet", checksum = "c0be65b9")]
+#[test_action("ses", "CreateConfigurationSet", checksum = "e952eb8e")]
+#[test_action("ses", "GetConfigurationSet", checksum = "0ac4f609")]
#[test_action("ses", "ListConfigurationSets", checksum = "31486196")]
#[test_action("ses", "DeleteConfigurationSet", checksum = "3c50e07a")]
#[tokio::test]
@@ -2154,3 +2154,209 @@ async fn ses_list_recommendations() {
// Smithy ListRecommendations returns Recommendations + NextToken.
resp.recommendations();
}
+
+// -- S/MIME Certificate Associations --
+
+/// The repo's aws-sdk-sesv2 predates the identity-certificate operations
+/// and UpdateConfigurationSet, so they are driven over raw HTTP against
+/// the REST-JSON endpoint with the URIs from the Smithy model.
+const FAKE_AUTH: &str = "AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20260411/us-east-1/ses/aws4_request, SignedHeaders=host, Signature=fake";
+
+#[test_action("ses", "AssociateEmailIdentityCertificate", checksum = "fa9865a2")]
+#[test_action("ses", "ListEmailIdentityCertificates", checksum = "34d56287")]
+#[test_action("ses", "DisassociateEmailIdentityCertificate", checksum = "eebd443a")]
+#[tokio::test]
+async fn ses_email_identity_certificate_lifecycle() {
+ let server = TestServer::start().await;
+ let client = server.sesv2_client().await;
+ let http = reqwest::Client::new();
+
+ client
+ .create_email_identity()
+ .email_identity("smime@example.com")
+ .send()
+ .await
+ .unwrap();
+
+ let certificate_arn =
+ "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012";
+
+ // Associate
+ let resp = http
+ .post(format!(
+ "{}/v2/email/identity/certificates",
+ server.endpoint()
+ ))
+ .header("content-type", "application/json")
+ .header("authorization", FAKE_AUTH)
+ .body(
+ serde_json::json!({
+ "EmailIdentity": "smime@example.com",
+ "CertificateArn": certificate_arn,
+ })
+ .to_string(),
+ )
+ .send()
+ .await
+ .unwrap();
+ assert!(resp.status().is_success());
+
+ // List reports the stored association against the identity.
+ let resp = http
+ .post(format!(
+ "{}/v2/email/identity/certificates/list",
+ server.endpoint()
+ ))
+ .header("content-type", "application/json")
+ .header("authorization", FAKE_AUTH)
+ .body(serde_json::json!({"EmailIdentity": "smime@example.com"}).to_string())
+ .send()
+ .await
+ .unwrap();
+ assert!(resp.status().is_success());
+ let body: serde_json::Value = resp.json().await.unwrap();
+ let certificates = body["Certificates"].as_array().unwrap();
+ assert_eq!(certificates.len(), 1);
+ assert_eq!(
+ certificates[0]["FromAddress"].as_str().unwrap(),
+ "smime@example.com"
+ );
+ assert_eq!(
+ certificates[0]["CertificateArn"].as_str().unwrap(),
+ certificate_arn
+ );
+ assert_eq!(certificates[0]["Status"].as_str().unwrap(), "ACTIVE");
+
+ // Disassociate
+ let resp = http
+ .post(format!(
+ "{}/v2/email/identity/certificates/delete",
+ server.endpoint()
+ ))
+ .header("content-type", "application/json")
+ .header("authorization", FAKE_AUTH)
+ .body(serde_json::json!({"EmailIdentity": "smime@example.com"}).to_string())
+ .send()
+ .await
+ .unwrap();
+ assert!(resp.status().is_success());
+
+ let resp = http
+ .post(format!(
+ "{}/v2/email/identity/certificates/list",
+ server.endpoint()
+ ))
+ .header("content-type", "application/json")
+ .header("authorization", FAKE_AUTH)
+ .body(serde_json::json!({"EmailIdentity": "smime@example.com"}).to_string())
+ .send()
+ .await
+ .unwrap();
+ let body: serde_json::Value = resp.json().await.unwrap();
+ assert!(body["Certificates"].as_array().unwrap().is_empty());
+}
+
+#[tokio::test]
+async fn ses_associate_email_identity_certificate_unknown_identity() {
+ let server = TestServer::start().await;
+ let http = reqwest::Client::new();
+
+ let resp = http
+ .post(format!(
+ "{}/v2/email/identity/certificates",
+ server.endpoint()
+ ))
+ .header("content-type", "application/json")
+ .header("authorization", FAKE_AUTH)
+ .body(
+ serde_json::json!({
+ "EmailIdentity": "ghost@example.com",
+ "CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/abc",
+ })
+ .to_string(),
+ )
+ .send()
+ .await
+ .unwrap();
+ assert_eq!(resp.status(), 404);
+ let body: serde_json::Value = resp.json().await.unwrap();
+ assert_eq!(body["__type"].as_str().unwrap(), "NotFoundException");
+}
+
+#[test_action("ses", "UpdateConfigurationSet", checksum = "b6b0c0d1")]
+#[tokio::test]
+async fn ses_update_configuration_set() {
+ let server = TestServer::start().await;
+ let client = server.sesv2_client().await;
+ let http = reqwest::Client::new();
+
+ client
+ .create_configuration_set()
+ .configuration_set_name("cs-security")
+ .send()
+ .await
+ .unwrap();
+
+ let resp = http
+ .post(format!(
+ "{}/v2/email/update-configuration-sets",
+ server.endpoint()
+ ))
+ .header("content-type", "application/json")
+ .header("authorization", FAKE_AUTH)
+ .body(
+ serde_json::json!({
+ "ConfigurationSetName": "cs-security",
+ "MessageSecurityOptions": {
+ "SigningScheme": {"SmimeScheme": {"SignatureFormat": "DETACHED"}}
+ },
+ })
+ .to_string(),
+ )
+ .send()
+ .await
+ .unwrap();
+ assert!(resp.status().is_success());
+
+ // GetConfigurationSet echoes the stored MessageSecurityOptions, and the
+ // partial update left the sending options untouched. MessageSecurityOptions
+ // is newer than aws-sdk-sesv2 1.x, so read the raw response.
+ let get = http
+ .get(format!(
+ "{}/v2/email/configuration-sets/cs-security",
+ server.endpoint()
+ ))
+ .header("authorization", FAKE_AUTH)
+ .send()
+ .await
+ .unwrap();
+ let body: serde_json::Value = get.json().await.unwrap();
+ assert_eq!(
+ body["MessageSecurityOptions"]["SigningScheme"]["SmimeScheme"]["SignatureFormat"]
+ .as_str()
+ .unwrap(),
+ "DETACHED"
+ );
+ assert!(body["SendingOptions"]["SendingEnabled"].as_bool().unwrap());
+}
+
+#[tokio::test]
+async fn ses_update_configuration_set_unknown_set() {
+ let server = TestServer::start().await;
+ let http = reqwest::Client::new();
+
+ let resp = http
+ .post(format!(
+ "{}/v2/email/update-configuration-sets",
+ server.endpoint()
+ ))
+ .header("content-type", "application/json")
+ .header("authorization", FAKE_AUTH)
+ .body(serde_json::json!({"ConfigurationSetName": "no-such-set"}).to_string())
+ .send()
+ .await
+ .unwrap();
+ assert_eq!(resp.status(), 404);
+ let body: serde_json::Value = resp.json().await.unwrap();
+ assert_eq!(body["__type"].as_str().unwrap(), "NotFoundException");
+}
diff --git a/crates/fakecloud-conformance/tests/support.rs b/crates/fakecloud-conformance/tests/support.rs
new file mode 100644
index 000000000..ad1537937
--- /dev/null
+++ b/crates/fakecloud-conformance/tests/support.rs
@@ -0,0 +1,434 @@
+//! Conformance coverage for the AWS Support presigned attachment-upload
+//! operations (`GetAttachmentUploadLinks` / `CompleteAttachmentUpload` /
+//! `DescribeAttachmentUploadStatus` / `GetAttachmentDownloadLink`).
+//!
+//! These operations are newer than any `aws-sdk-support` this workspace
+//! depends on, so they are driven over raw awsJson1_1 HTTP:
+//! `POST /` with `x-amz-target: AWSSupport_20130415.`.
+//!
+//! The upload and download links fakecloud hands out point back at fakecloud
+//! itself, so the test follows them for real: it `PUT`s the part bytes to the
+//! issued link, completes the upload with the `ETag` that `PUT` returned, and
+//! `GET`s the download link back, asserting the bytes survive the round trip.
+
+mod helpers;
+
+use fakecloud_conformance_macros::test_action;
+use helpers::TestServer;
+use serde_json::{json, Value};
+
+const AUTH: &str = "AWS4-HMAC-SHA256 Credential=test/20240101/us-east-1/support/aws4_request, SignedHeaders=host, Signature=0";
+
+/// POST an awsJson1_1 AWS Support action, returning `(status, parsed_body)`.
+async fn support(server: &TestServer, op: &str, body: Value) -> (u16, Value) {
+ let resp = reqwest::Client::new()
+ .post(format!("{}/", server.endpoint()))
+ .header("content-type", "application/x-amz-json-1.1")
+ .header("x-amz-target", format!("AWSSupport_20130415.{op}"))
+ .header("Authorization", AUTH)
+ .body(body.to_string())
+ .send()
+ .await
+ .unwrap();
+ let status = resp.status().as_u16();
+ let text = resp.text().await.unwrap();
+ let parsed = serde_json::from_str(&text).unwrap_or(Value::Null);
+ (status, parsed)
+}
+
+#[test_action("support", "GetAttachmentUploadLinks", checksum = "81100c3d")]
+#[test_action("support", "CompleteAttachmentUpload", checksum = "b1ea9dc1")]
+#[test_action("support", "DescribeAttachmentUploadStatus", checksum = "18064527")]
+#[test_action("support", "GetAttachmentDownloadLink", checksum = "3768e4dd")]
+#[tokio::test]
+async fn support_attachment_upload_round_trip() {
+ let server = TestServer::start().await;
+ let client = reqwest::Client::new();
+ let contents = b"fakecloud support attachment".to_vec();
+
+ // 1. Ask for upload links for a small single-part file.
+ let (status, links) = support(
+ &server,
+ "GetAttachmentUploadLinks",
+ json!({ "fileName": "diagnostics.log", "fileSizeBytes": contents.len() }),
+ )
+ .await;
+ assert_eq!(status, 200, "{links}");
+ let upload_id = links["uploadId"].as_str().unwrap().to_string();
+ assert!(!upload_id.is_empty());
+ assert_eq!(links["totalParts"], 1, "{links}");
+ // The only part's URL has been returned, so there is no next page of links
+ // to ask for.
+ assert!(links["nextIndex"].is_null(), "{links}");
+ assert!(links["partSizeBytes"].as_i64().unwrap() > 0, "{links}");
+ let part = &links["uploadUrls"][0];
+ assert_eq!(part["partIndex"], 1, "{links}");
+ assert!(part["expiryDate"].is_string(), "{links}");
+ let upload_url = part["url"].as_str().unwrap().to_string();
+ assert!(upload_url.contains("X-Amz-Signature="), "{upload_url}");
+ assert!(
+ upload_url.contains("X-Amz-Algorithm=AWS4-HMAC-SHA256"),
+ "{upload_url}"
+ );
+
+ // 2. The link is real: PUT the bytes and keep the ETag it returns.
+ let resp = client
+ .put(&upload_url)
+ .body(contents.clone())
+ .send()
+ .await
+ .unwrap();
+ assert!(
+ resp.status().is_success(),
+ "part upload failed: {}",
+ resp.status()
+ );
+ let etag = resp
+ .headers()
+ .get("etag")
+ .expect("the part upload returns an ETag")
+ .to_str()
+ .unwrap()
+ .to_string();
+
+ // 3. The recorded progress is visible before the upload is completed.
+ let (status, progress) = support(
+ &server,
+ "DescribeAttachmentUploadStatus",
+ json!({ "uploadId": upload_id }),
+ )
+ .await;
+ assert_eq!(status, 200, "{progress}");
+ assert_eq!(
+ progress["uploadStatus"], "attachment-not-ready",
+ "{progress}"
+ );
+ assert_eq!(progress["fileName"], "diagnostics.log", "{progress}");
+ assert_eq!(progress["uploadProgress"]["totalParts"], 1, "{progress}");
+ assert_eq!(
+ progress["uploadProgress"]["completedPartsCount"], 1,
+ "{progress}"
+ );
+
+ // 4. Complete the upload with the ETag the data plane issued.
+ let (status, completed) = support(
+ &server,
+ "CompleteAttachmentUpload",
+ json!({
+ "uploadId": upload_id,
+ "completedUploads": [{ "partIndex": 1, "eTag": etag }],
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "{completed}");
+ assert_eq!(completed["uploadStatus"], "attachment-ready", "{completed}");
+
+ let (_, progress) = support(
+ &server,
+ "DescribeAttachmentUploadStatus",
+ json!({ "uploadId": upload_id }),
+ )
+ .await;
+ assert_eq!(progress["uploadStatus"], "attachment-ready", "{progress}");
+
+ // 5. Attach the completed upload to a case to learn its attachment id.
+ let (status, created) = support(
+ &server,
+ "CreateCase",
+ json!({
+ "subject": "conformance attachment upload",
+ "communicationBody": "diagnostics attached",
+ "uploadIds": [upload_id],
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "{created}");
+ let case_id = created["caseId"].as_str().unwrap().to_string();
+
+ let (status, comms) = support(
+ &server,
+ "DescribeCommunications",
+ json!({ "caseId": case_id }),
+ )
+ .await;
+ assert_eq!(status, 200, "{comms}");
+ let attachment = &comms["communications"][0]["attachments"][0];
+ assert_eq!(attachment["fileName"], "diagnostics.log", "{comms}");
+ let attachment_id = attachment["attachmentId"].as_str().unwrap().to_string();
+
+ // 6. A download link for it, followed for real.
+ let (status, link) = support(
+ &server,
+ "GetAttachmentDownloadLink",
+ json!({ "attachmentId": attachment_id }),
+ )
+ .await;
+ assert_eq!(status, 200, "{link}");
+ assert_eq!(link["fileName"], "diagnostics.log", "{link}");
+ assert!(link["downloadUrl"]["expiryDate"].is_string(), "{link}");
+ let download_url = link["downloadUrl"]["url"].as_str().unwrap().to_string();
+ assert!(download_url.contains("X-Amz-Signature="), "{download_url}");
+
+ let resp = client.get(&download_url).send().await.unwrap();
+ assert!(
+ resp.status().is_success(),
+ "attachment download failed: {}",
+ resp.status()
+ );
+ assert_eq!(resp.bytes().await.unwrap().to_vec(), contents);
+
+ // A completed upload cannot be completed again.
+ let (status, err) = support(
+ &server,
+ "CompleteAttachmentUpload",
+ json!({
+ "uploadId": upload_id,
+ "completedUploads": [{ "partIndex": 1, "eTag": "\"whatever\"" }],
+ }),
+ )
+ .await;
+ assert_eq!(status, 400, "{err}");
+ assert_eq!(err["__type"], "UploadIdNotFound", "{err}");
+}
+
+/// A real multipart upload: a part far larger than any default request-body
+/// limit, the model's half-open `uploadRange`, `nextIndex` paging, and one part
+/// per `CompleteAttachmentUpload` call.
+#[tokio::test]
+async fn support_multipart_attachment_upload_is_incremental() {
+ let server = TestServer::start().await;
+ let client = reqwest::Client::new();
+ // 5 MiB + 1 byte is two parts, the first of them well past the 2 MB body
+ // limit a default extractor would impose on the upload route.
+ let part_size = 5 * 1024 * 1024;
+ let first = vec![b'a'; part_size];
+ let last = vec![b'z'; 1];
+
+ let (status, links) = support(
+ &server,
+ "GetAttachmentUploadLinks",
+ json!({
+ "fileName": "big.bin",
+ "fileSizeBytes": part_size + 1,
+ "uploadRange": { "startIndex": 1, "endIndex": 2 },
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "{links}");
+ let upload_id = links["uploadId"].as_str().unwrap().to_string();
+ assert_eq!(links["totalParts"], 2, "{links}");
+ // endIndex is exclusive, so 1..2 is part 1 alone and part 2 is next.
+ assert_eq!(links["uploadUrls"].as_array().unwrap().len(), 1, "{links}");
+ assert_eq!(links["uploadUrls"][0]["partIndex"], 1, "{links}");
+ assert_eq!(links["nextIndex"], 2, "{links}");
+
+ let resp = client
+ .put(links["uploadUrls"][0]["url"].as_str().unwrap())
+ .body(first.clone())
+ .send()
+ .await
+ .unwrap();
+ assert!(
+ resp.status().is_success(),
+ "5 MiB part upload failed: {}",
+ resp.status()
+ );
+ let first_etag = resp
+ .headers()
+ .get("etag")
+ .unwrap()
+ .to_str()
+ .unwrap()
+ .to_string();
+
+ // One part per call is allowed: the upload stays pending until every part
+ // has been reported.
+ let (status, pending) = support(
+ &server,
+ "CompleteAttachmentUpload",
+ json!({
+ "uploadId": upload_id,
+ "completedUploads": [{ "partIndex": 1, "eTag": first_etag }],
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "{pending}");
+ assert_eq!(pending["uploadStatus"], "attachment-not-ready", "{pending}");
+
+ // Page to the rest of the links with the returned nextIndex.
+ let (status, more) = support(
+ &server,
+ "GetAttachmentUploadLinks",
+ json!({
+ "fileName": "big.bin",
+ "uploadId": upload_id,
+ "uploadRange": { "startIndex": 2 },
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "{more}");
+ assert_eq!(more["uploadUrls"][0]["partIndex"], 2, "{more}");
+ assert!(more["nextIndex"].is_null(), "{more}");
+ let last_url = more["uploadUrls"][0]["url"].as_str().unwrap().to_string();
+
+ // The last part carries the declared remainder and nothing else.
+ let resp = client
+ .put(&last_url)
+ .body(vec![b'z'; 64])
+ .send()
+ .await
+ .unwrap();
+ assert_eq!(resp.status().as_u16(), 400, "an oversized part is refused");
+ let resp = client
+ .put(&last_url)
+ .body(last.clone())
+ .send()
+ .await
+ .unwrap();
+ assert!(resp.status().is_success(), "{}", resp.status());
+ let last_etag = resp
+ .headers()
+ .get("etag")
+ .unwrap()
+ .to_str()
+ .unwrap()
+ .to_string();
+
+ let (status, completed) = support(
+ &server,
+ "CompleteAttachmentUpload",
+ json!({
+ "uploadId": upload_id,
+ "completedUploads": [{ "partIndex": 2, "eTag": last_etag }],
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "{completed}");
+ assert_eq!(completed["uploadStatus"], "attachment-ready", "{completed}");
+
+ // A range wider than the ten URLs a call may return is refused.
+ let (status, err) = support(
+ &server,
+ "GetAttachmentUploadLinks",
+ json!({
+ "fileName": "big.bin",
+ "fileSizeBytes": 121 * 1024 * 1024,
+ "uploadRange": { "startIndex": 1, "endIndex": 13 },
+ }),
+ )
+ .await;
+ assert_eq!(status, 400, "{err}");
+ assert_eq!(err["__type"], "ValidationException", "{err}");
+
+ // The assembled attachment is the two parts, in order.
+ let (status, created) = support(
+ &server,
+ "CreateCase",
+ json!({
+ "subject": "conformance multipart upload",
+ "communicationBody": "big file attached",
+ "uploadIds": [upload_id],
+ }),
+ )
+ .await;
+ assert_eq!(status, 200, "{created}");
+ let (_, comms) = support(
+ &server,
+ "DescribeCommunications",
+ json!({ "caseId": created["caseId"].as_str().unwrap() }),
+ )
+ .await;
+ let attachment_id = comms["communications"][0]["attachments"][0]["attachmentId"]
+ .as_str()
+ .unwrap()
+ .to_string();
+ let (_, link) = support(
+ &server,
+ "GetAttachmentDownloadLink",
+ json!({ "attachmentId": attachment_id }),
+ )
+ .await;
+ let resp = client
+ .get(link["downloadUrl"]["url"].as_str().unwrap())
+ .send()
+ .await
+ .unwrap();
+ assert!(resp.status().is_success(), "{}", resp.status());
+ let body = resp.bytes().await.unwrap();
+ assert_eq!(body.len(), first.len() + last.len());
+ assert_eq!(body[0], b'a');
+ assert_eq!(body[body.len() - 1], b'z');
+}
+
+#[tokio::test]
+async fn support_attachment_upload_errors() {
+ let server = TestServer::start().await;
+
+ // Unknown upload ids are UploadIdNotFound on every upload operation.
+ for (op, body) in [
+ (
+ "GetAttachmentUploadLinks",
+ json!({ "fileName": "x.log", "uploadId": "upload-missing" }),
+ ),
+ (
+ "CompleteAttachmentUpload",
+ json!({ "uploadId": "upload-missing", "completedUploads": [] }),
+ ),
+ (
+ "DescribeAttachmentUploadStatus",
+ json!({ "uploadId": "upload-missing" }),
+ ),
+ ] {
+ let (status, err) = support(&server, op, body).await;
+ assert_eq!(status, 400, "{op}: {err}");
+ assert_eq!(err["__type"], "UploadIdNotFound", "{op}: {err}");
+ }
+
+ // An unknown attachment has no download link.
+ let (status, err) = support(
+ &server,
+ "GetAttachmentDownloadLink",
+ json!({ "attachmentId": "attachment-missing" }),
+ )
+ .await;
+ assert_eq!(status, 400, "{err}");
+ assert_eq!(err["__type"], "AttachmentIdNotFound", "{err}");
+
+ // An upload that was never completed cannot be attached to a case.
+ let (status, links) = support(
+ &server,
+ "GetAttachmentUploadLinks",
+ json!({ "fileName": "pending.log", "fileSizeBytes": 4 }),
+ )
+ .await;
+ assert_eq!(status, 200, "{links}");
+ let upload_id = links["uploadId"].as_str().unwrap().to_string();
+ let (status, err) = support(
+ &server,
+ "CreateCase",
+ json!({
+ "subject": "premature",
+ "communicationBody": "not uploaded yet",
+ "uploadIds": [upload_id],
+ }),
+ )
+ .await;
+ assert_eq!(status, 400, "{err}");
+ assert_eq!(err["__type"], "ValidationException", "{err}");
+
+ // Required members are still enforced ahead of any of this.
+ let (status, err) = support(&server, "GetAttachmentUploadLinks", json!({})).await;
+ assert_eq!(status, 400, "{err}");
+ assert_eq!(err["__type"], "ValidationException", "{err}");
+
+ // A dry run is refused with the modelled exception instead of taking
+ // effect.
+ let (status, err) = support(
+ &server,
+ "GetAttachmentUploadLinks",
+ json!({ "fileName": "dry.log", "fileSizeBytes": 4, "dryRun": true }),
+ )
+ .await;
+ assert_eq!(status, 400, "{err}");
+ assert_eq!(err["__type"], "DryRunOperationException", "{err}");
+}
diff --git a/crates/fakecloud-conformance/tests/transfer.rs b/crates/fakecloud-conformance/tests/transfer.rs
index 91e741232..f27bace39 100644
--- a/crates/fakecloud-conformance/tests/transfer.rs
+++ b/crates/fakecloud-conformance/tests/transfer.rs
@@ -12,7 +12,7 @@ use helpers::TestServer;
#[test_action("transfer", "CreateAccess", checksum = "482198aa")]
#[test_action("transfer", "CreateAgreement", checksum = "5ff5b981")]
-#[test_action("transfer", "CreateConnector", checksum = "578da32e")]
+#[test_action("transfer", "CreateConnector", checksum = "f8fb4315")]
#[test_action("transfer", "CreateProfile", checksum = "0e1e3546")]
#[test_action("transfer", "CreateServer", checksum = "ea5dbf8a")]
#[test_action("transfer", "CreateUser", checksum = "d6286e25")]
@@ -33,7 +33,7 @@ use helpers::TestServer;
#[test_action("transfer", "DescribeAccess", checksum = "610847ce")]
#[test_action("transfer", "DescribeAgreement", checksum = "21085849")]
#[test_action("transfer", "DescribeCertificate", checksum = "2754344d")]
-#[test_action("transfer", "DescribeConnector", checksum = "bbeaac81")]
+#[test_action("transfer", "DescribeConnector", checksum = "2b361e21")]
#[test_action("transfer", "DescribeExecution", checksum = "348aaf31")]
#[test_action("transfer", "DescribeHostKey", checksum = "8c8a69e5")]
#[test_action("transfer", "DescribeProfile", checksum = "d9d8da1a")]
@@ -74,7 +74,7 @@ use helpers::TestServer;
#[test_action("transfer", "UpdateAccess", checksum = "018643a1")]
#[test_action("transfer", "UpdateAgreement", checksum = "bde6c56f")]
#[test_action("transfer", "UpdateCertificate", checksum = "07521e17")]
-#[test_action("transfer", "UpdateConnector", checksum = "a7ff2a02")]
+#[test_action("transfer", "UpdateConnector", checksum = "05318d94")]
#[test_action("transfer", "UpdateHostKey", checksum = "d6bce871")]
#[test_action("transfer", "UpdateProfile", checksum = "b2283ba5")]
#[test_action("transfer", "UpdateServer", checksum = "56339d3e")]
diff --git a/crates/fakecloud-ec2/src/service/mod.rs b/crates/fakecloud-ec2/src/service/mod.rs
index 6c26f4f54..4a2b45e56 100644
--- a/crates/fakecloud-ec2/src/service/mod.rs
+++ b/crates/fakecloud-ec2/src/service/mod.rs
@@ -57,7 +57,8 @@ fn is_mutating_action(action: &str) -> bool {
!(action.starts_with("Describe")
|| action.starts_with("Get")
|| action.starts_with("Search")
- || action.starts_with("List"))
+ || action.starts_with("List")
+ || action.starts_with("Validate"))
}
/// Every EC2 action this build implements. The conformance audit cross-checks
@@ -120,6 +121,7 @@ pub const SUPPORTED_ACTIONS: &[&str] = &[
"GetSecurityGroupsForVpc",
"DescribeStaleSecurityGroups",
"DescribeSecurityGroupReferences",
+ "ValidateSecurityGroupQuotasForInterface",
// Route tables
"CreateRouteTable",
"DeleteRouteTable",
@@ -1398,6 +1400,9 @@ impl AwsService for Ec2Service {
"DescribeSecurityGroupReferences" => {
sg::describe_security_group_references(self, &request)
}
+ "ValidateSecurityGroupQuotasForInterface" => {
+ sg::validate_security_group_quotas_for_interface(self, &request)
+ }
"CreateRouteTable" => routing::create_route_table(self, &request),
"DeleteRouteTable" => routing::delete_route_table(self, &request),
"DescribeRouteTables" => routing::describe_route_tables(self, &request),
diff --git a/crates/fakecloud-ec2/src/service/sg.rs b/crates/fakecloud-ec2/src/service/sg.rs
index cba3ab466..2e0b02bcb 100644
--- a/crates/fakecloud-ec2/src/service/sg.rs
+++ b/crates/fakecloud-ec2/src/service/sg.rs
@@ -3,13 +3,13 @@
use std::collections::HashMap;
-use fakecloud_aws::ec2query::{ec2_elem, ec2_list, ec2_return};
+use fakecloud_aws::ec2query::{ec2_bool, ec2_elem, ec2_list, ec2_return};
use fakecloud_core::service::{AwsRequest, AwsResponse, AwsServiceError};
use crate::service::Ec2Service;
use crate::service_helpers::{
- filter_value_matches, gen_id, indexed_list, parse_filters, require, validate_max_results,
- Filter,
+ filter_value_matches, gen_id, indexed_list, invalid_parameter_value, missing_parameter,
+ parse_filters, require, validate_max_results, Filter,
};
use crate::state::{Ec2State, SecurityGroup, SecurityGroupRule, SecurityGroupVpcAssociation, Tag};
@@ -1057,6 +1057,126 @@ pub(crate) fn describe_security_group_references(
))
}
+// ---- quota validation ----
+
+/// Security groups that may be associated with one network interface. The
+/// published Amazon VPC default; AWS allows it to be raised to 16.
+const SECURITY_GROUPS_PER_INTERFACE: usize = 5;
+
+/// Inbound (or outbound) rules per security group. Each direction gets its own
+/// allowance, so a group at the limit in both directions is still valid.
+///
+/// AWS additionally caps the *product* of the two quotas above at 1000. That
+/// binds only once a quota increase is granted; at the published defaults the
+/// product is 5 x 60 = 300, so it can never be the reason a request is
+/// rejected here and is not modeled as a third check.
+const RULES_PER_SECURITY_GROUP: usize = 60;
+
+/// `SecurityGroupsPerInterfaceLimitExceeded` -- more groups than one network
+/// interface may carry.
+fn groups_per_interface_exceeded(requested: usize) -> AwsServiceError {
+ AwsServiceError::aws_error(
+ http::StatusCode::BAD_REQUEST,
+ "SecurityGroupsPerInterfaceLimitExceeded",
+ format!(
+ "You have exceeded the number of security groups that can be associated with a \
+ network interface: requested {requested}, limit {SECURITY_GROUPS_PER_INTERFACE}"
+ ),
+ )
+}
+
+/// `RulesPerSecurityGroupLimitExceeded` -- the rules the requested groups carry
+/// exceed a per-group or per-interface rule allowance.
+fn rules_limit_exceeded(message: String) -> AwsServiceError {
+ AwsServiceError::aws_error(
+ http::StatusCode::BAD_REQUEST,
+ "RulesPerSecurityGroupLimitExceeded",
+ message,
+ )
+}
+
+/// `ValidateSecurityGroupQuotasForInterface`: answer whether the requested set
+/// of security groups could be attached to a single network interface without
+/// breaching a VPC quota.
+///
+/// The answer is derived from the stored groups, not assumed: every id is
+/// resolved (an unknown one is `InvalidGroup.NotFound`, exactly as the rest of
+/// the security-group surface reports it), and the rule counts that feed the
+/// quota arithmetic are the groups' real ingress/egress rules. AWS returns
+/// `valid=true` or an error -- there is no "false" answer -- so each quota it
+/// documents gets its own error code and message here.
+pub(crate) fn validate_security_group_quotas_for_interface(
+ svc: &Ec2Service,
+ req: &AwsRequest,
+) -> Result {
+ let group_ids = indexed_list(&req.query_params, "SecurityGroupId");
+ // Unlike the describe ops, an empty list here is not "match everything":
+ // there is nothing to validate, and AWS requires at least one id.
+ if group_ids.is_empty() {
+ return Err(missing_parameter("SecurityGroupId"));
+ }
+ // "each ID must be unique" -- a repeat is rejected rather than silently
+ // deduplicated, which would validate a smaller set than the caller sent.
+ for (i, id) in group_ids.iter().enumerate() {
+ if group_ids[..i].contains(id) {
+ return Err(invalid_parameter_value(format!(
+ "The security group ID '{id}' may only be specified once"
+ )));
+ }
+ }
+
+ // Resolve every id against stored state and take its real rule counts. A
+ // missing group is an error, so no quota arithmetic ever runs over a group
+ // that was assumed to be empty.
+ let mut counts: Vec<(String, usize, usize)> = Vec::with_capacity(group_ids.len());
+ {
+ let accounts = svc.state.read();
+ let empty = Ec2State::new(&req.account_id, &req.region);
+ let state = accounts.get(&req.account_id).unwrap_or(&empty);
+ for id in &group_ids {
+ let sg = state
+ .security_groups
+ .get(id)
+ .ok_or_else(|| sg_not_found(id))?;
+ let egress = sg.rules.iter().filter(|r| r.is_egress).count();
+ counts.push((id.clone(), sg.rules.len() - egress, egress));
+ }
+ }
+
+ if group_ids.len() > SECURITY_GROUPS_PER_INTERFACE {
+ return Err(groups_per_interface_exceeded(group_ids.len()));
+ }
+ for (id, ingress, egress) in &counts {
+ // Each direction has its own allowance, so the busier one decides.
+ let worst = (*ingress).max(*egress);
+ if worst > RULES_PER_SECURITY_GROUP {
+ return Err(rules_limit_exceeded(format!(
+ "The security group '{id}' has {worst} rules in one direction, exceeding the \
+ limit of {RULES_PER_SECURITY_GROUP} rules per security group"
+ )));
+ }
+ }
+ // A DryRun runs the same validation -- including the quota arithmetic, so a
+ // set that would be rejected is still rejected -- and reports nothing back,
+ // matching how the rest of EC2 treats one.
+ if req
+ .query_params
+ .get("DryRun")
+ .is_some_and(|v| v.eq_ignore_ascii_case("true"))
+ {
+ return Ok(Ec2Service::respond(
+ "ValidateSecurityGroupQuotasForInterface",
+ &req.request_id,
+ "",
+ ));
+ }
+ Ok(Ec2Service::respond(
+ "ValidateSecurityGroupQuotasForInterface",
+ &req.request_id,
+ &ec2_bool("valid", true),
+ ))
+}
+
#[cfg(test)]
mod modify_tests {
use super::*;
@@ -1746,4 +1866,164 @@ mod modify_tests {
)
.contains("sg-1 "));
}
+
+ // ---- ValidateSecurityGroupQuotasForInterface ----
+
+ /// Store a group carrying `ingress` inbound and `egress` outbound rules, so
+ /// the quota arithmetic runs over real stored rules.
+ fn seed_sized_group(svc: &Ec2Service, group_id: &str, ingress: usize, egress: usize) {
+ let mut rules = Vec::new();
+ for i in 0..ingress + egress {
+ let mut r = ingress_rule(&format!("sgr-{group_id}-{i}"), 22, "10.0.0.0/8");
+ r.group_id = group_id.to_string();
+ r.is_egress = i >= ingress;
+ rules.push(r);
+ }
+ let mut accounts = svc.state.write();
+ let state = accounts.get_or_create("000000000000");
+ state.security_groups.insert(
+ group_id.to_string(),
+ SecurityGroup {
+ group_id: group_id.into(),
+ group_name: group_id.into(),
+ description: "d".into(),
+ vpc_id: "vpc-1".into(),
+ rules,
+ },
+ );
+ }
+
+ fn validate_quotas(svc: &Ec2Service, query: &[(&str, &str)]) -> String {
+ let resp = validate_security_group_quotas_for_interface(
+ svc,
+ &req("ValidateSecurityGroupQuotasForInterface", query),
+ )
+ .unwrap();
+ String::from_utf8(resp.body.expect_bytes().to_vec()).unwrap()
+ }
+
+ #[test]
+ fn validate_quotas_accepts_groups_within_the_quotas() {
+ let svc = Ec2Service::new();
+ seed_sized_group(
+ &svc,
+ "sg-a",
+ RULES_PER_SECURITY_GROUP,
+ RULES_PER_SECURITY_GROUP,
+ );
+ seed_sized_group(&svc, "sg-b", 1, 1);
+ let body = validate_quotas(
+ &svc,
+ &[("SecurityGroupId.1", "sg-a"), ("SecurityGroupId.2", "sg-b")],
+ );
+ assert!(body.contains("true "), "{body}");
+ assert!(
+ body.contains("rid