I'd like to use IMDSv2 inside a container running on an EC2 instance.
I want to use the tokens because they are required in my metadata options:
metadata_options {
http_tokens = "required"
http_endpoint = "enabled"
}
Calling the API from the EC2 instance returns my token as expected.
curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"
However, if I try to call it from a docker container:
docker run -it curlimages/curl sh
/ $ curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"
curl: (56) Recv failure: Connection reset by peer
I just have a timeout.
According to this answer, it should work out of the box, but it's not. If I add a --network=host
flag, it works, but that's not a solution for me.
Thanks