現在のGitHub Actionsのホストランナー別AWSCLIバージョン及び各インストール手段について調べてみた

「GitHub Actions上でAWSCLI v2を使うなら追加インストール必須」と思いこんでました。それは既にUbuntu 18.04に限られる状況だったようです。
2021.08.31

GitHub Actions上でAWSCLIを使う場合、ActionあるいはShellScriptベース、Dockerにて追加インストールが必要だと思いこんでいました。使っていたWorkflowの見直しついでに現状を確認すると、一部OSを除いては最新バージョンを常に追いかけたい時を除いては追加インストールする必要はないかも、と。

各host runnerでのバージョン、及びActionや公式Docker等でインストールするのはどういった時が好ましそうなのか、調べて確認した内容をまとめてみました。

host runner別のツールバージョン

記事執筆時点で、GitHub Actionsのrunner os別にインストールされているAWSCLI及び関連CLIのバージョンは以下の通り。常にAWSCLI v2の追加インストールに迫られるのはUbuntuの16.04か18.04を使っている場合のみです。

AWSCLI のhost runner別バージョン

runner-os version
Ubuntu 16.04 1.19.84
Ubuntu 18.04 1.20.21
Ubuntu 20.04 2.2.29
macOS 10.13 2.1.37
macOS 10.14 2.2.29
macOS 10.15 2.2.29
macOS 11.5 2.2.29
Microsoft Windows Server 2016 Datacenter 2.2.29
Microsoft Windows Server 2019 Datacenter 2.2.29
Microsoft Windows Server 2022 Datacenter 2.2.30

AWS CLI Session manager plugin のhost runner別バージョン

runner-os version
Ubuntu 16.04 1.19.84
Ubuntu 18.04 1.2.234.0
Ubuntu 20.04 1.2.234.0
macOS 10.13 1.2.30.0
macOS 10.14 1.2.234.0
macOS 10.15 1.2.234.0
macOS 11.5 1.2.234.0
Microsoft Windows Server 2016 Datacenter 1.2.234.0
Microsoft Windows Server 2019 Datacenter 1.2.234.0
Microsoft Windows Server 2022 Datacenter 1.2.245.0

AWS SAM CLIのhost runner別バージョン

runner-os version
Ubuntu 16.04 1.19.84
Ubuntu 18.04 1.27.2
Ubuntu 20.04 1.27.2
macOS 10.13 1.22.0
macOS 10.14 1.27.2
macOS 10.15 1.27.2
macOS 11.5 1.27.2
Microsoft Windows Server 2016 Datacenter 1.27.2
Microsoft Windows Server 2019 Datacenter 1.27.2
Microsoft Windows Server 2022 Datacenter 1.28.0

公式Dockerイメージが有効なシーンについて

以下の要件を満たす場合は、公式のDockerイメージをおすすめします。

  • 常にv2の最新版にしたい
  • awscliのコマンド実行頻度がそれほど高くない

利用時は run にて。末尾に実行するawscliのコマンドをいれます。以下はLinuxの場合。

- name: s3 ls
  run: docker run --rm -i -v ~/.aws:/root/.aws amazon/aws-cli aws s3 ls

ドキュメントに指定されているコマンドをそのまま使うと、以下のエラーとなるため注意が必要です。

the input device is not a TTY

Action経由でのインストール

実装にもよりますが、メジャーなActionは公式インストーラをダウンロードしてくるものがほとんどです。

action-aws-cli

AWSCLI v1用の公式インストーラをダウンロード、及びインストールします。OS毎の違いを吸収してくれるため、host runnerにどれを選んでも問題ないのがポイント。

最新のAWSCLIはv2となっているため、リポジトリはArchiveされています。

install-aws-cli-actions

指定されたバージョンのAWSCLIをダウンロード、及びインストールします。現時点ではv1系とv2系の指定のみに対応。利用する場合のメリットは以下の通り。

  • 該当バージョンがあるかどうかのチェックがある
  • Amazon Lightsail コンテナサービスプラグインのインストールもオプションで可能
  • Lightsail コンテナサービスプラグインのインストールを行った場合の正常インストールチェックを行う
  • AWSCLIが既にインストールされている場合は、アップデートに切り替える

Ubuntu 16.04か18.04を使っている場合に、Dockerでの実行スタイルが気に入らない時には必須かもしれません。

あとがき

Ubuntu 16.04 の host runnerは除外アナウンスが出ています。未だ利用している場合は18.04に上げる等早めに対応しましょう。Ubuntu 16.04 environment will be removed on September 20, 2021

Ubuntu 18.04以外を利用している場合は、常に最新ではないもののGitHub側が定期更新しているためそれほど気にする必要はなさそうです。18.04を使っている場合は20.04へアップデートする動機の一つに使うのも手かもしれません。