我需要从Amazon S3 bucket中读取一个大于15MB的文件(比如说sample.csv
)。然后我需要处理sample.csv
中的数据,并将其写入S3 bucket中的另一个目录。 我计划使用AWS Lambda函数来运行我的Java代码。
作为第一步,我已经开发了Java代码在本地系统上运行。Java代码从S3 bucket中读取sample.csv
文件,并使用put
方法将数据写回到S3 bucket。但是我发现只有最后一行被处理并且被放回。
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.
但只有3,nhoj,XX,c#,expert
被写在Testout.csv
文件中。