PowerShell에서 Lambda 함수 핸들러 정의 - AWS 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 문에 대한 자세한 내용은 Requires 정보를 참조하세요. PowerShell 배포 패키지에 대한 자세한 내용은 .zip PowerShell 파일 아카이브와 함께 Lambda 함수 배포 단원을 참조하세요.

PowerShell Lambda 함수가 AWS PowerShell cmdlet을 사용하는 경우 Windows PowerShell만 지원하는 AWSPowerShell 모듈이 아니라 PowerShell Core를 지원하는 AWSPowerShell.NetCore 모듈을 참조하는 #Requires 문을 설정해야 합니다. cmdlet 가져오기 프로세스를 최적화하는 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 전역 변수입니다.