circleCI에서 aws cli를 사용하여 lamda 환경에 배포

circleCi2.0에 aws-cli의 orbs가 추가된 것 같아서 사용해 보았습니다.
h tps : // / rc ぇ시. 코 m / 오 rbs / 레기 스트리 / 오 rb / 시 rc ぇ시 / 아 ws-c ぃ

이 기사에서 할 일



vue.js에서 만든 프로젝트를 Git으로 푸시 할 때 CircleCi가 빌드하고 배포하도록합니다.
cloudFormation의 cli를 이용하여 배포하고 싶기 때문에 aws 명령을 사용할 수 있도록하고 싶습니다.

CircleCI 설정



환경 변수 추가



환경 변수를 설정합니다.
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION

게다가, 이번 cloudFormation에서 Lamda에 업로드하는 빌드 완료 코드의 두는 장소에 S3 버킷을 지정하고 있는 것과, 스택명의 지정을 하고 있으므로 환경 변수에 더해 둡니다. 베타 쓰기도 좋다고 생각합니다.
- S3_BUCKET_NAME
- STACK_NAME


사용하는 IAM의 전환을 하고 싶은 경우는 환경 변수를 추가해 두고, 인수로서 주면 전환을 할 수 있을 것 같습니다.

config.yml 작성



완성된 yaml입니다.
version: 2.1
orbs:
  aws-cli: circleci/[email protected]
executors:
  default:
    working_directory: ~/workspace
    docker:
      - image: circleci/node:12.10
commands:
  prepare_node_dependency:
    description: "install node.js"
    steps:
      - restore_cache:
          key: dependency-cache-{{ checksum "package.json" }}
      - run:
          name: Install Dependencies
          command: npm ci
      - save_cache:
          key: dependency-cache-{{ checksum "package.json" }}
          paths:
            - node_modules
      - run:
          name: Check if Nodejs is Installed
          command: |
            node --version
            npm --version
  package_and_deploy:
    description: "build and deploy project"
    steps:
      - run:
          name: build project
          command: |
            npm run build
      - run:
          name: create package
          command: |
            aws cloudformation package --template-file cloudformation.yaml --s3-bucket $S3_BUCKET_NAME --output-template-file cloudformation_dist.yaml
      - run:
          name: deploy package
          command: |
            aws cloudformation deploy --template-file cloudformation_dist.yaml --stack-name $STACK_NAME --capabilities CAPABILITY_IAM
jobs:
  install_and_setup_cli:
    executor:
      name: default
    steps:
      - aws-cli/install
      - aws-cli/setup
  master_build_and_test:
    executor:
      name: default
    steps:
      - checkout
      - aws-cli/install
      - aws-cli/setup
      - prepare_node_dependency
      - package_and_deploy

workflows:
  master-build:
    jobs:
      - master_build_and_test:
          filters:
            branches:
              only: master


해설



orbs에 aws-cli를 지정합니다. 대응 버전은 2.1과 같습니다.
version: 2.1
orbs:
  aws-cli: circleci/[email protected]

jobs에서 aws-cli/install과 aws-cli/setup을 지정합니다.
jobs:
  install_and_setup_cli:
    executor:
      name: default
    steps:
      - aws-cli/install
      - aws-cli/setup

기본값으로 환경 변수에 지정한 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION에서 프로파일을 작성하는 것 같습니다만, 인수로서 다른 값을 지정할 수도 있습니다.
    steps:
      - aws-cli/install
      - aws-cli/setup:
            aws-access-key-id: 'OthereAwsAccessKeyId'
            aws-secret-access-key: 'OthereAwsAccessKeyId'

사용하려는 AWS cli를 commands에 씁니다.
commands:
#中略
  package_and_deploy:
    description: "build and deploy project"
    steps:
      - run:
          name: build project
          command: |
            npm run build
      - run:
          name: create package
          command: |
            aws cloudformation package --template-file cloudformation.yaml --s3-bucket $S3_BUCKET_NAME --output-template-file cloudformation_dist.yaml
      - run:
          name: deploy package
          command: |
            aws cloudformation deploy --template-file cloudformation_dist.yaml --stack-name $STACK_NAME --capabilities CAPABILITY_IAM

단계에서 AWS cli 설치 및 구성이 완료된 후 실행합니다.
    steps:
      - checkout
      - aws-cli/install
      - aws-cli/setup
      - prepare_node_dependency
      - package_and_deploy

좋은 웹페이지 즐겨찾기