PowerShell에서 AWS에 접근하기 위한 Credential 관련 사전 준비

AWS Tools for PowerShell 설치

위 링크에서는 Windows OS 환경에서 Windows PowerShell 5.1 또는 PowerShell Core에서 AWS Lambda를 호출하기 위한 설치를 안내합니다.

  1. AWS.Tools 를 이용하여 이용할 AWS 서비스 별로 부분적으로 다운 받아서 사용하는 방법

  2. Windows PowerShell 5.1을 사용하는 AWSPowerShell Module을 사용하는 방법

  3. PowerShell Core를 사용하는 AWSPowerShell.NetCore를 사용하는 방법

3가지가 소개 되어 있고, 이 글에서는 PowerShell Core 7에서 AWSPowerShell.NetCore를 사용하는 방법을 가이드하겠습니다.

  1. PowerShell Core 7을 실행하여 Install-Module cmdlet으로 AWS 모듈을 설치합니다.
    PS > Install-Module -name AWSPowerShell.NetCore
  2. 정상적으로 설치가 완료되었다면 Get-AWSPowerShellVersion 명령어를 이용하여 모듈의 버전을 확인할 수 있습니다.
    PS > Get-AWSPowerShellVersion
  3. PowerShell은 Module을 설치했다고 끝이 아니라 반드시 PowerShell Session에 Import 해야만 cmdlet을 사용할 수 있습니다.
    PS > Import-Module AWSPowerShell.NetCore
  4. PowerShell Core는 보안을 위해 ps1 script를 실행할 수 있는 상태와 실행할 수 없는 상태로 구분되어 있습니다. 지금은 ps1 script의 실행이 필요하기 때문에 아래 명령어로 Mode를 변경해야 합니다.
    PS > Set-ExecutionPolicy RemoteSigned

※ PowerShell Session을 종료할 경우 Import-Module AWSPowerShell.NetCore를 다시 실행해야 동작합니다. 그래서 PowerShell Session 실행 시 AWSPowerShell.NetCore를 자동으로 Import 하는 설정도 존재하지만 배포할 OS 마다 매번 설정하기는 어렵기 때문에 이 글에서는 그냥 ps1 script에서 Module를 Import 하는 방식으로 진행하겠습니다.

AWS Credential 설정

AWS Credential을 인증하는 방법이는 현대적인 방법인 AWS IAM Identity Center를 통해 인증하는 방법과 Lagacy 방식인 Local AWS File을 이용하는 방법이 있습니다.

두 방식은 엄연히 다른 방식이기 때문에 한쪽이 된다고 다른 한쪽이 되는 것은 아니며 사내 AWS 담당자가 활성화 해둔 방식으로만 접근할 수 있습니다.

저는 지금 AWS IAM Identity Center를 사용하지 않기 때문에 Lagacy 방식으로 접근하겠습니다.

AWS Console에서만 작업하는 직원이라면 AWS에 접근할 수 있는 AccessKey와 SecretKey가 따로 없겠지만, 기본적으로 AWS Lambda를 개발하는 직원은 AccessKey와 SecretKey가 필요합니다.

AWS 담당자에게 AccessKey와 SecretKey가 담긴 CSV Credential File을 발급받아서 어딘가 잘 저장해둡니다.

Visual Studio Code에서 AWS Toolkit Extension을 설치하여 사용할 때 확장기능으로 AWS에 IAM Credentials를 이용하여 로그인할 수 있습니다.

Profile Name은 프로필 파일에서 프로일의 이름을 지정하는 것이므로 AWS 담당자가 주는 게 아니라 본인이 새로 지정하는 것입니다.

그리고 AccessKey와 Secretkey를 입력하면 AWS Profile이 만들어 집니다.

image

Windows OS의 경우 일반적으로

C:\Users\{AD 또는 사용자 이름}\\.aws\credentials

라는 확장자 없는 파일로 생성되며 Text Editor를 사용하여 열면 ini format으로 Profile이 들어있습니다.

이렇게 Profile이 생기면 PowerShell에서 아래 명령어로 조회할 수 있습니다. (사전에 Import-Module AWSPowerShell.NetCore 필요)

PS > Get-AWSCredential -ListProfileDetail

Profile File에 제대로 기입되어 있다면 StoreTypeName Property에 SharedCredentialsFile Type으로 아까 만든 profile 내용이 확인될 것입니다.

여기까지 되면 PowerShell로 AWS에 접근할 준비가 다 된 것입니다.

2 Likes

Lambda를 실행할 수 있는 IAM 계정은 최소 Lambda:InvokeFunction 이라는 권한이 필요합니다.

Lambda라는 대 권한 밑에 InvokeFunction 이라는 소권한이 있습니다.

InvokeFunctionUrl, InvokeAsync 이런 것들과 함께 있습니다.