Amplify Gen2でカスタムドメイン設定ができなくて困った
はじめに
2024年4月10日時点では、Amplify Gen2のカスタムドメイン等一部機能が使えません。
コンソール画面をGen1に戻す機能が提供されていないため、一度Gen2でアプリを作成してしまうと詰みます(以下ポスト参照)。
本記事では、AWS CLIで設定する解決策を、従来のコンソールからの利用方法と対応づけて紹介します。
前提
- Amplify Gen2のアプリが立ち上がっている
- AWS CLIがインストールされている
- Route53にドメインが存在している
AWS CLIのプロファイルを変更する
まずは、AWS CLIに対象のAmplifyアプリにアクセスできるように、適切なプロファイルを設定しましょう。
aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************XAH2 shared-credentials-file
secret_key ****************0UgZ shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
現時点では、profileに何も設定されていません。
すでに設定がお済みの方はスキップしていただいて問題ありません。
ローカルのプロファイル情報を確認する
cat ~/.aws/credentials
[example]
aws_access_key_id=xxxxxxxxxxxxxxx
aws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
例でexampleというprofileで設定してみます。
環境変数で任意のプロファイルを設定する
グローバル環境変数にAWSのプロファイルをexampleとして設定しましょう。
シェルで実行すればよいです。
export AWS_PROFILE=example
現在設定されているプロファイルを確認する
aws configure list
Name Value Type Location
---- ----- ---- --------
profile example env ['AWS_DEFAULT_PROFILE', 'AWS_PROFILE']
access_key ****************IGI6 shared-credentials-file
secret_key ****************Fno7 shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
exampleがプロファイルとして設定されました。
カスタムドメインメニューでやりたいことをAWS CLIで実現する
必要な情報を準備する
まずはAWS CLIの引数で利用するapp-id
とdomain-name
を準備しましょう。
AmplifyアプリID:
Amplify Consoleからアプリを選択し、「App settings」>「全般設定」から確認できます。
ドメイン名:
カスタムドメインのフルドメイン名(例:example.com、abc.example.com)。
Amplifyアプリとドメインの紐づきを確認する
まずは、現在のドメイン状況を確認しましょう。
Amplify Gen1のドメイン管理画面 「ドメイン情報」
ドメインを指定して取得:
aws amplify get-domain-association --app-id <アプリID> --domain-name <ドメイン名>
一覧取得:
aws amplify list-domain-association --app-id <アプリID>
上記のget/listコマンドを実行すると次のようなJSONオブジェクトが返ってきます。
{
"domainAssociations": [
{
"domainAssociationArn": "arn:aws:amplify:ap-northeast-1:00000000000:apps/xxxxxxxxxx/domains/example.com",
"domainName": "example.com",
"enableAutoSubDomain": false,
"domainStatus": "AVAILABLE",
"certificateVerificationDNSRecord": "_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example.com. CNAME _xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxx.acm-validations.aws.",
"subDomains": [
{
"subDomainSetting": {
"branchName": "main"
},
"verified": false,
"dnsRecord": " CNAME xxxxxxxxxxxxxx.cloudfront.net"
}
]
}
]
}
コンソール画面で見られる「利用可能」がdomainStatus
、「URL」がdomainName
、「ブランチ」がbranchName
に紐づいているみたいですね。
ドメインを追加する
Amplify Gen1のドメイン管理画面 「ドメイン追加機能」
aws amplify create-domain-association --app-id <アプリID> --domain-name <ドメイン名>
上記のcreateコマンドでドメインを新たに追加できます。
先程紹介したgetコマンドで確認してみてください。
終わりに
AWSの機能はドメインの設定に限らずAPIで提供されているので、コンソールでは利用できない機能も、CLIやSDK経由で使うことができます。
また、Amplify Gen2が正式にリリースされ、本記事が不要になることを願います。
楽しみですね!
参考
Discussion