AWS Lambda
개발자 가이드

AWS Lambda 배포 패키지(PowerShell)

PowerShell Lambda 배포 패키지는 PowerShell 스크립트, PowerShell 스크립트에 필요한 PowerShell 모듈과 PowerShell Core를 호스팅하는 데 필요한 어셈블리가 포함된 ZIP 파일입니다.

AWSLambdaPSCore 모듈에는 PowerShell Lambda 함수 작성 및 게시에 유용하게 사용할 수 있는 다음과 같은 새 cmdlet이 있습니다.

AWSLambdaPSCore Cmdlets

  • Get-AWSPowerShellLambdaTemplate – 시작하기 템플릿의 목록을 반환합니다.

  • New-AWSPowerShellLambda – 템플릿을 기반으로 최초의 PowerShell 스크립트를 생성합니다.

  • Publish-AWSPowerShellLambda – 지정된 PowerShell 스크립트를 Lambda에 게시합니다.

  • Publish-AWSPowerShellLambda – 배포를 위해 CI/CD 시스템에서 사용할 수 있는 Lambda 배포 패키지를 생성합니다.

Lambda를 사용하여 PowerShell 스크립트를 작성해 호출하려면 New-AWSPowerShellLambda cmdlet을 사용하여 템플릿을 기반으로 스타터 스크립트를 생성할 수 있습니다. Publish-AWSPowerShellLambda cmdlet을 사용해 스크립트를 AWS Lambda에 배포할 수 있습니다. 그런 다음 명령줄 또는 콘솔에서 스크립트를 테스트할 수 있습니다.

새 PowerShell 스크립트를 생성한 다음 업로드 및 테스트하려면 다음 절차를 수행합니다.

  1. 다음 명령을 실행해 사용 가능한 템플릿 목록을 확인합니다.

    PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ...
  2. 다음 명령을 실행해 Basic 템플릿을 토대로 샘플 스크립트를 작성합니다.

    New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic

    현재 디렉터리의 새 하위 디렉터리에 MyFirstPSScript.ps1이라는 새 파일이 생성됩니다. 이 디렉터리의 이름은 -ScriptName 파라미터를 기반으로 지정됩니다. -Directory 파라미터를 사용하면 대체 디렉터리를 선택할 수 있습니다.

    새 파일의 내용은 다음과 같습니다.

    # PowerShell script file to be executed as a AWS Lambda function. # # When executing in Lambda the following variables will be predefined. # $LambdaInput - A PSObject that contains the Lambda function input data. # $LambdaContext - An Amazon.Lambda.Core.ILambdaContext object that contains information about the currently running Lambda environment. # # The last item in the PowerShell pipeline will be returned as the result of the Lambda function. # # To include PowerShell modules with your Lambda function, like the AWSPowerShell.NetCore module, add a "#Requires" statement # indicating the module and version. #Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.343.0'} # Uncomment to send the input to CloudWatch Logs # Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
  3. PowerShell 스크립트의 로그 메시지가 CloudWatch Logs로 전송되는 방법을 알아보려면 샘플 스크립트의 Write-Host 행의 주석 처리를 해제하십시오.

    Lambda 함수에서 데이터를 다시 반환하는 방법을 확인하려면 $PSVersionTable을 사용해 스크립트 끝에 새 행을 추가합니다. 그러면 PowerShell 파이프라인에 $PSVersionTable 테이블이 추가됩니다. PowerShell 스크립트가 완성되면 PowerShell 파이프라인의 마지막 객체가 Lambda 함수의 반환 데이터입니다. $PSVersionTable은 실행 환경에 대한 정보도 제공하는 PowerShell 전역 변수입니다.

    이와 같이 변경한 후 샘플 스크립트의 마지막 두 개 행은 다음과 같습니다.

    Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable
  4. MyFirstPSScript.ps1 파일 편집 후 디렉터리를 스크립트가 있는 위치로 변경합니다. 다음 명령을 실행하여 스크립트를 AWS Lambda에 게시합니다.

    Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name MyFirstPSScript -Region us-east-2

    -Name 매개변수는 Lambda 콘솔에 나타나는 Lambda 함수 이름을 지정합니다. 이 함수를 사용해 스크립트를 수동으로 호출할 수 있습니다.

  5. AWS CLI invoke 명령을 사용해 함수를 호출합니다.

    > aws lambda invoke --function-name MyFirstPSScript out