Tôi có một hàm Lambda cần đọc một tập tin từ S3 mỗi khi nó được thực hiện.
Tệp rất nhỏ, khoảng 200 byte, thùng S3 nằm trong vùng Tiêu chuẩn Hoa Kỳ, hàm Lambda nằm trong vùng phía đông-1 của chúng tôi (vì vậy cùng một vùng). Phải mất từ 10 đến 15 giây để đọc tệp, làm sao điều này chậm đến vậy?Chức năng AWS Lambda cực kỳ chậm để truy xuất tập tin S3
Cảm ơn.
EDIT: một số mã
long start = System.nanoTime();
AmazonS3Client s3Client = new AmazonS3Client();
S3Object propertyFile = null;
try {
propertyFile = s3Client.getObject(S3_BUCKET_NAME, S3_PROPERTY_FILE);
} catch (Exception e) {...}
try (InputStream in = propertyFile.getObjectContent()) {
PROPERTIES.load(in);
} catch (Exception e) {...}
LOGGER.debug("S3 access " + (System.nanoTime() - start));
EDIT # 2: Sau khi đề nghị Brooks' Tôi đã làm
AmazonS3Client s3Client = new AmazonS3Client(new InstanceProfileCredentialsProvider());
Và tôi nhận được lỗi này:
Unable to load credentials from Amazon EC2 metadata service
EDIT # 3:
Bộ nhớ được cấp cho hàm Lambda là 256MB, khi tôi phân bổ 1024MB, nó ta kes 3-4 giây mà vẫn còn quá chậm (phải mất khoảng 1-2 giây khi tôi kiểm tra cục bộ từ máy tính của tôi).
Người xuống bình chọn có thể giải thích lý do. –
Thử chỉ định InstanceProfileCredentialsProvider khi khởi tạo AmazonS3Client. Nhà xây dựng mặc định cần phải cố gắng ủy quyền thông qua (trong thứ tự này) biến môi trường, thuộc tính hệ thống, tệp thông tin xác thực và sau đó là hồ sơ cá thể. Vì vậy, phương pháp ủy quyền ưa thích của bạn là cuối cùng. Tôi sẽ không nghĩ rằng nó sẽ mất nhiều thời gian, tuy nhiên cho nó một shot và cho tôi biết. – Brooks
Xin lỗi, tôi đã nhầm. Tôi đã nghĩ rằng các container Lambda được vận chuyển với InstanceProfiles (tôi không thể hiểu tại sao nó lại không). Dường như nó có các thông tin xác thực được chỉ định trong các biến môi trường (http://stackoverflow.com/questions/32275169/aws-lambda-custom-triggers). Hãy thử chỉ định (new EnvironmentVariableCredentialsProvider()) khi khởi tạo AmazonS3Client. Mặc dù đó là mục đầu tiên trong danh sách thông tin đăng nhập được kiểm tra khi sử dụng hàm tạo mặc định, nó không thể làm tổn thương để thử. Hãy cho chúng tôi biết. – Brooks