npm 包 @aws-cdk/aws-elasticloadbalancingv2 使用教程

阅读时长 11 分钟读完

AWS Elastic Load Balancing (ELB) 可以帮助我们将流量均衡地分发到多个 Amazon EC2 实例上,并提高应用程序的可伸缩性、性能和可用性。而 @aws-cdk/aws-elasticloadbalancingv2 包是 AWS Cloud Development Kit (CDK) 中的一个模块,通过它我们可以使用 TypeScript 或者 JavaScript 进行编程来创建并部署 ELB。

接下来将会详细介绍如何使用 npm 包 @aws-cdk/aws-elasticloadbalancingv2,并提供实际应用场景的示例代码。

安装及基础使用

首先,我们需要安装 AWS CDK 并创建一个新的 CDK 项目。通过 npm 可以方便地安装 @aws-cdk/aws-elasticloadbalancingv2 包:

接着,我们可以使用编程语言(TypeScript 或者 JavaScript)创建一个新的 ELB LoadBalancer:

-- -------------------- ---- -------
------ - -- ----- ---- --------------------------------------
------ - -- --- ---- ----------------

------ ----- -------------- ------- --------- -
  ------------------ -------------- --- ------- ------- --------------- -
    ------------ --- -------

    ----- ------------ - --- --------------------------- ----------------- -
      ----- -------------------
      ----- --------------
      -------- ------------------- ------------------
    ---
  -
-

以上代码创建了一个名为 my-load-balancer 的 APPLICATION 类型的 ELB,它部署在 subnet-12345678subnet-87654321 子网中。

高级使用

在现实世界中,我们可能需要更加高级的 ELB 功能,例如基于域名的路由、多协议支持和 HTTPS 连接等。下面将详细介绍如何实现这些功能。

域名路由

假设我们的 ELB 需要根据不同的域名路由流量到不同的后端服务上。我们可以使用 elbv2.CfnListener 对象创建一个监听器,并将其附加到我们的 ELB 上。elbv2.CfnListenerRule 对象用于将请求路由到不同的 target group。

-- -------------------- ---- -------
------ - -- ----- ---- --------------------------------------
------ - -- --- ---- ----------------

------ ----- ------------------------- ------- --------- -
  ------------------ -------------- --- ------- ------- --------------- -
    ------------ --- -------

    ----- ------------ - --- --------------------------- ----------------- -
      ----- -------------------
      ----- --------------
      -------- ------------------- ------------------
    ---

    ----- -------- - --- ----------------------- ------------- -
      --------------- -- ----- ----------------- -------------------- - ------------ ------------- ------------ ------ ------ - ---
      ---------------- ---------------------------------
      ----- ---
      --------- ------
    ---

    ----- ----------- - --- --------------------------- ---------------- -
      -------- -- ----- ----------------- -------------------- - ------------ ------------- ------------ ------ ---- - ---
      ----------- -- ------ -------------- ------- --------------- ---
      ------------ -------------------------
      --------- -
    ---

    ----- --------- - --- --------------------------- -------------- -
      -------- -- ----- ----------------- -------------------- - ------------ ------------- ------------ ------ ---- - ---
      ----------- -- ------ -------------- ------- ------------- ---
      ------------ -------------------------
      --------- -
    ---
  -
-

以上代码创建了两个 elbv2.CfnListenerRule 对象,用于将域名为 example.com 的请求路由到一个返回 Hello Foo 的 fixed-response,将域名为 other.com 的请求路由到一个返回 Hello Bar 的 fixed-response。

HTTPS 连接

在现代 Web 应用程序中,HTTP 连接已经变得越来越不安全,因此,我们需要为我们的 ELB 配置 HTTPS。elbv2.CfnListenerelbv2.CfnListenerCertificate 两个对象可以协作来协助我们实现这个目标。我们先在 AWS Certificate Manager 中使用 ACM 颁发一个证书,然后将证书 ARN 传递给我们的 CloudFormation 堆栈:

-- -------------------- ---- -------
------ - -- ----- ---- --------------------------------------
------ - -- --- ---- ----------------

------ ----- ----------------------- ------- --------- -
  ------------------ -------------- --- ------- ------- --------------- -
    ------------ --- -------

    ---
    
    ----- -------- - --- ----------------------- ------------- -
      ------------- -- --------------- -------------------------------------------- ---
      --------------- -- ----- ----------------- -------------------- - ------------ ------------- ------------ ------ ------ - ---
      ---------------- ---------------------------------
      ----- ----
      --------- -------
    ---

    ----- ---- - --- ---------------------------------- ---------------- -
      --------------- ---------------------------------------------
      ------------ ------------------------
    ---
  -
-

以上代码创建了一个 HTTPS 监听器,并将证书 ARN 配置到了监听器上。

多协议支持

最后,我们假设我们需要支持不同的协议(HTTP 和 TCP),并将流量路由到不同的 target group 上。这可以通过 elbv2.CfnTargetGroupelbv2.CfnListenerRule 对象的组合来实现。

-- -------------------- ---- -------
------ - -- ----- ---- --------------------------------------
------ - -- --- ---- -------------------
------ - -- --- ---- ----------------

------ ----- --------------------------- ------- --------- -
  ------------------ -------------- --- ------- ------- --------------- -
    ------------ --- -------

    ----- --- - --- ------------- -------- -
      ------------ -
    ---

    ----- ------------ - --- --------------------------- ----------------- -
      ----- -------------------
      ----- --------------
      -------- ----------------------------- -- ----------------
    ---

    ----- --------------- - --- -------------------------- -------------------- -
      ----- ---
      --------- -------
      ------ ----------
      ----------- ----
    ---

    ----- -------------- - --- -------------------------- ------------------- -
      ----- -----
      --------- ------
      ------ ----------
      ----------- ----
    ---

    ----- -------- - --- ----------------------- ------------- -
      --------------- -- ----- ----------------- -------------------- - ------------ ------------- ------------ ------ ------ - ---
      ---------------- ---------------------------------
      ----- ---
      --------- ------
    ---

    ----- -------- - --- --------------------------- ------------- -
      -------- -- ----- ---------- --------------- ------------------- ---
      ----------- -- ------ --------------- ------- --------------------- ---
      ------------ -------------------------
      --------- -
    ---

    ----- ------- - --- --------------------------- ------------ -
      -------- -- ----- ---------- --------------- ------------------ ---
      ----------- -- ------ -------------- ------- -------------- ---
      ------------ -------------------------
      --------- --
      --------- -----
    ---
  -
-

以上代码创建了两个 elbv2.CfnTargetGroup 对象和两个 elbv2.CfnListenerRule 对象,用于将不同的协议的流量路由到不同的后端服务上。

总结

通过本教程,你应该已经学会了如何使用 npm 包 @aws-cdk/aws-elasticloadbalancingv2 来创建和部署 AWS Elastic Load Balancer。同时,我们也探讨了多个实际应用场景,包括基于域名的路由、HTTPS 连接和多协议支持。

为了更好地理解和掌握本文所述内容,我们还提供了相应的 TypeScript 示例代码。希望你可以从中受益,并成功地部署你自己的 Elastic Load Balancer。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedab5ab5cbfe1ea061074a

纠错
反馈