我在 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)
有人可以建议我在这里缺少什么吗? 非常感谢您的建议。
致以诚挚的问候,
维卡什·帕里克
{ "版本": "2012-10-17", “陈述”: [ { "效果": "允许", "校长": "", “行动”: [ “s3:放置对象”, “s3:PutObjectAcl”, “s3:获取对象”, “s3:获取对象Acl” ], “资源”:“arn:aws:s3:::tajerimages/images/” } ] }