클라이언트 측 캐싱과 함께 Rust를 사용하여 Secrets Manager 보안 암호 값 가져오기 - AWS Secrets Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

클라이언트 측 캐싱과 함께 Rust를 사용하여 Secrets Manager 보안 암호 값 가져오기

보안 암호를 검색할 때 Secret Manager Rust 기반 캐싱 구성 요소를 사용하여 나중에 사용할 수 있도록 캐싱할 수 있습니다. 캐싱된 보안 암호를 검색하는 것이 Secret Manager에서 검색하는 것보다 빠릅니다. Secrets Manager API를 호출하는 데는 비용이 발생하므로 캐시를 사용하면 비용을 줄일 수 있습니다. 암호를 검색할 수 있는 모든 방법은 보안 암호 가져오기을(를) 참조하세요.

캐시 정책은 FIFO(선입선출)이므로 캐시가 보안 암호를 폐기해야 할 경우 가장 오래된 보안 암호가 폐기됩니다. 기본적으로 캐시는 보안 암호를 매시간 새로 고칩니다. 다음을 구성할 수 있습니다.

  • max_size - 최근에 액세스하지 않은 보안 암호를 제거하기 전까지 유지할 수 있는 캐시된 보안 암호의 최대 수입니다.

  • ttl - 보안 암호 상태를 새로 고침해야 하기 전까지 캐시된 항목이 유효하다고 간주되는 기간입니다.

캐시 구현에는 캐시 무효화가 포함되지 않습니다. 캐시 구현은 캐시 자체에 중점을 두며, 보안을 강화하거나 보안에 초점을 맞추지 않습니다. 캐시에서 항목 암호화와 같은 추가 보안이 필요한 경우 제공된 특성을 사용하여 캐시를 수정하세요.

구성 요소를 사용하려면 tokio가 포함된 Rust 2021 개발 환경이 있어야 합니다. 자세한 내용은 Rust 프로그래밍 언어 웹 사이트에서 시작하기를 참조하세요.

소스 코드를 다운로드하려면 GitHub의 Secrets Manager Rust 기반 캐싱 클라이언트 구성 요소를 참조하세요.

캐싱 구성 요소를 설치하려면 다음 명령을 사용합니다.

cargo add aws_secretsmanager_caching

필요한 권한:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

자세한 내용은 권한 참조 단원을 참조하십시오.

예 보안 암호 검색

다음 예에서는 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
예 사용자 지정 구성 및 사용자 지정 클라이언트를 사용하여 캐시 인스턴스화

다음 예에서는 캐시를 구성한 다음, 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 ```