¿Cuál es el mejor método para pasar las credenciales de AWS como datos de usuario a una instancia EC2?

Tengo una arquitectura de procesamiento de trabajos basada en AWS que requiere consultas de instancias EC2 S3 y SQS. Para que las instancias en ejecución tengan acceso a la API, las credenciales se envían como datos de usuario (-f) en forma de un script de shell codificado en base64. Por ejemplo

$ cat ec2.sh
...
export AWS_ACCOUNT_NUMBER='1111-1111-1111'
export AWS_ACCESS_KEY_ID='0x0x0x0x0x0x0x0x0x0'
...
$ zip -P 'secret-password' ec2.sh
$ openssl enc -base64 -in ec2.zip

Se lanzan muchas instancias ...

$ ec2run ami-a83fabc0 -n 20 -f ec2.zip

Cada instancia decodifica y descifra ec2.zip utilizando la 'contraseña secreta' que está codificada en un script de inicio. Aunque funciona, tengo dos problemas con mi enfoque.

'zip -P' no es muy seguro La contraseña está codificada en la instancia (siempre es 'contraseña secreta')

El método es muy similar al descritoaqu

¿Existe un enfoque más elegante o aceptado? Usar gpg para cifrar las credenciales y almacenar la clave privada en la instancia para descifrarlo es un enfoque que estoy considerando ahora, pero no estoy al tanto de ninguna advertencia. ¿Puedo usar los pares de claves de AWS directamente? ¿Me estoy perdiendo alguna parte súper obvia de la API?