On the EC2 instance A few variable to set:
Run a docker with the docker sock linked and a few variables set:
docker run -t -v /var/run/docker.sock:/run/docker.sock -v $(which docker):/bin/docker -i ubuntu /bin/bash apt-get update && apt-get install -y python-pip && pip install docker-py==1.6.0 export CID=`cat /proc/self/cgroup | grep -o -e "docker-.*.scope" | head -n 1 | sed "s/docker-\(.*\).scope/\\1/"` export EC2_AVAIL_ZONE=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone` export EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`" export EC2_INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id` export AWS_ACCESS_KEY_ID=XXX export AWS_SECRET_ACCESS_KEY=XXX
Detect within that container what else is running:
import os from docker import Client cli = Client(base_url='unix://var/run/docker.sock') cli.containers() containers = [cont for cont in cli.containers() if cont['Id'] != os.environ['CID']]
If nothing runs, you can self-terminate the box from the container
aws ec2 terminate-instances --instance-ids $EC2_INSTANCE_ID --region $EC2_REGION