こんにちは。
アプリケーションサービス部、DevOps担当の兼安です。
今回はAmazon CodeCatalystで、GitHub Actionsのワークフローを動かす際、ランタイム環境に注意が必要なことをお話しします。
- 本記事のターゲット
- Amazon CodeCatalystとは
- GitHub Actionsで書いたワークフローをAmazon CodeCatalystで実行する方法
- CodeCatalystによるGitHub Actionsの動かし方
- まとめ
本記事のターゲット
AWSで完結したGit環境を構築したいエンジニアを対象としています。
Amazon CodeCatalystとは
Amazon CodeCatalyst(以降、CodeCatalystと記述)は、AWSが提供する開発者向けの統合開発環境です。
GitHubやGitLabのようなGitリポジトリをホストするサービスで、AWSの各種サービスと連携してCI/CDを実現することができます。
AWS CodePipelineと異なり、CI/CDだけでなくIssue管理などの機能を備え、統合開発環境の色が濃くなっています。
GitHub Actionsで書いたワークフローをAmazon CodeCatalystで実行する方法
CodeCatalystでCI/CDを作る場合、ワークフローを作成します。
この時、その定義はYAML形式で記述し、リポジトリ内の.codecatalyst/workflows
ディレクトリに配置します。
定義YAMLは、CodeCatalyst特有の形式となっており、GitHub ActionsやAWS CodeBuildのbuildspec.yml
などとは異なります。
とはいえ、CodeCatalystは後発なので今から新しい形式で定義YAMLを作るのは迷うところ。
これに対し、CodeCatalystはGitHub Actionsを動かす機能を持っています。
これが、本記事で述べているCodeCatalystが提供するGitHub Actionsのランタイム環境とは、この機能で使用されるものです。
CodeCatalystによるGitHub Actionsの動かし方
CodeCatalystのワークフローでGitHub Actionsを動かすには、以下の手順を踏みます。
- ワークフローを作成する
- ワークフローにGitHub Actions by AWSを追加する
.codecatalyst/workflows
にYAMLファイルができるので編集する
ワークフローの作成と、GitHub Actions by AWSの配置
まずは、CodeCatalystのワークフローを作成します。
CodeCatalystの画面左側のナビゲーションペインから「Workflow」を選択し、「Create workflow」をクリックします。


Workflowの編集画面が表示されます。
左上の「Actions」をクリック。
次に「GitHub」を選択し、表示される「GitHub Actions by AWS」を選択します。
これで、画面中央にGitHub Actionsが追加されます。

「Sources」にWorkflowSource
を選択、それ以外は特に変更の必要はありません。
「Commit」をクリックします。

この後、リポジトリの方を見ると、.codecatalyst/workflows
ディレクトリが作成され、YAMLファイルが作成されているはずです。

