Я делаю небольшой POC в AWS. Я пытаюсь прочитать CSV-файл из корзины S3 и отображения в лог-файлах CloudWatch. Все идет хорошо, но при доступе к файлу получается java.io.FileNotFoundException
Кодирование
public class LambdaFunctionHandler implements RequestHandler<S3Event, Report> {
Region AWS_REGION = Region.getRegion(Regions.US_EAST_1);
public Report handleRequest(S3Event s3event, Context context) {
long startTime = System.currentTimeMillis();
Report statusReport = new Report();
LambdaLogger logger = context.getLogger();
logger.log("Lambda Function Started");
logger.log("I am inside lambda function");
Helper helper = new Helper();
try {
logger.log("I am inside lambda function2");
S3EventNotificationRecord record = s3event.getRecords().get(0);
logger.log("I am inside lambda function3");
String srcBucket = record.getS3().getBucket().getName();
logger.log("I am inside lambda function4");
// Object key may have spaces or unicode non-ASCII characters.
String srcKey = record.getS3().getObject().getKey().replace('+', ' ');
logger.log("I am inside lambda function5");
srcKey = URLDecoder.decode(srcKey, "UTF-8");
logger.log("I am inside lambda function6");
AmazonS3 s3Client = new AmazonS3Client();
logger.log("I am inside lambda function7");
S3Object s3Object = s3Client.getObject(new GetObjectRequest(srcBucket, srcKey));
logger.log("I am inside lambda function8");
statusReport.setFileSize(s3Object.getObjectMetadata().getContentLength());
logger.log("I am inside lambda function9");
logger.log("S3 Event Received: " + srcBucket + "/" + srcKey);
logger.log("I am inside lambda function10");
File file = new File(srcBucket+"/"+srcKey);
try {
Scanner readData =new Scanner(file);
while(readData.hasNext()) {
String data = readData.next();
logger.log("I am inside lambda function data ;;got it");
//System.out.println("data"+data);
}
readData.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}
Вывод файла журнала CloudWatch
Ошибки журнала CloudWatch
Я внутри лямбда-функции
Я внутри лямбда-функции2
Я внутри лямбда-функции3
Я внутри лямбда-функции4
Я внутри лямбда-функции5
Я внутри лямбда-функции6
Я внутри лямбда-функции7
Я внутри лямбда-функции8
Я внутри лямбда-функции9
Событие S3 получено: readfilefromcsvfile / def_nhtsa_crash_test.csv
Я внутри лямбда-функции10
java.io.FileNotFoundException:
readfilefromcsvfile / def_nhtsa_crash_test.csv (нет такого файла или каталога)
java.io.FileNotFoundException: readfilefromcsvfile / def_nhtsa_crash_test.csv (нет такого файла или каталога)
at java.io.FileInputStream.open0 (собственный метод)
Если мы посмотрим на вывод журнала, он говорит, что такого файла нет, но я сохранил его в корзине S3. Может кто-нибудь сказать мне, как получить доступ к файлу S3 в Java? или Какой путь я должен дать при доступе к файлу S3 Bucket?