Amplifyのプロジェクト名と環境名はなるべく短くしよう
具体的には
Amplifyのプロジェクト名(projectName)+環境名(envName)は、26文字以内にしよう。
少なくともAmplifyでAPIを作るときは。
(追記)
Githubと連携すると、Repository名とbranch名がマッピングされます。
つまりGithubのRepository名とbranch名を短くしましょう。
なぜ26文字か
Amplifyでは、AWSのリソースをいい感じに自動で作ってくれます。
その際に、リソースの名前やパラメータも自動でそれっぽく作ってくれます。
その中にはroute53も含まれます。
Amplifyで作ったAPIをamplify push
すると自動でroute53も作ってくれるのですが、
この時にプロジェクト名(projectName)+環境名(envName)が27文字以上の場合は、、、
Reason: FATAL problem: DomainLabelTooLong (Domain label is too long) encountered with 'amplify-xxxxxxxxxxxxxxxx-development-123456-vpc-1234567890123456' (Service: AmazonRoute53; Status Code: 400; Error Code: InvalidDomainName; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Proxy: null)
というエラーがでて、pushできません。
route53のドメイン名のラベルは63文字が上限なのですが、Amplifyの自動生成部分で37文字も使われてしまうので、プロジェクト名と環境名で使える上限は僅か26文字だけになります。
参考
結構困る
このエラーは、プロジェクトを作ったときでもenvを作ったときでもなく、pushした時に判明します。
いろいろ設定して最後にpushしたらエラーとなるので泣きたくなります。
せめてenvを作成時に時に警告出して欲しいですし、自動生成部分の文字を短くして欲しいです。
回避策を御存知の方がいたら教えて下さい。
2021-07-30 追記
-
amplify-xxxxxxxxxxxxxxxx-development-123456-vpc-1234567890123456
のxxxxxxxxxxxxxxxx
の部分(projectName?)はAmplifyのアプリの名前とイコールではなさそう- よくわからないけど、githubのリポジトリ名が関係して勝手に名前がつけられそう
- おそらく最大20文字で切られていそう
- なのでenvは6文字以内にするのが無難
- 7文字はアウトになる可能性があるので、
staging
はNG。stg
にしよう
- 7文字はアウトになる可能性があるので、
2023-05-11 追記
現在は、envが7文字以上のときは勝手に内部的に6文字以内の別な文字列に置き換わる仕様になっているようです(いつからそうなったのかは不明です。。。)
CI/CDなどで、env名を参照している場合は注意が必要です
Discussion