S3从aws cli上传工作,但从aws s3api上传AccessDenied

时间:2017-12-14 10:11:50

标签: amazon-web-services amazon-s3 aws-java-sdk

我面临一个奇怪的问题(可能与存储桶政策有关),上传了s3。 当我尝试使用aws cli和sse-kms上传文件时,它上传时没有任何问题。但是,当我尝试使用aws-java-sdk(1.9.5)上传相同的文件时,它说AceessDenied。

它可能与存储桶策略有关,但我想知道如何通过aws cli上传文件,而不是使用aws-java-sdk上传文件。

以下是用于上传的aws cli [这工作正常]:

aws s3 cp file.zip s3://my-bucket --sse aws:kms --sse-kms-key-id arn:aws:kms:eu-west-1:my_account_id:key/kms_key

这是aws-java-sdk api代码片段[这表示Accessdenied]:

val bucket = "my-bucket"
val AWS_ACCESS_KEY = "access_key"
val AWS_SECRET_KEY = "secret_key"
val awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY)
val clientConfiguration = new ClientConfiguration
clientConfiguration.setSignerOverride("AWSS3V4SignerType")
clientConfiguration.withSignerOverride("AWSS3V4SignerType")
val amazonS3Client = new AmazonS3Client(awsCredentials, clientConfiguration)
amazonS3Client.setRegion(com.amazonaws.regions.Region.getRegion(Regions.EU_WEST_1))
val KMS_ID = "arn:aws:kms:eu-west-1:my_account_id:key/kms_key"
val kmsKey = new SSEAwsKeyManagementParams(KMS_ID)
val file = new File("/home/vikash/file.zip")
val putRequest = new PutObjectRequest(bucket, "file.zip", file).withSSEAwsKeyManagementParams(kmsKey)
val response = amazonS3Client.putObject(putRequest)

有人可以建议,我在这里缺少什么? 你的建议将不胜感激。

最诚挚的问候,

Vikash Pareek

0 个答案:

没有答案