Obtenha um segredo do Secrets Manager usando Rust com armazenamento em cache no lado do cliente - AWS Secrets Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Obtenha um segredo do Secrets Manager usando Rust com armazenamento em cache no lado do cliente

Ao recuperar um segredo, é possível usar o componente de cache baseado em Rust do Secrets Manager para armazená-lo em cache para uso futuro. Recuperar um segredo armazenado em cache é mais rápido do que recuperá-lo do Secrets Manager. Como há um custo para chamar APIs do Secrets Manager, usar um cache pode reduzir seus custos. Para ver todas as formas pelas quais você pode recuperar segredos, consulte Obter segredos.

A política de cache é a do primeiro a entrar, primeiro a sair (FIFO). Assim, quando o cache precisar descartar um segredo, usará o segredo mais antigo. Por padrão, o cache atualiza segredos a cada hora. É possível configurar as seguintes opções:

  • max_size: o número máximo de segredos em cache a serem mantidos antes da remoção dos segredos que não foram acessados recentemente.

  • ttl: a duração pela qual um item armazenado em cache é considerado válido antes de exigir uma atualização do estado do segredo.

A implementação do cache não inclui a invalidação do cache. A implementação do cache é centrada em torno do próprio cache, portanto, não é reforçada ou tem ênfase em segurança. Se você precisar de segurança adicional, como criptografar itens no cache, use as características fornecidas para modificar o cache.

Para usar o componente, é necessário ter um ambiente de desenvolvimento do Rust 2021 com tokio. Para obter mais informações, consulte Conceitos básicos no site Rust Programming Language.

Para baixar o código-fonte, consulte Componente de cliente armazenado em cache baseado em Rust do Secrets Manager no GitHub.

Para instalar o componente de armazenamento em cache, use o seguinte comando.

cargo add aws_secretsmanager_caching

Permissões obrigatórias:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

Para ter mais informações, consulte Referência de permissões.

exemplo Recuperar segredos

O exemplo a seguir mostra como obter o valor de um segredo nomeado como MyTest.

use aws_secretsmanager_caching::SecretsManagerCachingClient; use std::num::NonZeroUsize; use std::time::Duration; let client = match SecretsManagerCachingClient::default( NonZeroUsize::new(10).unwrap(), Duration::from_secs(60), ) .await { Ok(c) => c, Err(_) => panic!("Handle this error"), }; let secret_string = match client.get_secret_value("MyTest", None, None).await { Ok(s) => s.secret_string.unwrap(), Err(_) => panic!("Handle this error"), }; // Your code here
exemplo Instanciação do cache com uma configuração personalizada e um cliente personalizado

O exemplo a seguir mostra como configurar o cache e, em seguida, obter o valor de um segredo nomeado como MyTest.

let config = aws_config::load_defaults(BehaviorVersion::latest()) .await .into_builder() .region(Region::from_static("us-west-2")) .build(); let asm_builder = aws_sdk_secretsmanager::config::Builder::from(&config); let client = match SecretsManagerCachingClient::from_builder( asm_builder, NonZeroUsize::new(10).unwrap(), Duration::from_secs(60), ) .await { Ok(c) => c, Err(_) => panic!("Handle this error"), }; let secret_string = client .get_secret_value("MyTest", None, None) .await { Ok(c) => c.secret_string.unwrap(), Err(_) => panic!("Handle this error"), }; // Your code here ```