1. Packages
  2. Packages
  3. Oracle Cloud Infrastructure
  4. API Docs
  5. oci
  6. getGdpGdpPipeline
Viewing docs for Oracle Cloud Infrastructure v4.15.0
published on Thursday, Jun 11, 2026 by Pulumi
oci logo
Viewing docs for Oracle Cloud Infrastructure v4.15.0
published on Thursday, Jun 11, 2026 by Pulumi

    This data source provides details about a specific Gdp Pipeline resource in Oracle Cloud Infrastructure Gdp service.

    Retrieves a pipeline by identifier.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as oci from "@pulumi/oci";
    
    const testGdpPipeline = oci.oci.getGdpGdpPipeline({
        gdpPipelineId: testGdpPipelineOciGdpGdpPipeline.id,
        env: gdpEnv,
    });
    
    import pulumi
    import pulumi_oci as oci
    
    test_gdp_pipeline = oci.oci.get_gdp_gdp_pipeline(gdp_pipeline_id=test_gdp_pipeline_oci_gdp_gdp_pipeline["id"],
        env=gdp_env)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-oci/sdk/v4/go/oci/oci"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := oci.LookupGdpGdpPipeline(ctx, &oci.LookupGdpGdpPipelineArgs{
    			GdpPipelineId: testGdpPipelineOciGdpGdpPipeline.Id,
    			Env:           pulumi.StringRef(gdpEnv),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Oci = Pulumi.Oci;
    
    return await Deployment.RunAsync(() => 
    {
        var testGdpPipeline = Oci.Oci.GetGdpGdpPipeline.Invoke(new()
        {
            GdpPipelineId = testGdpPipelineOciGdpGdpPipeline.Id,
            Env = gdpEnv,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.oci.oci.OciFunctions;
    import com.pulumi.oci.oci.inputs.GetGdpGdpPipelineArgs;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var testGdpPipeline = OciFunctions.getGdpGdpPipeline(GetGdpGdpPipelineArgs.builder()
                .gdpPipelineId(testGdpPipelineOciGdpGdpPipeline.id())
                .env(gdpEnv)
                .build());
    
        }
    }
    
    variables:
      testGdpPipeline:
        fn::invoke:
          function: oci:oci:getGdpGdpPipeline
          arguments:
            gdpPipelineId: ${testGdpPipelineOciGdpGdpPipeline.id}
            env: ${gdpEnv}
    
    pulumi {
      required_providers {
        oci = {
          source = "pulumi/oci"
        }
      }
    }
    
    data "oci_oci_getgdpgdppipeline" "testGdpPipeline" {
      gdp_pipeline_id = testGdpPipelineOciGdpGdpPipeline.id
      env             = gdpEnv
    }
    

    Using getGdpGdpPipeline

    Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.

    function getGdpGdpPipeline(args: GetGdpGdpPipelineArgs, opts?: InvokeOptions): Promise<GetGdpGdpPipelineResult>
    function getGdpGdpPipelineOutput(args: GetGdpGdpPipelineOutputArgs, opts?: InvokeOptions): Output<GetGdpGdpPipelineResult>
    def get_gdp_gdp_pipeline(env: Optional[str] = None,
                             gdp_pipeline_id: Optional[str] = None,
                             opts: Optional[InvokeOptions] = None) -> GetGdpGdpPipelineResult
    def get_gdp_gdp_pipeline_output(env: pulumi.Input[Optional[str]] = None,
                             gdp_pipeline_id: pulumi.Input[Optional[str]] = None,
                             opts: Optional[InvokeOptions] = None) -> Output[GetGdpGdpPipelineResult]
    func LookupGdpGdpPipeline(ctx *Context, args *LookupGdpGdpPipelineArgs, opts ...InvokeOption) (*LookupGdpGdpPipelineResult, error)
    func LookupGdpGdpPipelineOutput(ctx *Context, args *LookupGdpGdpPipelineOutputArgs, opts ...InvokeOption) LookupGdpGdpPipelineResultOutput

    > Note: This function is named LookupGdpGdpPipeline in the Go SDK.

    public static class GetGdpGdpPipeline 
    {
        public static Task<GetGdpGdpPipelineResult> InvokeAsync(GetGdpGdpPipelineArgs args, InvokeOptions? opts = null)
        public static Output<GetGdpGdpPipelineResult> Invoke(GetGdpGdpPipelineInvokeArgs args, InvokeOptions? opts = null)
    }
    public static CompletableFuture<GetGdpGdpPipelineResult> getGdpGdpPipeline(GetGdpGdpPipelineArgs args, InvokeOptions options)
    public static Output<GetGdpGdpPipelineResult> getGdpGdpPipeline(GetGdpGdpPipelineArgs args, InvokeOptions options)
    
    fn::invoke:
      function: oci:oci/getGdpGdpPipeline:getGdpGdpPipeline
      arguments:
        # arguments dictionary
    data "oci_oci_getgdpgdppipeline" "name" {
        # arguments
    }

    The following arguments are supported:

    GdpPipelineId string
    Unique pipeline identifier.
    Env string
    The environment where the pipeline resides. Valid values are COMMERCIAL or USGOV. Defaults to COMMERCIAL.
    GdpPipelineId string
    Unique pipeline identifier.
    Env string
    The environment where the pipeline resides. Valid values are COMMERCIAL or USGOV. Defaults to COMMERCIAL.
    gdp_pipeline_id string
    Unique pipeline identifier.
    env string
    The environment where the pipeline resides. Valid values are COMMERCIAL or USGOV. Defaults to COMMERCIAL.
    gdpPipelineId String
    Unique pipeline identifier.
    env String
    The environment where the pipeline resides. Valid values are COMMERCIAL or USGOV. Defaults to COMMERCIAL.
    gdpPipelineId string
    Unique pipeline identifier.
    env string
    The environment where the pipeline resides. Valid values are COMMERCIAL or USGOV. Defaults to COMMERCIAL.
    gdp_pipeline_id str
    Unique pipeline identifier.
    env str
    The environment where the pipeline resides. Valid values are COMMERCIAL or USGOV. Defaults to COMMERCIAL.
    gdpPipelineId String
    Unique pipeline identifier.
    env String
    The environment where the pipeline resides. Valid values are COMMERCIAL or USGOV. Defaults to COMMERCIAL.

    getGdpGdpPipeline Result

    The following output properties are available:

    ApprovalKeyVaultId string
    The KMS vault OCID used for cryptographic approvals of transfers.
    AuthorizationDetails string
    Authorization information about the pipeline being configured.
    BucketDetails List<GetGdpGdpPipelineBucketDetail>
    Configuration information about the buckets used for this pipeline.
    CompartmentId string
    The OCID of the compartment.
    DefinedTags Dictionary<string, string>
    Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: {"foo-namespace.bar-key": "value"}
    Description string
    Short field input by customer for a description of the data pipeline use-case.
    DisplayName string
    Pipeline short name.
    FileTypes List<string>
    List of file types allowed to be transferred in the pipeline according to the authorization details (e.g. .pdf, .xml, .doc).
    FreeformTags Dictionary<string, string>
    Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: {"bar-key": "value"}
    GdpPipelineId string
    Id string
    The OCID of the pipeline.
    IsApprovalNeeded bool
    Determines whether file transfers need to go through an approval workflow.
    IsChunkingEnabled bool
    Determines whether file must be chunked during the transfer. This is only a property of SENDER pipelines.
    IsFileOverrideInDestinationEnabled bool
    Enable file override feature in destination bucket. If 2 files with same name exist in destination bucket, original file will be overwritten.
    IsScanningEnabled bool
    Determines whether GDP Scanning should be enabled for the pipeline.
    LifecycleDetails string
    Additional details about the current state of the pipeline.
    PeeredGdpPipelineId string
    OCID of the peered pipeline. This null for SENDER pipeline.
    PeeringRegion string
    Public region name where the peered pipeline exists.
    PipelineType string
    Type of pipeline. Can be SENDER or RECEIVER.
    ServiceLogGroupId string
    the OCID of the service log group.
    State string
    The current state of the pipeline.
    SystemTags Dictionary<string, string>
    System tags for this resource. Each key is predefined and scoped to a namespace. Example: {"orcl-cloud.free-tier-retained": "true"}
    TimeCreated string
    The time the the pipeline was created. An RFC3339 formatted datetime string.
    TimeUpdated string
    The time the pipeline was updated. An RFC3339 formatted datetime string.
    Env string
    ApprovalKeyVaultId string
    The KMS vault OCID used for cryptographic approvals of transfers.
    AuthorizationDetails string
    Authorization information about the pipeline being configured.
    BucketDetails []GetGdpGdpPipelineBucketDetail
    Configuration information about the buckets used for this pipeline.
    CompartmentId string
    The OCID of the compartment.
    DefinedTags map[string]string
    Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: {"foo-namespace.bar-key": "value"}
    Description string
    Short field input by customer for a description of the data pipeline use-case.
    DisplayName string
    Pipeline short name.
    FileTypes []string
    List of file types allowed to be transferred in the pipeline according to the authorization details (e.g. .pdf, .xml, .doc).
    FreeformTags map[string]string
    Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: {"bar-key": "value"}
    GdpPipelineId string
    Id string
    The OCID of the pipeline.
    IsApprovalNeeded bool
    Determines whether file transfers need to go through an approval workflow.
    IsChunkingEnabled bool
    Determines whether file must be chunked during the transfer. This is only a property of SENDER pipelines.
    IsFileOverrideInDestinationEnabled bool
    Enable file override feature in destination bucket. If 2 files with same name exist in destination bucket, original file will be overwritten.
    IsScanningEnabled bool
    Determines whether GDP Scanning should be enabled for the pipeline.
    LifecycleDetails string
    Additional details about the current state of the pipeline.
    PeeredGdpPipelineId string
    OCID of the peered pipeline. This null for SENDER pipeline.
    PeeringRegion string
    Public region name where the peered pipeline exists.
    PipelineType string
    Type of pipeline. Can be SENDER or RECEIVER.
    ServiceLogGroupId string
    the OCID of the service log group.
    State string
    The current state of the pipeline.
    SystemTags map[string]string
    System tags for this resource. Each key is predefined and scoped to a namespace. Example: {"orcl-cloud.free-tier-retained": "true"}
    TimeCreated string
    The time the the pipeline was created. An RFC3339 formatted datetime string.
    TimeUpdated string
    The time the pipeline was updated. An RFC3339 formatted datetime string.
    Env string
    approval_key_vault_id string
    The KMS vault OCID used for cryptographic approvals of transfers.
    authorization_details string
    Authorization information about the pipeline being configured.
    bucket_details list(object)
    Configuration information about the buckets used for this pipeline.
    compartment_id string
    The OCID of the compartment.
    defined_tags map(string)
    Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: {"foo-namespace.bar-key": "value"}
    description string
    Short field input by customer for a description of the data pipeline use-case.
    display_name string
    Pipeline short name.
    file_types list(string)
    List of file types allowed to be transferred in the pipeline according to the authorization details (e.g. .pdf, .xml, .doc).
    freeform_tags map(string)
    Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: {"bar-key": "value"}
    gdp_pipeline_id string
    id string
    The OCID of the pipeline.
    is_approval_needed bool
    Determines whether file transfers need to go through an approval workflow.
    is_chunking_enabled bool
    Determines whether file must be chunked during the transfer. This is only a property of SENDER pipelines.
    is_file_override_in_destination_enabled bool
    Enable file override feature in destination bucket. If 2 files with same name exist in destination bucket, original file will be overwritten.
    is_scanning_enabled bool
    Determines whether GDP Scanning should be enabled for the pipeline.
    lifecycle_details string
    Additional details about the current state of the pipeline.
    peered_gdp_pipeline_id string
    OCID of the peered pipeline. This null for SENDER pipeline.
    peering_region string
    Public region name where the peered pipeline exists.
    pipeline_type string
    Type of pipeline. Can be SENDER or RECEIVER.
    service_log_group_id string
    the OCID of the service log group.
    state string
    The current state of the pipeline.
    system_tags map(string)
    System tags for this resource. Each key is predefined and scoped to a namespace. Example: {"orcl-cloud.free-tier-retained": "true"}
    time_created string
    The time the the pipeline was created. An RFC3339 formatted datetime string.
    time_updated string
    The time the pipeline was updated. An RFC3339 formatted datetime string.
    env string
    approvalKeyVaultId String
    The KMS vault OCID used for cryptographic approvals of transfers.
    authorizationDetails String
    Authorization information about the pipeline being configured.
    bucketDetails List<GetGdpGdpPipelineBucketDetail>
    Configuration information about the buckets used for this pipeline.
    compartmentId String
    The OCID of the compartment.
    definedTags Map<String,String>
    Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: {"foo-namespace.bar-key": "value"}
    description String
    Short field input by customer for a description of the data pipeline use-case.
    displayName String
    Pipeline short name.
    fileTypes List<String>
    List of file types allowed to be transferred in the pipeline according to the authorization details (e.g. .pdf, .xml, .doc).
    freeformTags Map<String,String>
    Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: {"bar-key": "value"}
    gdpPipelineId String
    id String
    The OCID of the pipeline.
    isApprovalNeeded Boolean
    Determines whether file transfers need to go through an approval workflow.
    isChunkingEnabled Boolean
    Determines whether file must be chunked during the transfer. This is only a property of SENDER pipelines.
    isFileOverrideInDestinationEnabled Boolean
    Enable file override feature in destination bucket. If 2 files with same name exist in destination bucket, original file will be overwritten.
    isScanningEnabled Boolean
    Determines whether GDP Scanning should be enabled for the pipeline.
    lifecycleDetails String
    Additional details about the current state of the pipeline.
    peeredGdpPipelineId String
    OCID of the peered pipeline. This null for SENDER pipeline.
    peeringRegion String
    Public region name where the peered pipeline exists.
    pipelineType String
    Type of pipeline. Can be SENDER or RECEIVER.
    serviceLogGroupId String
    the OCID of the service log group.
    state String
    The current state of the pipeline.
    systemTags Map<String,String>
    System tags for this resource. Each key is predefined and scoped to a namespace. Example: {"orcl-cloud.free-tier-retained": "true"}
    timeCreated String
    The time the the pipeline was created. An RFC3339 formatted datetime string.
    timeUpdated String
    The time the pipeline was updated. An RFC3339 formatted datetime string.
    env String
    approvalKeyVaultId string
    The KMS vault OCID used for cryptographic approvals of transfers.
    authorizationDetails string
    Authorization information about the pipeline being configured.
    bucketDetails GetGdpGdpPipelineBucketDetail[]
    Configuration information about the buckets used for this pipeline.
    compartmentId string
    The OCID of the compartment.
    definedTags {[key: string]: string}
    Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: {"foo-namespace.bar-key": "value"}
    description string
    Short field input by customer for a description of the data pipeline use-case.
    displayName string
    Pipeline short name.
    fileTypes string[]
    List of file types allowed to be transferred in the pipeline according to the authorization details (e.g. .pdf, .xml, .doc).
    freeformTags {[key: string]: string}
    Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: {"bar-key": "value"}
    gdpPipelineId string
    id string
    The OCID of the pipeline.
    isApprovalNeeded boolean
    Determines whether file transfers need to go through an approval workflow.
    isChunkingEnabled boolean
    Determines whether file must be chunked during the transfer. This is only a property of SENDER pipelines.
    isFileOverrideInDestinationEnabled boolean
    Enable file override feature in destination bucket. If 2 files with same name exist in destination bucket, original file will be overwritten.
    isScanningEnabled boolean
    Determines whether GDP Scanning should be enabled for the pipeline.
    lifecycleDetails string
    Additional details about the current state of the pipeline.
    peeredGdpPipelineId string
    OCID of the peered pipeline. This null for SENDER pipeline.
    peeringRegion string
    Public region name where the peered pipeline exists.
    pipelineType string
    Type of pipeline. Can be SENDER or RECEIVER.
    serviceLogGroupId string
    the OCID of the service log group.
    state string
    The current state of the pipeline.
    systemTags {[key: string]: string}
    System tags for this resource. Each key is predefined and scoped to a namespace. Example: {"orcl-cloud.free-tier-retained": "true"}
    timeCreated string
    The time the the pipeline was created. An RFC3339 formatted datetime string.
    timeUpdated string
    The time the pipeline was updated. An RFC3339 formatted datetime string.
    env string
    approval_key_vault_id str
    The KMS vault OCID used for cryptographic approvals of transfers.
    authorization_details str
    Authorization information about the pipeline being configured.
    bucket_details Sequence[GetGdpGdpPipelineBucketDetail]
    Configuration information about the buckets used for this pipeline.
    compartment_id str
    The OCID of the compartment.
    defined_tags Mapping[str, str]
    Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: {"foo-namespace.bar-key": "value"}
    description str
    Short field input by customer for a description of the data pipeline use-case.
    display_name str
    Pipeline short name.
    file_types Sequence[str]
    List of file types allowed to be transferred in the pipeline according to the authorization details (e.g. .pdf, .xml, .doc).
    freeform_tags Mapping[str, str]
    Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: {"bar-key": "value"}
    gdp_pipeline_id str
    id str
    The OCID of the pipeline.
    is_approval_needed bool
    Determines whether file transfers need to go through an approval workflow.
    is_chunking_enabled bool
    Determines whether file must be chunked during the transfer. This is only a property of SENDER pipelines.
    is_file_override_in_destination_enabled bool
    Enable file override feature in destination bucket. If 2 files with same name exist in destination bucket, original file will be overwritten.
    is_scanning_enabled bool
    Determines whether GDP Scanning should be enabled for the pipeline.
    lifecycle_details str
    Additional details about the current state of the pipeline.
    peered_gdp_pipeline_id str
    OCID of the peered pipeline. This null for SENDER pipeline.
    peering_region str
    Public region name where the peered pipeline exists.
    pipeline_type str
    Type of pipeline. Can be SENDER or RECEIVER.
    service_log_group_id str
    the OCID of the service log group.
    state str
    The current state of the pipeline.
    system_tags Mapping[str, str]
    System tags for this resource. Each key is predefined and scoped to a namespace. Example: {"orcl-cloud.free-tier-retained": "true"}
    time_created str
    The time the the pipeline was created. An RFC3339 formatted datetime string.
    time_updated str
    The time the pipeline was updated. An RFC3339 formatted datetime string.
    env str
    approvalKeyVaultId String
    The KMS vault OCID used for cryptographic approvals of transfers.
    authorizationDetails String
    Authorization information about the pipeline being configured.
    bucketDetails List<Property Map>
    Configuration information about the buckets used for this pipeline.
    compartmentId String
    The OCID of the compartment.
    definedTags Map<String>
    Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: {"foo-namespace.bar-key": "value"}
    description String
    Short field input by customer for a description of the data pipeline use-case.
    displayName String
    Pipeline short name.
    fileTypes List<String>
    List of file types allowed to be transferred in the pipeline according to the authorization details (e.g. .pdf, .xml, .doc).
    freeformTags Map<String>
    Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: {"bar-key": "value"}
    gdpPipelineId String
    id String
    The OCID of the pipeline.
    isApprovalNeeded Boolean
    Determines whether file transfers need to go through an approval workflow.
    isChunkingEnabled Boolean
    Determines whether file must be chunked during the transfer. This is only a property of SENDER pipelines.
    isFileOverrideInDestinationEnabled Boolean
    Enable file override feature in destination bucket. If 2 files with same name exist in destination bucket, original file will be overwritten.
    isScanningEnabled Boolean
    Determines whether GDP Scanning should be enabled for the pipeline.
    lifecycleDetails String
    Additional details about the current state of the pipeline.
    peeredGdpPipelineId String
    OCID of the peered pipeline. This null for SENDER pipeline.
    peeringRegion String
    Public region name where the peered pipeline exists.
    pipelineType String
    Type of pipeline. Can be SENDER or RECEIVER.
    serviceLogGroupId String
    the OCID of the service log group.
    state String
    The current state of the pipeline.
    systemTags Map<String>
    System tags for this resource. Each key is predefined and scoped to a namespace. Example: {"orcl-cloud.free-tier-retained": "true"}
    timeCreated String
    The time the the pipeline was created. An RFC3339 formatted datetime string.
    timeUpdated String
    The time the pipeline was updated. An RFC3339 formatted datetime string.
    env String

    Supporting Types

    GetGdpGdpPipelineBucketDetail

    BucketType string
    Type of bucket. SENDER pipelines can be SOURCE, TRANSFER, REJECT, or FAILED. RECEIVER pipelines have a DESTINATION bucket.
    Id string
    The OCID of the pipeline.
    Name string
    Name of the bucket.
    Namespace string
    Namespace of the bucket.
    BucketType string
    Type of bucket. SENDER pipelines can be SOURCE, TRANSFER, REJECT, or FAILED. RECEIVER pipelines have a DESTINATION bucket.
    Id string
    The OCID of the pipeline.
    Name string
    Name of the bucket.
    Namespace string
    Namespace of the bucket.
    bucket_type string
    Type of bucket. SENDER pipelines can be SOURCE, TRANSFER, REJECT, or FAILED. RECEIVER pipelines have a DESTINATION bucket.
    id string
    The OCID of the pipeline.
    name string
    Name of the bucket.
    namespace string
    Namespace of the bucket.
    bucketType String
    Type of bucket. SENDER pipelines can be SOURCE, TRANSFER, REJECT, or FAILED. RECEIVER pipelines have a DESTINATION bucket.
    id String
    The OCID of the pipeline.
    name String
    Name of the bucket.
    namespace String
    Namespace of the bucket.
    bucketType string
    Type of bucket. SENDER pipelines can be SOURCE, TRANSFER, REJECT, or FAILED. RECEIVER pipelines have a DESTINATION bucket.
    id string
    The OCID of the pipeline.
    name string
    Name of the bucket.
    namespace string
    Namespace of the bucket.
    bucket_type str
    Type of bucket. SENDER pipelines can be SOURCE, TRANSFER, REJECT, or FAILED. RECEIVER pipelines have a DESTINATION bucket.
    id str
    The OCID of the pipeline.
    name str
    Name of the bucket.
    namespace str
    Namespace of the bucket.
    bucketType String
    Type of bucket. SENDER pipelines can be SOURCE, TRANSFER, REJECT, or FAILED. RECEIVER pipelines have a DESTINATION bucket.
    id String
    The OCID of the pipeline.
    name String
    Name of the bucket.
    namespace String
    Namespace of the bucket.

    Package Details

    Repository
    oci pulumi/pulumi-oci
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the oci Terraform Provider.
    oci logo
    Viewing docs for Oracle Cloud Infrastructure v4.15.0
    published on Thursday, Jun 11, 2026 by Pulumi

      Try Pulumi Cloud free.
      Your team will thank you.

      Start free trial