main/keyring/aws_kms_hierarchical/
create_branch_key_id.rs1use aws_esdk::key_store::client as keystore_client;
5use aws_esdk::key_store::types::key_store_config::KeyStoreConfig;
6use aws_esdk::key_store::types::KmsConfiguration;
7
8pub async fn create_branch_key_id(
17 key_store_table_name: &str,
18 logical_key_store_name: &str,
19 kms_key_arn: &str,
20) -> Result<String, crate::BoxError> {
21 let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
24 let key_store_config = KeyStoreConfig::builder()
25 .kms_client(aws_sdk_kms::Client::new(&sdk_config))
26 .ddb_client(aws_sdk_dynamodb::Client::new(&sdk_config))
27 .ddb_table_name(key_store_table_name)
28 .logical_key_store_name(logical_key_store_name)
29 .kms_configuration(KmsConfiguration::KmsKeyArn(kms_key_arn.to_string()))
30 .build()?;
31
32 let keystore = keystore_client::Client::from_conf(key_store_config)?;
33
34 let new_key = keystore.create_key().send().await?;
36 Ok(new_key.branch_key_identifier.unwrap())
37}