Pipeline
Resource for managing an AWS OpenSearch Ingestion Pipeline.
Example Usage
Basic Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const current = aws.getRegion({});
const example = new aws.iam.Role("example", {assumeRolePolicy: JSON.stringify({
    Version: "2012-10-17",
    Statement: [{
        Action: "sts:AssumeRole",
        Effect: "Allow",
        Sid: "",
        Principal: {
            Service: "osis-pipelines.amazonaws.com",
        },
    }],
})});
const examplePipeline = new aws.opensearchingest.Pipeline("example", {
    pipelineName: "example",
    pipelineConfigurationBody: pulumi.all([example.arn, current]).apply(([arn, current]) => `version: "2"
example-pipeline:
  source:
    http:
      path: "/example"
  sink:
    - s3:
        aws:
          sts_role_arn: "${arn}"
          region: "${current.name}"
        bucket: "example"
        threshold:
          event_collect_timeout: "60s"
        codec:
          ndjson:
`),
    maxUnits: 1,
    minUnits: 1,
});Content copied to clipboard
import pulumi
import json
import pulumi_aws as aws
current = aws.get_region()
example = aws.iam.Role("example", assume_role_policy=json.dumps({
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "sts:AssumeRole",
        "Effect": "Allow",
        "Sid": "",
        "Principal": {
            "Service": "osis-pipelines.amazonaws.com",
        },
    }],
}))
example_pipeline = aws.opensearchingest.Pipeline("example",
    pipeline_name="example",
    pipeline_configuration_body=example.arn.apply(lambda arn: f"""version: "2"
example-pipeline:
  source:
    http:
      path: "/example"
  sink:
    - s3:
        aws:
          sts_role_arn: "{arn}"
          region: "{current.name}"
        bucket: "example"
        threshold:
          event_collect_timeout: "60s"
        codec:
          ndjson:
"""),
    max_units=1,
    min_units=1)Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
    var current = Aws.GetRegion.Invoke();
    var example = new Aws.Iam.Role("example", new()
    {
        AssumeRolePolicy = JsonSerializer.Serialize(new Dictionary<string, object?>
        {
            ["Version"] = "2012-10-17",
            ["Statement"] = new[]
            {
                new Dictionary<string, object?>
                {
                    ["Action"] = "sts:AssumeRole",
                    ["Effect"] = "Allow",
                    ["Sid"] = "",
                    ["Principal"] = new Dictionary<string, object?>
                    {
                        ["Service"] = "osis-pipelines.amazonaws.com",
                    },
                },
            },
        }),
    });
    var examplePipeline = new Aws.OpenSearchIngest.Pipeline("example", new()
    {
        PipelineName = "example",
        PipelineConfigurationBody = Output.Tuple(example.Arn, current).Apply(values =>
        {
            var arn = values.Item1;
            var current = values.Item2;
            return @$"version: ""2""
example-pipeline:
  source:
    http:
      path: ""/example""
  sink:
    - s3:
        aws:
          sts_role_arn: ""{arn}""
          region: ""{current.Apply(getRegionResult => getRegionResult.Name)}""
        bucket: ""example""
        threshold:
          event_collect_timeout: ""60s""
        codec:
          ndjson:
";
        }),
        MaxUnits = 1,
        MinUnits = 1,
    });
});Content copied to clipboard
package main
import (
	"encoding/json"
	"fmt"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearchingest"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		current, err := aws.GetRegion(ctx, nil, nil)
		if err != nil {
			return err
		}
		tmpJSON0, err := json.Marshal(map[string]interface{}{
			"Version": "2012-10-17",
			"Statement": []map[string]interface{}{
				map[string]interface{}{
					"Action": "sts:AssumeRole",
					"Effect": "Allow",
					"Sid":    "",
					"Principal": map[string]interface{}{
						"Service": "osis-pipelines.amazonaws.com",
					},
				},
			},
		})
		if err != nil {
			return err
		}
		json0 := string(tmpJSON0)
		example, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
			AssumeRolePolicy: pulumi.String(json0),
		})
		if err != nil {
			return err
		}
		_, err = opensearchingest.NewPipeline(ctx, "example", &opensearchingest.PipelineArgs{
			PipelineName: pulumi.String("example"),
			PipelineConfigurationBody: example.Arn.ApplyT(func(arn string) (string, error) {
				return fmt.Sprintf(`version: "2"
example-pipeline:
  source:
    http:
      path: "/example"
  sink:
    - s3:
        aws:
          sts_role_arn: "%v"
          region: "%v"
        bucket: "example"
        threshold:
          event_collect_timeout: "60s"
        codec:
          ndjson:
`, arn, current.Name), nil
			}).(pulumi.StringOutput),
			MaxUnits: pulumi.Int(1),
			MinUnits: pulumi.Int(1),
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.AwsFunctions;
import com.pulumi.aws.inputs.GetRegionArgs;
import com.pulumi.aws.iam.Role;
import com.pulumi.aws.iam.RoleArgs;
import com.pulumi.aws.opensearchingest.Pipeline;
import com.pulumi.aws.opensearchingest.PipelineArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.List;
import java.util.ArrayList;
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 current = AwsFunctions.getRegion();
        var example = new Role("example", RoleArgs.builder()
            .assumeRolePolicy(serializeJson(
                jsonObject(
                    jsonProperty("Version", "2012-10-17"),
                    jsonProperty("Statement", jsonArray(jsonObject(
                        jsonProperty("Action", "sts:AssumeRole"),
                        jsonProperty("Effect", "Allow"),
                        jsonProperty("Sid", ""),
                        jsonProperty("Principal", jsonObject(
                            jsonProperty("Service", "osis-pipelines.amazonaws.com")
                        ))
                    )))
                )))
            .build());
        var examplePipeline = new Pipeline("examplePipeline", PipelineArgs.builder()
            .pipelineName("example")
            .pipelineConfigurationBody(example.arn().applyValue(arn -> """
version: "2"
example-pipeline:
  source:
    http:
      path: "/example"
  sink:
    - s3:
        aws:
          sts_role_arn: "%s"
          region: "%s"
        bucket: "example"
        threshold:
          event_collect_timeout: "60s"
        codec:
          ndjson:
", arn,current.applyValue(getRegionResult -> getRegionResult.name()))))
            .maxUnits(1)
            .minUnits(1)
            .build());
    }
}Content copied to clipboard
resources:
  example:
    type: aws:iam:Role
    properties:
      assumeRolePolicy:
        fn::toJSON:
          Version: 2012-10-17
          Statement:
            - Action: sts:AssumeRole
              Effect: Allow
              Sid:
              Principal:
                Service: osis-pipelines.amazonaws.com
  examplePipeline:
    type: aws:opensearchingest:Pipeline
    name: example
    properties:
      pipelineName: example
      pipelineConfigurationBody: |
        version: "2"
        example-pipeline:
          source:
            http:
              path: "/example"
          sink:
            - s3:
                aws:
                  sts_role_arn: "${example.arn}"
                  region: "${current.name}"
                bucket: "example"
                threshold:
                  event_collect_timeout: "60s"
                codec:
                  ndjson:
      maxUnits: 1
      minUnits: 1
variables:
  current:
    fn::invoke:
      Function: aws:getRegion
      Arguments: {}Content copied to clipboard
Using file function
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as std from "@pulumi/std";
const example = new aws.opensearchingest.Pipeline("example", {
    pipelineName: "example",
    pipelineConfigurationBody: std.file({
        input: "example.yaml",
    }).then(invoke => invoke.result),
    maxUnits: 1,
    minUnits: 1,
});Content copied to clipboard
import pulumi
import pulumi_aws as aws
import pulumi_std as std
example = aws.opensearchingest.Pipeline("example",
    pipeline_name="example",
    pipeline_configuration_body=std.file(input="example.yaml").result,
    max_units=1,
    min_units=1)Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
    var example = new Aws.OpenSearchIngest.Pipeline("example", new()
    {
        PipelineName = "example",
        PipelineConfigurationBody = Std.File.Invoke(new()
        {
            Input = "example.yaml",
        }).Apply(invoke => invoke.Result),
        MaxUnits = 1,
        MinUnits = 1,
    });
});Content copied to clipboard
package main
import (
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearchingest"
	"github.com/pulumi/pulumi-std/sdk/go/std"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		invokeFile, err := std.File(ctx, &std.FileArgs{
			Input: "example.yaml",
		}, nil)
		if err != nil {
			return err
		}
		_, err = opensearchingest.NewPipeline(ctx, "example", &opensearchingest.PipelineArgs{
			PipelineName:              pulumi.String("example"),
			PipelineConfigurationBody: invokeFile.Result,
			MaxUnits:                  pulumi.Int(1),
			MinUnits:                  pulumi.Int(1),
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.opensearchingest.Pipeline;
import com.pulumi.aws.opensearchingest.PipelineArgs;
import java.util.List;
import java.util.ArrayList;
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) {
        var example = new Pipeline("example", PipelineArgs.builder()
            .pipelineName("example")
            .pipelineConfigurationBody(StdFunctions.file(FileArgs.builder()
                .input("example.yaml")
                .build()).result())
            .maxUnits(1)
            .minUnits(1)
            .build());
    }
}Content copied to clipboard
resources:
  example:
    type: aws:opensearchingest:Pipeline
    properties:
      pipelineName: example
      pipelineConfigurationBody:
        fn::invoke:
          Function: std:file
          Arguments:
            input: example.yaml
          Return: result
      maxUnits: 1
      minUnits: 1Content copied to clipboard
Import
Using pulumi import, import OpenSearch Ingestion Pipeline using the id. For example:
$ pulumi import aws:opensearchingest/pipeline:Pipeline example exampleContent copied to clipboard