0

我尝试了几种方法来重新分配弹性 iP,但没有运气:

我将 EC2 扩展组配置为使用启动模板和启动配置,如下所示:min= 1,desired= 1,max= 2。

我有两个具有相同区域的子网,但有两个不同的可用区。

每当我终止一个实例时,新实例就会启动,但它不会自动接收公共 IP。即使设置设置为自动接收公共 IP。有时它有新的公共 IP,但它与我想要的不同。我目前正在使用一个弹性 IP。

用户数据:

    #!/bin/bash
    
    INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
    MAXWAIT=3
    ALLOC_ID=eipalloc-redacted
    AWS_DEFAULT_REGION=us-east-1
    
    # Make sure the EIP is free
    echo "Checking if EIP with ALLOC_ID[$ALLOC_ID] is free...."
    ISFREE=$(aws ec2 describe-addresses --allocation-ids $ALLOC_ID --query Addresses[].InstanceId --output text)
    STARTWAIT=$(date +%s)
    while [ ! -z "$ISFREE" ]; do
        if [ "$(($(date +%s) - $STARTWAIT))" -gt $MAXWAIT ]; then
            echo "WARNING: We waited 30 seconds, we're forcing it now."
            ISFREE=""
        else
            echo "Waiting for EIP with ALLOC_ID[$ALLOC_ID] to become free...."
            sleep 3
            ISFREE=$(aws ec2 describe-addresses --allocation-ids $ALLOC_ID --query Addresses[].InstanceId --output text)
        fi
    done

# Now we can associate the address
echo Running: aws ec2 associate-address --instance-id $INSTANCE_ID --allocation-id $ALLOC_ID --allow-reassociation}
aws ec2 associate-address --instance-id $INSTANCE_ID --allocation-id $ALLOC_ID --allow-reassociation}

角色政策:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ec2:DescribeAddresses",
            "ec2:AllocateAddress",
            "ec2:DescribeInstances",
            "ec2:AssociateAddress"
        ],
        "Resource": "*"
    }
]

}

错误:

 Cloud-init v. 20.4.1-0ubuntu1~20.04.1 running 'modules:config' at Fri, 12 Feb 2021 21:35:16 +0000. Up 21.57 seconds.
Checking if EIP with ALLOC_ID[eipalloc-redacted1234] is free....
/var/lib/cloud/instance/scripts/part-001: line 9: aws: command not found
Running:
/var/lib/cloud/instance/scripts/part-001: line 24: aws: command not found
/var/lib/cloud/instance/scripts/part-001: line 25: aws: command not found
Cloud-init v. 20.4.1-0ubuntu1~20.04.1 running 'modules:final' at Fri, 12 Feb 2021 21:35:28 +0000. Up 33.63 seconds.
2021-02-12 21:35:28,823 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
2021-02-12 21:35:28,824 - util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_scripts_user.py'>) failed
Cloud-init v. 20.4.1-0ubuntu1~20.04.1 finished at Fri, 12 Feb 2021 21:35:29 +0000. Datasource DataSourceEc2Local.  Up 34.17 seconds
4

1 回答 1

0

我弄清楚了这个问题。该实例缺少 awscli 工具。一旦我安装了它,脚本就可以工作了!感谢编写此脚本的人。

于 2021-02-12T22:16:57.567 回答