2017-05-05 14 views
0

Springブートアプリケーション用のバックエンドDynamoDBを実装しようとしています。しかし、AWSは最近SDKをDynamoDB用に更新しました。したがって、http://www.baeldung.com/spring-data-dynamodbのようなインターネット上で利用可能なほとんどのチュートリアルは、直接関連性がありません。SpringブートのためのDynamoDBの実装

DynamoDBクラスに関するAmazonのSDKドキュメントを読んだことがあります。具体的には、オブジェクトのインスタンス化方法とエンドポイント/リージョンの設定が変更されています。過去には、構築および設定のエンドポイントは、次のようになります。

@Bean 
public AmazonDynamoDB amazonDynamoDB() { 
    AmazonDynamoDB amazonDynamoDB 
     = new AmazonDynamoDBClient(amazonAWSCredentials()); 

    if (!StringUtils.isEmpty(amazonDynamoDBEndpoint)) { 
     amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint); 
    } 

    return amazonDynamoDB; 
} 

@Bean 
public AWSCredentials amazonAWSCredentials() { 
    return new BasicAWSCredentials(
     amazonAWSAccessKey, amazonAWSSecretKey); 
} 

しかし、setEndpoint()メソッドは廃止され、私たちはビルダーを通じてDynamoDBのオブジェクトを作成する必要があり[AWS documentation][1]状態:

AmazonDynamoDBClient()推奨されていません。

この他StackOverflow postは、データベース接続オブジェクトをインスタンス化するために、この戦略を使用することをお勧めします AmazonDynamoDBClientBuilder.defaultClient()を使用します。

DynamoDB dynamoDB = new DynamoDB(AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(new EndpointConfiguration("http://localhost:8000", "us-east-1")).build()); 

Table table = dynamoDB.getTable("Movies"); 

しかし、私はDynamoDBのは抽象的で、インスタンス化することはできませんIntelliJの上のエラーを取得します。しかし、私は拡張する適切なクラスに関する文書を見つけることができません。

言い換えれば、私はチュートリアル、SO、およびAWSのドキュメントを精査してきましたが、クライアントを作成する正しい方法がわからないことがあります。誰かが動作する実装を提供できますか?私は、ローカルのDynamoDB(localhostポート8000​​のエンドポイント)を使ってクライアントを設定しようとしています。

答えて

3

私は自分の質問に答えて刺すことができると思います。 DynamoDB Mapperのデベロッパーガイドを使用すると、クライアントを取り込み、ロード、クエリ、削除、保存(本質的にCRUD?)などのデータサービスを実行するDynamoDB Mapperオブジェクトを実装できます。ここには私が助けてくれたdocumentationがあります。

私はこのコードでDynamoDBMapperClientと呼ばれる自分のクラスを作成しました:

private AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
      new EndpointConfiguration(amazonDynamoDBEndpoint, amazonAWSRegion)).build(); 

private AWSCredentials awsCredentials = new AWSCredentials() { 
    @Override 
    public String getAWSAccessKeyId() { 
     return null; 
    } 

    @Override 
    public String getAWSSecretKey() { 
     return null; 
    } 
}; 
private DynamoDBMapper mapper = new DynamoDBMapper(amazonDynamoDB); 

public DynamoDBMapper getMapper() { 
    return mapper; 
} 

は、基本的にはゲッターでアクセスされた新しいマッパーをインスタンス化し、その後、プロパティファイルからエンドポイントと地域構成になります。

これは完全な答えではないかもしれないので、私はこれを未回答のままにしておきますが、少なくともそれは始まりです。皆さんは私が間違っていることを教えていただけます!

+0

こんにちは@私は同じ問題を抱えています。これをBeanとしてどのように実装しましたか? – Victor

関連する問題