How to dynamically add EC2 ip addresses to Django ALLOWED_HOSTS

前端 未结 2 465
野趣味
野趣味 2021-02-05 14:59

We\'ve recently changed our deployment strategy to use AWS auto scaling group.

One problem we have in production is with the newly created EC2s.
Our Application sta

2条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-05 15:37

    You can retrieve an EC2 instance Meta data by making an API request to

    curl http://169.254.169.254/latest/meta-data/
    GET http://169.254.169.254/latest/meta-data/
    

    source

    And you can get just the private IP for a specific instance by making an API call:

    GET http://169.254.169.254/latest/meta-data/local-ipv4
    

    So in your Django settings file add this script to "dynamically" add IPs to your allowed hosts:

    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)
    

提交回复
热议问题