.zip 파일 아카이브로 Rust Lambda 함수 배포하기

.zip 파일 아카이브로 Rust Lambda 함수 배포하기

이 문서는 Rust 함수를 컴파일한 뒤, Cargo Lambda를 사용해 컴파일된 바이너리를 AWS Lambda에 배포하는 방법을 설명해요. AWS Command Line Interface와 AWS Serverless Application Model CLI로 바이너리를 배포하는 방법도 함께 다룹니다.

출처: AWS Lambda 개발자 안내서

본문

Sections

사전 조건

macOS, Windows, Linux에서 Rust 함수 빌드하기

다음 단계는 Rust로 첫 Lambda 함수 프로젝트를 만들고 Cargo Lambda로 컴파일하는 방법을 보여줘요. Cargo Lambda는 Rust Lambda 함수의 빌드와 배포를 단순화하는 서드파티 오픈소스 Cargo 명령줄 도구 확장입니다.

  1. Cargo Lambda를 설치합니다. Rust Lambda 함수의 빌드와 배포를 단순화하는 서드파티 오픈소스 Cargo 명령줄 도구 확장입니다. 다른 설치 옵션은 Cargo Lambda 문서의 Installation을 참고하세요.
  2. 패키지 구조를 만듭니다. 이 명령은 src/main.rs에 기본 함수 코드를 생성합니다. 이 코드를 테스트에 사용하거나 직접 작성한 코드로 교체할 수 있어요.
  3. 패키지 루트 디렉토리에서 build 하위 명령을 실행해 함수의 코드를 컴파일합니다. (선택 사항) Lambda에서 AWS Graviton2를 사용하려면 --arm64 플래그를 추가해 ARM CPU용으로 코드를 컴파일하세요.
  4. Rust 함수를 배포하기 전에 머신에 AWS 자격 증명을 구성합니다.

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

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

cargo lambda deploy my-function

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

AWS CLI로도 바이너리를 배포할 수 있어요.

  1. build 하위 명령을 사용해 .zip 배포 패키지를 빌드합니다.
  2. .zip 패키지를 Lambda에 배포하려면 create-function 명령을 실행합니다.
    • --runtime에는 provided.al2023을 지정합니다. 이는 OS-only 런타임이에요. OS-only 런타임은 컴파일된 바이너리와 커스텀 런타임을 Lambda에 배포하는 데 사용됩니다.
    • --role에는 실행 역할의 ARN을 지정합니다.

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

AWS SAM CLI로도 바이너리를 배포할 수 있어요.

  1. 리소스와 속성 정의를 담은 AWS SAM 템플릿을 만듭니다. Runtime에는 provided.al2023을 지정합니다. 이는 OS-only 런타임이에요. OS-only 런타임은 컴파일된 바이너리와 커스텀 런타임을 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
  1. build 하위 명령으로 함수를 컴파일합니다.
  2. sam deploy 명령을 사용해 함수를 Lambda에 배포합니다.

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

AWS CLI version 2를 사용한다면 cli-binary-format 옵션이 필요해요. 이 옵션을 기본값으로 설정하려면 aws configure set cli-binary-format raw-in-base64-out을 실행하세요. 자세한 내용은 AWS Command Line Interface 사용자 안내서 version 2의 AWS CLI 지원 전역 명령줄 옵션을 참고하세요.

더 알아보기 (Learn more)