こんにちは!こうじゅん(@kouzyunJa)です。以前、TerraformでAmplifyの構築をしていた際、SSL設定(AMPLIFY_MANAGED)にハマったエラーについて書いていこうと思います。同じようにハマった人の参考になれば嬉しいです!
ハマったエラーについて
そもそもAWS Amplifyは、Webアプリやモバイルアプリのバックエンド機能(認証、API、ストレージなど)を簡単に構築できるサービスです。Amplifyを使えば、複雑なインフラの設定を意識せず、クラウドサービスを簡単に構築できるのでとても便利です。以下、安達さん(@adachin0817)が個人ブログでAmplifyのTerraform化について書いていますので参考にしてみてください。
今回は、そんなAmplifyですが、SSL証明書の設定(certificate_settings)
で独自ドメインをTerraform化するときにエラーにハマりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
resource "aws_amplify_domain_association" "example" { app_id = "your-app-id" domain_name = "example.com" sub_domain { sub_domain_setting { prefix = "" branch_name = "main" } certificate_settings { type = "AMPLIFY_MANAGED" // ハマったところのcertificate_settings } } } |
certificate_settings
は、AmplifyでSSL証明書の管理方法を指定する設定です。これによって、独自ドメインでのHTTPS対応が可能になります。certificate_settingsのtype
の設定方法としては以下の2通りあります。
AMPLIFY_MANAGED
- Amplifyが自動でSSL証明書を発行・管理してくれます。
- 証明書の更新や設定は自動で行えます。
CUSTOM
- ACM(AWS Certificate Manager)で発行したカスタム証明書を自分で指定します。
- 指定の証明書で細かく設定したい必要なときに使います。
今回は、Amplifyに証明書管理をやってもらいたいためにAMPLIFY_MANAGED
を使いました。ところが、いざTerraformでApplyしようとするとエラーが発生しました。
1 |
Error: error creating Amplify Domain Association: ValidationException: Invalid certificate type |
AMPLIFY_MANAGED
を設定したはずなのに、「証明書のタイプが無効」というエラーメッセージが表示されていました。
対応したこと
色々と調査したところ、Terraformのバグが原因でエラーが発生していることが分かりました。GitHubのterraform-provider-awsのリリースノート で"AMPLIFY_MANAGED
に設定したときに ValidationException
が発生しないようにした”という記述がありました。
resource/aws_amplify_domain_association: Prevent
ValidationException
when settingcertificate_settings.type
toAMPLIFY_MANAGED
.
このバグ修正が含まれたプルリクエストによると、Terraform AWS Provider v5.82.0でリリースされたとのことです。
This functionality has been released in v5.82.0 of the Terraform AWS Provider.
そのため、Terraform AWS Providerをv5.82.0以上に指定してバージョンアップをすることにします。
1 2 3 4 5 6 7 8 |
terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 5.82.0" } } } |
バージョンアップを適応させます。
1 |
$ terraform init -upgrade |
バージョンアップが適応されているか確認します。
1 2 3 |
$ terraform version Terraform v1.10.4 + provider registry.terraform.io/hashicorp/aws v5.83.1 |
Terraform AWS Providerがv5.82.0以上になっていることを確認できました。
再度apply
したところ、エラーが解消されて無事にドメイン設定が完了しました!
まとめ
今回は、TerraformでAWS AmplifyのAMPLIFY_MANAGED
設定時に発生したエラーと、その解決方法について紹介しました。今回の対応を通じて、公式リリースノートやバージョン管理の重要性を改めて感じました。
最後まで読んでいただき、ありがとうございました!
1995年生まれのFindy駆け出しSRE。未経験からエンジニアへキャリアチェンジしエンジニア歴としては4年目となる。SESにて様々なAWS案件に携わる。SRE領域の知識を身につけるためTechBullコミュニティへ参画。元運用監視オペレーターという立場からAWSエンジニアやSREへキャリアアップした経験やクラウド関連の記事を執筆しつつ、コミュニティの受け入れ1on1を実施している。