我的Django应用已部署并正常运行,这要归功于这篇精彩的文章:https://medium.com/@justaboutcloud/how-to-deploy-a-django3-application-on-elastic-beanstalk-python3-7-and-amazon-linux-2-bd9b8447b55
我到了项目的最后,正在设置HTTPS。为此,我在.ebextensions文件夹中创建了一个名为02_https.config
的配置文件。在此文件中,我复制并粘贴了文章中的代码:
option_settings:
aws:elbv2:listener:443:
SSLCertificateArns: <YourACMCertificateARN>
Protocol: HTTPS
Resources:
AWSEBV2LoadBalancerListener:
Type: 'AWS::ElasticLoadBalancingV2::Listener'
Properties:
LoadBalancerArn: { "Ref" : "AWSEBV2LoadBalancer" }
DefaultActions:
- RedirectConfig:
Port: 443
Protocol: HTTPS
StatusCode: HTTP_301
Type: redirect
Port: 80
Protocol: HTTP
部署应用程序时,出现以下错误消息:
Service:AmazonCloudFormation, Message:Template format error: Unresolved resource dependencies [AWSEBV2LoadBalancer] in the Resources block of the template
我有两种理论:
我没有以正确的格式粘贴ARN证书,这使我的YAML格式无效
此代码的格式有误。
有人可以提供一些输入吗?
答案 0 :(得分:2)
对我来说,由于多种原因,您的理论似乎都不对您收到的错误是正确的。
首先,让我们仔细阅读错误。
Service:AmazonCloudFormation, Message:Template format error: Unresolved resource dependencies [AWSEBV2LoadBalancer] in the Resources block of the template
支持EB环境的CFN堆栈抱怨未解决的依赖性“ AWSEBV2LoadBalancer”。这意味着正在创建的堆栈不知道此逻辑标识“ AWSEBV2LoadBalancer”的用途。
仅当您的beantalk应用程序为以下任一情况时,这种情况才会发生:
单个实例应用程序(无LB)
或
使用在EB CFN堆栈中逻辑ID为“ AWSEBLoadBalancer”而不是“ AWSEBV2LoadBalancer”的ELB(经典V1 LB)。
后来的“ AWSEBV2LoadBalancer”被用作应用程序和网络LB的逻辑ID。
从您共享的中篇文章链接中,我看到作者使用应用程序负载平衡器创建了他的环境。你错过了吗?
eb create django3 --elb-type application --region eu-west-1
您共享的代码段也是有效的YAML。