Lambda의 가장 일반적인 사용 사례 중 하나는 파일 처리 작업을 수행하는 것입니다. 예를 들어, Lambda 함수를 사용하여 HTML 파일 또는 이미지로부터 PDF 파일을 자동으로 생성하거나, 사용자가 이미지를 업로드할 때 썸네일을 생성할 수 있습니다.
이 예에서는 Amazon Simple Storage Service (Amazon S3) 버킷에 PDF 파일이 업로드되면 자동으로 암호화하는 앱을 생성합니다. 이 앱을 구현하려면 다음 리소스를 생성합니다.
-
사용자가 PDF 파일을 업로드할 S3 버킷
-
업로드된 파일을 읽고 암호화된 암호 보호 버전을 생성하는 Python의 Lambda 함수
-
Lambda가 암호화된 파일을 저장할 두 번째 S3 버킷
또한 AWS Identity and Access Management(IAM) 정책을 생성하여 Lambda 함수에 S3 버킷에서 읽기 및 쓰기 작업을 수행할 권한을 부여합니다.

작은 정보
Lambda를 처음 사용할 경우 이 예제 앱을 생성하기 전에 첫 번째 Lambda 함수 생성 튜토리얼을 시작하는 것이 좋습니다.
AWS Management Console 또는 AWS Command Line Interface(AWS CLI)(을)를 사용하여 리소스를 생성하고 구성하여 앱을 수동으로 배포할 수 있습니다. AWS Serverless Application Model(AWS SAM)(을)를 사용하여 앱을 배포할 수도 있습니다. AWS SAM(은)는 코드형 인프라(IaC) 도구입니다. IaC를 사용하면 리소스를 수동으로 생성하지 않고 코드로 정의한 다음 자동으로 배포할 수 있습니다.
이 예제 앱을 배포하기 전에 IaC와 함께 Lambda를 사용하는 방법에 대해 자세히 알아보려면 코드형 인프라(IaC)와 함께 Lambda 사용 섹션을 참조하세요.
Lambda 함수 소스 코드 파일 생성
프로젝트 디렉터리에 다음 파일을 생성합니다.
-
lambda_function.py
- 파일 암호화를 수행하는 Lambda 함수의 Python 함수 코드 -
requirements.txt
- Python 함수 코드에 필요한 종속성을 정의하는 매니페스트 파일
다음 섹션을 확장하여 코드를 확인하고 각 파일의 역할에 대해 자세히 알아보세요. 로컬 컴퓨터에서 파일을 생성하려면 아래 코드를 복사하여 붙여넣거나, aws-lambda-developer-guide GitHub repo
다음 코드를 복사하여 새로운 lambda_function.py
파일에 붙여 넣습니다.
from pypdf import PdfReader, PdfWriter
import uuid
import os
from urllib.parse import unquote_plus
import boto3
# Create the S3 client to download and upload objects from S3
s3_client = boto3.client('s3')
def lambda_handler(event, context):
# Iterate over the S3 event object and get the key for all uploaded files
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = unquote_plus(record['s3']['object']['key']) # Decode the S3 object key to remove any URL-encoded characters
download_path = f'/tmp/{uuid.uuid4()}.pdf' # Create a path in the Lambda tmp directory to save the file to
upload_path = f'/tmp/converted-{uuid.uuid4()}.pdf' # Create another path to save the encrypted file to
# If the file is a PDF, encrypt it and upload it to the destination S3 bucket
if key.lower().endswith('.pdf'):
s3_client.download_file(bucket, key, download_path)
encrypt_pdf(download_path, upload_path)
encrypted_key = add_encrypted_suffix(key)
s3_client.upload_file(upload_path, f'{bucket}-encrypted', encrypted_key)
# Define the function to encrypt the PDF file with a password
def encrypt_pdf(file_path, encrypted_file_path):
reader = PdfReader(file_path)
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
# Add a password to the new PDF
writer.encrypt("my-secret-password")
# Save the new PDF to a file
with open(encrypted_file_path, "wb") as file:
writer.write(file)
# Define a function to add a suffix to the original filename after encryption
def add_encrypted_suffix(original_key):
filename, extension = original_key.rsplit('.', 1)
return f'{filename}_encrypted.{extension}'
참고
이 예제 코드에서는 암호화된 파일(my-secret-password
)의 비밀번호가 함수 코드에 하드코딩되어 있습니다. 프로덕션 애플리케이션에서는 함수 코드에 암호와 같은 민감한 정보를 저장하지 마십시오. AWS Secrets Manager(을)를 사용하여 민감한 파라미터를 안전하게 저장하십시오.
Python 함수 코드에는 다음의 3가지 함수가 포함됩니다. 즉, 함수가 간접 호출될 때 Lambda가 실행하는 핸들러 함수 및 PDF 암호화를 수행하기 위해 핸들러가 간접 호출하는 add_encrypted_suffix
및 encrypt_pdf
라는 이름의 2가지 개별 함수가 포함됩니다.
함수가 Amazon S3에 의해 간접 호출되면 Lambda는 간접 호출을 일으킨 이벤트에 대한 세부 정보가 포함된 JSON 형식의 이벤트 인수를 함수로 전달합니다. 이 경우 정보에는 S3 버킷의 이름과 업로드된 파일의 객체 키가 포함됩니다. Amazon S3의 이벤트 객체 형식에 대한 자세한 내용은 Lambda를 사용하여 Amazon S3 이벤트 알림 처리 섹션을 참조하세요.
그러면 함수는 AWS SDK for Python (Boto3)(을)를 사용하여 이벤트 객체에 지정된 PDF 파일을 로컬 임시 스토리지 디렉터리로 다운로드한 후 pypdf
마지막으로 함수는 Boto3 SDK를 사용하여 암호화된 파일을 S3 대상 버킷에 저장합니다.
다음 코드를 복사하여 새로운 requirements.txt
파일에 붙여 넣습니다.
boto3 pypdf
이 예제의 함수 코드에는 표준 Python 라이브러리의 일부가 아닌 두 개의 종속성, 즉 Python용 SDK(Boto3)와 함수가 PDF 암호화를 수행하는 데 사용하는 pypdf
패키지 두 개만 포함합니다.
참고
Python용 SDK(Boto3) 버전이 Lambda 런타임의 일부로 포함되어 있으므로 함수의 배포 패키지에 Boto3를 추가하지 않고도 코드를 실행할 수 있습니다. 그러나 함수의 종속 항목을 완전히 제어하고 버전 불일치와 관련된 문제를 방지하기 위해 Python의 모범 사례는 함수의 배포 패키지에 모든 함수 종속성을 포함합니다. 자세한 내용은 Python의 런타임 종속 항목 섹션을 참조하세요.
앱 배포
수동으로 또는 AWS SAM(을)를 사용하여 이 예제 앱의 리소스를 만들고 배포할 수 있습니다. 프로덕션 환경에서는 수동 프로세스를 사용하지 않고 전체 서버리스 애플리케이션을 빠르고 반복적으로 배포하는 AWS SAM 등의 IaC 도구를 사용할 것을 권장합니다.
앱을 수동으로 배포하려면:
-
소스 및 대상 Amazon S3 버킷 만들기
-
PDF 파일을 암호화하고 암호화된 버전을 S3 버킷에 저장하는 Lambda 함수를 생성합니다.
-
객체가 원본 버킷에 업로드될 때 함수를 간접적으로 간접 호출하는 Lambda 트리거를 구성합니다.
시작하기 전에 빌드 머신에 Python
2개의 S3 버킷 생성
먼저 2개의 S3 버킷을 생성합니다. 첫 번째 버킷은 PDF 파일을 업로드할 원본 버킷입니다. 두 번째 버킷은 Lambda에서 함수를 간접적으로 간접 호출할 때 암호화된 파일을 저장하는 데 사용됩니다.
실행 역할 만들기
실행 역할은 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 Lambda 함수에 부여하는 IAM 역할입니다. 함수에 Amazon S3에 대한 읽기 및 쓰기 액세스 권한을 부여하려면 AWS관리형 정책을AmazonS3FullAccess
연결합니다.
함수 배포 패키지 생성
함수를 생성하려면 함수 코드와 해당 종속 항목을 포함하는 배포 패키지를 생성합니다. 이 애플리케이션의 경우, 함수 코드는 PDF 암호화를 위해 별도의 라이브러리를 사용합니다.
배포 패키지를 만드는 방법
-
이전에 GitHub에서 만들거나 다운로드한
lambda_function.py
및requirements.txt
파일이 들어 있는 프로젝트 디렉터리로 이동하여package
의 이름으로 새 디렉터리를 생성합니다. -
다음 명령어를 실행하여
requirements.txt
파일에 지정된 종속성을package
디렉터리의 디렉터리에 설치합니다.pip install -r requirements.txt --target ./package/
-
애플리케이션 코드와 해당 종속 항목을 포함한 .zip 파일 만들기 Linux 또는 MacOS에서 명령줄 인터페이스에서 다음 명령을 실행합니다.
cd package zip -r ../lambda_function.zip . cd .. zip lambda_function.zip lambda_function.py
Windows에서는 선호하는 zip 도구를 사용하여
lambda_function.zip
파일을 생성합니다.lambda_function.py
파일과 종속 항목이 포함된 폴더가 모두 .zip 파일의 루트에 있는지 확인합니다.
Python 가상 환경을 사용하여 배포 패키지를 생성할 수도 있습니다. Python Lambda 함수에 대한 .zip 파일 아카이브 작업 섹션을 참조하세요
Lambda 함수 생성
이제 이전 단계에서 생성한 배포 패키지를 사용하여 Lambda 함수를 배포합니다.
함수를 간접적으로 간접 호출하도록 Amazon S3 구성
원본 버킷에 이미지를 업로드할 때 Lambda 함수를 실행하려면 함수에 대한 트리거를 구성해야 합니다. 콘솔 또는 AWS CLI를 사용하여 Amazon S3 트리거를 구성할 수 있습니다.
중요
이 절차는 버킷에 객체가 생성될 때마다 함수를 간접 호출하도록 S3 버킷을 구성합니다. 원본 버킷에서만 이를 구성해야 합니다. Lambda 함수가 함수를 간접적으로 간접 호출하는 동일한 버킷에 객체를 생성하는 경우 함수를 루프에서 연속적으로 간접 호출
시작하기 전에 빌드 머신에 Docker
-
프로젝트 디렉터리에서 다음 코드를
template.yaml
이라는 새 파일에 붙여넣습니다. 자리 표시자 버킷 이름을 다음과 같이 바꿉니다.-
소스 버킷의 경우
amzn-s3-demo-bucket
을 S3 버킷 이름 지정 규칙을 준수하는 이름으로 바꿉니다. -
대상 버킷의 경우
amzn-s3-demo-bucket-encrypted
(을)를<source-bucket-name>-encrypted
(으)로 바꾸십시오. 여기서<source-bucket>
(은)는 원본 버킷으로 선택한 이름입니다.
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: EncryptPDFFunction: Type: AWS::Serverless::Function Properties: FunctionName: EncryptPDF Architectures: [x86_64] CodeUri: ./ Handler: lambda_function.lambda_handler Runtime: python3.12 Timeout: 15 MemorySize: 256 LoggingConfig: LogFormat: JSON Policies: - AmazonS3FullAccess Events: S3Event: Type: S3 Properties: Bucket: !Ref PDFSourceBucket Events: s3:ObjectCreated:* PDFSourceBucket: Type: AWS::S3::Bucket Properties: BucketName:
amzn-s3-demo-bucket
EncryptedPDFBucket: Type: AWS::S3::Bucket Properties: BucketName:amzn-s3-demo-bucket-encrypted
AWS SAM 템플릿은 앱용으로 만드는 리소스를 정의합니다. 이 예제에서 템플릿은
AWS::Serverless::Function
유형을 사용하여 Lambda 함수를 정의하고AWS::S3::Bucket
유형을 사용하여 S3 버킷 두 개를 정의합니다. 템플릿에 지정된 버킷 이름은 플레이스홀더입니다. AWS SAM을 사용하여 앱을 배포하기 전에, 템플릿을 편집하여 S3 버킷 이름 지정 규칙을 충족하는 전역적으로 고유한 이름을 가진 버킷의 이름으로 변경해야 합니다. 이 단계에 대해서는 AWS SAM(을)를 사용하여 리소스 만들기에서 자세히 설명합니다.Lambda 함수 리소스의 정의는
S3Event
이벤트 속성을 사용하여 함수에 대한 트리거를 구성합니다. 이 트리거를 사용하면 소스 버킷에서 객체가 생성될 때마다 함수가 간접 호출됩니다.또한 함수 정의는 함수의 실행 역할에 연결할 AWS Identity and Access Management(IAM) 정책을 지정합니다. AWS관리형 정책
AmazonS3FullAccess
은 Amazon S3에 객체를 읽고 쓰는 데 필요한 권한을 함수에 제공합니다. -
-
template.yaml
,lambda_function.py
,requirements.txt
파일을 저장한 디렉터리에서 다음 명령을 실행합니다.sam build --use-container
이 명령은 응용 프로그램의 빌드 아티팩트를 수집하여 배포에 적합한 형식과 위치에 배치합니다.
--use-container
옵션을 지정하면 Lambda와 유사한 Docker 컨테이너 내에 함수를 빌드합니다. 여기서는 이 옵션을 사용하므로, 빌드가 작동하기 위해 로컬 컴퓨터에 Python 3.12가 설치되어 있지 않아도 됩니다.빌드 프로세스 중, AWS SAM(은)는 템플릿의
CodeUri
속성으로 지정한 위치에서 Lambda 함수 코드를 찾습니다. 이 경우에는 현재 디렉토리를 위치(./
)로 지정했습니다.requirements.txt
파일이 있는 경우, AWS SAM(은)는 해당 파일을 사용하여 지정된 종속성을 수집합니다. AWS SAM(은)는 기본적으로 함수 코드 및 종속성이 포함된 .zip 배포 패키지 패키지를 생성합니다. PackageType 속성을 사용하여 함수를 컨테이너 이미지로 배포하도록 선택할 수도 있습니다. -
애플리케이션을 배포하고 AWS SAM 템플릿에 지정된 Lambda 및 Amazon S3 리소스를 생성하려면 다음 명령을 실행합니다.
sam deploy --guided
--guided
플래그를 사용하면 배포 AWS SAM 프로세스를 안내하는 메시지가 표시됩니다. 이 배포의 경우 Enter를 눌러 기본 옵션을 수락합니다.
배포 프로세스 중에 AWS SAM은 다음 리소스를 AWS 계정 위치에 생성합니다.
-
AWS CloudFormation 스택의 이름은
sam-app
입니다. -
EncryptPDF
이름을 가진 Lambda 함수입니다. -
template.yaml
AWS SAM 템플릿 파일을 편집할 때 선택한 이름을 가진 S3 버킷 2개 -
sam-app-EncryptPDFFunctionRole-
이름 형식을 사용하는 함수의 IAM 실행 역할2qGaapHFWOQ8
AWS SAM(이)가 리소스 생성을 마치면 다음 메시지가 표시됩니다.
Successfully created/updated stack - sam-app in us-east-2
앱 테스트
앱을 테스트하려면 원본 버킷에 PDF 파일을 업로드하고 Lambda가 대상 버킷에 파일의 암호화된 버전을 생성하는지 확인합니다. 이 예시에서는 콘솔이 또는 AWS CLI(을)를 사용하거나 제공된 테스트 스크립트를 사용하여 수동으로 테스트할 수 있습니다.
프로덕션 애플리케이션의 경우 단위 테스트와 같은 기존 테스트 방법 및 기법을 사용하여 Lambda 함수 코드가 올바르게 작동하는지 확인할 수 있습니다. 또한 제공된 테스트 스크립트와 같은 테스트를 수행하여 실제 클라우드 기반 리소스와의 통합 테스트를 수행하는 것이 가장 좋습니다. 클라우드에서의 통합 테스트를 통해 인프라가 올바르게 배포되었으며 예상대로 서로 다른 서비스 간에 이벤트가 전달되는지 확인할 수 있습니다. 자세한 내용은 서버리스 함수 및 애플리케이션을 테스트하는 방법을 참조하십시오.
Amazon S3 소스 버킷에 PDF 파일을 추가하여 함수를 수동으로 테스트할 수 있습니다. 원본 버킷에 파일을 추가하면 Lambda 함수가 자동으로 간접 호출되고 대상 버킷에 파일의 암호화된 버전을 저장해야 합니다.
프로젝트 디렉터리에 다음 파일을 생성합니다.
-
test_pdf_encrypt.py
- 애플리케이션을 자동으로 테스트하는 데 사용할 수 있는 테스트 스크립트 -
pytest.ini
- 테스트 스크립트의 구성 파일
다음 섹션을 확장하여 코드를 확인하고 각 파일의 역할에 대해 자세히 알아보세요.
다음 코드를 복사하여 새로운 test_pdf_encrypt.py
파일에 붙여 넣습니다. 자리 표시자 버킷 이름을 바꾸어야 합니다.
-
test_source_bucket_available
함수에서amzn-s3-demo-bucket
의 값을 원본 버킷의 이름으로 바꿉니다. -
test_encrypted_file_in_bucket
함수에서amzn-s3-demo-bucket-encrypted
의 값을source-bucket-encrypted
으로 바꿉니다. 여기서source-bucket>
(은)는 원본 버킷의 이름입니다. -
cleanup
함수에서amzn-s3-demo-bucket
을 소스 버킷의 이름으로 바꾸고,amzn-s3-demo-bucket-encrypted
를 대상 버킷의 이름으로 바꿉니다.
import boto3
import json
import pytest
import time
import os
@pytest.fixture
def lambda_client():
return boto3.client('lambda')
@pytest.fixture
def s3_client():
return boto3.client('s3')
@pytest.fixture
def logs_client():
return boto3.client('logs')
@pytest.fixture(scope='session')
def cleanup():
# Create a new S3 client for cleanup
s3_client = boto3.client('s3')
yield
# Cleanup code will be executed after all tests have finished
# Delete test.pdf from the source bucket
source_bucket = 'amzn-s3-demo-bucket'
source_file_key = 'test.pdf'
s3_client.delete_object(Bucket=source_bucket, Key=source_file_key)
print(f"\nDeleted {source_file_key} from {source_bucket}")
# Delete test_encrypted.pdf from the destination bucket
destination_bucket = 'amzn-s3-demo-bucket-encrypted'
destination_file_key = 'test_encrypted.pdf'
s3_client.delete_object(Bucket=destination_bucket, Key=destination_file_key)
print(f"Deleted {destination_file_key} from {destination_bucket}")
@pytest.mark.order(1)
def test_source_bucket_available(s3_client):
s3_bucket_name = 'amzn-s3-demo-bucket'
file_name = 'test.pdf'
file_path = os.path.join(os.path.dirname(__file__), file_name)
file_uploaded = False
try:
s3_client.upload_file(file_path, s3_bucket_name, file_name)
file_uploaded = True
except:
print("Error: couldn't upload file")
assert file_uploaded, "Could not upload file to S3 bucket"
@pytest.mark.order(2)
def test_lambda_invoked(logs_client):
# Wait for a few seconds to make sure the logs are available
time.sleep(5)
# Get the latest log stream for the specified log group
log_streams = logs_client.describe_log_streams(
logGroupName='/aws/lambda/EncryptPDF',
orderBy='LastEventTime',
descending=True,
limit=1
)
latest_log_stream_name = log_streams['logStreams'][0]['logStreamName']
# Retrieve the log events from the latest log stream
log_events = logs_client.get_log_events(
logGroupName='/aws/lambda/EncryptPDF',
logStreamName=latest_log_stream_name
)
success_found = False
for event in log_events['events']:
message = json.loads(event['message'])
status = message.get('record', {}).get('status')
if status == 'success':
success_found = True
break
assert success_found, "Lambda function execution did not report 'success' status in logs."
@pytest.mark.order(3)
def test_encrypted_file_in_bucket(s3_client):
# Specify the destination S3 bucket and the expected converted file key
destination_bucket = 'amzn-s3-demo-bucket-encrypted'
converted_file_key = 'test_encrypted.pdf'
try:
# Attempt to retrieve the metadata of the converted file from the destination S3 bucket
s3_client.head_object(Bucket=destination_bucket, Key=converted_file_key)
except s3_client.exceptions.ClientError as e:
# If the file is not found, the test will fail
pytest.fail(f"Converted file '{converted_file_key}' not found in the destination bucket: {str(e)}")
def test_cleanup(cleanup):
# This test uses the cleanup fixture and will be executed last
pass
자동화된 테스트 스크립트는 세 가지 테스트 함수를 실행하여 앱이 올바르게 작동하는지 확인합니다.
-
테스트(
test_source_bucket_available
)에서는 테스트 PDF 파일을 버킷에 업로드하여 원본 버킷이 성공적으로 생성되었는지 확인합니다. -
테스트(
test_lambda_invoked
)에서는 함수에 대한 최신 CloudWatch Logs 로그 스트림을 조사하여 테스트 파일을 업로드했을 때 Lambda 함수가 실행되고 성공을 보고했는지 확인합니다. -
테스트(
test_encrypted_file_in_bucket
)는 대상 버킷에 암호화된test_encrypted.pdf
파일이 들어 있는지 확인합니다.
이러한 모든 테스트가 실행된 후 스크립트는 추가 정리 단계를 실행하여 원본 및 대상 버킷 모두에서 test.pdf
및 test_encrypted.pdf
파일을 삭제합니다.
AWS SAM 템플릿과 마찬가지로 지정된 버킷 이름은 플레이스홀더입니다. 테스트를 실행하기 전에 앱의 실제 버킷 이름을 사용하여 이 파일을 편집해야 합니다. 이 단계에 대해서는 자동 스크립트로 앱을 테스트하기에서 자세히 설명합니다.
다음 코드를 복사하여 새로운 pytest.ini
파일에 붙여 넣습니다.
[pytest] markers = order: specify test execution order
이는 test_pdf_encrypt.py
스크립트의 테스트 실행 순서를 지정하는 데 필요합니다.
테스트를 실행하려면 다음을 수행합니다.
-
pytest
모듈이 로컬 환경에 설치되어 있는지 확인합니다. 다음 명령을 실행하여pytest
(을)를 설치합니다.pip install pytest
-
test_pdf_encrypt.py
및pytest.ini
파일이 들어 있는 디렉터리에test.pdf
라는 이름이 지정된 PDF 파일을 저장합니다. -
터미널 또는 쉘 프로그램을 열고 테스트 파일이 포함된 디렉터리에서 다음 명령을 실행합니다.
pytest -s -v
테스트가 완료되면 다음이 출력됩니다.
============================================================== test session starts ========================================================= platform linux -- Python 3.12.2, pytest-7.2.2, pluggy-1.0.0 -- /usr/bin/python3 cachedir: .pytest_cache hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('/home/pdf_encrypt_app/.hypothesis/examples') Test order randomisation NOT enabled. Enable with --random-order or --random-order-bucket=<bucket_type> rootdir: /home/pdf_encrypt_app, configfile: pytest.ini plugins: anyio-3.7.1, hypothesis-6.70.0, localserver-0.7.1, random-order-1.1.0 collected 4 items test_pdf_encrypt.py::test_source_bucket_available PASSED test_pdf_encrypt.py::test_lambda_invoked PASSED test_pdf_encrypt.py::test_encrypted_file_in_bucket PASSED test_pdf_encrypt.py::test_cleanup PASSED Deleted test.pdf from amzn-s3-demo-bucket Deleted test_encrypted.pdf from amzn-s3-demo-bucket-encrypted =============================================================== 4 passed in 7.32s ==========================================================
다음 단계
이제 이 예제 앱을 만들었 봤으니, 제공된 코드를 기반으로 다른 유형의 파일 처리 응용 프로그램을 만들 수 있습니다. lambda_function.py
파일의 코드를 수정하여 사용 사례에 맞는 파일 처리 로직을 구현하십시오.
대부분의 일반적인 파일 처리 사용 사례는 이미지 처리를 포함됩니다. Python을 사용할 때 필로우
AWS SAM(으)로 리소스를 배포할 때는 배포 패키지에 올바른 소스 배포를 포함하기 위해 몇 가지 추가 단계를 거쳐야 합니다. AWS SAM(은)는 빌드 머신과 다른 플랫폼에 대한 종속성을 설치하지 않으므로 빌드 머신이 Lambda 실행 환경과 다른 운영 체제 또는 아키텍처를 사용하는 경우 requirements.txt
파일에 올바른 소스 배포(.whl
파일)를 지정해도 작동하지 않습니다. 대신 다음 중 하나를 수행하십시오.
-
sam build
(을)를 실행 시--use-container
옵션을 사용하십시오. 이 옵션을 지정하면 AWS SAM(은)는 Lambda 실행 환경과 호환되는 컨테이너 기본 이미지를 다운로드하고 해당 이미지를 사용하여 Docker 컨테이너에 함수의 배포 패키지를 빌드합니다. 자세한 내용은 제공된 컨테이너 내에 Lambda 함수 빌드하기를 확인하십시오. -
올바른 소스 배포 바이너리를 사용하여 함수의 .zip 배포 패키지를 직접 빌드하고 AWS SAM 템플릿에서
CodeUri
(으)로 지정한 디렉터리에 .zip 파일을 저장합니다. 바이너리 배포를 사용하여 Python용 .zip 배포 패키지를 빌드하는 방법에 대한 자세한 내용은 종속 항목이 있는 .zip 배포 패키지 생성 및 네이티브 라이브러리로 .zip 배포 패키지 생성(을)를 참조하십시오.