Hard to say - looks like you are doing everything right.
I think it might be because you have a different KeyPair name locally
than what AWS thinks it is. Use something like elasticfox or the aws
ec2 web console to verify that you do indeed have a KeyPair named
'spork-staging' - the name in AWS needs to match the key_name in
rubber.yml. AWS basically uses the keypair *name* you use when
creating an instance to look up the private/public key and add it to
the instance so you can ssh in. So rubber simply passes the *name* to
AWS create instance, and then assumes the ssh key file you give it
matches that keyname, and uses it to try and ssh in.
If that doesn't help, what version of rubber are you using? If its >=
1.0, there was some changing of variable names in rubber.yml, so old
files might not have the right naming for the new rubber.
Matt