Class: AWSCDK::ECSPatterns::ApplicationMultipleTargetGroupsFargateServiceProps

Inherits:
ApplicationMultipleTargetGroupsServiceBaseProps
  • Object
show all
Defined in:
ecs_patterns/application_multiple_target_groups_fargate_service_props.rb

Overview

The properties for the ApplicationMultipleTargetGroupsFargateService service.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cloud_map_options: nil, cluster: nil, desired_count: nil, enable_ecs_managed_tags: nil, enable_execute_command: nil, health_check_grace_period: nil, load_balancers: nil, propagate_tags: nil, service_name: nil, target_groups: nil, task_image_options: nil, vpc: nil, circuit_breaker: nil, cpu: nil, ephemeral_storage_gib: nil, memory_limit_mib: nil, platform_version: nil, runtime_platform: nil, task_definition: nil, assign_public_ip: nil) ⇒ ApplicationMultipleTargetGroupsFargateServiceProps

Returns a new instance of ApplicationMultipleTargetGroupsFargateServiceProps.

Parameters:

  • cloud_map_options (AWSCDK::ECS::CloudMapOptions, nil) (defaults to: nil)

    The options for configuring an Amazon ECS service to use service discovery.

  • cluster (AWSCDK::ECS::ICluster, nil) (defaults to: nil)

    The name of the cluster that hosts the service.

  • desired_count (Numeric, nil) (defaults to: nil)

    The desired number of instantiations of the task definition to keep running on the service.

  • enable_ecs_managed_tags (Boolean, nil) (defaults to: nil)

    Specifies whether to enable Amazon ECS managed tags for the tasks within the service.

  • enable_execute_command (Boolean, nil) (defaults to: nil)

    Whether ECS Exec should be enabled.

  • health_check_grace_period (AWSCDK::Duration, nil) (defaults to: nil)

    The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started.

  • load_balancers (Array<AWSCDK::ECSPatterns::ApplicationLoadBalancerProps>, nil) (defaults to: nil)

    The application load balancer that will serve traffic to the service.

  • propagate_tags (AWSCDK::ECS::PropagatedTagSource, nil) (defaults to: nil)

    Specifies whether to propagate the tags from the task definition or the service to the tasks in the service.

  • service_name (String, nil) (defaults to: nil)

    The name of the service.

  • target_groups (Array<AWSCDK::ECSPatterns::ApplicationTargetProps>, nil) (defaults to: nil)

    Properties to specify ALB target groups.

  • task_image_options (AWSCDK::ECSPatterns::ApplicationLoadBalancedTaskImageProps, nil) (defaults to: nil)

    The properties required to create a new task definition.

  • vpc (AWSCDK::EC2::IVPC, nil) (defaults to: nil)

    The VPC where the container instances will be launched or the elastic network interfaces (ENIs) will be deployed.

  • circuit_breaker (AWSCDK::ECS::DeploymentCircuitBreaker, nil) (defaults to: nil)

    Whether to enable the deployment circuit breaker.

  • cpu (Numeric, nil) (defaults to: nil)

    The number of cpu units used by the task.

  • ephemeral_storage_gib (Numeric, nil) (defaults to: nil)

    The amount (in GiB) of ephemeral storage to be allocated to the task.

  • memory_limit_mib (Numeric, nil) (defaults to: nil)

    The amount (in MiB) of memory used by the task.

  • platform_version (AWSCDK::ECS::FargatePlatformVersion, nil) (defaults to: nil)

    The platform version on which to run your service.

  • runtime_platform (AWSCDK::ECS::RuntimePlatform, nil) (defaults to: nil)

    The runtime platform of the task definition.

  • task_definition (AWSCDK::ECS::FargateTaskDefinition, nil) (defaults to: nil)

    The task definition to use for tasks in the service. TaskDefinition or TaskImageOptions must be specified, but not both.

  • assign_public_ip (Boolean, nil) (defaults to: nil)

    Determines whether the service will be assigned a public IP address.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 28

