我想通过我的程序启用跨帐户数据传输。我在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();
谢谢。