AWS SDK for Rust의 기본 사항
Rust 프로그래밍 언어 기본 사항, SDK for Rust 크레이트 정보, 프로젝트 구성, SDK for Rust의 Tokio 런타임 사용 등 AWS SDK for Rust를 사용한 프로그래밍의 기본 사항을 알아봅니다.
사전 조건
AWS SDK for Rust를 사용하려면 Rust 및 Cargo가 설치되어 있어야 합니다.
-
Rust 도구 체인 설치: https://www.rust-lang.org/tools/install
-
cargo install cargo-component명령을 실행하여cargo-component도구를 설치합니다.
권장 도구:
코드 완성 및 문제 해결을 지원하기 위해 IDE에 다음과 같은 선택적 도구를 설치할 수 있습니다.
-
rust-analyzer 확장은 Visual Studio Code의 Rust
를 참조하세요. -
Amazon Q Developer는 IDE에서 Amazon Q Developer 확장 또는 플러그인 설치를 참조하세요.
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-s3및aws-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.rs및 docs.rs/tokio 를 참조하세요. -
SDK for Rust에는 비동기 런타임이 필요합니다. 프로젝트에 다음 크레이트를 추가하는 것이 좋습니다.
$cargo add tokio --features=full -
tokio::main속성 매크로는 프로그램에 대한 비동기 기본 진입점을 생성합니다. 이 매크로를 사용하려면 다음과 같이main메서드 앞의 줄에 매크로를 추가합니다.#[tokio::main] async fn main() -> Result<(), Error> {