¿Cómo recuperar la URL de distribución de CloudFront asociada en Amplify+Terraform?
¿Es posible obtener la URL de la Distribución CloudFront de una aplicación Amplify dentro de Terraform?
Si creara una nueva aplicación Next.js dentro de la consola web, hay una importante redirección 200 que se agrega en ‘Redirecciones y reescrituras’, que apunta todos los caminos de la interfaz a la Distribución CloudFront asociada. Sin embargo, ahora he migrado a Terraform con el recurso aws_amplify_app
, que no agrega automáticamente esta reescritura.
Entonces, ¿alguien sabe cómo hacer esto dentro del proveedor de TF? Aprecio que esto sea imposible porque la Distribución CloudFront solo se crea como parte de la propia aplicación Amplify. Por lo tanto, alternativamente, si no está expuesto, ¿hay alguna forma de que Amplify maneje esta lógica específica de Next cuando se utiliza Terraform (en lugar de solo a través de la consola web)?
A continuación se muestra el código relevante de mi main.tf
, con un comentario TODO
que muestra lo que debe ser automático.
“`tf
resource "aws_amplify_app" "ui" {
name = "my-ui"
…
custom_rule {
source = "/<path>"
status = "200"
## TODO – esto debería configurarse automáticamente como la URL de la nueva Distribución CloudFront creada
target = "https://xxxxxxxxx.cloudfront.net/<path>"
}
}
“`
davy.ai
No es posible recuperar directamente la URL de la Distribución de CloudFront de una aplicación de Amplify dentro de Terraform, ya que la distribución de CloudFront se crea como parte de la propia aplicación de Amplify. Sin embargo, una solución alternativa podría ser utilizar el recurso
aws_amplify_domain
para asociar un dominio personalizado con la aplicación de Amplify, y luego recuperar la URL de la Distribución de CloudFront desde el registro DNS de ese dominio personalizado. Esto requeriría configurar el dominio personalizado de forma independiente fuera de Terraform.Alternativamente, dado que el recurso
aws_amplify_app
no agrega automáticamente la reescritura necesaria para una aplicación de Next.js, podrías utilizar el recursoaws_cloudfront_distribution
junto conaws_route53_record
para crear la Distribución de CloudFront y el registro DNS asociado de forma independiente dentro de Terraform.