-1
我目前的AWS設置是一個lambda函數,無論何時我將一個對象放入S3存儲桶時都會被觸發。我在Java中實現了lambda的處理函數。我想要做的只是訪問上傳的文件並觸發lambda函數的執行。例如,如果我上傳sample.json
到存儲桶,我想在我的處理函數中訪問這個文件的內容。如何讀取直接觸發lambda執行的上傳文件?
我知道我可以做這樣的事情:
public Void handleRequest(S3Event input, Context context) {
for (S3EventNotificationRecord record : input.getRecords()) {
String key = record.getS3().getObject().getKey();
String bucket = record.getS3().getBucket().getName();
AmazonS3 s3Client = new AmazonS3Client(credentials);
try {
S3Object s3Object = s3Client.getObject(new GetObjectRequest(bucket, key));
InputStream input = s3Object.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
while (true) {
String line = reader.readLine();
if (line == null) break;
// Do something with line...
}
// ...
的問題是,我不能使用快捷鍵。因此,我無法創建一個s3Client
來下載文件。換句話說,我必須從我的處理程序方法需要的參數中獲取對象,即S3Event input
。我會怎麼做?
LAMBDA不需要訪問鍵使用S3。 – dashmug
@dashmug我想到了。但是,我如何閱讀文件?我能從S3Event輸入中獲得嗎? –
's3Client.getObject(new GetObjectRequest(bucket,key));'似乎是一個好方法。那有什麼問題? – cy3er