JavaでDynamoDBを使用するAWS Lambda

1前書き

AWS Lambda はAmazon Web Servicesによって提供されるサーバーレスコンピューティングサービスであり、https://aws.amazon.com/dynamodb/[WS DynamoDB]は同じくによって提供されるNoSQLデータベースサービスですアマゾン。

興味深いことに、DynamoDBはドキュメントストアとKey-Valueストアの両方をサポートし、AWSによって完全に管理されています。

始める前に、このチュートリアルには有効なAWSアカウントが必要です(https://aws.amazon.com/[ここ]を作成できます)。また、最初にリンクを読むことをお勧めします:/java-aws-lambda[AWS Lambda with Java]の記事。

2 Mavenの依存関係

ラムダを有効にするためにはhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.amazonaws%22%20AND%20a%3A%22aws-にある以下の依存関係が必要です。 lambda-java-core%22[Maven Central]:

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

さまざまなAWSリソースを使用するには、https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.amazonaws%22%20AND%20a%にも存在する可能性がある以下の依存関係が必要です。 3A%22aws-lambda-java-events%22[Maven Central]:

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

そしてアプリケーションを構築するために、https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.apache.maven.plugins%22%20AND%20a%を使用します3A%22maven-shade-plugin%22[メイブンシェードプラグイン]:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
</plugin>

3ラムダコード

ラムダアプリケーションでハンドラを作成する方法はいくつかあります。

  • MethodHandler

  • RequestHandler

  • RequestStreamHandler

アプリケーションでは RequestHandler インターフェースを使用します。 JSON形式の PersonRequest を受け入れます。応答も JSON 形式の PersonResponse になります。

public class PersonRequest {
    private String firstName;
    private String lastName;

   //standard getters and setters
}
public class PersonResponse {
    private String message;

   //standard getters and setters
}

次は RequestHandler インターフェースを次のように実装するエントリーポイントクラスです。

public class SavePersonHandler
  implements RequestHandler<PersonRequest, PersonResponse> {

    private DynamoDB dynamoDb;
    private String DYNAMODB__TABLE__NAME = "Person";
    private Regions REGION = Regions.US__WEST__2;

    public PersonResponse handleRequest(
      PersonRequest personRequest, Context context) {

        this.initDynamoDbClient();

        persistData(personRequest);

        PersonResponse personResponse = new PersonResponse();
        personResponse.setMessage("Saved Successfully!!!");
        return personResponse;
    }

    private PutItemOutcome persistData(PersonRequest personRequest)
      throws ConditionalCheckFailedException {
        return this.dynamoDb.getTable(DYNAMODB__TABLE__NAME)
          .putItem(
            new PutItemSpec().withItem(new Item()
              .withString("firstName", personRequest.getFirstName())
              .withString("lastName", personRequest.getLastName());
    }

    private void initDynamoDbClient() {
        AmazonDynamoDBClient client = new AmazonDynamoDBClient();
        client.setRegion(Region.getRegion(REGION));
        this.dynamoDb = new DynamoDB(client);
    }
}

ここで私たちが RequestHandler インターフェースを実装するとき、リクエストの実際の処理のために handleRequest() を実装する必要があります。残りのコードについては、次のようになります。

  • PersonRequest オブジェクト - 渡されたリクエスト値を含みます

JSON形式で ** Context オブジェクト - ラムダ実行から情報を取得するために使用されます

環境 ** __PersonResponse - ラムダ要求に対する応答オブジェクト

DynamoDBオブジェクトを作成するときは、まず AmazonDynamoDBClient オブジェクトを作成し、それを使用して DynamoDB オブジェクトを作成します。 region は必須です。

DynamoDBテーブルに項目を追加するには、 PutItemSpec オブジェクトを使用します。列数とその値を指定します。

DynamoDBテーブルに事前定義されたスキーマは必要ありません。主キーの列名を定義する必要があります。ここでは “ id” です。

4展開ファイルの構築

ラムダアプリケーションを構築するには、次のMavenコマンドを実行する必要があります。

mvn clean package shade:shade

Lambdaアプリケーションはコンパイルされ、ターゲットフォルダの下の jar ファイルにパッケージ化されます。

5 DynamoDBテーブルを作成する

DynamoDBテーブルを作成するには、次の手順に従います。

  • AWSアカウント にログインします。

  • All Servicesの下にある DynamoDB をクリックします。

  • このページは既に作成されたDynamoDBテーブルを表示します(もしあれば)

  • クリック 「テーブルの作成」 ボタン

  • 「テーブル名」 および 「主キー」** にそのデータ型を

  • "数"**

  • 「作成」** ボタンをクリック

  • テーブルが作成されます

6. ラムダ関数の作成

Lambda関数を作成するには、次の手順に従います。

  • AWSアカウント にログインします。

  • [All Services] の下にある[Lambda]** をクリックします。

  • このページは既に作成されているLambda関数(もしあれば)またはnoを表示します。

ラムダ関数が作成されます 「今すぐ始める」 「青写真を選択」 - >「 空白機能」を選択**

  • 「トリガーの設定」 - > 「次へ」 ボタンをクリック

  • 「設定機能」

  • 「名前」** :SavePerson

  • 「説明」** :DDBに個人を保存

  • "Runtime" : "Java 8"を選択**

  • "Upload" : "Upload" ** ボタンをクリックしてラムダのjarファイルを選択してください。

応用 "ハンドラ" ** :com.baeldung.lambda.dynamodb.SavePersonH​​andler

  • 「ロール」 : 「カスタムロールを作成する」を選択

  • 新しいウィンドウが開き、ラムダ用のIAMロールを設定できるようになります

実行し、その中にDynamoDBの許可を追加する必要があります。完了したら、をクリックします 「許可」 ボタン 「次へ」ボタンをクリック

  • 「確認」 :設定を確認します

  • クリック [機能の作成] ボタン

7. ラムダ関数のテスト

次のステップは、ラムダ関数をテストすることです。

  • [テスト]ボタンをクリックします。

  • 「テストイベントの入力」ウィンドウが表示されます。ここでは、

リクエストに対するJSON入力:

{
  "id": 1,
  "firstName": "John",
  "lastName": "Doe",
  "age": 30,
  "address": "United States"
}
  • [保存してテスト]または[保存]ボタンをクリックします。

  • 出力は "実行結果" セクションに表示されます。

{
  "message": "Saved Successfully!!!"
}
  • レコードが永続化されていることもDynamoDBでチェックする必要があります。

  • "DynamoDB"管理コンソールに移動します**

  • 表を選択してください "Person" **

  • "アイテム" ** タブを選択

  • ** ここでは、渡された人の詳細を見ることができます

ラムダアプリケーションへのリクエスト ** リクエストは私たちのラムダアプリケーションによって正常に処理されました。

8結論

このクイック記事では、DynamoDBとJava 8を使用してLambdaアプリケーションを作成する方法を学びました。詳細な手順は、すべてを設定するための最初のステップとなります。

そして、いつものように、サンプルアプリケーションの完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/aws[Githubに追加]で見つけることができます。