1 个不稳定版本
0.1.0 | 2023 年 12 月 24 日 |
---|
#18 in #aws-kms
每月 37 次下载
21KB
371 行
AWSSigner
ether_aws 是围绕 aws sdk 的包装器,允许使用 AWS KMS 作为签名者,AWSSigner
AWSSigner
完全实现了来自 ether-rs 的 Signer
特性。
快速入门
将以下内容添加到您的 Cargo.toml 中
[dependencies]
ethers_aws = "0.1"
用法
//Set up all credentials
let access_key = std::env::var("ACCESS_KEY").expect("ACCESS_KEY must be in environment");
let secret_access_key = std::env::var("SECRET_ACCESS_KEY").expect("SECRET_ACCESS_KEY must be in environment");
let key_id: String = std::env::var("KEY_ID").expect("KEY_ID must be in environment");
let region = std::env::var("REGION").expect("REGION must be in environment");
//Create the signer
let aws_signer = AWSSigner::new(
ethers::types::Chain::Mainnet as u64,
access_key,
secret_access_key,
key_id,
region,
)
.await
.expect("Cannot create AWS signer");
let provider = Provider::<Http>::try_from(anvil.endpoint()).unwrap();
let signer_middleware = SignerMiddleware::new(provider, aws_signer);
//Create transaction as usual
let one_ether: U256 = parse_units(1, 18 as i32).unwrap().into();
let tx_request = Eip1559TransactionRequest::new().to(Address::zero())
.value(one_ether);
let response = signer_middleware.send_transaction(tx_request, None)
AWS 设置(可选)
创建 IAM 用户
必须创建具有适当权限的 AWS IAM 用户。在创建过程中,为要创建的 IAM 用户添加以下策略。
AWSKeyManagementServicePowerUser
ROSAKMSProviderPolicy
创建后,转到新创建的用户并为其添加访问密钥。选择 在 AWS 外部运行的应用程序
。保存 access_key
和 secret_access_key
创建新的公钥私钥对
转到 AWKS KMS 页面并按照以下步骤操作
- 选择
创建密钥
- 将
密钥类型
设置为Asymmetric
- 将
密钥用途
设置为Sign and Verify
- 将
密钥规范
设置为ECC_SECG_P256K1
- 点击下一步并添加标签
- 点击下一步,在
密钥管理员
中选择在创建 IAM 用户
部分创建的用户 - 点击下一步,在
密钥用户
中选择在创建 IAM 用户
部分创建的用户 - 密钥创建后,获取
key_id
将此库安装到您的 rust 项目中
cargo add ethers_aws
示例
您可以运行项目中提供的简单示例。确保在您的环境中设置了适当的 AWS KMS 凭据。查看 测试 部分,了解如何设置凭据的示例。
cargo run -p simple_example
测试
单元测试需要设置 KMS 凭据。请在您的环境中设置这些值。
export ACCESS_KEY=<ACCESS_KEY>
eexport SECRET_ACCESS_KEY=<SECRET_ACCESS_KEY>
export KEY_ID=<KEY_ID>
export REGION=<REGION<
依赖项
~45–62MB
~1M SLoC