AWS EB:未解决的资源依赖关系

Posted

技术标签:

【中文标题】AWS EB:未解决的资源依赖关系【英文标题】:AWS EB: Unresolved resource dependencies 【发布时间】:2020-09-15 09:31:08 【问题描述】:

感谢这篇精彩的文章: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 格式失效

    这段代码的格式有问题。

有人可以提供一些意见吗?

【问题讨论】:

您正在使用旧的经典负载均衡器elb 而不是新的应用程序elbv2 【参考方案1】:

对我来说,由于几个原因,您的理论似乎都不适合您收到的错误。

首先,让我们仔细阅读错误。

Service:AmazonCloudFormation, Message:Template format error: Unresolved resource dependencies [AWSEBV2LoadBalancer] in the Resources block of the template

支持 EB 环境的 CFN 堆栈抱怨未解决的依赖项“AWSEBV2LoadBalancer”。这意味着正在创建的堆栈不知道这个逻辑 ID“AWSEBV2LoadBalancer”的用途。

只有当您的 beanstalk 应用程序是:

单实例应用程序(无 LB)

使用 ELB(经典 V1 LB),其在 EB CFN 堆栈中的逻辑 id 是“AWSEBLoadBalancer”而不是“AWSEBV2LoadBalancer”。

后来的“AWSEBV2LoadBalancer”被用作应用程序和网络 LB 的逻辑 ID。

从您分享的中篇文章链接中,我看到作者使用应用程序负载均衡器创建了他的环境。你错过了吗?

eb create django3 --elb-type application --region eu-west-1 

您共享的代码 sn-p 也是有效的 YAML。

【讨论】:

我有同样的错误,我的情况是这样的:A single instance application (no LB) 那是因为工人,有什么方法可以忽略工人的配置?【参考方案2】:

您正在尝试使用负载均衡器将 HTTP 请求重定向到 HTTPS。但是您使用的是 EB 环境类型:没有负载均衡器的单实例。

切换到 EB 环境类型:负载平衡或停止使用负载平衡器将 HTTP 请求重定向到 HTTPS。

【讨论】:

以上是关于AWS EB:未解决的资源依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

安装GTK开发环境,未满足依赖关系,如何解决

由于未解决的依赖关系,无法使用 Winforms 控件

公共编解码器的未解决依赖关系

使用 gradle 未解决 aar 库的传递依赖关系

使用 gradle 未解决 aar 库的传递依赖关系

未解决供应商目录中的依赖关系