.zip 파일 아카이브를 사용하여 Rust Lambda 함수 배포 - AWS Lambda

.zip 파일 아카이브를 사용하여 Rust Lambda 함수 배포

참고

Rust 런타임 클라이언트는 실험용 패키지입니다. 변경될 수 있으며 평가 목적으로만 사용됩니다.

이 페이지에서는 Rust 함수를 컴파일한 다음 Cargo Lambda를 사용하여 컴파일된 바이너리를 AWS Lambda에 배포하는 방법을 설명합니다. 또한 AWS Command Line Interface 및 AWS Serverless Application Model CLI를 사용하여 컴파일된 바이너리를 배포하는 방법도 보여줍니다.

사전 조건

macOS, Windows 또는 Linux에서 Rust 함수 빌드

다음 단계에서는 Rust를 사용하여 첫 번째 Lambda 함수에 대한 프로젝트를 생성하고 Cargo Lambda로 컴파일하는 방법을 보여줍니다.

  1. macOS, Windows 및 Linux에서 Lambda용 Rust 함수를 컴파일하는 Cargo 하위 명령인 Cargo Lambda를 설치합니다.

    Python 3이 설치된 시스템에 Cargo Lambda를 설치하려면 pip를 사용합니다.

    pip3 install cargo-lambda

    macOS 또는 Linux에 Cargo Lambda를 설치하려면 Homebrew를 사용합니다.

    brew tap cargo-lambda/cargo-lambda brew install cargo-lambda

    Windows에 Cargo Lambda를 설치하려면 Scoop을 사용합니다.

    scoop bucket add cargo-lambda scoop install cargo-lambda/cargo-lambda

    다른 옵션은 Cargo Lambda 설명서의 설치를 참조하세요.

  2. 패키지 구조를 생성합니다. 이 명령은 src/main.rs에 몇 가지 기본 함수 코드를 생성합니다. 이 코드를 테스트에 사용하거나 사용자 고유의 코드로 바꿀 수 있습니다.

    cargo lambda new my-function
  3. 패키지의 루트 디렉터리 내에서 build 하위 명령을 실행하여 함수의 코드를 컴파일합니다.

    cargo lambda build --release

    (선택 사항) Lambda에서 AWS Graviton2를 사용하려면 --arm64 플래그를 추가하여 ARM CPU용 코드를 컴파일합니다.

    cargo lambda build --release --arm64
  4. Rust 함수를 배포하기 전에 머신에서 AWS 자격 증명을 구성합니다.

    aws configure

Cargo Lambda로 Rust 함수 바이너리 배포

deploy 하위 명령을 사용하여 컴파일된 바이너리를 Lambda에 배포합니다. 이 명령은 실행 역할을 생성한 다음 Lambda 함수를 생성합니다. 기존 실행 역할을 지정하려면 --iam-role 플래그를 사용합니다.

cargo lambda deploy my-function

AWS CLI로 Rust 함수 바이너리 배포

AWS CLI로 바이너리를 배포할 수도 있습니다.

  1. build 하위 명령을 사용하여 .zip 배포 패키지를 빌드합니다.

    cargo lambda build --release --output-format zip
  2. .zip 패키지를 Lambda에 배포하려면 create-function 명령을 실행합니다.

    • --runtime에서 provided.al2023를 지정합니다. 이는 OS 전용 런타임입니다. OS 전용 런타임은 컴파일된 바이너리와 사용자 지정 런타임을 Lambda에 배포하는 데 사용됩니다.

    • --role에서 실행 역할의 ARN을 지정합니다.

    aws lambda create-function \ --function-name my-function \ --runtime provided.al2023 \ --role arn:aws:iam::111122223333:role/lambda-role \ --handler rust.handler \ --zip-file fileb://target/lambda/my-function/bootstrap.zip

AWS SAM CLI로 Rust 함수 바이너리 배포

AWS SAM CLI로 바이너리를 배포할 수도 있습니다.

  1. 리소스와 속성 정의를 사용하여 AWS SAM 템플릿을 생성합니다. Runtime에서 provided.al2023를 지정합니다. 이는 OS 전용 런타임입니다. OS 전용 런타임은 컴파일된 바이너리와 사용자 지정 런타임을 Lambda에 배포하는 데 사용됩니다.

    AWS SAM을 사용한 Lambda 함수 배포에 대한 자세한 내용은 AWS Serverless Application Model 개발자 안내서의 AWS::Serverless::Function을 참조하세요.

    예 Rust 바이너리에 대한 SAM 리소스 및 속성 정의
    AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: SAM template for Rust binaries Resources: RustFunction: Type: AWS::Serverless::Function Properties: CodeUri: target/lambda/my-function/ Handler: rust.handler Runtime: provided.al2023 Outputs: RustFunction: Description: "Lambda Function ARN" Value: !GetAtt RustFunction.Arn
  2. build 하위 명령을 사용하여 함수를 컴파일합니다.

    cargo lambda build --release
  3. sam deploy 명령을 사용하여 함수를 Lambda에 배포합니다.

    sam deploy --guided

AWS SAM CLI를 사용하여 Rust 함수를 빌드하는 방법에 대한 자세한 내용은 AWS Serverless Application Model 개발자 안내서의 Cargo Lambda로 Rust Lambda 함수 빌드를 참조하세요.

Cargo Lambda로 Rust 함수 호출

invoke 하위 명령을 사용하여 페이로드로 함수를 테스트합니다.

cargo lambda invoke --remote --data-ascii '{"command": "Hello world"}' my-function

AWS CLI로 Rust 함수 호출

AWS CLI를 사용하여 함수를 호출할 수도 있습니다.

aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"command": "Hello world"}' /tmp/out.txt

cli-binary-format 옵션은 AWS CLI 버전 2를 사용할 때 필요합니다. 이 설정을 기본 설정으로 지정하려면 aws configure set cli-binary-format raw-in-base64-out을(를) 실행하세요. 자세한 내용은 AWS CLI 지원되는 글로벌 명령줄 옵션을 AWS Command Line Interface 사용 설명서 버전 2에서 참조하세요.