PowerShell에서 Lambda 함수 핸들러 정의
PowerShell에서 Lambda 함수 핸들러 정의
Lambda 함수가 호출되면 Lambda 핸들러가 PowerShell 스크립트를 실행합니다.
본문
PowerShell 스크립트가 호출되면 다음 변수가 미리 정의됩니다.
$LambdaInput– 핸들러에 대한 입력을 담은 PSObject입니다. 이 입력은 이벤트 소스가 게시한 이벤트 데이터이거나, 문자열이나 임의의 커스텀 데이터 객체처럼 사용자가 제공하는 커스텀 입력일 수 있습니다.$LambdaContext– 현재 호출에 대한 정보(현재 함수 이름, 메모리 한도, 남은 실행 시간, 로깅 등)에 접근하는 데 사용할 수 있는Amazon.Lambda.Core.ILambdaContext객체입니다.
예를 들어 다음 PowerShell 예제 코드를 살펴보세요.
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
Write-Host 'Function Name:' $LambdaContext.FunctionName
이 스크립트는 $LambdaContext 변수에서 얻은 FunctionName 속성을 반환합니다.
PowerShell 스크립트 안에서 #Requires 문을 사용해 스크립트가 의존하는 모듈을 표시해야 합니다. 이 문은 두 가지 중요한 작업을 수행합니다. 1) 다른 개발자에게 스크립트가 사용하는 모듈을 알려주고, 2) 배포의 일부로 AWS PowerShell 도구가 스크립트와 함께 패키징해야 하는 의존 모듈을 식별합니다. PowerShell의 #Requires 문에 대한 자세한 내용은 'About requires'를 참고하세요. PowerShell 배포 패키지에 대한 자세한 내용은 '.zip 파일 아카이브로 PowerShell Lambda 함수 배포' 문서를 참고하세요.
PowerShell Lambda 함수가 AWS PowerShell cmdlet을 사용할 때는 PowerShell Core를 지원하는 AWSPowerShell.NetCore 모듈을 참조하는 #Requires 문을 설정하세요. Windows PowerShell만 지원하는 AWSPowerShell 모듈은 사용하지 마세요. 또한 cmdlet import 프로세스를 최적화하는 AWSPowerShell.NetCore 버전 3.3.270.0 이상을 사용하세요. 이전 버전을 쓰면 콜드 스타트가 길어집니다. 자세한 내용은 'AWS Tools for PowerShell' 문서를 참고하세요.
데이터 반환하기
일부 Lambda 호출은 호출자에게 데이터를 돌려주기 위한 것입니다. 예를 들어 호출이 API Gateway에서 온 웹 요청에 대한 응답이라면 Lambda 함수는 응답을 돌려줘야 합니다. PowerShell Lambda에서 PowerShell 파이프라인에 추가된 마지막 객체가 Lambda 호출의 반환 데이터입니다. 객체가 문자열이면 데이터는 그대로 반환됩니다. 그렇지 않으면 ConvertTo-Json cmdlet을 사용해 객체를 JSON으로 변환합니다.
예를 들어 PowerShell 파이프라인에 $PSVersionTable을 추가하는 다음 PowerShell 문을 살펴보세요.
$PSVersionTable
PowerShell 스크립트가 끝난 뒤 PowerShell 파이프라인의 마지막 객체가 Lambda 함수의 반환 데이터가 됩니다. $PSVersionTable은 실행 환경에 대한 정보도 제공하는 PowerShell 전역 변수입니다.