スズキです。
下記に引き続き、cloud-init(runcmd) で実現してみました。
※変数の受け渡し方がよくわからず、一時ファイルに書き出してしまいました。。
#cloud-config
runcmd:
- [sh, -c, 'curl -s http://169.254.169.254/latest/meta-data/instance-id > /tmp/tmp_instance_id.txt']
- [sh, -c, 'curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed s/.$// > /tmp/tmp_region.txt']
- [sh, -c, 'aws ec2 associate-address --public-ip xxx.xxx.xxx.xxx --region `cat /tmp/tmp_region.txt` --instance-id `cat /tmp/tmp_instance_id.txt`']
- [sh, -c, 'rm -f /tmp/tmp_instance_id.txt']
- [sh, -c, 'rm -f /tmp/tmp_region.txt']