2016-05-30 10 views
1

S3オブジェクトをS3バケットにアップロードできません。私は、以下のコマンドを使用しています顧客提供の鍵を使用してサーバー側の暗号化を使用してCLIを使用して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="

をしかし、私は、オブジェクトをアップロードする際に、このエラーを与える:

注:value.Pleaseは私を助けて顧客キーと、顧客キー-MD5値が64-ビットでエンコードされていますこれを解決してください。

A client error (InvalidArgument) occurred when calling the PutObject operation: The calculated MD5 hash of the key did not match the hash that was provided

+0

私はこのために実行したコマンド... コマンドである「AWSを置くオブジェクトをs3api --bucket = opsops --key = Cloudformation_upload.csv --body = Cloudformation.csv --sse-顧客アルゴリズム= AES256 --sse-顧客キー= MTIzNDU2Nzg5MGFiY2Rl --customerキー-MD5 = NTgwMWMzMzJiNGU1YmE5YzBhMjk3ZDYwYmI1MWNjNzI =」 – UtpMahesh

答えて

1

ストアあなたの鍵のバイナリファイル(ない進またはbase64でエンコード)として、コマンドラインでfileb://を使用しています。 CLIは正しいMD5を自動的に計算します。

この例では、ベース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 
+0

私は、この特定のコマンドを実行し、これをアップロードした後S3バケットでチェックオブジェクト(Cloudformation_upload.csv)それは暗号化されていません。 – UtpMahesh

+0

顧客キーを使用している場合、コンソールは詳細の[プロパティ]タブで暗号化されたものとして表示しないことがあります。コンソールからファイルをダウンロードしてみてください。暗号化されている場合、HTTP 400ステータスコードと「オブジェクトはサーバーサイド暗号化の形式を使用して格納されています。オブジェクトを取得するには正しいパラメータを指定する必要があります」というメッセージが表示されて失敗します。 – ataylor

+0

ファイルを正しくダウンロードするには、同じ顧客キーでget-object APIを呼び出す必要があります。 – ataylor

関連する問題