具有ACL存储桶所有者完全控制设置的putObject期间的AmazonS3Exception

时间:2018-12-11 18:40:45

标签: amazon-web-services amazon-s3 acl

我想通过我的程序启用跨帐户数据传输。我在AWS账户A中的lambda函数将.txt文件写入到AWS账户B拥有的s3存储桶中。但是,账户B的用户无法读取由账户A的lambda函数删除的文件。

因此,我尝试将ACL设置为BucketOwnerFullControl。这是我的代码。

  PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileName, strData)
        .withCannedAcl(CannedAccessControlList.BucketOwnerFullControl);
   amazonS3.putObject(putObjectRequest);

这将引发以下错误:

com.amazonaws.services.s3.model.AmazonS3Exception: The request signature we calculated does not match the signature you provided. Check your key and signing method. (Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; 

我以前的写得很好。

amazonS3.putObject(bucketName, fileName, strData);

设置CannedAcl是否需要一些特定的设置来创建S3client?

这是我当前初始化S3客户端的方式。

 this.amazonS3 = AmazonS3ClientBuilder.standard().withForceGlobalBucketAccessEnabled(true).build();

谢谢。

0 个答案:

没有答案