1

我目前正在试验新的aws-cdk,我发现文档中的示例非常缺乏。

是否可以提供更多示例,尤其是围绕:

  • ELBv2
  • 带有用户数据的 ASG/EC2

更准确地说:我正在尝试NLB+TargetGroup+ASG在现有的基础上构建一个VPC,并在许多语法陷阱上苦苦挣扎。

4

1 回答 1

1

以下是一些示例: 对于 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;
}
于 2018-10-03T13:57:58.430 回答