документация aws-cdk - elbv2 - PullRequest
       8

документация aws-cdk - elbv2

0 голосов
/ 07 сентября 2018

Я в настоящее время экспериментирую с новым aws-cdk, и я обнаружил, что в примерах совсем нет документации.

Можно ли привести больше примеров, особенно вокруг:

  • ELBv2
  • ASG / EC2 с пользовательскими данными

Чтобы быть немного более точным: Я пытаюсь построить NLB+TargetGroup+ASG на существующем VPC и борюсь со многими синтаксическими ошибками.

1 Ответ

0 голосов
/ 03 октября 2018

Вот несколько примеров: Для Java это то, что находится внутри методов, которые я создал, и не включает в себя все, также не может быть лучшей практикой.

NetworkLoadBalancer networkLoadBalancer = new NetworkLoadBalancer(this, "NLB01", NetworkLoadBalancerProps.builder()
            .withInternetFacing(false)

            .withLoadBalancerName(new FnSub("${ProjectID}NLB").toString())
            .withVpc(vpcNetworkRef)
            .build());

AutoScalingGroupResource autoScalingGroupResource = new AutoScalingGroupResource(this, "AutoScalingGroup",
            AutoScalingGroupResourceProps.builder()
                    .withAutoScalingGroupName(new FnSub("${ProjectID}-ServerGroup"))
                    .withLaunchConfigurationName(launchConfigurationResource.getLaunchConfigurationName())
                    .withMinSize(minSizeParam.getValue().toString())
                    .withMaxSize(maxSizeParam.getValue().toString())
                    .withDesiredCapacity(desiredCapacityParam.getValue().toString())
                    .withTargetGroupArns(Collections.singletonList(targetGroupResource.getTargetGroupArn()))
                    .withVpcZoneIdentifier(subnets)
                    .withHealthCheckType("ELB")
                    .withHealthCheckGracePeriod(1020)
                    .build());

new LaunchConfigurationResource(this, "LaunchConfiguration",
                LaunchConfigurationResourceProps.builder()
                        .withLaunchConfigurationName(new FnSub("${ProjectID}-LaunchConfiguration"))
                        .withImageId(amiIDParam.getValue().toString())
                        .withKeyName(keyNameParam.getValue().toString())
                        .withSecurityGroups(securityGroupList) 
                        .withInstanceType(instanceTypeParam.getValue().toString())
                        .withAssociatePublicIpAddress(false)
                        .build());
List<Object> defaultActionsList = new ArrayList<>();

    defaultActionsList.add(ListenerResource.ActionProperty.builder()
            .withTargetGroupArn(targetGroupResource.getRef().toString())
            .withType("forward")
            .build());

    ListenerResource listenerResource = new ListenerResource(this, "Listener",
            ListenerResourceProps.builder()
                    .withPort(80)
                    .withProtocol("TCP")
                    .withLoadBalancerArn(loadBalancerResource.getRef().toString())
                    .withDefaultActions(defaultActionsList)
                    .build());
    listenerResource.addDependency( IDependable.builder()
            .withDependencyElements(loadBalancerResource.getDependencyElements())
            .build());

new TargetGroupResource(this, "TargetGroup",
                TargetGroupResourceProps.builder()
                        .withHealthCheckIntervalSeconds(30) //FUTURE Parameter with limit as only [10,30] valid
                        .withHealthCheckProtocol("TCP")
                        .withHealthyThresholdCount(2)
                        .withPort(80)
                        .withProtocol("TCP")
                        .withUnhealthyThresholdCount(2)
                        .withVpcId(fnImportValueVpcId)
                        .withTargetGroupName("Target-Group")
                        .withTags(tagsTargetGroup.addTag("Owner", ownerParam.getValue().toString()))
                        .build());

TagList tagsNLB = new TagList();

    LoadBalancerResource loadBalancerResource = new LoadBalancerResource(this, "NLB",
            LoadBalancerResourceProps.builder()
                    .withLoadBalancerName("Network-Load-Balancer")
                    .withScheme("internal")
                    .withType("network")
                    .withTags(tagsNLB.addTag("Owner", ownerParam.getValue().toString()))
                    .withSubnets(subnets)
                    .build());

    tagsNLB.addTag("Name", "NLB");

 Output restAPIoutput =
            new Output(this, "LoadBalancerArn", OutputProps.builder()
                    .withDescription("NLB")
                    .withExport(fnSubProjectID.toString())
                    .withValue(loadBalancerResource.getRef())
                    .build());

* Вот функция для создания параметра *

private Parameter createParameter(String name, String type, String defaultTo, String description){
    Parameter parameter =
            new Parameter( this,name,
                    ParameterProps.builder()
                            .withType(type)
                            .withDefault(defaultTo)
                            .withDescription(description)
                            .build());
    return parameter;
}
...