Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -228,13 +228,13 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic

if (props.http2Enabled !== undefined) { this.setAttribute('routing.http2.enabled', props.http2Enabled ? 'true' : 'false'); }
if (props.idleTimeout !== undefined) { this.setAttribute('idle_timeout.timeout_seconds', props.idleTimeout.toSeconds().toString()); }
if (props.dropInvalidHeaderFields) { this.setAttribute('routing.http.drop_invalid_header_fields.enabled', 'true'); }
if (props.dropInvalidHeaderFields !== undefined) { this.setAttribute('routing.http.drop_invalid_header_fields.enabled', props.dropInvalidHeaderFields ? 'true' : 'false'); }
if (props.desyncMitigationMode !== undefined) { this.setAttribute('routing.http.desync_mitigation_mode', props.desyncMitigationMode); }
if (props.preserveHostHeader) { this.setAttribute('routing.http.preserve_host_header.enabled', 'true'); }
if (props.xAmznTlsVersionAndCipherSuiteHeaders) { this.setAttribute('routing.http.x_amzn_tls_version_and_cipher_suite.enabled', 'true'); }
if (props.preserveXffClientPort) { this.setAttribute('routing.http.xff_client_port.enabled', 'true'); }
if (props.preserveHostHeader !== undefined) { this.setAttribute('routing.http.preserve_host_header.enabled', props.preserveHostHeader ? 'true' : 'false'); }
if (props.xAmznTlsVersionAndCipherSuiteHeaders !== undefined) { this.setAttribute('routing.http.x_amzn_tls_version_and_cipher_suite.enabled', props.xAmznTlsVersionAndCipherSuiteHeaders ? 'true' : 'false'); }
if (props.preserveXffClientPort !== undefined) { this.setAttribute('routing.http.xff_client_port.enabled', props.preserveXffClientPort ? 'true' : 'false'); }
if (props.xffHeaderProcessingMode !== undefined) { this.setAttribute('routing.http.xff_header_processing.mode', props.xffHeaderProcessingMode); }
if (props.wafFailOpen) { this.setAttribute('waf.fail_open.enabled', 'true'); }
if (props.wafFailOpen !== undefined) { this.setAttribute('waf.fail_open.enabled', props.wafFailOpen ? 'true' : 'false'); }
if (props.clientKeepAlive !== undefined) {
const clientKeepAliveInMillis = props.clientKeepAlive.toMilliseconds();
if (clientKeepAliveInMillis < 1000) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,48 @@ describe('tests', () => {
});
});

test('Boolean attributes explicitly set to false are included in CloudFormation', () => {
// GIVEN
const stack = new cdk.Stack();
const vpc = new ec2.Vpc(stack, 'Stack');

// WHEN
new elbv2.ApplicationLoadBalancer(stack, 'LB', {
vpc,
dropInvalidHeaderFields: false,
preserveHostHeader: false,
xAmznTlsVersionAndCipherSuiteHeaders: false,
preserveXffClientPort: false,
wafFailOpen: false,
});

// THEN
Template.fromStack(stack).hasResourceProperties('AWS::ElasticLoadBalancingV2::LoadBalancer', {
LoadBalancerAttributes: Match.arrayWith([
{
Key: 'routing.http.drop_invalid_header_fields.enabled',
Value: 'false',
},
{
Key: 'routing.http.preserve_host_header.enabled',
Value: 'false',
},
{
Key: 'routing.http.x_amzn_tls_version_and_cipher_suite.enabled',
Value: 'false',
},
{
Key: 'routing.http.xff_client_port.enabled',
Value: 'false',
},
{
Key: 'waf.fail_open.enabled',
Value: 'false',
},
]),
});
});

test.each([59, 604801])('throw error for invalid clientKeepAlive in seconds', (duration) => {
// GIVEN
const stack = new cdk.Stack();
Expand Down
Loading