Class: AWSCDK::MediaConnect::CfnFlow::SourceProperty

Inherits:
Jsii::Struct
  • Object
show all
Defined in:
media_connect/cfn_flow.rb

Overview

The details of the sources of the flow.

If you are creating a flow with a VPC source, you must first create the flow with a temporary standard source by doing the following:

  • Use CloudFormation to create a flow with a standard source that uses the flow’s public IP address.
  • Use CloudFormation to create the VPC interface to add to this flow. This can also be done as part of the previous step.
  • After CloudFormation has created the flow and the VPC interface, update the source to point to the VPC interface that you created.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(decryption: nil, description: nil, entitlement_arn: nil, gateway_bridge_source: nil, ingest_ip: nil, ingest_port: nil, max_bitrate: nil, max_latency: nil, max_sync_buffer: nil, media_stream_source_configurations: nil, min_latency: nil, name: nil, ndi_source_settings: nil, protocol: nil, router_integration_state: nil, router_integration_transit_decryption: nil, sender_control_port: nil, sender_ip_address: nil, source_arn: nil, source_ingest_port: nil, source_listener_address: nil, source_listener_port: nil, stream_id: nil, tags: nil, vpc_interface_name: nil, whitelist_cidr: nil) ⇒ SourceProperty

Returns a new instance of SourceProperty.

Parameters:

  • decryption (AWSCDK::IResolvable, AWSCDK::MediaConnect::CfnFlow::EncryptionProperty, nil) (defaults to: nil)

    The type of encryption that is used on the content ingested from this source.

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

    A description for the source.

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

    The ARN of the entitlement that allows you to subscribe to content that comes from another AWS account.

  • gateway_bridge_source (AWSCDK::IResolvable, AWSCDK::MediaConnect::CfnFlow::GatewayBridgeSourceProperty, nil) (defaults to: nil)

    The source configuration for cloud flows receiving a stream from a bridge.

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

    The IP address that the flow will be listening on for incoming content.

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

    The port that the flow will be listening on for incoming content.

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

    The maximum bitrate for RIST, RTP, and RTP-FEC streams.

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

    The maximum latency in milliseconds for a RIST or Zixi-based source.

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

    The size of the buffer (in milliseconds) to use to sync incoming source data.

  • media_stream_source_configurations (AWSCDK::IResolvable, Array<AWSCDK::IResolvable, AWSCDK::MediaConnect::CfnFlow::MediaStreamSourceConfigurationProperty>, nil) (defaults to: nil)

    The media streams that are associated with the source, and the parameters for those associations.

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

    The minimum latency in milliseconds for SRT-based streams.

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

    The name of the source.

  • ndi_source_settings (AWSCDK::IResolvable, AWSCDK::MediaConnect::CfnFlow::NdiSourceSettingsProperty, nil) (defaults to: nil)
  • protocol (String, nil) (defaults to: nil)

    The protocol that is used by the source.

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

    Indicates if router integration is enabled or disabled on the flow source.

  • router_integration_transit_decryption (AWSCDK::IResolvable, AWSCDK::MediaConnect::CfnFlow::FlowTransitEncryptionProperty, nil) (defaults to: nil)

    The decryption configuration for the flow source when router integration is enabled.

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

    The port that the flow uses to send outbound requests to initiate connection with the sender.

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

    The IP address that the flow communicates with to initiate connection with the sender.

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

    The ARN of the source.

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

    The port that the flow listens on for incoming content.

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

    Source IP or domain name for SRT-caller protocol.

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

    Source port for SRT-caller protocol.

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

    The stream ID that you want to use for the transport.

  • tags (Array<AWSCDK::CfnTag>, nil) (defaults to: nil)

    Key-value pairs that can be used to tag this source.

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

    The name of the VPC interface that is used for this source.

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

    The range of IP addresses that should be allowed to contribute content to your source.



2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
# File 'media_connect/cfn_flow.rb', line 2008

