Amazon Elastic Load Balancing · Arazzo Workflow

Amazon Elastic Load Balancing Provision a Network Load Balancer

Version 1.0.0

Stand up a TCP Network Load Balancer with a target group, listener, and registered targets.

1 workflow 1 source API 1 provider
View Spec View on GitHub Amazon Web ServicesHigh AvailabilityLoad BalancingNetworkingScalabilityArazzoWorkflows

Provider

amazon-elastic-load-balancing

Workflows

provision-network-load-balancer
Create an NLB, a TCP target group, a TCP listener, and register targets.
Chains createLoadBalancer, createTargetGroup, createListener, and registerTargets to produce a traffic-ready TCP Network Load Balancer in a single run.
4 steps inputs: listenerPort, loadBalancerName, subnetId, targetGroupName, targetId, targetPort, vpcId outputs: dnsName, listenerArn, loadBalancerArn, targetGroupArn
1
createLoadBalancer
createLoadBalancer
Create an internet-facing Network Load Balancer in the supplied subnet.
2
createTargetGroup
createTargetGroup
Create a TCP target group in the same VPC with a TCP health check.
3
createListener
createListener
Attach a TCP listener whose default action forwards to the target group.
4
registerTargets
registerTargets
Register the initial IP target with the TCP target group.

Source API Descriptions

Arazzo Workflow Specification

amazon-elastic-load-balancing-provision-network-load-balancer-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amazon Elastic Load Balancing Provision a Network Load Balancer
  summary: Stand up a TCP Network Load Balancer with a target group, listener, and registered targets.
  description: >-
    Provisions a Network Load Balancer for raw TCP traffic. It creates an
    internet-facing network load balancer in the supplied subnet, creates a TCP
    target group with a TCP health check, attaches a TCP listener that forwards
    to the target group, and registers the initial IP target. Each step spells
    out its request inline so the flow can be read and executed without opening
    the underlying OpenAPI description. The Elastic Load Balancing v2 API uses
    the AWS query protocol, so every operation is a GET whose inputs are carried
    as query parameters rather than a request body.
  version: 1.0.0
sourceDescriptions:
- name: elbv2Api
  url: ../openapi/amazon-elastic-load-balancing-openapi.yml
  type: openapi
workflows:
- workflowId: provision-network-load-balancer
  summary: Create an NLB, a TCP target group, a TCP listener, and register targets.
  description: >-
    Chains createLoadBalancer, createTargetGroup, createListener, and
    registerTargets to produce a traffic-ready TCP Network Load Balancer in a
    single run.
  inputs:
    type: object
    required:
    - loadBalancerName
    - subnetId
    - targetGroupName
    - vpcId
    - targetId
    properties:
      loadBalancerName:
        type: string
        description: The unique name for the network load balancer (max 32 characters).
      subnetId:
        type: string
        description: The ID of a subnet to place the load balancer in.
      targetGroupName:
        type: string
        description: The unique name for the target group.
      vpcId:
        type: string
        description: The ID of the VPC for the target group and targets.
      listenerPort:
        type: integer
        description: The TCP port the listener accepts connections on.
        default: 443
      targetPort:
        type: integer
        description: The TCP port the targets receive traffic on.
        default: 443
      targetId:
        type: string
        description: The IP address of the first target to register.
  steps:
  - stepId: createLoadBalancer
    description: Create an internet-facing Network Load Balancer in the supplied subnet.
    operationId: createLoadBalancer
    parameters:
    - name: Name
      in: query
      value: $inputs.loadBalancerName
    - name: Subnets
      in: query
      value: $inputs.subnetId
    - name: Scheme
      in: query
      value: internet-facing
    - name: Type
      in: query
      value: network
    - name: IpAddressType
      in: query
      value: ipv4
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      loadBalancerArn: $response.body#/loadBalancers/0/loadBalancerArn
      dnsName: $response.body#/loadBalancers/0/dnsName
  - stepId: createTargetGroup
    description: Create a TCP target group in the same VPC with a TCP health check.
    operationId: createTargetGroup
    parameters:
    - name: Name
      in: query
      value: $inputs.targetGroupName
    - name: Protocol
      in: query
      value: TCP
    - name: Port
      in: query
      value: $inputs.targetPort
    - name: VpcId
      in: query
      value: $inputs.vpcId
    - name: HealthCheckProtocol
      in: query
      value: TCP
    - name: TargetType
      in: query
      value: ip
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      targetGroupArn: $response.body#/targetGroups/0/targetGroupArn
  - stepId: createListener
    description: Attach a TCP listener whose default action forwards to the target group.
    operationId: createListener
    parameters:
    - name: LoadBalancerArn
      in: query
      value: $steps.createLoadBalancer.outputs.loadBalancerArn
    - name: Protocol
      in: query
      value: TCP
    - name: Port
      in: query
      value: $inputs.listenerPort
    - name: DefaultActions.member.1.Type
      in: query
      value: forward
    - name: DefaultActions.member.1.TargetGroupArn
      in: query
      value: $steps.createTargetGroup.outputs.targetGroupArn
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      listenerArn: $response.body#/listeners/0/listenerArn
  - stepId: registerTargets
    description: Register the initial IP target with the TCP target group.
    operationId: registerTargets
    parameters:
    - name: TargetGroupArn
      in: query
      value: $steps.createTargetGroup.outputs.targetGroupArn
    - name: Targets.member.1.Id
      in: query
      value: $inputs.targetId
    - name: Targets.member.1.Port
      in: query
      value: $inputs.targetPort
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      registered: $statusCode
  outputs:
    loadBalancerArn: $steps.createLoadBalancer.outputs.loadBalancerArn
    dnsName: $steps.createLoadBalancer.outputs.dnsName
    targetGroupArn: $steps.createTargetGroup.outputs.targetGroupArn
    listenerArn: $steps.createListener.outputs.listenerArn