作ったばかりの内容はこちらです。
Name: Workflow_77ec SchemaVersion: "1.0" # Optional - Set automatic triggers. Triggers: - Type: Push Branches: - develop # Required - Define action configurations. Actions: GitHubActions_b9: # Identifies the action. Do not modify this value. Identifier: aws/github-actions-runner@v1.0.0 Inputs: Sources: - WorkflowSource # Defines the action's properties. Configuration: # Required - Steps are sequential instructions that run shell commands Steps: - name: Hello_world_action uses: actions/hello-world-javascript-action@v1.1 with: who-to-greet: Mona the Octocat Compute: Type: EC2
以降は、このYAMLファイルを編集していきます。
なお、CodeCatalystのGUIで編集して、YAMLファイルに反映することもできますが、今回その手順は省略します。
作成した後に、一度プッシュしてみてください。
ワークフローが実行されるのが確認できると思います。
CodeCatalystのワークフローのYAMLファイルにGitHub Actionsの内容を移植してみる
次に、GitHub Actionsの内容をCodeCatalystのワークフローに移植してみます。
GitHub Actionsのワークフローは、以下のような内容で、GitHub Actionsにおいて正常終了することを確認しています。
ジョブは2つ用意しています。
name: GitHub Actions Workflow on: push: branches: - main workflow_dispatch: jobs: first_job: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '23.10.0' - name: Install dependencies run: npm install second_job: runs-on: ubuntu-latest steps: - name: Echo message run: echo "This is the second job"
CodeCatalystのワークフローのYAMLファイルに移植した結果はこちらです。
Name: CodeCatalyst_GitHub_Actions_Workflow SchemaVersion: "1.0" # Optional - Set automatic triggers. Triggers: - Type: Push Branches: - main # Required - Define action configurations. Actions: FirstJob: # Identifies the action. Do not modify this value. Identifier: aws/github-actions-runner@v1.0.0 # Specifies the source and/or artifacts to pass to the action as input. Inputs: # Optional Sources: - WorkflowSource # This specifies that the action requires this Workflow as a source # Defines the action's properties. Configuration: # Required - Steps are sequential instructions that run shell commands Steps: - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '23.10.0' - name: Install dependencies run: npm install Compute: Type: EC2 SecondJob: Identifier: aws/github-actions-runner@v1.0.0 Configuration: Steps: - name: Echo message run: echo "This is the second job" Compute: Type: EC2
first_job
・second_job
に相当するFirstJob
・SecondJob
を作り、それぞれIdentifier
でランタイム環境を指定しています。
ランタイム環境は、aws/github-actions-runner@v1.0.0
を指定します。
そして、first_job
・second_job
のsteps
に相当する部分をConfiguration.Steps
の中に記述します。
ただし、actions/checkout@v3
の部分は移植する必要がないので、削除しています。
actions/checkout@v3
は行うのはソースのチェックアウトですが、WorkflowSource
で指定しているので、不要です。
Steps
の中身以外はCodeCatalystの形式に合わせる必要があります。
GitHub Actionsのワークフローを流用しようと考えた場合、実質的にそのまま流用できるのは、ジョブの定義のみとなります。
移植自体はこれで完了ですが、これを実行するとFirstJob
の方で以下のエラーが出ます。

[Container] 2025/05/XX XX:XX:XX npm install [Container] 2025/05/XX XX:XX:XX env: [Container] 2025/05/XX XX:XX:XX AWS_REGION: us-west-2 [Container] 2025/05/XX XX:XX:XX node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) [Container] 2025/05/XX XX:XX:XX node: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by node) [Container] 2025/05/XX XX:XX:XX node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node) [Container] 2025/05/XX XX:XX:XX ##[error]Process completed with exit code 1.
この理由は、aws/github-actions-runner@v1.0.0
にあります。
aws/github-actions-runner@v1.0.0
にGLIBC_2.27
・GLIBC_2.28
が含まれていないのが原因です。
aws/github-actions-runnerとは
aws/github-actions-runner
は、AWSが提供するGitHub Actionsを動かすためのランタイム環境です。
このランタイム環境には制限事項があります。
Amazon CodeCatalystユーザーガイド CodeCatalyst における GitHub Action の制限事項
GitHub Actions は 2022 年 11 月のランタイム環境 Docker イメージで実行されており、このイメージには古いツールが含まれています。 イメージやツールの詳細については、「ランタイム環境イメージの指定」を参照してください。
そして、このランタイム環境に含まれるNode.jsのバージョンは、以下のページで確認できます。
Amazon CodeCatalystユーザーガイド ランタイム環境イメージの指定
Node.jsのバージョンは、16.20.2とあります。
ランタイムに含まれるNode.jsが16.20.2であるため、その実行に必要なGLIBCのバージョンも古く、Node.jsのバージョンを上げるとGLIBCとの互換性がなくなるのがエラーの原因です。
これを回避するには、Node.jsのバージョンを下げるか、新しいバージョンのNode.jsとGLIBCおよび GitHub Actions Runner を使用可能なカスタムコンテナを作る必要があります。
まとめ
CodeCatalystは、GitHub Actionsのワークフローを動かす機能を持っていますが、以下の点に注意が必要です。
- CodeCatalystとGitHub Actions記法が一致するのはジョブの定義部分のみ
- CodeCatalystが提供するGitHub Actionsのランタイム環境は、GitHub Actionsがデフォルトで提供するランタイム環境と差がある
注意事項を押さえつつ利用すれば、有効に活用できる機能です。
本記事が、CodeCatalystを利用する際の参考になれば幸いです。
兼安 聡(執筆記事の一覧)
アプリケーションサービス部 DS3課所属
2025 Japan AWS Top Engineers (AI/ML Data Engineer)
2025 Japan AWS All Certifications Engineers
2025 AWS Community Builders
Certified ScrumMaster
PMP
広島在住です。今日も明日も修行中です。