#!/bin/bash # ========== Configuration ========== AMI_ID="ami-01c7096235204c7be" INSTANCE_TYPE="t3.xlarge" KEY_NAME="mykey" SECURITY_GROUP="sg-0e08dfcd575ebfe2e" EIP_ALLOC_ID="eipalloc-0ab8a278c183034a3" SUBNET_ID="subnet-015876fa51f73f1ad" # ========== Launch EC2 instance ========== echo "Launching EC2 instance..." INSTANCE_ID=$(aws ec2 run-instances \ --image-id $AMI_ID \ --instance-type $INSTANCE_TYPE \ --key-name $KEY_NAME \ --security-group-ids $SECURITY_GROUP \ --subnet-id $SUBNET_ID \ --associate-public-ip-address \ --block-device-mappings "[{\"DeviceName\":\"/dev/sda1\",\"Ebs\":{\"VolumeSize\":400,\"VolumeType\":\"gp3\"}}]" \ --query "Instances[0].InstanceId" \ --output text) echo "Waiting for instance $INSTANCE_ID to start..." aws ec2 wait instance-running --instance-ids $INSTANCE_ID echo "Instance $INSTANCE_ID is now running." # ========== Associate Elastic IP ========== echo "Associating Elastic IP..." aws ec2 associate-address \ --instance-id $INSTANCE_ID \ --allocation-id $EIP_ALLOC_ID # ========== Get Elastic IP ========== PUBLIC_IP=$(aws ec2 describe-addresses \ --allocation-ids $EIP_ALLOC_ID \ --query "Addresses[0].PublicIp" \ --output text) echo "Elastic IP $PUBLIC_IP has been successfully associated with instance $INSTANCE_ID."