zalando / spilo

Highly available elephant herd: HA PostgreSQL cluster using Docker
Apache License 2.0
1.54k stars 382 forks source link

AWS IMDSv2 Support for environment detection #963

Open kaiba42 opened 8 months ago

kaiba42 commented 8 months ago

Spilo is awesome and can automatically detect the environment it is running in.

To detect when it is running in AWS, it uses the Instance Metadata Service. Today, it uses v1 of the API, however AWS is transitioning to v2. Nowadays, new EC2 instance machine images often configured to only support v2.

Without support for detecting AWS using the v2 API, Spilo set the environment to PROVIDER_UNSUPPORTED, and will fail to perform certain bootstrap actions, namely backup (aka clone) restoration.

To fix this, we just need to call IMDSv2's session token endpoint in the get_provider function, and if we get a response, we know the environment is still AWS.