|
| 1 | +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. |
| 2 | +// SPDX-License-Identifier: Apache-2.0 |
| 3 | + |
| 4 | +use std::future::Future; |
| 5 | +use aws_db_esdk::key_store::types::KeyStoreConfig; |
| 6 | +use aws_db_esdk::key_store::types::KmsConfiguration; |
| 7 | +use aws_db_esdk::material_providers::types::MaterialProvidersConfig; |
| 8 | +use aws_db_esdk::key_store::client as keystore_client; |
| 9 | +use aws_db_esdk::material_providers::client; |
| 10 | + |
| 11 | +fn is_send<T: Future + Send>(_f: T) {} |
| 12 | + |
| 13 | +fn example() { |
| 14 | + let future = async move { |
| 15 | + let kms_key_id = |
| 16 | + "random key stuff" |
| 17 | + .to_string(); |
| 18 | + |
| 19 | + // 1. Configure your KeyStore resource. |
| 20 | + // This SHOULD be the same configuration that was used to create the DDB table |
| 21 | + // in the "Create KeyStore Table Example". |
| 22 | + let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await; |
| 23 | + let key_store_config = KeyStoreConfig::builder() |
| 24 | + .kms_client(aws_sdk_kms::Client::new(&sdk_config)) |
| 25 | + .ddb_client(aws_sdk_dynamodb::Client::new(&sdk_config)) |
| 26 | + .ddb_table_name("KeyStore") |
| 27 | + .logical_key_store_name("KeyStore") |
| 28 | + .kms_configuration(KmsConfiguration::KmsKeyArn(kms_key_id.clone())) |
| 29 | + .build() |
| 30 | + .unwrap(); |
| 31 | + |
| 32 | + let keystore = keystore_client::Client::from_conf(key_store_config).unwrap(); |
| 33 | + |
| 34 | + let _new_key = keystore.create_key().send().await.unwrap(); |
| 35 | + |
| 36 | + let provider_config = MaterialProvidersConfig::builder().build().unwrap(); |
| 37 | + |
| 38 | + let mat_prov = client::Client::from_conf(provider_config).unwrap(); |
| 39 | + let _kms_keyring = mat_prov |
| 40 | + .create_aws_kms_mrk_multi_keyring() |
| 41 | + .generator(kms_key_id) |
| 42 | + .send() |
| 43 | + .await |
| 44 | + .unwrap(); |
| 45 | + }; |
| 46 | + |
| 47 | + is_send(future); |
| 48 | +} |
0 commit comments