27
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

自動ビルドが実行されない?CDKでホスティングしたAmplifyに起きた謎現象を追え!!

Last updated at Posted at 2022-07-09

2022年7月時点の内容になります。
投稿後に原因が改善されている可能性があります。

背景

今までAmplifyでホスティングを行いたい時はAmplifyCLIを使ってましたが、今年に入ってAWSの構築をCloudFormatinからCDKに移した事もあって、Amplifyはどっちに寄せようか考える機会がありました。

Amplifyで立てたバックエンドリソースをエクスポート機能を使ってCDKでも扱えるようにして、overrideで設定をカスタマイズする方法を取ることも考慮したのですが、その時点でAmplifyCLIの用途がホスティングくらいでバックエンドはCDKで用意することにしていたことと、エクスポート&overrideは工程がやや煩雑になるのを嫌って、ならいっそCDKに統一してみるかと決めました。

CDKによるホスティング自体は問題なく終わったのですが、Amplifyの自動ビルドが実行されない事象が発生し、原因自体は小ネタでしたが個人的に「そんなことが・・・」だったので、ニッチなケースとは思いつつも、何処かの誰かが同じ事象でハマって貴重な時間を消費するのを未然に防げればいいなと思い書いてきます。

タグで内容を何となく察したあなたはきっと同士。

事象詳細

  • CDKでAmplifyホスティングを構築したものの、Amplifyの自動ビルドが実行されない
    スクリーンショット_2022-07-09_12_03_15.png

  • Amplifyの設定は勿論自動ビルドを有効にしている

lib/amplify-stack.ts
    // 抜粋
    const stgbranch = new amplify.CfnBranch(this, `${name}-stg`, {
      appId: app.attrAppId,
      branchName: 'stg',
      enableAutoBuild: true,  // 自動ビルド有効化
      enablePerformanceMode: false,
      enablePullRequestPreview: false
    })
  • コンソールから手動でビルドを実行するときっちりGitbhubからソースコードを持ってきてCI/CDは全て最後まで成功する
    スクリーンショット 2022-07-09 12.07.34.png

  • GitHubにソースコードの変更をPushしてもやはり自動ビルドは実行されない
    スクリーンショット_2022-07-09_12_14_38.png

  • GitHubのブランチに"master"がないと上手く動かないというissueがあったので"master"ブランチを作って見たがやはり動かない

  • 同じGitHubのリポジトリを使ってCDKではなく最初からコンソールでホスティングすると問題なく自動ビルドが実行される

  • CDK経由でホスティングしたAmplifyアプリケーションに対してブランチを追加を試みるも、GitHub認証は成功するが、接続候補のGitHubブランチの選択画面が表示されない
    スクリーンショット_2022-07-09_12_20_13.png

  • GitHubアクセストークンの権限に不備でもあるのかと念の為の切り分けとして、awscliで同アクセストークンを用いてAmplifyアプリケーションを作成すると問題なく自動ビルドが実行される
    スクリーンショット_2022-07-09_13_20_24.png

  • コンソール上から「リポジトリを再接続」を実行すると"We do not have permission to access this repository. Please update your permissions and try again."のエラーが出る
    スクリーンショット+2022-06-17+21.00.56 (1).png

つまるところ、GitHubとの接続に対して繋がっているけど繋がっていないみたいな状況に陥ってました。

原因

対象のCDKではAmplifyだけでなくVPCやS3、Cloudfront、Aurora、ECSやCodeBuild、Security周りなどその他多くのリソースをスタックを分けて定義されてます。また、Amplifyに用いる接続先GitHubリポジトリはcdk.jsonで指定しており、元々定義していたCodeBuildと共用しておりました。それが宜しくなかった…。
スクリーンショット 2022-07-09 12.49.11.png

CodeBuildではリポジトリへのHTTPSクローンURLhttps://github.com/xxx/xxx.gitを指定する為、cdk.jsonにもそのように記述してました。しかし、Amplifyではまさかの.gitが含まれたリポジトリURLを指定すると、今回の事象が発生してしまうという事がAWSサポートの方から教えて頂きました。
スクリーンショット_2022-07-09_12_51_12.png

改めてCDKとCloudFormationのドキュメント(AmplifyのCDKはL1しか対応してない為)を確認しましたが、string型の指定くらいしか書かれてなかったので、まあ気付くわけもなく。

repository?
Type: string (optional)
The repository for an Amplify app.
Pattern: (?s).*

AWSあるあるな、「Delete me」か「削除」みたいなサービスによる違いに当たったんだなあと、当時遠い空を見上げました。
bg_pattern1_aozora.png

今回は引き続きCodeBuildと共用させるため、cdj.jsonをいじらずにamplify側のスタックで.gitを除外させて改めてアプリケーションを立てる事で漸く自動ビルドが実行され事象が解消されるに至りました。

グッドエンドを辿るには

CDKを書いたことがある人なら共感してくれると思いますが、CDKでリソースを記述する際公式のドキュメントをまず読んであれことと書くんですが、あちこちページを跨ぐ必要があったり、十分に量はありつつもそれでもいまいち分かり辛かったりしますよね。

自分はGitHubで検索かけて他所様はこのリソースのこの部分どう指定してるんやろな〜と探しに行ったりしていて、サンプルは少ないですがよくよく読むとそこでは.git抜きで書かれているのが見つかるので、頑張れば気付けなくもなかったかもしれない

最後に

気付いてしまえばとても些細なものでしたが、コンソール上で「ビルドを実行」を押すとビルドが実行されることからGitHubとの接続と認証が中途半端ではあるものの一応は出来ている事もあり、原因特定に非常に難儀しました。原因究明に協力してくださったAWSサポートの方々には感謝申し上げます。

参考

27
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?