Skip to content

Instantly share code, notes, and snippets.

@dryan
Last active September 7, 2023 11:04
Show Gist options
  • Save dryan/8271687 to your computer and use it in GitHub Desktop.
Save dryan/8271687 to your computer and use it in GitHub Desktop.
Handling EC2 ELB health checks and Django's ALLOWED_HOSTS setting.
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
ALLOWED_HOSTS = [
'yourdomain.tld',
'.compute-1.amazonaws.com', # allows viewing of instances directly
]
import requests
EC2_PRIVATE_IP = None
try:
EC2_PRIVATE_IP = requests.get('http://169.254.169.254/latest/meta-data/local-ipv4', timeout = 0.01).text
except requests.exceptions.RequestException:
pass
if EC2_PRIVATE_IP:
ALLOWED_HOSTS.append(EC2_PRIVATE_IP)
@souravjamwal77
Copy link

souravjamwal77 commented Jun 1, 2022

Hi, I am stuck with this we have an ELB which uses the Round-Robin technique and we have 3-10 servers, and I couldn't get any single of them working. Which IP shall I put into the below line 11
EC2_PRIVATE_IP = requests.get('http://169.254.169.254/latest/meta-data/local-ipv4', timeout = 0.01).text

Please someone help me here

@anish5256
Copy link

anish5256 commented Sep 7, 2023

This Works for me

import requests

ALLOWED_HOSTS = [
    'yourdomain.tld',
    '.compute-1.amazonaws.com', # allows viewing of instances directly
]

EC2_PRIVATE_IP = None

try:
    token = requests.put("http://169.254.169.254/latest/api/token",
                         headers={"X-aws-ec2-metadata-token-ttl-seconds": "21600"}).text
                         
    EC2_PRIVATE_IP = requests.get("http://169.254.169.254/latest/meta-data/local-ipv4",
                                  headers={"X-aws-ec2-metadata-token": token}, timeout=0.01).text
                                  
except requests.exceptions.RequestException:
    pass

if EC2_PRIVATE_IP:
    ALLOWED_HOSTS.append(EC2_PRIVATE_IP)

@souravjamwal77
Copy link

Great,
I also have somewhat similar try/except block.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment