AWSServerless FW

CircleCI 2.0でServerless Frameworkのプロジェクトをデプロイする

ちょっとハマったので覚書 注意点1:npm i -gはこける ローカルインストールするとLambdaのソースとしてアップロードされてしまうので、Serverless Frameworkはグローバルインストールさせたいとこ […]

広告ここから
広告ここまで

ちょっとハマったので覚書

注意点1:npm i -gはこける

ローカルインストールするとLambdaのソースとしてアップロードされてしまうので、Serverless Frameworkはグローバルインストールさせたいところです。

なので.circle/config.ymlに以下の様にコマンドを書いてグローバルインストールさせたいところ。

version: 2
jobs:
  build:
    docker:
      - image: circleci/node:7.10

    working_directory: ~/repo
    steps:
      - checkout
      - run:
          name: install-serverless
          command: npm install -g serverless

ですがこのままだと以下のようなエラーでFailします。


npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules' npm ERR! { Error: EACCES: permission denied, access '/usr/local/lib/node_modules' npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'access', npm ERR! path: '/usr/local/lib/node_modules' } npm ERR!

ここはnpm install -g serverlessではなく、sudo npm install -g serverlessとすると解決します。

注意点2:AWS Permissionsは2.0で動かない(2017/10/22時点)

フォーラムを見ていて気づいたのですが、現時点ではCircle CI2.0はAWS Permissionが未対応の様子です。
AWS keys not recognized – 2.0 Feature Requests – CircleCI Community Discussion

ちなみにそのまま実行すると、こうなります。


Serverless Error --------------------------------------- Could not locate deployment bucket. Error: Profile default does not exist Get Support -------------------------------------------- Docs: docs.serverless.com Bugs: github.com/serverless/serverless/issues Forums: forum.serverless.com Chat: gitter.im/serverless/serverless Your Environment Information ----------------------------- OS: linux Node Version: 7.10.1 Serverless Version: 1.23.0

ですので、CircleCI 2.0でAWS-CLIの認証情報を必要とする場合はEnvironment Variablesを使うようにします。

また、以下の様にServerless Frameworkのコマンドでcredentialsの設定をしておきましょう。

      - run:
          name: init-serverless-config
          command: sls config credentials -k ${AWS_ACCESS_KEY} -s ${AWS_SECRET_KEY} -p aws

ここまでやると、CircleCI 2.0のプロジェクトでServerless Frameworkのデプロイが実行できるようになりました。

.circleci/config.ymlサンプル

今の所、以下の様な書き方でデプロイさせてます。

version: 2
jobs:
  build:
    docker:
      - image: circleci/node:7.10

    working_directory: ~/repo

    steps:
      - checkout

      # Download and cache dependencies
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "package.json" }}
          # fallback to using the latest cache if no exact match is found
          - v1-dependencies-

      # install Serverless Framework
      - run:
          name: install-serverless
          command: sudo npm install -g serverless@1.23.0

      - run: npm install

      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}

      # run tests!
      - run:
          name: Run unit test
          command: npm run test
      - run:
          name: Check coding standard by ESLint
          command: npm run lint

      - deploy:
          name: Deploy by Serverless Framework
          command: |
            if [ "${CIRCLE_BRANCH}" == "master" ]; then
              sls config credentials -k ${AWS_ACCESS_KEY} -s ${AWS_SECRET_KEY} -p aws
              sls deploy
            else
              echo "Not master branch so not deploying"
            fi

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts