使用跨AWS账户的ACL将String数据上传到s3

时间:2019-07-12 06:02:00

标签: scala amazon-s3

我正在将属于AWS账户(AWS-A)的EMR群集中的字符串数据上传到其他AWS账户(AWS-B)的s3存储桶中。上传数据时,我编写了如下代码:

// test data
val data = "I m test data"

// creating inputStream from test data as PutObject is taking inputStream as parameter
val dataStream: java.io.InputStream = new java.io.ByteArrayInputStream(data.getBytes(java.nio.charset.StandardCharsets.UTF_8.name))

// Writing stream with bucket owner full access
s3Client.putObject(new PutObjectRequest(bucket, key, dataStream, null)
    .withCannedAcl(com.amazonaws.services.s3.model.CannedAccessControlList.BucketOwnerFullControl))

此代码可以正常工作,因为我能够上传数据,并且客户端(AWS-B)可以下载数据,但是它给出了两个警告:

  1. WARN AmazonS3Client:未为流数据指定内容长度。流内容将被缓冲在内存中,并可能导致内存不足错误。
  2. WARN CredentialsLegacyConfigLocationProvider:在[/home/hadoop/.aws/config]中找到了旧版配置文件文件。请将其移动到最新的默认位置[〜/ .aws / credentials]

,并且我不确定这些警告是否会引起任何问题。我有什么更好的办法可以解决这些问题。

0 个答案:

没有答案