3个版本
0.1.3 | 2023年2月13日 |
---|---|
0.1.2 | 2023年2月13日 |
0.1.1 | 2023年2月13日 |
#816 in 过程宏
11KB
这是什么?
这是一个用于简化AWS Secrets Manager使用的进程宏。该代码允许您通过创建与Secrets Manager中设置的密钥对结构相同的结构来创建同类型的全局常量。这样,您可以在不编写任何从AWS获取它们的代码的情况下访问存储在Secrets Manager中的秘密值。
优点
- 可以通过简单地定义一个与Secrets Manager中设置的密钥对结构相同的结构来检索密钥对
- 密钥对定义为全局常量,因此可以从任何地方使用
- 使用once_cell::sync::Lazy进行惰性评估
示例代码
use global_secrets_manager::GlobalSecretsManager;
/// Please use the same name as Secrets Manager for the name of the structure
/// Please set the keys of Secrets Manager without any omission or excess
#[derive(GlobalSecretsManager)]
#[derive(Debug, serde::Deserialize)]
pub struct SampleSecrets{
key1: String,
key2: String,
}
fn main(){
dbg!(&SampleSecrets.key1); //-> value1
dbg!(&SampleSecrets.key2); //-> value2
}
准备工作
依赖项
以下依赖项是必需的。
aws-config = "0.54.1"
aws-sdk-secretsmanager = "0.24.0"
once_cell = "1.17.0"
dotenvy = "0.15.6"
serde_json = "1.0.93"
tokio = { version = "1.21.2", features = ["full"] }
global-secrets-manager = "0.1.1"
但是,最好使用它们的最新版本。
AWS Secrets Manager设置
请根据相关页面设置您的秘密。为了解释,让我们假设Secrets Manager的名称为SampleSecrets,秘密值如下设置。
秘密密钥 | 秘密值 |
---|---|
key1 | value1 |
key2 | value2 |
AWS凭证获取
请获取您的凭证信息。如果您使用AWS CLI,可以使用以下命令获取。
cat ~/.aws/credentials
.env设置
在您的存储库中创建一个.env文件,并按如下方式输入您的凭证信息。
AWS_ACCESS_KEY_ID=AAAAA
AWS_SECRET_ACCESS_KEY = BBBBB
AWS_REGION = CCCCC
内部规范说明
对于结构
struct SampleSecrets{
key1:String,
key2:String
}
相同的全局常量
pub static SampleSecrets: once_cell::sync::Lazy<SampleSecrets> = once_cell::sync::Lazy::new(||SampleSecrets::get());
只在首次访问时初始化一次。它调用结构的get()方法从AWS Secrets Manager获取秘密值。
许可证
AGPL-3.0-or-later。
由此进程宏生成的代码是AGPL的例外。您可以根据需要选择其许可证。
依赖项
~1.5MB
~36K SLoC