🍶

Amplifyのプロジェクト名と環境名はなるべく短くしよう

2021/06/15に公開

具体的には

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文字だけになります。

参考
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/DomainNameFormat.html

結構困る

このエラーは、プロジェクトを作ったときでもenvを作ったときでもなく、pushした時に判明します。
いろいろ設定して最後にpushしたらエラーとなるので泣きたくなります。
せめてenvを作成時に時に警告出して欲しいですし、自動生成部分の文字を短くして欲しいです。

回避策を御存知の方がいたら教えて下さい。

2021-07-30 追記

  • amplify-xxxxxxxxxxxxxxxx-development-123456-vpc-1234567890123456xxxxxxxxxxxxxxxxの部分(projectName?)はAmplifyのアプリの名前とイコールではなさそう
    • よくわからないけど、githubのリポジトリ名が関係して勝手に名前がつけられそう
    • おそらく最大20文字で切られていそう
  • なのでenvは6文字以内にするのが無難
    • 7文字はアウトになる可能性があるので、stagingはNG。stgにしよう

2023-05-11 追記

現在は、envが7文字以上のときは勝手に内部的に6文字以内の別な文字列に置き換わる仕様になっているようです(いつからそうなったのかは不明です。。。)
CI/CDなどで、env名を参照している場合は注意が必要です

Discussion