AWS Lambda에서 PowerShell 사용하기

이용준·2023년 8월 11일
0
post-thumbnail

개발환경

Dotnet7, AWS Console, MacOS

1. IAM 생성

AWS 웹콘솔 - 역할 - 역햘 생성
AWS 서비스 선택
일반 사용 사례 - Lambda 선택
권한은 AWSLambdaRole 선택

AWS 웹콘솔 - 사용자 - 사용자 생성
AWS Management Console에 대한 사용자 액세스 권한 제공 선택
IAM 사용자를 생성하고 싶음 선택
자동 생성된 암호 선택
직접 정책 연결 체크하고 AWSLambda_FullAccess

콘솔로그인 URL, 사용자 이름, 콘솔 암호는 안전한 곳에 저장한다.

2. 액세스 키 생성

AWS 웹콘솔 - 사용자 리스트에서 생성한 사용자 선택
액세스 키 만들기 클릭
Command Line Interface(CLI) 선택
태그값은 원하는 값 입력 (ex. cli_lambda_access)

생성된 일반키와 비밀키를 안전한 곳에 저장한다.

3. AWS Powershell 모듈 설치

Install-Module AWSLambdaPSCore, AWSPowerShell -Scope CurrentUser -Verbose -Force -Confirm:$false

4. AWS Credencial 생성

아래 코드에서 <>로 써진부분을 본인이 생성한 키로 변경

Import-Module AWSLambdaPSCore, AWSPowerShell
$AccessKey = '<일반키>'
$SecretKey = '<비밀키>'
$Region = '<리전>' # ex. 'us-east-1' 

Initialize-AWSDefaultConfiguration -AccessKey $accessKey -SecretKey $secretKey -Region $Region

생성된 자격증명 파일은 ~/.aws/credentials에서 확인 할 수 있다.

5. Powershell 작성

작업디렉토리로 이동한 뒤 기본 템플릿으로 파워쉘 코드 생성

New-AWSPowerShellLambda -ScriptName MyLambda -Template Basic

ScriptName으로 지정한 이름의 MyLambda.ps1 파일이 생성된다.
여기서는 테스트 하기위해 HTTP 요청 코드를 작성한다.

#Requires -Modules @{ModuleName='AWS.Tools.Common';ModuleVersion='4.1.29.0'}

$Response = Invoke-WebRequest 'https://catfact.ninja/fact' | ConvertFrom-Json
Write-Host $Response.fact

Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)

6. 업로드

Name은 ScriptName으로 지정한 이름, ScriptPath는 생성된 ps1파일 경로, IAMRoleArn은 AWS 웹콘솔에 접속한 뒤 1단계에서 생성한 역할을 눌러보면 Arn값을 확인 할 수 있다.

$Parameters = @{ 
    Name = 'MyLambda' 
    ScriptPath = './MyLambda/MyLambda.ps1'
    IAMRoleArn = 'arn:aws:iam::012345678:role/LambdaRole'
} 
 
Publish-AWSPowerShellLambda @Parameters

7. 테스트

AWS 웹콘솔 - Lambda 목록을 보면 업로드한 함수가 생성 된 것을 볼 수 있다.
테스트 버튼을 누르고 Cloud watch에 들어가서 내가 요청한 고양이에 대한 정보를 잘 받은 것을 확인했다.

profile
소프트웨어 개발자 유니티, 게임 서버

1개의 댓글

comment-user-thumbnail
2023년 8월 11일

개발자로서 배울 점이 많은 글이었습니다. 감사합니다.

답글 달기