Sim, você pode usar o atributo UserData
do seu objeto AWS::EC2::Instance
.
Este atributo recebe como entrada a versão codificada em base64 do seu script de shell. Você pode, no entanto, fornecer o script inline com a ajuda de uma função Cloudformation Base64:
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -v\n",
"# Script goes here\n"
]]}}