📘

AWS Amplify で既存のアプリのGitリポジトリを変更する

2023/12/27に公開

AWS Amplify は、GitHub,BitBucket,GitLabなどのGitリポジトリと連携することで、簡単にCI/CDを構築することができます。
いちどリポジトリと連携したアプリを、別のGitリポジトリと連携しなおす方法を紹介します。

AWSコンソールからはできない

AWS Amplify の設定は、AWSコンソールから確認できます。しかし、AWSコンソール、実は、編集できない項目がいくつか存在します。

画面上では、「全般」から現在のリポジトリを確認できますが、編集できません。

これについて検索すると、古いGitHub issueに行き着き、「アプリを作り直すしか無い」みたいな書き込みも存在しますが、CLIから変更することができます。

CLI

まず、list-apps コマンドで、アプリ一覧を表示し、アプリIDや、現在の設定を確認します。

aws amplify list-apps

次に、update-appコマンドで、リポジトリを変更します。このとき、アクセストークンも一緒に指定する必要があります。

aws amplify update-app --app-id {アプリID}  --repository {リポジトリURL} --access-token {GitHubPAT}

リポジトリのURLは、GitHubの場合、Webブラウザで訪問できるリポジトリのトップページとなります。

要求されるトークンのタイプは、プロバイダによって異なります。
GitHub の場合は、PersonalAccessToken(以下PAT)を使います。
リポジトリへの読み書き権限と、リポジトリのwebhookを編集する権限(admin:repo_hook)を有効にした個人トークンを使う必要があります。

しかしながら、チーム作業では、個人のトークンを使うことは好ましくありません。これは一時的なものだと考えてください。リポジトリを切り替えるためには、いったんトークンが必要なようです。

(GitHub)PATからGitHub Appに切り替える

これまでで、リポジトリの切り替えは完了です。 aws amplify get-app コマンドで、 repository フィールドが変わっていることが確認できるはずです。

しかし、このままだと、リポジトリからコードを取得するために個人の認証が使われてしまうので、GitHub App に切り替えます。

(この状態で AWS コンソールにアクセスすると、以下のようなUIが表示され、警告されます)

基本的には、特別なことはなく、AWSコンソールの指示にしたがって改めてUI上でGitHub連携を行うだけです。

repositoryCloneMethod

AWS Amplify の細かい仕様は、オープンにされていない部分も多いのですが、
アプリが現在「どうやってリポジトリからコードを取得するのか」を表しているのが repositoryCloneMethod フィールドです。CLI の list-apps や get-app で確認できます。

GitHub PATでの認証の場合、 "repositoryCloneMethod": "SSH" となっていますが、GitHub App での認証を設定することで、 "repositoryCloneMethod": "TOKEN" と値が変化することを確認できます。

Discussion