def initialize(cloud_map_options: nil, cluster: nil, desired_count: nil, enable_ecs_managed_tags: nil, enable_execute_command: nil, health_check_grace_period: nil, load_balancers: nil, propagate_tags: nil, service_name: nil, target_groups: nil, task_image_options: nil, vpc: nil, circuit_breaker: nil, cpu: nil, ephemeral_storage_gib: nil, memory_limit_mib: nil, platform_version: nil, runtime_platform: nil, task_definition: nil, assign_public_ip: nil)
  @cloud_map_options = cloud_map_options.is_a?(Hash) ? ::AWSCDK::ECS::CloudMapOptions.new(**cloud_map_options.transform_keys(&:to_sym)) : cloud_map_options
  Jsii::Type.check_type(@cloud_map_options, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzLkNsb3VkTWFwT3B0aW9ucyJ9")), "cloudMapOptions") unless @cloud_map_options.nil?
  @cluster = cluster
  Jsii::Type.check_type(@cluster, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzLklDbHVzdGVyIn0=")), "cluster") unless @cluster.nil?
  @desired_count = desired_count
  Jsii::Type.check_type(@desired_count, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "desiredCount") unless @desired_count.nil?
  @enable_ecs_managed_tags = enable_ecs_managed_tags
  Jsii::Type.check_type(@enable_ecs_managed_tags, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJib29sZWFuIn0=")), "enableECSManagedTags") unless @enable_ecs_managed_tags.nil?
  @enable_execute_command = enable_execute_command
  Jsii::Type.check_type(@enable_execute_command, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJib29sZWFuIn0=")), "enableExecuteCommand") unless @enable_execute_command.nil?
  @health_check_grace_period = health_check_grace_period
  Jsii::Type.check_type(@health_check_grace_period, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5EdXJhdGlvbiJ9")), "healthCheckGracePeriod") unless @health_check_grace_period.nil?
  @load_balancers = load_balancers.is_a?(Array) ? load_balancers.map { |jsii_v0| jsii_v0.is_a?(Hash) ? ::AWSCDK::ECSPatterns::ApplicationLoadBalancerProps.new(**jsii_v0.transform_keys(&:to_sym)) : jsii_v0 } : load_balancers
  Jsii::Type.check_type(@load_balancers, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7ImZxbiI6ImF3cy1jZGstbGliLmF3c19lY3NfcGF0dGVybnMuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcyJ9LCJraW5kIjoiYXJyYXkifX0=")), "loadBalancers") unless @load_balancers.nil?
  @propagate_tags = propagate_tags
  Jsii::Type.check_type(@propagate_tags, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzLlByb3BhZ2F0ZWRUYWdTb3VyY2UifQ==")), "propagateTags") unless @propagate_tags.nil?
  @service_name = service_name
  Jsii::Type.check_type(@service_name, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "serviceName") unless @service_name.nil?
  @target_groups = target_groups.is_a?(Array) ? target_groups.map { |jsii_v0| jsii_v0.is_a?(Hash) ? ::AWSCDK::ECSPatterns::ApplicationTargetProps.new(**jsii_v0.transform_keys(&:to_sym)) : jsii_v0 } : target_groups
  Jsii::Type.check_type(@target_groups, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7ImZxbiI6ImF3cy1jZGstbGliLmF3c19lY3NfcGF0dGVybnMuQXBwbGljYXRpb25UYXJnZXRQcm9wcyJ9LCJraW5kIjoiYXJyYXkifX0=")), "targetGroups") unless @target_groups.nil?
  @task_image_options = task_image_options.is_a?(Hash) ? ::AWSCDK::ECSPatterns::ApplicationLoadBalancedTaskImageProps.new(**task_image_options.transform_keys(&:to_sym)) : task_image_options
  Jsii::Type.check_type(@task_image_options, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzX3BhdHRlcm5zLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkVGFza0ltYWdlUHJvcHMifQ==")), "taskImageOptions") unless @task_image_options.nil?
  @vpc = vpc
  Jsii::Type.check_type(@vpc, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWMyLklWcGMifQ==")), "vpc") unless @vpc.nil?
  @circuit_breaker = circuit_breaker.is_a?(Hash) ? ::AWSCDK::ECS::DeploymentCircuitBreaker.new(**circuit_breaker.transform_keys(&:to_sym)) : circuit_breaker
  Jsii::Type.check_type(@circuit_breaker, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzLkRlcGxveW1lbnRDaXJjdWl0QnJlYWtlciJ9")), "circuitBreaker") unless @circuit_breaker.nil?
  @cpu = cpu
  Jsii::Type.check_type(@cpu, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "cpu") unless @cpu.nil?
  @ephemeral_storage_gib = ephemeral_storage_gib
  Jsii::Type.check_type(@ephemeral_storage_gib, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "ephemeralStorageGiB") unless @ephemeral_storage_gib.nil?
  @memory_limit_mib = memory_limit_mib
  Jsii::Type.check_type(@memory_limit_mib, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "memoryLimitMiB") unless @memory_limit_mib.nil?
  @platform_version = platform_version
  Jsii::Type.check_type(@platform_version, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzLkZhcmdhdGVQbGF0Zm9ybVZlcnNpb24ifQ==")), "platformVersion") unless @platform_version.nil?
  @runtime_platform = runtime_platform.is_a?(Hash) ? ::AWSCDK::ECS::RuntimePlatform.new(**runtime_platform.transform_keys(&:to_sym)) : runtime_platform
  Jsii::Type.check_type(@runtime_platform, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzLlJ1bnRpbWVQbGF0Zm9ybSJ9")), "runtimePlatform") unless @runtime_platform.nil?
  @task_definition = task_definition
  Jsii::Type.check_type(@task_definition, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbiJ9")), "taskDefinition") unless @task_definition.nil?
  @assign_public_ip = assign_public_ip
  Jsii::Type.check_type(@assign_public_ip, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJib29sZWFuIn0=")), "assignPublicIp") unless @assign_public_ip.nil?
end

Instance Attribute Details

#assign_public_ipBoolean? (readonly)

Note:

Default: false

Determines whether the service will be assigned a public IP address.

Returns:

  • (Boolean, nil)


231
232
233
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 231

def assign_public_ip
  @assign_public_ip
end

#circuit_breakerAWSCDK::ECS::DeploymentCircuitBreaker? (readonly)

Note:

Default: - disabled

Whether to enable the deployment circuit breaker.

If this property is defined, circuit breaker will be implicitly enabled.



149
150
151
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 149

def circuit_breaker
  @circuit_breaker
end

#cloud_map_optionsAWSCDK::ECS::CloudMapOptions? (readonly)

Note:

Default: - AWS Cloud Map service discovery is not enabled.

The options for configuring an Amazon ECS service to use service discovery.



75
76
77
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 75

def cloud_map_options
  @cloud_map_options
end

#clusterAWSCDK::ECS::ICluster? (readonly)

Note:

Default: - create a new cluster; if both cluster and vpc are omitted, a new VPC will be created for you.

The name of the cluster that hosts the service.

If a cluster is specified, the vpc construct should be omitted. Alternatively, you can omit both cluster and vpc.

Returns:



82
83
84
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 82

def cluster
  @cluster
end

#cpuNumeric? (readonly)

Note:

Default: 256

The number of cpu units used by the task.

Valid values, which determines your range of valid values for the memory parameter:

256 (.25 vCPU) - Available memory values: 0.5GB, 1GB, 2GB

512 (.5 vCPU) - Available memory values: 1GB, 2GB, 3GB, 4GB

1024 (1 vCPU) - Available memory values: 2GB, 3GB, 4GB, 5GB, 6GB, 7GB, 8GB

2048 (2 vCPU) - Available memory values: Between 4GB and 16GB in 1GB increments

4096 (4 vCPU) - Available memory values: Between 8GB and 30GB in 1GB increments

8192 (8 vCPU) - Available memory values: Between 16GB and 60GB in 4GB increments

16384 (16 vCPU) - Available memory values: Between 32GB and 120GB in 8GB increments

This default is set in the underlying FargateTaskDefinition construct.

Returns:

  • (Numeric, nil)


172
173
174
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 172

def cpu
  @cpu
end

#desired_countNumeric? (readonly)

Note:

Default: - The default is 1 for all new services and uses the existing service's desired count when updating an existing service.

The desired number of instantiations of the task definition to keep running on the service.

Returns:

  • (Numeric, nil)


87
88
89
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 87

def desired_count
  @desired_count
end

#enable_ecs_managed_tagsBoolean? (readonly)

Note:

Default: false

Specifies whether to enable Amazon ECS managed tags for the tasks within the service.

For more information, see Tagging Your Amazon ECS Resources

Returns:

  • (Boolean, nil)


95
96
97
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 95

def enable_ecs_managed_tags
  @enable_ecs_managed_tags
end

#enable_execute_commandBoolean? (readonly)

Note:

Default: - false

Whether ECS Exec should be enabled.

Returns:

  • (Boolean, nil)


100
101
102
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 100

def enable_execute_command
  @enable_execute_command
end

#ephemeral_storage_gibNumeric? (readonly)

Note:

Default: Undefined, in which case, the task will receive 20GiB ephemeral storage.

The amount (in GiB) of ephemeral storage to be allocated to the task.

The minimum supported value is 21 GiB and the maximum supported value is 200 GiB.

Only supported in Fargate platform version 1.4.0 or later.

Returns:

  • (Numeric, nil)


181
182
183
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 181

def ephemeral_storage_gib
  @ephemeral_storage_gib
end

#health_check_grace_periodAWSCDK::Duration? (readonly)

Note:

Default: - defaults to 60 seconds if at least one load balancer is in-use and it is not already set

The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing target health checks after a task has first started.

Returns:



105
106
107
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 105

def health_check_grace_period
  @health_check_grace_period
end

#load_balancersArray<AWSCDK::ECSPatterns::ApplicationLoadBalancerProps>? (readonly)

Note:

Default: - a new load balancer with a listener will be created.

The application load balancer that will serve traffic to the service.



110
111
112
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 110

def load_balancers
  @load_balancers
end

#memory_limit_mibNumeric? (readonly)

Note:

Default: 512

The amount (in MiB) of memory used by the task.

This field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter:

512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU)

1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU)

2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU)

Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU)

Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU)

Between 16384 (16 GB) and 61440 (60 GB) in increments of 4096 (4 GB) - Available cpu values: 8192 (8 vCPU)

Between 32768 (32 GB) and 122880 (120 GB) in increments of 8192 (8 GB) - Available cpu values: 16384 (16 vCPU)

This default is set in the underlying FargateTaskDefinition construct.

Returns:

  • (Numeric, nil)


205
206
207
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 205

def memory_limit_mib
  @memory_limit_mib
end

#platform_versionAWSCDK::ECS::FargatePlatformVersion? (readonly)

Note:

Default: Latest

The platform version on which to run your service.

If one is not specified, the LATEST platform version is used by default. For more information, see AWS Fargate Platform Versions in the Amazon Elastic Container Service Developer Guide.



214
215
216
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 214

def platform_version
  @platform_version
end

#propagate_tagsAWSCDK::ECS::PropagatedTagSource? (readonly)

Note:

Default: - none

Specifies whether to propagate the tags from the task definition or the service to the tasks in the service.

Tags can only be propagated to the tasks within the service during service creation.



117
118
119
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 117

def propagate_tags
  @propagate_tags
end

#runtime_platformAWSCDK::ECS::RuntimePlatform? (readonly)

Note:

Default: - If the property is undefined, operatingSystemFamily is LINUX and cpuArchitecture is X86_64

The runtime platform of the task definition.



219
220
221
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 219

def runtime_platform
  @runtime_platform
end

#service_nameString? (readonly)

Note:

Default: - CloudFormation-generated name.

The name of the service.

Returns:

  • (String, nil)


122
123
124
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 122

def service_name
  @service_name
end

#target_groupsArray<AWSCDK::ECSPatterns::ApplicationTargetProps>? (readonly)

Note:

Default: - default portMapping registered as target group and attached to the first defined listener

Properties to specify ALB target groups.



127
128
129
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 127

def target_groups
  @target_groups
end

#task_definitionAWSCDK::ECS::FargateTaskDefinition? (readonly)

Note:

Default: - none

The task definition to use for tasks in the service. TaskDefinition or TaskImageOptions must be specified, but not both.

[disable-awslint:ref-via-interface]



226
227
228
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 226

def task_definition
  @task_definition
end

#task_image_optionsAWSCDK::ECSPatterns::ApplicationLoadBalancedTaskImageProps? (readonly)

Note:

Default: none

The properties required to create a new task definition.

Only one of TaskDefinition or TaskImageOptions must be specified.



134
135
136
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 134

def task_image_options
  @task_image_options
end

#vpcAWSCDK::EC2::IVPC? (readonly)

Note:

Default: - uses the VPC defined in the cluster or creates a new VPC.

The VPC where the container instances will be launched or the elastic network interfaces (ENIs) will be deployed.

If a vpc is specified, the cluster construct should be omitted. Alternatively, you can omit both vpc and cluster.

Returns:



141
142
143
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 141

def vpc
  @vpc
end

Class Method Details

.jsii_propertiesObject



233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 233

def self.jsii_properties
  {
    :cloud_map_options => "cloudMapOptions",
    :cluster => "cluster",
    :desired_count => "desiredCount",
    :enable_ecs_managed_tags => "enableECSManagedTags",
    :enable_execute_command => "enableExecuteCommand",
    :health_check_grace_period => "healthCheckGracePeriod",
    :load_balancers => "loadBalancers",
    :propagate_tags => "propagateTags",
    :service_name => "serviceName",
    :target_groups => "targetGroups",
    :task_image_options => "taskImageOptions",
    :vpc => "vpc",
    :circuit_breaker => "circuitBreaker",
    :cpu => "cpu",
    :ephemeral_storage_gib => "ephemeralStorageGiB",
    :memory_limit_mib => "memoryLimitMiB",
    :platform_version => "platformVersion",
    :runtime_platform => "runtimePlatform",
    :task_definition => "taskDefinition",
    :assign_public_ip => "assignPublicIp",
  }
end

Instance Method Details

#to_jsiiObject



258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
# File 'ecs_patterns/application_multiple_target_groups_fargate_service_props.rb', line 258

def to_jsii
  result = {}
  result.merge!(super)
  result.merge!({
    "cloudMapOptions" => @cloud_map_options,
    "cluster" => @cluster,
    "desiredCount" => @desired_count,
    "enableECSManagedTags" => @enable_ecs_managed_tags,
    "enableExecuteCommand" => @enable_execute_command,
    "healthCheckGracePeriod" => @health_check_grace_period,
    "loadBalancers" => @load_balancers,
    "propagateTags" => @propagate_tags,
    "serviceName" => @service_name,
    "targetGroups" => @target_groups,
    "taskImageOptions" => @task_image_options,
    "vpc" => @vpc,
    "circuitBreaker" => @circuit_breaker,
    "cpu" => @cpu,
    "ephemeralStorageGiB" => @ephemeral_storage_gib,
    "memoryLimitMiB" => @memory_limit_mib,
    "platformVersion" => @platform_version,
    "runtimePlatform" => @runtime_platform,
    "taskDefinition" => @task_definition,
    "assignPublicIp" => @assign_public_ip,
  })
  result.compact
end