この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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を確認すると、下記となっています。
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
を選択します。
configファイルのあるブランチ名を入力し、Let's GO
を選択します。
ワークフローが実行されますが、AWSアクセスキーの環境変数が無いので失敗します。
環境変数にアクセスキーを設定する
今回はバージョン確認をしたいだけなので、適当に設定します。
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION
ワークフローの実行が完了するまで待ちます。
AWS SAM CLIのバージョンを確認する
check_version_latestのバージョン
最新バージョンの1.33.0
がインストールされていました。
SAM CLI, version 1.33.0
check_version_fixのバージョン
指定したバージョンの1.31.0
がインストールされていました。
SAM CLI, version 1.31.0
参考
- CircleCI Developer Hub - circleci/aws-sam-serverless
- CircleCI OrbsでAWS SAM CLIを超簡単に導入して使ってみる | DevelopersIO
- aws/aws-sam-cli: CLI tool to build, test, debug, and deploy Serverless applications using AWS SAM
- AWS CLI を設定する環境変数 - AWS Command Line Interface
- SAM CLI 1.33 Cannot Resolve ECR Container Images (Gets 404) · Issue #3329 · aws/aws-sam-cli