エンジニアを目指す日常ブログ

日々勉強したことのメモ。独学ですので間違っていたらコメント等で教えてください。

AWS Amplify がビルドに失敗したときの原因をメモ

 はじめに

AWS AmplifyでReactアプリを作成しようとしたところ、ビルド実行時にエラーとなったので原因をメモ。

ビルド失敗の絵

前提

  • ソースコードはCodeCommitに保管する。
  • AWS Amplifyの「Host web App」を利用してアプリを作成する。

エラーの内容

エラーは以下。リポジトリ名、アプリ名はay-s-○○○○で伏せます。

2021-11-07T03:30:28.392Z [INFO]: # Cloning repository: https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/ay-s-○○○○
2021-11-07T03:30:28.847Z [INFO]: Cloning into 'ay-s-○○○○'...
2021-11-07T03:30:38.226Z [INFO]: fatal: unable to access 'https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/ay-s-○○○○/': The requested URL returned error: 403
2021-11-07T03:30:38.229Z [ERROR]: !!! CustomerError: Unable to clone repository due to user error code: 128
2021-11-07T03:30:38.230Z [INFO]: # Starting environment caching...
2021-11-07T03:30:38.290Z [INFO]: # Environment caching completed
Terminating logging...

エラー画面
エラー画面

要するに、

fatal: unable to access 'https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/ay-s-○○○○/': The requested URL returned error: 403

CodeCommitのリポジトリからcloneしようと思ったけどアクセスができません!!ということのようです。

エラーの原因

Amplify側に設定したサービスロールの内容が間違っていた。

以下サイトに同じ事例があった。
Unable to clone repo (403) at Build step · Issue #572 · aws-amplify/amplify-console · GitHub

サービスロールの設定箇所

Amplifyで「new app」を作成する画面で、サービスロールを選択する場所がある。

おそらく、ここで「new service role」のほうを選んでいれば問題ないと思うが、既存のロールを選んでしまったと思われる。

サービスロールを設定する箇所
サービスロールを設定する箇所

Amplifyに設定されているサービスロールの確認

「アプリの設定」→「全般」で確認できる。

サービスロール確認
サービスロール確認

サービスロールに適用されているポリシーの確認

IAMのコンソールからロールに設定されたポリシーの中身を確認すると、「Resource」に記載されているCodeCommitのARN名が間違っていた。(既に削除した、昔のリポジトリのものが入っていた)。

IAMポリシー
IAMポリシー

ここを修正した。

IAMポリシーに設定すべきCodeCommirのARN名確認方法

ARN名は「CodeCommit」の該当リポジトリ→「設定」で確認できる。

CodeCommirのARN名
CodeCommirのARN名

おわりに

IAMポリシーを修正し、無事デプロイが完了した。

デプロイ完了
デプロイ完了

関連記事

CodeCommitについて詳細

CodeCommitの使い方を記載した記事。 tomiko0404.hatenablog.com