我正在尝试将tomcat会话管理器与dynamoDB一起使用。
我正在参考这个aws指南http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-tomcat-session-manager.html。
他们在指南中提到我们必须使用 <Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager className="com.amazonaws.services.dynamodb.sessionmanager.DynamoDBSessionManager"
awsAccessKey="myAccessKey"
awsSecretKey="mySecretKey"
createIfNotExist="true" />
</Context>
所以,如果我没有给出任何目标区域,默认情况下会选择us-east-1(因为它在aws文档中提到的.jar文件中是硬编码的)。如果我指定任何区域,它将选择该区域。但我在多个地区有我的应用程序,并希望每个地区有单独的发电机实例。至于多个区域,会话ID不是唯一的,因此我不能对所有区域使用相同的发电机实例。
如何做到,任何帮助将不胜感激。
答案 0 :(得分:0)
您可以更好地创建多个DyanoDB客户端,每个区域一个。您应该使用一些config / prop文件,其中包含不同的aws access-key,secret和config,并基于您在应用程序启动时创建客户端。然后根据您的业务逻辑使用它。
例如: - 我在我的应用程序中使用ProfileCredentialsProvider
及以下配置文件,该文件使用多个dynamoDB客户端。
# AWS DynamoDB setting
mumDynamoDB:
# profile name of aws IAM role which has access to dynamoDB
profileName: mumdynamoDBdev
region: ap-south-1
OrgonDynamoDB:
# profile name of aws IAM role which has access to dynamoDB
profileName: OrgdynamoDBdev
region: us-west-2
下面的代码根据区域和个人资料创建客户。
public static DynamoDB getDocClient(String profileName, String region) {
// http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/creating-clients.html new way of
// creating all the aws clients.
// thread safe impl
AmazonDynamoDB amazonDynamoDBClient = AmazonDynamoDBClientBuilder.standard()
.withRegion(region)
.withCredentials(new ProfileCredentialsProvider(profileName)).build();
docClient = new DynamoDB(amazonDynamoDBClient);
return docClient;
}
然后在申请中,根据您的要求,您可以使用适当的客户。