繁体   English   中英

如何使用.ebextensions向AWS Elastic Beanstalk添加Application Load Balancer固定响应

[英]How to add Application Load Balancer Fixed Response to AWS Elastic Beanstalk with .ebextensions

为了将我的在AWS ElasticBeanstalk上提供的API端点列入白名单,请执行以下操作:

当我收到意外请求时,我想从我的Elastic Beanstalk环境中的应用程序负载平衡器(ALB)返回固定的响应

我需要以可复制和自动化的方式执行此操作。 目前,我使用CloudFormation模板和.ebextensions配置我的Elastic Beanstalk应用程序。

我知道如何通过添加侦听器规则在控制台中手动配置固定响应:

像这样

我无法在.ebextensions中找到支持此功能的选项设置的组合。

另外,除非我缺少任何内容,否则CloudFormation似乎通过此处环境中的OptionSettings公开了与.ebextensions相同的选项。

是否可以在.ebextensions或CloudFormation中配置固定响应?

如果不是,是否有另一种自动化的友好方法来完成此任务? 也许通过AWS API?

ElasticBeanstalk使您可以通过.ebextensions配置文件中的Resources标签使用CloudFormation。

EB使用CloudFormation部署您的应用程序。 Resources标签使您可以添加到此CloudFormation模板。 它还允许您引用EB模板的输出资源。

AWS文档

要配置应用程序负载平衡器以发送404错误网址请求而不接触应用程序服务器,请将应用程序负载平衡器侦听器规则添加到:

  1. 高优先级规则:侦听预期的请求URL并将请求转发到应用服务器(TargetGroupArn)
  2. 低优先级规则:捕获所有其他请求URL并发送404固定响应。

这是YAML。

将其保存在.ebextensions / X.config中,然后运行“ eb deploy”。 AWS机制负责使用新的侦听器更新环境。

Resources:
  validAPIRequestListenerRule:
    Type: AWS::ElasticLoadBalancingV2::ListenerRule
    Properties: 
      Actions: 
        -   Type: forward
            TargetGroupArn: { "Ref" : "AWSEBV2LoadBalancerTargetGroup" }
      Conditions: 
        -   Field: path-pattern
            PathPatternConfig:
              Values:
                - "/api/*"
       ListenerArn: { "Ref" : "AWSEBV2LoadBalancerListener443" }
       Priority: 10001

  defaultListenerRejectingInvalidUrls:
    Type: AWS::ElasticLoadBalancingV2::ListenerRule
    Properties: 
      Actions: 
        -   Type: fixed-response
            FixedResponseConfig:
              StatusCode: 404
              ContentType: "application/json"
              MessageBody: "Fixed"
      Conditions: 
        -   Field: path-pattern
            PathPatternConfig:
              Values: 
                - "*"
      ListenerArn: { "Ref" : "AWSEBV2LoadBalancerListener443" }
      Priority: 40000

笔记

  1. 优先考虑,它们从1到5万不等,较小的数字获胜。 此代码段中的侦听器将处理默认EB侦听器规则之前的所有请求(该规则会将不匹配的请求转发到您的目标组)
  2. AWS文档中指出的可用于Ref / Fn :: GetAtt标记的逻辑ID不完整。 如果遇到这样的错误,请在控制台中打开CloudFormation,查看与您的EB部署相对应的“资源”选项卡,并查看可用的逻辑ID。

服务:AmazonCloudFormation,消息:模板格式错误:模板的资源块中的未解决资源依赖项[AWSEBV2LoadBalancerListener]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM