Userdata included in RunInstances requests must be Base64-encoded, according the the EC2 API. Some base64 encoders (notably openssl) include newlines to break the output into lines. Nimbus does not allow newlines in the encoded data, but EC2 apparently does.
Userdata included in RunInstances requests must be Base64-encoded, according the the EC2 API. Some base64 encoders (notably openssl) include newlines to break the output into lines. Nimbus does not allow newlines in the encoded data, but EC2 apparently does.
Nimbus validates the userdata here: https://github.com/nimbusproject/nimbus/blob/master/messaging/gt4.0-elastic/java/msgbridge/src/org/nimbustools/messaging/gt4_0_elastic/v2008_05_05/rm/defaults/DefaultRun.java#L195
I was able to reproduce this using boto, but had to step into the internals a bit as boto does its own base64 encoding:
Thanks to Anthony Tiradani for the bug report.