我无法将S3对象上传到S3存储桶。我使用了以下命令:
aws s3api put-object --bucket = opsops --key = Cloudformation_upload.csv --body = Cloudformation.csv --sse-customer-algorithm = AES256 --sse-customer-key = MTIzNDU2Nzg5MGFiY2Rl --customer-key -md5 = NTgwMWMzMzJiNGU1YmE5YzBhMjk3ZDYwYmI1MWNjNzI ="
但是当我上传对象时会出现这个错误:
注意:客户密钥和客户密钥-MD5值的编码值为64位。请帮我解决此问题。
调用PutObject操作时发生客户端错误(InvalidArgument):计算出的密钥的MD5哈希值与提供的哈希值不匹配
答案 0 :(得分:1)
将密钥存储为二进制文件(不是十六进制或base64编码),并在命令行中使用fileb://
。 CLI将自动计算正确的MD5。
在您的示例中,您使用的是base-64编码的MD5哈希,但MD5只生成16个字节。对于AES256,您的密钥长度应为32个字节。使用SHA256哈希密码将产生正确大小的密钥。
示例:
echo -n 1234567890abcde | openssl dgst -sha256 -binary > sse.key
aws s3api put-object \
--bucket=opsops \
--key=Cloudformation_upload.csv \
--body=Cloudformation.csv \
--sse-customer-algorithm=AES256 \
--sse-customer-key=fileb://sse.key