java - 如何查看某个区域是否支持使用的 AWS SDK 版本?
问题描述
我如何以编程方式知道所使用的 AWS 开发工具包版本与任何 AWS 区域兼容?
例如。我正在使用aws-java-sdk-cognitoidentity 版本 1.11.967,如果我想检查 eu-west-1 区域是否支持给定版本。我该如何检查?
解决方案
首先是您使用的是 OLD Java API。Amazon 强烈建议从 Java V1 迁移到适用于 Java V2 的 AWS 开发工具包。
AWS SDK for Java 2.x 是对 1.x 版代码库的重大重写。它建立在 Java 8+ 之上,并添加了几个经常请求的特性。其中包括对非阻塞 I/O 的支持以及在运行时插入不同 HTTP 实现的能力。
提示:您可以判断您是否使用 V2,因为软件包名称始终以software.amazon.awssdk.services开头。
如果您不确定如何使用 Amazon Java V2,请参阅此文档主题:
要查看最新的 V2 示例,请参阅 Github 而不是服务指南,因为它们正在更新以将 V2 纳入其中。
https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2
要回答您关于区域的问题,没有 API 会返回此信息。最好的办法是使用您想要使用的各个区域对您的 AWS 应用程序进行编码和测试。
例如,在这个Java V2 DynamoDB示例中,请注意我们使用US_EAST_1创建服务客户端。如果您为 DynamoDB 使用另一个区域,请将此区域替换为您的区域。
package com.example.dynamodb;
// snippet-start:[dynamodb.java2.mapping.putitem.import]
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSortKey;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbPartitionKey;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
// snippet-end:[dynamodb.java2.mapping.putitem.import]
/*
* Prior to running this code example, create an Amazon DynamoDB table named Customer with a key named id and populate it with data.
* Also, ensure that you have setup your development environment, including your credentials.
*
* For information, see this documentation topic:
*
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
*/
public class EnhancedPutItem {
public static void main(String[] args) {
Region region = Region.US_EAST_1;
DynamoDbClient ddb = DynamoDbClient.builder()
.region(region)
.build();
DynamoDbEnhancedClient enhancedClient = DynamoDbEnhancedClient.builder()
.dynamoDbClient(ddb)
.build();
putRecord(enhancedClient) ;
ddb.close();
}
// snippet-start:[dynamodb.java2.mapping.putitem.main]
// Puts an item into a DynamoDB table
public static void putRecord(DynamoDbEnhancedClient enhancedClient) {
try {
DynamoDbTable<Customer> custTable = enhancedClient.table("Customer", TableSchema.fromBean(Customer.class));
// Create an Instant
LocalDate localDate = LocalDate.parse("2020-04-07");
LocalDateTime localDateTime = localDate.atStartOfDay();
Instant instant = localDateTime.toInstant(ZoneOffset.UTC);
// Populate the Table
Customer custRecord = new Customer();
custRecord.setCustName("Susan Blue");
custRecord.setId("id103");
custRecord.setEmail("sblue@noserver.com");
custRecord.setRegistrationDate(instant) ;
// Put the customer data into a DynamoDB table
custTable.putItem(custRecord);
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
System.exit(1);
}
System.out.println("done");
}
@DynamoDbBean
public static class Customer {
private String id;
private String name;
private String email;
private Instant regDate;
@DynamoDbPartitionKey
public String getId() {
return this.id;
};
public void setId(String id) {
this.id = id;
}
@DynamoDbSortKey
public String getCustName() {
return this.name;
}
public void setCustName(String name) {
this.name = name;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public Instant getRegistrationDate() {
return regDate;
}
public void setRegistrationDate(Instant registrationDate) {
this.regDate = registrationDate;
}
}
// snippet-end:[dynamodb.java2.mapping.putitem.main]
}
推荐阅读
- java - 删除数据库条目后刷新列表视图
- python - 如何在 python 中运行的 vba 代码中捕获异常
- android - admob 广告未能加载:3
- spring - 即使代理关闭,卡夫卡也会继续产生请求
- php - 无法使用 Gmail 使用 PHPMailer 发送电子邮件(无法连接服务器)
- mysql - 如何在 Arel 中表达 MySql 函数 `GROUP_CONCAT(DISTINCT column)`?
- dialogflow-es - 如何在错误删除的Dialogflow上添加Defalut-welcome-intent?
- firebase - Firestore 子集合或外键
- python - PyCuda - 如何在内核中使用用 Python 编写的函数?
- android - NFC 在三星设备上进入睡眠模式