AWS Lambda
개발자 가이드

Lambda 함수에서 AWS 리소스에 액세스

Lambda는 함수 로직에 어떠한 제한도 적용하지 않습니다. 로직을 코딩하고 Lambda 함수 내에서 실행할 수 있기만 하면 됩니다. 함수의 일부로 다른 API를 호출하거나 데이터베이스와 같은 다른 AWS 서비스에 액세스해야 할 수 있습니다.

AWS 제품 액세스

다른 AWS 서비스에 액세스하려면 AWS SDK를 사용하면 됩니다. AWS Lambda는 SDK에 필요한 자격 증명을 함수와 연결된 IAM 역할의 자격 증명으로 자동 설정합니다. 따라서 추가 단계를 수행할 필요가 없습니다. 예를 들어 다음은 S3 개체에 액세스하기 위해 Python SDK를 사용하는 샘플 코드입니다.

import boto3 import botocore BUCKET_NAME = 'my-bucket' # replace with your bucket name KEY = 'my_image_in_s3.jpg' # replace with your object key s3 = boto3.resource('s3') try: s3.Bucket(BUCKET_NAME).download_file(KEY, 'my_local_image.jpg') except botocore.exceptions.ClientError as e: if e.response['Error']['Code'] == "404": print("The object does not exist.") else: raise

편의를 위해 AWS Lambda에는 실행 환경의 일부로 AWS SDK의 여러 버전이 포함되어 있으므로 별도로 포함하지 않아도 됩니다. 포함된 SDK의 버전은 AWS Lambda 런타임 단원을 참조하십시오. 종속성을 제어할 수 있도록 프로덕션 애플리케이션용 자체 AWS SDK 사본을 포함하는 것이 좋습니다.

비 AWS 서비스 액세스

Lambda 함수 내에서 서비스에 액세스하기 위해 모든 SDK를 포함할 수 있습니다. 예를 들어 Twilio 계정의 정보에 액세스하기 위해 Twilio용 SDK를 포함할 수 있습니다. 자격 증명을 암호화한 후 AWS Lambda 환경 변수를 사용하여 SDK 자격 증명 정보를 저장할 수 있습니다.

프라이빗 서비스 또는 리소스 액세스

기본적으로 AWS Lambda용 퍼블릭 인터넷을 통해 서비스나 API에 액세스할 수 있어야 합니다. 하지만 이런 식으로 표시되지 않은 API나 서비스가 있을 수 있습니다. 일반적으로 이러한 리소스는 퍼블릭 인터넷을 통해 액세스할 수 없도록 Amazon Virtual Private Cloud(Amazon VPC) 내에 생성합니다. 이러한 리소스는 Amazon Redshift 데이터 웨어하우스, Amazon ElastiCache 클러스터 또는 Amazon RDS 인스턴스와 같은 AWS 서비스 리소스일 수 있습니다. 또한 자체 EC2 인스턴스에서 실행되는 자체 서비스일 수도 있습니다. 기본적으로 VPC 내의 리소스는 Lambda 함수 내에서 액세스할 수 없습니다.

AWS Lambda는 기본적으로 VPC 내에서 함수 코드를 안전하게 실행합니다. 하지만 Lambda 함수를 프라이빗 VPC 내부의 리소스에 액세스할 수 있게 하려면 VPC 서브넷 ID 및 보안 그룹 ID가 포함된 추가 VPC 관련 구성 정보를 제공해야 합니다. AWS Lambda는 이 정보를 사용하여 함수가 프라이빗 VPC 내의 다른 리소스에 안전하게 연결할 수 있게 하는 탄력적 네트워크 인터페이스(ENI)를 설정합니다.

중요

AWS Lambda는 전용 테넌시 VPC 내 리소스 연결을 지원하지 않습니다. 자세한 내용은 전용 VPC를 참조하십시오.

VPC 내에서 리소스에 액세스하기 위해 Lambda 함수를 구성하는 방법에 대해 알아보려면 VPC에서 리소스에 액세스하도록 Lambda 함수 구성 단원을 참조하십시오.