In terms of, "What are absolute needed variables to generate the signed headers" the short and literal answer is, "Whatever it takes to get AWS to accept the request when Vault forwards it on to AWS." I realize that's probably not too helpful to you, but it's important to understand that Vault just forwards these on to AWS and depends entirely on AWS to validate them (with the exception of the X-Vault-AWS-IAM-Server-ID header, which Vault validates but relies on AWS to validate the signature). So, the definitive answer is in the AWS documentation at
http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html -- but, I realize it's pretty hard to follow.
As for Java, I unfortunately have very little experience with the AWS Java SDK, so I can't help much, but I suspect that there are methods in the AWS Java SDK that handle the request signing and header generation for you. That's what the python and golang examples I mentioned earlier do, and so I would think that the AWS Java SDK does something similar for you.
Another option would be to just shell out to the Vault CLI which already does this for you -- it might not be the prettiest option, but it might also just work so you don't have to worry about the intricacies of the AWS authentication protocol.
Hope this helps, and let me know if you have more questions!