AWS Signature Version 4是AWS S3服务请求认证的标准。DELETE Object on S3指的是删除S3中的对象。以下是基于AWS Signature Version 4的DELETE Object on S3的curl命令示例:
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_REGION=
export BUCKET_NAME=
export OBJECT_KEY=
date_header=`date -u +"%a, %d %b %Y %H:%M:%S GMT"`
signature_string="DELETE\n\n\n${date_header}\nx-amz-content-sha256:${EMPTY_BODY_SHA}\n/${BUCKET_NAME}/${OBJECT_KEY}"
signature=`echo -en "${signature_string}" | openssl sha256 -hmac "${AWS_SECRET_ACCESS_KEY}" -binary | base64 | tr -d '\n'`
curl -X DELETE \
-H "Authorization: AWS4-HMAC-SHA256 Credential=${AWS_ACCESS_KEY_ID}/${AWS_DATE}/${AWS_REGION}/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=${signature}" \
-H "x-amz-content-sha256:${EMPTY_BODY_SHA}" \
-H "x-amz-date:${date_header}" \
"https://${BUCKET_NAME}.s3.${AWS_REGION}.amazonaws.com/${OBJECT_KEY}"
其中,S3 Access Key
和S3 Secret Key
是AWS认证所需的凭据,S3 region
是S3服务的地理位置,S3 bucket name
是S3中的桶名,S3 object key
是S3中对象的唯一标识符。
以上示例中的EMPTY_BODY_SHA
是SHA256散列字符串的空值,获取方法如下:
export EMPTY_BODY_SHA=`echo -n '' | openssl sha256 | awk '{print $NF}'`
最后的curl请求将会删除指定的S3对象。
以上就是使用AWS Signature Version 4删除S3对象的解决方法。