我正在尝试使用Java将文件上传到AWS S3存储桶。
我有以下政策,应该限制未加密的文件。
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::file-upload-test/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
}
]
}
现在,当我尝试使用下面的代码时,我得到了Access Denied异常。
com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: F287836ABBF2B486)
我使用的java代码是:
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(fileSize);
objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
objectMetadata.setContentType(contentType);
putObjectRequest = new PutObjectRequest(bucketName, fileName, inputStream, objectMetadata);
s3client.putObject(putObjectRequest);
我是否应该使用此Java代码来实现此目的?
如果是,那么需要进行哪些修改。 如果不是,那么我应该在客户端使用加密吗?
请建议。