Skip to content

Commit 3cbd84f

Browse files
A quick second pass through the custom components topic (#56462)
1 parent 6f2a59c commit 3cbd84f

File tree

2 files changed

+51
-38
lines changed

2 files changed

+51
-38
lines changed
Loading
Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,62 @@
11
---
2-
title: Custom Components (Experimental)
2+
products: oss-community, oss-enterprise
33
---
4-
# Custom Components for the Connector Builder (Experimental)
54

6-
:::danger
7-
**SECURITY WARNING**: Custom Components are currently considered **UNSAFE** and **EXPERIMENTAL**. We do not provide any sandboxing guarantees. This feature could potentially execute arbitrary code in your Airbyte environment.
5+
# Custom components for the Connector Builder
86

9-
Administrators should enable this feature at their own discretion and risk. Only available in OSS and Enterprise deployments.
10-
:::
11-
12-
![Custom Components interface in the Connector Builder UI](./assets/connector_builder_components.png)
13-
*Screenshot: The Custom Components editor showing a simple RecordTransformation component that appends text to a record's name field.*
7+
Use Custom Components to extend the Connector Builder with your own Python implementations when Airbyte's built-in components don't meet your specific needs.
148

15-
## What are Custom Components?
16-
17-
Custom Components allow you to extend the Connector Builder with your own Python implementations when the built-in components don't meet your specific integration needs. This feature enables you to:
9+
This feature enables you to:
1810

1911
- Override any built-in component with a custom Python class
12+
2013
- Implement specialized logic for handling complex API behaviors
14+
2115
- Maintain full control over the connection process while still leveraging the Connector Builder framework
2216

23-
At their core, Custom Components are Python classes that implement specific interfaces from the Airbyte CDK. They follow a consistent pattern:
17+
The following example shows a simple RecordTransformation component that appends text to a record's name field.
18+
19+
![Custom Components interface in the Connector Builder UI](./assets/connector_builder_components.png)
20+
21+
## What are Custom Components?
22+
23+
Custom Components are Python classes that implement specific interfaces from the Airbyte CDK. They follow a consistent pattern:
24+
2425
- A dataclass that implements the interface of the component it's replacing
26+
2527
- Fields representing configurable arguments from the YAML configuration
26-
- Implementation of required methods to handle the component's specific functionality
2728

28-
When enabled, Custom Components bring the full flexibility of the Low-Code CDK's advanced capabilities directly into the Connector Builder UI environment.
29+
- Implementation of required methods to handle the component's specific capability
2930

30-
## Why Custom Components are Powerful
31+
## Why Custom Components are powerful
3132

32-
Custom Components provide significant advantages when building complex connectors:
33+
When enabled, Custom Components bring the full flexibility of the Low-Code CDK into the simpler Connector Builder UI. Custom Components provide significant advantages when building complex connectors, and they equip you to integrate with virtually any API, regardless of complexity or your unique requirements.
3334

34-
1. **Handle Edge Cases**: They allow you to address unique API behaviors that aren't covered by built-in components, such as unusual pagination patterns, complex authentication schemes, or specialized data transformation needs.
35+
1. **Handle Edge Cases**: Address unique API behaviors that aren't covered by built-in components, such as unusual pagination patterns, complex authentication schemes, or specialized data transformation needs.
3536

36-
2. **Extend Functionality**: When standard components don't offer the precise functionality you need, Custom Components let you implement exactly what's required without compromising.
37+
2. **Extend Functionality**: When standard components don't offer the precise capabilities you need, Custom Components let you implement exactly what's required without compromising.
3738

3839
3. **Maintain Framework Benefits**: While providing customization, you still benefit from the structure, testing capabilities, and deployment options of the Connector Builder framework.
3940

4041
4. **Iterative Development**: You can start with built-in components and gradually replace only the specific parts that need customization, rather than building an entire connector from scratch.
4142

4243
5. **Specialized Transformations**: Implement complex data manipulation, normalization, or enrichment that goes beyond what declarative configuration can provide.
4344

44-
This powerful capability bridges the gap between low-code simplicity and custom code flexibility, enabling integration with virtually any API regardless of its complexity or unique requirements.
45+
## How to enable Custom Components
4546

46-
## How to Enable Custom Components
47+
:::danger Security Warning
48+
Custom Components are currently considered **UNSAFE** and **EXPERIMENTAL**. Airbyte doesn't provide any sandboxing guarantees. This feature could execute arbitrary code in your Airbyte environment. Enable it at your own risk.
49+
:::
50+
51+
Airbyte disables Custom Components by default due to their experimental nature and security implications. Administrators can enable this feature in Self-Managed Community and Self-Managed Enterprise deployments using one of the following methods:
4752

48-
Custom Components are disabled by default due to their experimental nature and security implications. Administrators can enable this feature in OSS and Enterprise deployments using one of the following methods:
53+
### Using abctl
4954

50-
### Using ABCTL
55+
If you deploy Airbyte with abctl, follow the steps below to update your values and redeploy Airbyte.
5156

52-
1. Create a values override file (e.g., `custom-components-values.yaml`) with the following content:
53-
```yaml
57+
1. Edit your existing `values.yaml` file or create a new override file with this configuration:
58+
59+
```yaml title="values.yaml"
5460
workload-launcher:
5561
extraEnv:
5662
AIRBYTE_ENABLE_UNSAFE_CODE: true
@@ -59,17 +65,19 @@ Custom Components are disabled by default due to their experimental nature and s
5965
AIRBYTE_ENABLE_UNSAFE_CODE: true
6066
```
6167
62-
2. Use this file during deployment with the ABCTL command:
68+
2. Use this file during deployment with the abctl command:
69+
6370
```bash
64-
abctl local install --values custom-components-values.yaml
71+
abctl local install --values values.yaml
6572
```
6673

67-
### Using Helm Charts Directly
74+
### Using Helm charts
6875

69-
If you're deploying Airbyte using our public Helm charts without ABCTL:
76+
If you're deploying Airbyte using public Helm charts without abctl, follow the steps below to update your values and redeploy Airbyte.
7077

71-
1. Edit your existing `values.yaml` file or create a new override file with the same configuration:
72-
```yaml
78+
1. Edit your existing `values.yaml` file or create a new override file with this configuration:
79+
80+
```yaml title="values.yaml"
7381
workload-launcher:
7482
extraEnv:
7583
AIRBYTE_ENABLE_UNSAFE_CODE: true
@@ -79,30 +87,35 @@ If you're deploying Airbyte using our public Helm charts without ABCTL:
7987
```
8088
8189
2. Apply the configuration during Helm installation or upgrade:
90+
8291
```bash
83-
helm upgrade --install airbyte airbyte/airbyte -f values.yaml -f custom-components-values.yaml
92+
helm upgrade --install airbyte airbyte/airbyte -f values.yaml -f values.yaml
8493
```
8594

8695
:::caution
87-
After enabling Custom Components, carefully monitor your deployment for any security or performance issues. Remember that this feature allows execution of arbitrary code in your Airbyte environment.
96+
Monitor your deployment for any security or performance issues. Remember that this feature allows execution of arbitrary code in your Airbyte environment.
8897
:::
8998

90-
## How to Use Custom Components
99+
## How to use Custom Components
91100

92-
Custom Components in the Connector Builder UI extend the functionality available in the Low-Code CDK. For detailed implementation information, please refer to our [Custom Components documentation](../config-based/advanced-topics/custom-components.md).
101+
Custom Components in the Connector Builder UI extend the capabilities available in the Low-Code CDK. For detailed implementation information, please refer to the [Custom Components documentation](../config-based/advanced-topics/custom-components.md).
93102

94103
Key implementation steps include:
95104

96105
1. Create a Python class that implements the interface of the component you want to customize
106+
97107
2. Define the necessary fields and methods required by that interface
108+
98109
3. Reference your custom component in the connector configuration using its fully qualified class name
99110

100111
The existing documentation provides examples of:
112+
101113
- How to create custom component classes
114+
102115
- Required implementation interfaces
116+
103117
- Properly referencing custom components in your configuration
104-
- Handling parameter propagation between parent and child components
105118

106-
Remember that while using the Connector Builder UI, you'll need to switch to the YAML editor view to implement custom components, as they cannot be configured through the visual interface.
119+
- Handling parameter propagation between parent and child components
107120

108-
Custom Components are currently in active development. While powerful, they should be used with caution in production environments.
121+
While using the Connector Builder UI, you need to switch to the YAML editor view to implement custom components. You can't configure them through the visual interface.

0 commit comments

Comments
 (0)