[Updated Timeline] If you’re running an Elasticsearch cluster version 2.2.x and 2.4.x, AND utilize AWS S3 for snapshots, you will need to prepare for Amazon’s gradual deprecation of the S3 Sigv2 API starting on June 24th, 2020.
Original Timeline: Support for SigV2 ends on June 24, 2019.
Revised Timeline: Any new buckets created after June 24, 2020 will not support SigV2 signed requests, although existing buckets will continue to support SigV2 while Amazon works with customers to move off this older request signing method.
Deployments which might be impacted by this change:
- Liferay DXP 7.0 on Elastic Stack 2.2.x and 2.4.x using S3 snapshots
Details
Amazon has deprecated their S3 Sigv2 API, which was utilized by the repository-s3 plugin used with Elasticsearch versions 5.6.4 and earlier, out of which the 2.2.x and 2.4.x versions are included in Liferay Enterprise Search.
How Do I Prepare For This?
To prevent S3 snapshots/restores from failing for new buckets starting June 24, 2020, there are several options available:
The long term option is to upgrade to a more recent supported version of Elasticsearch - version 6.1 at minimum. It’s important to note however that Elasticsearch 6.1 has reached End of Life (EOL) and is no longer supported starting June 13, 2019, so we recommend upgrading to a version that is still actively maintained.
Additionally, documentation for each Elasticsearch version includes a section on upgrading. Details such as “is a rolling upgrade possible, or will I need a complete shutdown/restart of the search cluster for the version I’m upgrading to?” are answered there.
The short term option is to adjust Elasticsearch configuration settings to override the default use of SigV2. You can manually tell older versions of Elasticsearch to attempt to use SigV4 by following these steps. Note that these steps have been tested successfully with Elasticsearch 2.4.6, but we cannot guarantee they’ll work with any particular version:
Step One: Add -Dcom.amazonaws.services.s3.enforceV4 to ES_JAVA_OPTS, either as a part of your run command or as an entry in your jvm.options file.
Step Two: Specify an endpoint of s3.{your S3 region}.amazonaws.com when you create/recreate a repository definition.
(Where {your S3 region} would be us-east-1, us-west-2, etc.)
You’ll need to restart Elasticsearch to have the changes to jvm.options take effect.
Finally, while Liferay Support cannot assist with configuration or setup of third party software, there is software available that can act as a proxy, taking SigV2 requests and translating them into SigV4 calls that might be an option. Examples would be https://github.com/awslabs/aws-sigv4-proxy and
https://github.com/cloudberrylab/s3v2tov4-proxy.
References
AWS service changes to go into effect on June 24, 2020: https://forums.aws.amazon.com/ann.jspa?annID=5816
Search Engine Compatibility Matrix
Reference the information here for the detailed Elasticsearch compatibility including the compatible connector versions and required patch levels.
Elastic, Elasticsearch, and X-Pack are trademarks of Elasticsearch BV, registered in the U.S. and in other countries.