2017-09-13 68 views
2

ファイルが特定のs3バケットに表示されたときに起動されるAWSラムダ関数を開発しようとしています。 aws-java-sdk-lambda 1.11.192、aws-java-sdk-s3 1.11.192を使用して、AWS Lambda documentationの例を実行しようとしています。しかし、残念ながら、これらの例では、最新バージョンのjarファイルで非推奨となっているRequestHandlerを使用しています。私の選択肢は何AWSを使用したAWS LambdaとS3の統合Sdk

import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.RequestHandler; 
import com.amazonaws.services.lambda.runtime.events.S3Event; 

-

私のコードは、this example

package example; 

import java.net.URLDecoder; 

import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.RequestHandler; 
import com.amazonaws.services.lambda.runtime.events.S3Event; 
import com.amazonaws.services.s3.AmazonS3; 
import com.amazonaws.services.s3.AmazonS3Client; 
import com.amazonaws.services.s3.event.S3EventNotification.S3EventNotificationRecord; 

public class S3GetTextBody implements RequestHandler<S3Event, String> { 

public String handleRequest(S3Event s3event, Context context) { 
    try { 
     S3EventNotificationRecord record = s3event.getRecords().get(0); 

     // Retrieve the bucket & key for the uploaded S3 object that 
     // caused this Lambda function to be triggered 
     String bkt = record.getS3().getBucket().getName(); 
     String key = record.getS3().getObject().getKey().replace('+', ' '); 
     key = URLDecoder.decode(key, "UTF-8"); 

     // Read the source file as text 
     AmazonS3 s3Client = new AmazonS3Client(); 
     String body = s3Client.getObjectAsString(bkt, key); 
     System.out.println("Body: " + body); 
     return "ok"; 
    } catch (Exception e) { 
     System.err.println("Exception: " + e); 
     return "error"; 
    } 

    } 
} 

ラムダが含まれていないため、AWS SDKの現在のバージョンに似ていますか?新しいバージョンのsdkを使用して同様の機能を実現するにはどうすればよいですか。

答えて

2

ヘルパーライブラリで提供されているRequestHandlerインターフェイスを実装する必要はありません。入力と出力のパラメータを適切にシリアライズすることができれば、どのような方法でも動作します。

詳しくはarticleを参照してください。

あなたが彼らのヘルパーライブラリを使用したい場合は、以下の依存関係を使用して座標:

<groupId>com.amazonaws</groupId> 
<artifactId>aws-lambda-java-core</artifactId> 
<version>1.1.0</version> 

そして、S3のイベントヘルパーのために:

<groupId>com.amazonaws</groupId> 
<artifactId>aws-lambda-java-events</artifactId> 
<version>1.3.0</version> 

それは、彼らの主なaws-java-sdk内に配置されたが、代わりに持っていませんそのownリポジトリ。

関連する問題