【发布时间】:2019-10-26 15:06:45
【问题描述】:
我需要从 Amazon S3 存储桶中读取一个大 (>15mb) 文件(例如 sample.csv)。然后,我需要处理 sample.csv 中存在的数据,并继续将其写入 S3 存储桶中的另一个目录。我打算使用 AWS Lambda 函数来运行我的 java 代码。
作为第一步,我开发了在本地系统上运行的 java 代码。 Java 代码从 S3 存储桶中读取 sample.csv 文件,我使用 put 方法将数据写回 S3 存储桶。但是我发现只有最后一行被处理并放回去了。
Region clientRegion = Region.Myregion;
AwsBasicCredentials awsCreds = AwsBasicCredentials.create("myAccessId","mySecretKey");
S3Client s3Client = S3Client.builder().region(clientRegion).credentialsProvider(StaticCredentialsProvider.create(awsCreds)).build();
ResponseInputStream<GetObjectResponse> s3objectResponse = s3Client.getObject(GetObjectRequest.builder().bucket(bucketName).key("Input/sample.csv").build());
BufferedReader reader = new BufferedReader(new InputStreamReader(s3objectResponse));
String line = null;
while ((line = reader.readLine()) != null) {
s3Client.putObject(PutObjectRequest.builder().bucket(bucketName).key("Test/Testout.csv").build(),RequestBody.fromString(line));
}
示例:sample.csv 包含
1,sam,21,java,beginner;
2,tom,28,python,practitioner;
3,john,35,c#,expert.
我的输出应该是
1,mas,XX,java,beginner;
2,mot,XX,python,practitioner;
3,nhoj,XX,c#,expert.
但Testout.csv中只写了3,nhoj,XX,c#,expert。
【问题讨论】:
标签: java amazon-web-services amazon-s3 aws-lambda aws-sdk