def initialize(decryption: nil, description: nil, entitlement_arn: nil, gateway_bridge_source: nil, ingest_ip: nil, ingest_port: nil, max_bitrate: nil, max_latency: nil, max_sync_buffer: nil, media_stream_source_configurations: nil, min_latency: nil, name: nil, ndi_source_settings: nil, protocol: nil, router_integration_state: nil, router_integration_transit_decryption: nil, sender_control_port: nil, sender_ip_address: nil, source_arn: nil, source_ingest_port: nil, source_listener_address: nil, source_listener_port: nil, stream_id: nil, tags: nil, vpc_interface_name: nil, whitelist_cidr: nil)
  @decryption = decryption.is_a?(Hash) ? ::AWSCDK::MediaConnect::CfnFlow::EncryptionProperty.new(**decryption.transform_keys(&:to_sym)) : decryption
  Jsii::Type.check_type(@decryption, JSON.parse(Base64.strict_decode64("eyJ1bmlvbiI6eyJ0eXBlcyI6W3siZnFuIjoiYXdzLWNkay1saWIuSVJlc29sdmFibGUifSx7ImZxbiI6ImF3cy1jZGstbGliLmF3c19tZWRpYWNvbm5lY3QuQ2ZuRmxvdy5FbmNyeXB0aW9uUHJvcGVydHkifV19fQ==")), "decryption") unless @decryption.nil?
  @description = description
  Jsii::Type.check_type(@description, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "description") unless @description.nil?
  @entitlement_arn = entitlement_arn
  Jsii::Type.check_type(@entitlement_arn, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "entitlementArn") unless @entitlement_arn.nil?
  @gateway_bridge_source = gateway_bridge_source.is_a?(Hash) ? ::AWSCDK::MediaConnect::CfnFlow::GatewayBridgeSourceProperty.new(**gateway_bridge_source.transform_keys(&:to_sym)) : gateway_bridge_source
  Jsii::Type.check_type(@gateway_bridge_source, JSON.parse(Base64.strict_decode64("eyJ1bmlvbiI6eyJ0eXBlcyI6W3siZnFuIjoiYXdzLWNkay1saWIuSVJlc29sdmFibGUifSx7ImZxbiI6ImF3cy1jZGstbGliLmF3c19tZWRpYWNvbm5lY3QuQ2ZuRmxvdy5HYXRld2F5QnJpZGdlU291cmNlUHJvcGVydHkifV19fQ==")), "gatewayBridgeSource") unless @gateway_bridge_source.nil?
  @ingest_ip = ingest_ip
  Jsii::Type.check_type(@ingest_ip, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "ingestIp") unless @ingest_ip.nil?
  @ingest_port = ingest_port
  Jsii::Type.check_type(@ingest_port, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "ingestPort") unless @ingest_port.nil?
  @max_bitrate = max_bitrate
  Jsii::Type.check_type(@max_bitrate, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "maxBitrate") unless @max_bitrate.nil?
  @max_latency = max_latency
  Jsii::Type.check_type(@max_latency, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "maxLatency") unless @max_latency.nil?
  @max_sync_buffer = max_sync_buffer
  Jsii::Type.check_type(@max_sync_buffer, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "maxSyncBuffer") unless @max_sync_buffer.nil?
  @media_stream_source_configurations = media_stream_source_configurations
  Jsii::Type.check_type(@media_stream_source_configurations, JSON.parse(Base64.strict_decode64("eyJ1bmlvbiI6eyJ0eXBlcyI6W3siZnFuIjoiYXdzLWNkay1saWIuSVJlc29sdmFibGUifSx7ImNvbGxlY3Rpb24iOnsiZWxlbWVudHR5cGUiOnsidW5pb24iOnsidHlwZXMiOlt7ImZxbiI6ImF3cy1jZGstbGliLklSZXNvbHZhYmxlIn0seyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfbWVkaWFjb25uZWN0LkNmbkZsb3cuTWVkaWFTdHJlYW1Tb3VyY2VDb25maWd1cmF0aW9uUHJvcGVydHkifV19fSwia2luZCI6ImFycmF5In19XX19")), "mediaStreamSourceConfigurations") unless @media_stream_source_configurations.nil?
  @min_latency = min_latency
  Jsii::Type.check_type(@min_latency, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "minLatency") unless @min_latency.nil?
  @name = name
  Jsii::Type.check_type(@name, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "name") unless @name.nil?
  @ndi_source_settings = ndi_source_settings.is_a?(Hash) ? ::AWSCDK::MediaConnect::CfnFlow::NdiSourceSettingsProperty.new(**ndi_source_settings.transform_keys(&:to_sym)) : ndi_source_settings
  Jsii::Type.check_type(@ndi_source_settings, JSON.parse(Base64.strict_decode64("eyJ1bmlvbiI6eyJ0eXBlcyI6W3siZnFuIjoiYXdzLWNkay1saWIuSVJlc29sdmFibGUifSx7ImZxbiI6ImF3cy1jZGstbGliLmF3c19tZWRpYWNvbm5lY3QuQ2ZuRmxvdy5OZGlTb3VyY2VTZXR0aW5nc1Byb3BlcnR5In1dfX0=")), "ndiSourceSettings") unless @ndi_source_settings.nil?
  @protocol = protocol
  Jsii::Type.check_type(@protocol, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "protocol") unless @protocol.nil?
  @router_integration_state = router_integration_state
  Jsii::Type.check_type(@router_integration_state, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "routerIntegrationState") unless @router_integration_state.nil?
  @router_integration_transit_decryption = router_integration_transit_decryption.is_a?(Hash) ? ::AWSCDK::MediaConnect::CfnFlow::FlowTransitEncryptionProperty.new(**router_integration_transit_decryption.transform_keys(&:to_sym)) : router_integration_transit_decryption
  Jsii::Type.check_type(@router_integration_transit_decryption, JSON.parse(Base64.strict_decode64("eyJ1bmlvbiI6eyJ0eXBlcyI6W3siZnFuIjoiYXdzLWNkay1saWIuSVJlc29sdmFibGUifSx7ImZxbiI6ImF3cy1jZGstbGliLmF3c19tZWRpYWNvbm5lY3QuQ2ZuRmxvdy5GbG93VHJhbnNpdEVuY3J5cHRpb25Qcm9wZXJ0eSJ9XX19")), "routerIntegrationTransitDecryption") unless @router_integration_transit_decryption.nil?
  @sender_control_port = sender_control_port
  Jsii::Type.check_type(@sender_control_port, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "senderControlPort") unless @sender_control_port.nil?
  @sender_ip_address = sender_ip_address
  Jsii::Type.check_type(@sender_ip_address, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "senderIpAddress") unless @sender_ip_address.nil?
  @source_arn = source_arn
  Jsii::Type.check_type(@source_arn, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "sourceArn") unless @source_arn.nil?
  @source_ingest_port = source_ingest_port
  Jsii::Type.check_type(@source_ingest_port, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "sourceIngestPort") unless @source_ingest_port.nil?
  @source_listener_address = source_listener_address
  Jsii::Type.check_type(@source_listener_address, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "sourceListenerAddress") unless @source_listener_address.nil?
  @source_listener_port = source_listener_port
  Jsii::Type.check_type(@source_listener_port, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "sourceListenerPort") unless @source_listener_port.nil?
  @stream_id = stream_id
  Jsii::Type.check_type(@stream_id, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "streamId") unless @stream_id.nil?
  @tags = tags.is_a?(Array) ? tags.map { |jsii_v0| jsii_v0.is_a?(Hash) ? ::AWSCDK::CfnTag.new(**jsii_v0.transform_keys(&:to_sym)) : jsii_v0 } : tags
  Jsii::Type.check_type(@tags, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7ImZxbiI6ImF3cy1jZGstbGliLkNmblRhZyJ9LCJraW5kIjoiYXJyYXkifX0=")), "tags") unless @tags.nil?
  @vpc_interface_name = vpc_interface_name
  Jsii::Type.check_type(@vpc_interface_name, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "vpcInterfaceName") unless @vpc_interface_name.nil?
  @whitelist_cidr = whitelist_cidr
  Jsii::Type.check_type(@whitelist_cidr, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "whitelistCidr") unless @whitelist_cidr.nil?
end

Instance Attribute Details

#decryptionAWSCDK::IResolvable, ... (readonly)

The type of encryption that is used on the content ingested from this source.



2067
2068
2069
# File 'media_connect/cfn_flow.rb', line 2067

def decryption
  @decryption
end

#descriptionString? (readonly)

A description for the source.

This value is not used or seen outside of the current MediaConnect account.



2074
2075
2076
# File 'media_connect/cfn_flow.rb', line 2074

def description
  @description
end

#entitlement_arnString? (readonly)

The ARN of the entitlement that allows you to subscribe to content that comes from another AWS account.

The entitlement is set by the content originator and the ARN is generated as part of the originator's flow.



2081
2082
2083
# File 'media_connect/cfn_flow.rb', line 2081

def entitlement_arn
  @entitlement_arn
end

#gateway_bridge_sourceAWSCDK::IResolvable, ... (readonly)

The source configuration for cloud flows receiving a stream from a bridge.



2086
2087
2088
# File 'media_connect/cfn_flow.rb', line 2086

def gateway_bridge_source
  @gateway_bridge_source
end

#ingest_ipString? (readonly)

The IP address that the flow will be listening on for incoming content.



2091
2092
2093
# File 'media_connect/cfn_flow.rb', line 2091

def ingest_ip
  @ingest_ip
end

#ingest_portNumeric? (readonly)

The port that the flow will be listening on for incoming content.



2096
2097
2098
# File 'media_connect/cfn_flow.rb', line 2096

def ingest_port
  @ingest_port
end

#max_bitrateNumeric? (readonly)

The maximum bitrate for RIST, RTP, and RTP-FEC streams.



2101
2102
2103
# File 'media_connect/cfn_flow.rb', line 2101

def max_bitrate
  @max_bitrate
end

#max_latencyNumeric? (readonly)

The maximum latency in milliseconds for a RIST or Zixi-based source.



2106
2107
2108
# File 'media_connect/cfn_flow.rb', line 2106

def max_latency
  @max_latency
end

#max_sync_bufferNumeric? (readonly)

The size of the buffer (in milliseconds) to use to sync incoming source data.



2111
2112
2113
# File 'media_connect/cfn_flow.rb', line 2111

def max_sync_buffer
  @max_sync_buffer
end

#media_stream_source_configurationsAWSCDK::IResolvable, ... (readonly)

The media streams that are associated with the source, and the parameters for those associations.



2116
2117
2118
# File 'media_connect/cfn_flow.rb', line 2116

def media_stream_source_configurations
  @media_stream_source_configurations
end

#min_latencyNumeric? (readonly)

The minimum latency in milliseconds for SRT-based streams.

In streams that use the SRT protocol, this value that you set on your MediaConnect source or output represents the minimal potential latency of that connection. The latency of the stream is set to the highest number between the sender’s minimum latency and the receiver’s minimum latency.



2123
2124
2125
# File 'media_connect/cfn_flow.rb', line 2123

def min_latency
  @min_latency
end

#nameString? (readonly)

The name of the source.



2128
2129
2130
# File 'media_connect/cfn_flow.rb', line 2128

def name
  @name
end

#ndi_source_settingsAWSCDK::IResolvable, ... (readonly)



2131
2132
2133
# File 'media_connect/cfn_flow.rb', line 2131

def ndi_source_settings
  @ndi_source_settings
end

#protocolString? (readonly)

The protocol that is used by the source.

AWS CloudFormation does not currently support CDI or ST 2110 JPEG XS source protocols.

AWS Elemental MediaConnect no longer supports the Fujitsu QoS protocol. This reference is maintained for legacy purposes only.



2140
2141
2142
# File 'media_connect/cfn_flow.rb', line 2140

def protocol
  @protocol
end

#router_integration_stateString? (readonly)

Indicates if router integration is enabled or disabled on the flow source.



2145
2146
2147
# File 'media_connect/cfn_flow.rb', line 2145

def router_integration_state
  @router_integration_state
end

#router_integration_transit_decryptionAWSCDK::IResolvable, ... (readonly)

The decryption configuration for the flow source when router integration is enabled.



2150
2151
2152
# File 'media_connect/cfn_flow.rb', line 2150

def router_integration_transit_decryption
  @router_integration_transit_decryption
end

#sender_control_portNumeric? (readonly)

The port that the flow uses to send outbound requests to initiate connection with the sender.



2155
2156
2157
# File 'media_connect/cfn_flow.rb', line 2155

def sender_control_port
  @sender_control_port
end

#sender_ip_addressString? (readonly)

The IP address that the flow communicates with to initiate connection with the sender.



2160
2161
2162
# File 'media_connect/cfn_flow.rb', line 2160

def sender_ip_address
  @sender_ip_address
end

#source_arnString? (readonly)

The ARN of the source.



2165
2166
2167
# File 'media_connect/cfn_flow.rb', line 2165

def source_arn
  @source_arn
end

#source_ingest_portString? (readonly)

The port that the flow listens on for incoming content.

If the protocol of the source is Zixi, the port must be set to 2088.



2172
2173
2174
# File 'media_connect/cfn_flow.rb', line 2172

def source_ingest_port
  @source_ingest_port
end

#source_listener_addressString? (readonly)

Source IP or domain name for SRT-caller protocol.



2177
2178
2179
# File 'media_connect/cfn_flow.rb', line 2177

def source_listener_address
  @source_listener_address
end

#source_listener_portNumeric? (readonly)

Source port for SRT-caller protocol.



2182
2183
2184
# File 'media_connect/cfn_flow.rb', line 2182

def source_listener_port
  @source_listener_port
end

#stream_idString? (readonly)

The stream ID that you want to use for the transport.

This parameter applies only to Zixi-based streams.



2189
2190
2191
# File 'media_connect/cfn_flow.rb', line 2189

def stream_id
  @stream_id
end

#tagsArray<AWSCDK::CfnTag>? (readonly)

Key-value pairs that can be used to tag this source.



2194
2195
2196
# File 'media_connect/cfn_flow.rb', line 2194

def tags
  @tags
end

#vpc_interface_nameString? (readonly)

The name of the VPC interface that is used for this source.



2199
2200
2201
# File 'media_connect/cfn_flow.rb', line 2199

def vpc_interface_name
  @vpc_interface_name
end

#whitelist_cidrString? (readonly)

The range of IP addresses that should be allowed to contribute content to your source.

These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.



2206
2207
2208
# File 'media_connect/cfn_flow.rb', line 2206

def whitelist_cidr
  @whitelist_cidr
end

Class Method Details

.jsii_propertiesObject



2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
# File 'media_connect/cfn_flow.rb', line 2208

def self.jsii_properties
  {
    :decryption => "decryption",
    :description => "description",
    :entitlement_arn => "entitlementArn",
    :gateway_bridge_source => "gatewayBridgeSource",
    :ingest_ip => "ingestIp",
    :ingest_port => "ingestPort",
    :max_bitrate => "maxBitrate",
    :max_latency => "maxLatency",
    :max_sync_buffer => "maxSyncBuffer",
    :media_stream_source_configurations => "mediaStreamSourceConfigurations",
    :min_latency => "minLatency",
    :name => "name",
    :ndi_source_settings => "ndiSourceSettings",
    :protocol => "protocol",
    :router_integration_state => "routerIntegrationState",
    :router_integration_transit_decryption => "routerIntegrationTransitDecryption",
    :sender_control_port => "senderControlPort",
    :sender_ip_address => "senderIpAddress",
    :source_arn => "sourceArn",
    :source_ingest_port => "sourceIngestPort",
    :source_listener_address => "sourceListenerAddress",
    :source_listener_port => "sourceListenerPort",
    :stream_id => "streamId",
    :tags => "tags",
    :vpc_interface_name => "vpcInterfaceName",
    :whitelist_cidr => "whitelistCidr",
  }
end

Instance Method Details

#to_jsiiObject



2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
# File 'media_connect/cfn_flow.rb', line 2239

def to_jsii
  result = {}
  result.merge!({
    "decryption" => @decryption,
    "description" => @description,
    "entitlementArn" => @entitlement_arn,
    "gatewayBridgeSource" => @gateway_bridge_source,
    "ingestIp" => @ingest_ip,
    "ingestPort" => @ingest_port,
    "maxBitrate" => @max_bitrate,
    "maxLatency" => @max_latency,
    "maxSyncBuffer" => @max_sync_buffer,
    "mediaStreamSourceConfigurations" => @media_stream_source_configurations,
    "minLatency" => @min_latency,
    "name" => @name,
    "ndiSourceSettings" => @ndi_source_settings,
    "protocol" => @protocol,
    "routerIntegrationState" => @router_integration_state,
    "routerIntegrationTransitDecryption" => @router_integration_transit_decryption,
    "senderControlPort" => @sender_control_port,
    "senderIpAddress" => @sender_ip_address,
    "sourceArn" => @source_arn,
    "sourceIngestPort" => @source_ingest_port,
    "sourceListenerAddress" => @source_listener_address,
    "sourceListenerPort" => @source_listener_port,
    "streamId" => @stream_id,
    "tags" => @tags,
    "vpcInterfaceName" => @vpc_interface_name,
    "whitelistCidr" => @whitelist_cidr,
  })
  result.compact
end