CircleCI OrbsでAWS SAM CLIのバージョンを指定する

CircleCI OrbsでAWS CLIを簡単に使えます。今回は、CircleCI OrbsでAWS SAM CLIのバージョンを指定してみました。
2021.10.29

CircleCI Orbsを使えば、AWS SAM CLIを簡単に導入できます。

AWS SAM CLIのバージョンを指定しない場合は、最新バージョンを利用します。

ライブラリのバージョンを固定することは多いと思いますが、同じようにCLIツールのバージョンも固定する場合もあります。 特にAWS SAM CLIは、ローカルPCとCircleCI上のバージョンが異なるとハマる可能性があるので、バージョンを指定してみました。

おすすめの方

  • CircleCI OrbsでAWS SAM CLIのバージョンを固定したい方
  • CircleCI OrbsでAWS SAM CLIのオプションを指定したい方

参考:AWS SAM CLIの最新バージョンを利用してハマった話

CircleCI OrbsでAWS SAM CLIの最新バージョンを利用していました。そして、バージョン1.33が公開されたとき、sam build --use-containerで失敗する現象に遭遇しました。AWS SAM CLI自体が原因ではなく、他のAWSサービスのアップデートが原因でした。

本記事では、「バージョンを指定したほうが良い」「最新バージョンを使うほうが良い」の言及はしません。あくまでも参考としての紹介です。

AWS SAM CLIのバージョンを確認する

AWS SAM CLIのGitHubのTagを確認すると、下記となっています。

AWS SAM CLIのバージョン

CircleCIのワークフローを作成する

mkdir .circleci
touch .circleci/config.yml

CircleCIのconfigファイル

versionでAWS SAM CLIのバージョンを指定します。指定しない場合は、最新バージョンのAWS SAM CLIがインストールされます。 なお、AWS CLIと違って、vの文字も必要です。これは、GitHubのTagsの命名がvx.y.zとなっているからです。

.config.yml

version: 2.1

orbs:
  sam-cli: circleci/aws-sam-serverless@3.1.0

commands:
  check_version_latest:
    steps:
      - run:
          name: check version
          command: |
            sam --version

  check_version_fix:
    steps:
      - run:
          name: check version
          command: |
            sam --version
jobs:
  check_version_latest:
    executor: sam-cli/default
    steps:
      - checkout
      - sam-cli/install
      - check_version_latest

  check_version_fix:
    executor: sam-cli/default
    steps:
      - checkout
      - sam-cli/install:
          version: v1.31.0
      - check_version_fix

workflows:
  version: 2
  my-workflow:
    jobs:
      - check_version_latest:
          filters:
            tags:
              only: /.*/

      - check_version_fix:
          filters:
            tags:
              only: /.*/
          requires:
            - check_version_latest

CircleCIの設定を行う

プロジェクトのセットアップ

リポジトリをPushし、CircleCIでSet Up Projectを選択します。

プロジェクトをsetupする

configファイルのあるブランチ名を入力し、Let's GOを選択します。

configファイル設定のあるブランチ名を入力する

ワークフローが実行されますが、AWSアクセスキーの環境変数が無いので失敗します。

環境変数にアクセスキーを設定する

今回はバージョン確認をしたいだけなので、適当に設定します。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION

CircleCIに環境変数を設定

ワークフローの実行が完了するまで待ちます。

ワークフローが実行完了する

AWS SAM CLIのバージョンを確認する

check_version_latestのバージョン

最新バージョンの1.33.0がインストールされていました。

AWS SAM CLIのバージョン(最新)

SAM CLI, version 1.33.0

check_version_fixのバージョン

指定したバージョンの1.31.0がインストールされていました。

AWS SAM CLIのバージョン(指定)

SAM CLI, version 1.31.0

参考