AWS SDK for Rust의 기본 사항 - AWS SDK for Rust

AWS SDK for Rust의 기본 사항

Rust 프로그래밍 언어 기본 사항, SDK for Rust 크레이트 정보, 프로젝트 구성, SDK for Rust의 Tokio 런타임 사용 등 AWS SDK for Rust를 사용한 프로그래밍의 기본 사항을 알아봅니다.

사전 조건

AWS SDK for Rust를 사용하려면 Rust 및 Cargo가 설치되어 있어야 합니다.

코드 완성 및 문제 해결을 지원하기 위해 IDE에 다음과 같은 선택적 도구를 설치할 수 있습니다.

Rust 기본 사항

다음은 알아두면 도움이 될 Rust 프로그래밍 언어의 몇 가지 기본 사항입니다. 모든 자세한 내용은 Rust 프로그래밍 언어를 참조합니다.

  • Cargo.toml은 표준 Rust 프로젝트 구성 파일이며, 프로젝트에 대한 종속성과 일부 메타데이터를 포함합니다. Rust 소스 파일에는 .rs 파일 확장자가 있습니다. Hello, Cargo!를 참조하세요.

    • Cargo.toml은 프로필을 사용하여 사용자 지정할 수 있습니다. 릴리스 프로파일을 사용하여 빌드 사용자 지정을 참조하세요. 이러한 프로필은 공유 AWS config 파일 내에서 AWS의 프로필 사용과 완전히 관련이 없으며 별개입니다.

    • 프로젝트와 이 파일에 라이브러리 종속성을 추가하는 일반적인 방법은 cargo add를 사용하는 것입니다. cargo-add 섹션을 참조하세요.

  • Rust에는 다음과 같은 기본 함수 구조가 있습니다. let 키워드는 변수를 선언하며 할당(=)과 페어링될 수 있습니다. let 이후에 유형을 지정하지 않으면 컴파일러가 유형을 유추합니다. 변수 및 변경 가능성을 참조하세요.

    fn main() { let w = "world"; println!("Hello {}!", w); }
  • Rust는 명시적 유형 x의 변수 T를 선언하기 위해 x: T 구문을 사용합니다. 데이터 유형을 참조하세요.

  • struct X {}는 새 유형 X를 정의합니다. 메서드는 사용자 지정 구조 유형 X에 구현됩니다. X 유형에 대한 메서드는 impl 키워드 접두사가 붙은 구현 블록으로 선언됩니다. 구현 블록 내에서 self는 메서드가 직접 호출된 구문의 인스턴스를 나타냅니다. 키워드 impl메서드 구문을 참조하세요.

  • 느낌표(‘!’)가 함수 정의 또는 함수 직접 호출로 보이는 값을 따르는 경우 코드는 매크로를 정의하거나 직접 호출합니다. 매크로를 참조하세요.

  • Rust에서 복구할 수 없는 오류는 panic! 매크로로 표시됩니다. 프로그램이 실행을 중지할 panic!을 발견하면 실패 메시지를 인쇄하고, 해제하고, 스택을 정리하고, 종료합니다. panic!으로 복구할 수 없는 오류를 참조하세요.

  • Rust는 다른 프로그래밍 언어와 마찬가지로 기본 클래스의 기능 상속을 지원하지 않습니다. traits는 Rust가 메서드의 오버로딩을 제공하는 방법입니다. 특성은 개념적으로 인터페이스와 유사한 것으로 생각할 수 있습니다. 그러나 특성과 실제 인터페이스는 차이가 있으며 설계 프로세스에서 다르게 사용되는 경우가 많습니다. 특성: 공유 동작 정의를 참조하세요.

    • 다형성은 각 데이터 형식을 개별적으로 작성할 필요 없이 여러 데이터 유형에 대한 기능을 지원하는 코드를 말합니다. Rust는 열거형, 특성 및 제너릭을 통해 다형성을 지원합니다. 유형 시스템 및 코드 공유로서의 상속을 참조하세요.

  • Rust는 메모리에 대해 매우 명시적입니다. 스마트 포인터는 ‘포인터처럼 작동하지만 추가 메타데이터와 기능도 있는 데이터 구조’입니다. 스마트 포인터를 참조하세요.

    • Cow 유형은 필요할 때 호출자에게 메모리 소유권을 전송하는 데 도움이 되는 clone-on-write 스마트 포인터입니다. Enum std::borrow::Cow 섹션을 참조하세요.

    • Arc 유형은 할당된 인스턴스 수를 계산하는 원자적 참조 카운트 스마트 포인터입니다. Struct std::sync::Arc 섹션을 참조하세요.

  • SDK for Rust는 복잡한 유형을 구성하기 위해 빌더 패턴을 자주 사용합니다.

AWS SDK for Rust 크레이트 기본 사항

  • SDK for Rust 기능의 기본 코어 크레이트는 aws-config입니다. 이는 환경에서 구성을 읽을 수 있는 기능을 제공하기 때문에 대부분의 프로젝트에 포함됩니다.

    $ cargo add aws-config
    • 이를 AWS Config라고 하는 AWS 서비스와 혼동하지 마십시오. 이는 서비스이므로 AWS 서비스 크레이트의 표준 규칙을 따르며, aws-sdk-config라고 합니다.

  • SDK for Rust 라이브러리는 각 AWS 서비스별로 서로 다른 라이브러리 크레이트로 구분됩니다. 이러한 크레이트는 https://docs.rs/에서 확인할 수 있습니다.

  • AWS 서비스 크레이트는 aws-sdk-s3aws-sdk-dynamodb와 같은 aws-sdk-[servicename]의 명명 규칙을 따릅니다.

AWS 서비스 작업을 위한 프로젝트 구성

  • 애플리케이션에서 사용할 각 AWS 서비스에 대해 프로젝트에 크레이트를 추가해야 합니다.

  • 크레이트를 추가하는 권장 방법은 cargo add aws-sdk-s3 등의 cargo add [crateName]를 실행하여 프로젝트 디렉터리의 명령줄을 사용하는 것입니다.

    • 그러면 [dependencies]에서 프로젝트의 Cargo.toml에 줄이 추가됩니다.

    • 기본적으로 최신 버전의 크레이트가 프로젝트에 추가됩니다.

  • 소스 파일에서 use 문을 사용하여 크레이트의 항목을 범위로 가져옵니다. Rust 프로그래밍 언어 웹 사이트에서 외부 패키지 사용을 참조하세요.

    • 크레이트 이름은 종종 하이픈으로 표시되지만 실제로 크레이트 사용 시 하이픈이 밑줄로 변환됩니다. 예를 들어, aws-config 크레이트는 코드 use 문에서 use aws_config로 사용됩니다.

  • 구성은 복잡한 주제입니다. 구성은 코드에서 직접 수행하거나 환경 변수 또는 구성 파일에서 외부에서 지정할 수 있습니다. 자세한 내용은 외부에서 AWS SDK for Rust 서비스 클라이언트 구성 섹션을 참조하세요.

    • SDK가 구성을 로드하면 대부분의 설정에 적절한 기본값이 있으므로 실행을 중지하는 대신 잘못된 값이 기록됩니다. 로깅을 켜는 방법은 AWS SDK for Rust에서 로깅 구성 및 사용 섹션을 참조하세요.

    • 대부분의 환경 변수 및 구성 파일 설정은 프로그램이 시작될 때 한 번 로드됩니다. 프로그램을 다시 시작할 때까지 값에 대한 업데이트가 표시되지 않습니다.

Tokio 런타임

  • Tokio는 SDK for Rust 프로그래밍 언어의 비동기 런타임으로, async 작업을 실행합니다. tokio.rsdocs.rs/tokio를 참조하세요.

  • SDK for Rust에는 비동기 런타임이 필요합니다. 프로젝트에 다음 크레이트를 추가하는 것이 좋습니다.

    $ cargo add tokio --features=full
  • tokio::main 속성 매크로는 프로그램에 대한 비동기 기본 진입점을 생성합니다. 이 매크로를 사용하려면 다음과 같이 main 메서드 앞의 줄에 매크로를 추가합니다.

    #[tokio::main] async fn main() -> Result<(), Error> {