尝试上传到s3时出现以下错误。 下面的脚本似乎是正确的,但仍然出现上述错误。 请有人可以帮助我解决此错误。 我的秘密密钥和访问ID是正确的,因为我能够使用Java和ruby中的这些密钥连接到AWS。
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>AKIAJNODAIRHFUX3LHFQ</AWSAccessKeyId><StringToSign>PUT
application/x-compressed-tar
Sun, 20 Dec 2015 19:54:47 -0500
/test-pk-proj//home/rushi/pk.tar.gz</StringToSign><SignatureProvided>M1PcN+Umkq5WFtVVSerHRGNABb8=</SignatureProvided><StringToSignBytes>50 55 54 0a 0a 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 63 6f 6d 70 72 65 73 73 65 64 2d 74 61 72 0a 53 75 6e 2c 20 32 30 20 44 65 63 20 32 30 31 35 20 31 39 3a 35 34 3a 34 37 20 2d 30 35 30 30 0a 2f 74 65 73 74 2d 70 6b 2d 70 72 6f 6a 2f 2f 68 6f 6d 65 2f 72 75 73 68 69 2f 70 6b 2e 74 61 72 2e 67 7a</StringToSignBytes><RequestId>5439C7C84533E7C6</RequestId><HostId>620896ul+wnRwCjWl1ZtNZQ5NEJMGl29FqESC3iJyvnWhYhOECLlPl0417RfF3eovKFb7ac2.amazonaws.com port 443: Connection timed out
以下是我用来将数据上传到s3的shell脚本
file=/home/rushi/1.pdf
bucket=xxxxxxxxxxxxxxxxxxx
resource="/${bucket}/${file}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key=xxxxxxxxxxxxxxxxxxxxxxxxxxx
s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -L -X PUT -T "${file}" \
-H "Host: ${bucket}.s3-website-us-west-2.amazonaws.com" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" \
https://${bucket}.s3-website-us-west-2.amazonaws.com/${file}
从下面给出的链接安装AWS CLI
通过aws configure
命令配置AWS并输入密钥和区域
要将文件复制到S3,请在Shell脚本中使用此命令
aws s3 cp fileName s3://bucketName
链接: http : //docs.aws.amazon.com/cli/latest/userguide/installing.html#install-bundle-other-os
ps如果收到连接超时错误,请在安全组中打开端口443(HTTPS)。
请按照以下步骤操作,
创建一个有权在s3存储桶中上传文件的IAM用户。
注意:您还可以创建一个策略,在其中可以访问您所在区域中所有可用的s3存储桶,并且可以将该策略附加到您在IAM中创建的用于在S3存储桶中上传文件的用户
记下您对IAM用户的访问权限和密钥。
登录到您的服务器,例如[Aws linux服务器]
使用以下命令
AWS配置
输入访问密钥输入秘密密钥输入区域,例如,如果它是mumbau区域,则使用ap-south-1输入输出作为“文本”
之后,您就可以将文件从服务器上传到s3存储桶了。
使用example命令在s3存储桶中上传文件
aws s3 cp或mv fileName s3:// bucketName
上面的aws cli可以在脚本中用于上传文件。