如何在 JAVA 中使用客户管理的加密密钥创建 pubsub 主题
How to create pubsub topic with Customer-managed encryption key in JAVA
我正在尝试在 Java 中使用客户管理的加密密钥创建 Pub/Sub 主题。
在 Python 中,我们可以使用 CMEK 位置作为参数创建主题,如下所示:
topic = client.create_topic(
topic_path,
kms_key_name=cmek_location,
message_storage_policy=get_allowed_region()
)
在 java 中,我使用以下内容:
TopicAdminClient topicAdminClient = TopicAdminClient.create(topicAdminSettings);
topicAdminClient.createTopic(topic);
我们如何在 java 代码中使用 CMEK 位置?
为此,您可以使用从 createTopic
方法 documentation 中提取的以下代码:
try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
Topic request =
Topic.newBuilder()
.setName(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
.putAllLabels(new HashMap<String, String>())
.setMessageStoragePolicy(MessageStoragePolicy.newBuilder().build())
.setKmsKeyName("kmsKeyName412586233")
.setSchemaSettings(SchemaSettings.newBuilder().build())
.setSatisfiesPzs(true)
.setMessageRetentionDuration(Duration.newBuilder().build())
.build();
Topic response = topicAdminClient.createTopic(request);
}
基本上你提供了一个你想要创建的 Topic
的模板。
在您的用例中,我想它看起来类似于:
try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
Topic request =
Topic.newBuilder()
.setName(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
.setKmsKeyName("kmsKeyName412586233") //cmek location
.setMessageStoragePolicy(
MessageStoragePolicy.newBuilder()
.addAllowedPersistenceRegions("us-central1") // get_allowed_region
.build()
)
.build();
Topic response = topicAdminClient.createTopic(request);
}
请注意setKmsKeyName
方法
API 在此 GCP documentation 中描述。
我正在尝试在 Java 中使用客户管理的加密密钥创建 Pub/Sub 主题。
在 Python 中,我们可以使用 CMEK 位置作为参数创建主题,如下所示:
topic = client.create_topic(
topic_path,
kms_key_name=cmek_location,
message_storage_policy=get_allowed_region()
)
在 java 中,我使用以下内容:
TopicAdminClient topicAdminClient = TopicAdminClient.create(topicAdminSettings);
topicAdminClient.createTopic(topic);
我们如何在 java 代码中使用 CMEK 位置?
为此,您可以使用从 createTopic
方法 documentation 中提取的以下代码:
try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
Topic request =
Topic.newBuilder()
.setName(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
.putAllLabels(new HashMap<String, String>())
.setMessageStoragePolicy(MessageStoragePolicy.newBuilder().build())
.setKmsKeyName("kmsKeyName412586233")
.setSchemaSettings(SchemaSettings.newBuilder().build())
.setSatisfiesPzs(true)
.setMessageRetentionDuration(Duration.newBuilder().build())
.build();
Topic response = topicAdminClient.createTopic(request);
}
基本上你提供了一个你想要创建的 Topic
的模板。
在您的用例中,我想它看起来类似于:
try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
Topic request =
Topic.newBuilder()
.setName(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
.setKmsKeyName("kmsKeyName412586233") //cmek location
.setMessageStoragePolicy(
MessageStoragePolicy.newBuilder()
.addAllowedPersistenceRegions("us-central1") // get_allowed_region
.build()
)
.build();
Topic response = topicAdminClient.createTopic(request);
}
请注意setKmsKeyName
方法
API 在此 GCP documentation 中描述。