# Limits
This section describes current limitations of the Amazon S3 Find and Forget
solution. We are actively working on adding additional features and supporting
more data formats. For feature requests, please open an issue on our [Issue
Tracker].
## Supported Data Formats
The following data formats are supported:
#### Apache Parquet
| | |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Compression on Read | Snappy, Brotli, Gzip, uncompressed |
| Compression on Write | Snappy |
| Supported Types for Column Identifier | bigint, char, decimal, double, float, int, smallint, string, tinyint, varchar. Nested types (types whose parent is a struct, map, array) are only supported for **struct** type (\*). |
| Notes | (\*) When using a type nested in a struct as column identifier with Apache Parquet files, use the Athena's version 2 engine. For more information, see [Managing Workgroups] |
#### JSON
| | |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Compression on Read | Gzip, uncompressed (\*\*) |
| Compression on Write | Gzip, uncompressed (\*\*) |
| Supported Types for Column Identifier | number, string. Nested types (types whose parent is a object, array) are only supported for **object** type. |
| Notes | (\*\*) The compression type is determined from the file extension. If no file extension is present the solution treats the data as uncompressed. If the data is compressed make sure the file name includes the compression extension, such as `gz`.
When using OpenX JSON SerDe, `ignore.malformed.json` cannot be `TRUE`, `dots.in.keys` cannot be `TRUE`, and column mappings are not supported. For more information, see [OpenX JSON SerDe] |
## Supported Query Providers
The following data catalog provider and query executor combinations are
supported:
| Catalog Provider | Query Executor |
| ---------------- | -------------- |
| AWS Glue | Amazon Athena |
## Concurrency Limits
| Catalog Provider | Query Executor |
| ----------------------- | ------------------------- |
| Max Concurrent Jobs | 1 |
| Max Athena Concurrency | See account service quota |
| Max Fargate Concurrency | See account service quota |
## Other Limitations
- Only buckets with versioning set to **Enabled** are supported
- Decompressed individual object size must be less than the Fargate task memory
limit (`DeletionTaskMemory`) specified when launching the stack
- S3 Objects using the `GLACIER` or `DEEP_ARCHIVE` storage classes are not
supported and will be ignored
- The bucket targeted by a data mapper must be in the same region as the Amazon
S3 Find and Forget deployment
- Client-side encrypted S3 Objects are supported only when a symmetric customer
master key (CMK) is stored in AWS Key Management Service (AWS KMS) and
encrypted using one of the [AWS supported SDKs].
- If the bucket targeted by a data mapper belongs to an account other than the
account that the Amazon S3 Find and Forget Solution is deployed in, only
SSE-KMS with a customer master key (CMK) may be used for encryption
- To avoid race conditions when objects are processed by the solution,
manipulating existing data lake objects must not occur while a Job is running.
The solution will attempt to verify object integrity between read and write
operations and attempt to rollback any changes if an inconsistency is
detected. If the rollback fails, you will need to manually reconcile the
object versions to avoid data inconsistency or loss
- We recommend that you avoid running a Deletion Job in parallel to a workload
that reads from the data lake unless it has been designed to handle temporary
inconsistencies between objects
- Buckets with MFA Delete enabled are not supported
- When the _Ignore object not found exceptions during deletion_ setting is
enabled, the solution will not delete old versions for ignored objects. Make
sure there is some mechanism for deleting these old versions to avoid
**retaining data longer than intended**.
## Service Quotas
If you wish to increase the number of concurrent queries that can be by Athena
and therefore speed up the Find phase, you will need to request a Service Quota
increase for Athena. For more, information consult the [Athena Service Quotas]
page. Similarly, to increase the number of concurrent Fargate tasks and
therefore speed up the Forget phase, consult the [Fargate Service Quotas] page.
When configuring the solution, you should not set an `AthenaConcurrencyLimit` or
`DeletionTasksMaxNumber` greater than the respective Service Quote for your
account.
Amazon S3 Find and Forget is also bound by any other service quotas which apply
to the underlying AWS services that it leverages. For more information, consult
the AWS docs for [Service Quotas] and the relevant Service Quota page for the
service in question:
- [SQS Service Quotas]
- [Step Functions Service Quotas]
- [DynamoDB Service Quotas]
[aws supported sdks]:
https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html
[issue tracker]: https://github.com/awslabs/amazon-s3-find-and-forget/issues
[service quotas]:
https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html
[service quotas]:
https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html
[athena service quotas]:
https://docs.aws.amazon.com/athena/latest/ug/service-limits.html
[fargate service quotas]:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html
[step functions service quotas]:
https://docs.aws.amazon.com/step-functions/latest/dg/limits.html
[sqs service quotas]:
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-quotas.html
[dynamodb service quotas]:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
[deletion job]: ARCHITECTURE.md#deletion-jobs
[deletion queue]: ARCHITECTURE.md#deletion-queue
[managing workgroups]:
https://docs.aws.amazon.com/athena/latest/ug/workgroups-create-update-delete.html
[openx json serde]:
https://docs.aws.amazon.com/athena/latest/ug/json-serde.html#openx-json-serde