Как упомянул Шивам, вы можете получить операционную систему из описания внутри API-вызова «Describe Images». Если он не содержится здесь, вам, вероятно, придется вернуться к проверке между /dev/xvda1
и /dev/sda1
.
Вы можете использовать ниже, чтобы передать идентификатор экземпляра и получить имя пользователя, используя boto3
import boto3
ec2=boto3.client('ec2')
instance_id = 'i-0defb5cd304ca2d7a'
def find_username(instance_id):
image_id = ec2.describe_instances(InstanceIds=[instance_id])["Reservations"][0]['Instances'][0]['ImageId']
image_type = ec2.describe_images(ImageIds=[image_id])['Images'][0]['Description']
elif 'Amazon Linux' in image_type:
return 'Username is ec2-user'
elif 'Ubuntu' in image_type:
return 'Username is ubuntu'
else:
return 'OS is not Amazon Linux or Ubuntu'
или используя aws cli (в сочетании с jq)
get_username () {
IMAGE_ID=$(aws ec2 describe-instances --instance-ids $1 | jq -r '.Reservations[].Instances[].ImageId');
IMAGE_TYPE=$(aws ec2 describe-images --image-ids $IMAGE_ID | jq '.Images[].Description');
if [[ $IMAGE_TYPE == *"Amazon Linux"* ]]; then
echo "Username is ec2-user"
elif [[ $IMAGE_TYPE == *"Ubuntu"* ]]; then
echo "Username is ubuntu"
else ;
echo "OS is not Amazon Linux or Ubuntu"
fi
}
Вы можете запустить функцию оболочки, просто передав идентификатор экземпляра в виде аргумента, например, get_username i-xxxxxxxxx