본문 바로가기
Web development/Infra

[Azure to AWS] Azure Pipeline으로 AWS Lambda 배포하기

by 자몬다 2020. 6. 19.

참고 : 기존 Azure function을 옮기는 경우, 일단 새로 생성하고 코드를 옮기는게 낫습니다. 프로젝트 구조가 아예 달라서 새로 만드는걸 추천합니다..

1. 람다 생성

새로운 람다를 생성합니다.

2. IAM User 생성 또는 선택

AWSLamdbdaFullAccess 권한을 가진 IAM User를 생성하거나, Access key ID & Secret을 준비합니다.
프로그래밍 방식 액세스 타입이어야 합니다.

3. Azure Repo 생성

리포지토리를 생성하고 파일을 추가합니다. 처음엔 아래와 같은 구조로 생성하면 됩니다.

my-lambda
├── index.js
└── .env
// index.js
exports.handler = (event, context, callback) => {
    // TODO implement
    callback(null, 'Hello from Lambda via Azure Pipelines');
};
// .env
AWS_ENVIRONMENT=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_PROFILE=
AWS_SESSION_TOKEN=
AWS_ROLE_ARN=
AWS_REGION=
AWS_FUNCTION_NAME=
AWS_HANDLER=index.handler
AWS_MEMORY_SIZE=128
AWS_TIMEOUT=3
AWS_DESCRIPTION=
AWS_RUNTIME=nodejs10.x
AWS_VPC_SUBNETS=
AWS_VPC_SECURITY_GROUPS=
AWS_TRACING_CONFIG=
AWS_LOGS_RETENTION_IN_DAYS=
EXCLUDE_GLOBS=
PACKAGE_DIRECTORY=build

.env 파일 빈칸은 안채워넣어도 됩니다. 런타임 도중에 채워진다고 합니다. 빈칸이어도 필요는 하다고 하네요.

위 두 파일을 repo에 푸시합니다.

4. 파이프라인 생성

pool:
  vmImage: 'Ubuntu 16.04'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm install node-lambda -g
  displayName: 'npm install'

- script: |
    node-lambda deploy -a $(AWS_ACCESS_KEY) -s $(AWS_SECRET_KEY) -o $(AWS_ROLE) -r $(AWS_REGION) -n $(AWS_LAMBDA_FUNCTION_NAME) --excludeGlobs "azure-pipelines.yml"
  displayName: 'Deploy to AWS'

위와 같이 파이프라인을 생성합니다. 환경변수가 없어서 실패하니 자동으로 트리거된 배포는 취소하면 됩니다.

5. 환경변수 등록

파이프라인 환경변수를 등록합니다. 우상단 Variables 버튼입니다.


– AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_ROLE, AWS_REGION, AWS_LAMBDA_FUNCTION_NAME
네가지만 입력하면 됩니다. AWS_ACCESS_KEY, AWS_SECRET_KEY는 ㅁ Keep this value secret 체크박스에 체크해주세요.
role은 역할 arn 입력하면 되고 리전은 ap-northeast-2 같이 입력하면 됩니다.

6. Run Pipeline

아마 별문제없이 배포될것입니다. 이제 람다 코딩을 하면 됩니다.
아래와 같은 구조를 유지해야 합니다.

my-lambda
├── index.js
├── .env
├── package.json
└── node_modules
    ├── ...
    ├── ...

~끝~

댓글