使用AWS EC2实例签署S3请求'帐户

时间:2017-11-02 09:22:00

标签: bash amazon-web-services curl amazon-s3

我已经成功使用下面的bash代码使用访问密钥对签署对S3的请求,而不必使用aws cli:

aws_access_key_id="[key id]"
aws_secret_access_key="[secret access key]"
bucket='somebucket'
key='/path/To/Key'

resource="/${bucket}${key}"
dateValue=`date -R`
stringToSign="GET\n\n\n${dateValue}\n${resource}"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${aws_secret_access_key} -binary | base64`
/usr/bin/curl --progress-bar -k -sb \
  -H "GET ${key}" \
  -H "Host: ${bucket}.s3.amazonaws.com" \
  -H "Date: ${dateValue}" \
  -H "Authorization: AWS ${aws_access_key_id}:${signature}" \
  https://${bucket}.s3.amazonaws.com${key} 2>&1 

如果您有访问密钥对,则此方法有效。如果您想根据当前EC2实例AWS账户的通用凭据签署请求,该怎么办?因此,此请求从一个AWS账户(1)触发,S3存储桶在另一个账户(2)中。帐户1被授予访问帐户-2' S3存储桶基于帐户ARN。

我们是否可以(相对容易地)实现这一点而无需使用aws-cli?

0 个答案:

没有答案