1. Packages
  2. Mongodbatlas Provider
  3. API Docs
  4. getStreamPrivatelinkEndpoints
MongoDB Atlas v3.36.0 published on Friday, Aug 22, 2025 by Pulumi

mongodbatlas.getStreamPrivatelinkEndpoints

Explore with Pulumi AI

mongodbatlas logo
MongoDB Atlas v3.36.0 published on Friday, Aug 22, 2025 by Pulumi

    # Data Source: mongodbatlas.getStreamPrivatelinkEndpoints

    mongodbatlas.getStreamPrivatelinkEndpoints describes a Privatelink Endpoint for Streams.

    Example Usage

    S

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    import * as mongodbatlas from "@pulumi/mongodbatlas";
    
    // S3 bucket for stream data
    const streamBucket = new aws.index.S3Bucket("stream_bucket", {
        bucket: s3BucketName,
        forceDestroy: true,
    });
    const streamBucketVersioning = new aws.index.S3BucketVersioning("stream_bucket_versioning", {
        bucket: streamBucket.id,
        versioningConfiguration: [{
            status: "Enabled",
        }],
    });
    const streamBucketEncryption = new aws.index.S3BucketServerSideEncryptionConfiguration("stream_bucket_encryption", {
        bucket: streamBucket.id,
        rule: [{
            applyServerSideEncryptionByDefault: [{
                sseAlgorithm: "AES256",
            }],
        }],
    });
    // PrivateLink for S3
    const _this = new mongodbatlas.StreamPrivatelinkEndpoint("this", {
        projectId: projectId,
        providerName: "AWS",
        vendor: "S3",
        region: region,
        serviceEndpointId: serviceEndpointId,
    });
    export const privatelinkEndpointId = _this.id;
    
    import pulumi
    import pulumi_aws as aws
    import pulumi_mongodbatlas as mongodbatlas
    
    # S3 bucket for stream data
    stream_bucket = aws.index.S3Bucket("stream_bucket",
        bucket=s3_bucket_name,
        force_destroy=True)
    stream_bucket_versioning = aws.index.S3BucketVersioning("stream_bucket_versioning",
        bucket=stream_bucket.id,
        versioning_configuration=[{
            status: Enabled,
        }])
    stream_bucket_encryption = aws.index.S3BucketServerSideEncryptionConfiguration("stream_bucket_encryption",
        bucket=stream_bucket.id,
        rule=[{
            applyServerSideEncryptionByDefault: [{
                sseAlgorithm: AES256,
            }],
        }])
    # PrivateLink for S3
    this = mongodbatlas.StreamPrivatelinkEndpoint("this",
        project_id=project_id,
        provider_name="AWS",
        vendor="S3",
        region=region,
        service_endpoint_id=service_endpoint_id)
    pulumi.export("privatelinkEndpointId", this.id)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v4/go/aws"
    	"github.com/pulumi/pulumi-mongodbatlas/sdk/v3/go/mongodbatlas"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		// S3 bucket for stream data
    		streamBucket, err := aws.NewS3Bucket(ctx, "stream_bucket", &aws.S3BucketArgs{
    			Bucket:       s3BucketName,
    			ForceDestroy: true,
    		})
    		if err != nil {
    			return err
    		}
    		_, err = aws.NewS3BucketVersioning(ctx, "stream_bucket_versioning", &aws.S3BucketVersioningArgs{
    			Bucket: streamBucket.Id,
    			VersioningConfiguration: []map[string]interface{}{
    				map[string]interface{}{
    					"status": "Enabled",
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = aws.NewS3BucketServerSideEncryptionConfiguration(ctx, "stream_bucket_encryption", &aws.S3BucketServerSideEncryptionConfigurationArgs{
    			Bucket: streamBucket.Id,
    			Rule: []map[string]interface{}{
    				map[string]interface{}{
    					"applyServerSideEncryptionByDefault": []map[string]interface{}{
    						map[string]interface{}{
    							"sseAlgorithm": "AES256",
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// PrivateLink for S3
    		this, err := mongodbatlas.NewStreamPrivatelinkEndpoint(ctx, "this", &mongodbatlas.StreamPrivatelinkEndpointArgs{
    			ProjectId:         pulumi.Any(projectId),
    			ProviderName:      pulumi.String("AWS"),
    			Vendor:            pulumi.String("S3"),
    			Region:            pulumi.Any(region),
    			ServiceEndpointId: pulumi.Any(serviceEndpointId),
    		})
    		if err != nil {
    			return err
    		}
    		ctx.Export("privatelinkEndpointId", this.ID())
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    using Mongodbatlas = Pulumi.Mongodbatlas;
    
    return await Deployment.RunAsync(() => 
    {
        // S3 bucket for stream data
        var streamBucket = new Aws.Index.S3Bucket("stream_bucket", new()
        {
            Bucket = s3BucketName,
            ForceDestroy = true,
        });
    
        var streamBucketVersioning = new Aws.Index.S3BucketVersioning("stream_bucket_versioning", new()
        {
            Bucket = streamBucket.Id,
            VersioningConfiguration = new[]
            {
                
                {
                    { "status", "Enabled" },
                },
            },
        });
    
        var streamBucketEncryption = new Aws.Index.S3BucketServerSideEncryptionConfiguration("stream_bucket_encryption", new()
        {
            Bucket = streamBucket.Id,
            Rule = new[]
            {
                
                {
                    { "applyServerSideEncryptionByDefault", new[]
                    {
                        
                        {
                            { "sseAlgorithm", "AES256" },
                        },
                    } },
                },
            },
        });
    
        // PrivateLink for S3
        var @this = new Mongodbatlas.StreamPrivatelinkEndpoint("this", new()
        {
            ProjectId = projectId,
            ProviderName = "AWS",
            Vendor = "S3",
            Region = region,
            ServiceEndpointId = serviceEndpointId,
        });
    
        return new Dictionary<string, object?>
        {
            ["privatelinkEndpointId"] = @this.Id,
        };
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.s3Bucket;
    import com.pulumi.aws.s3BucketArgs;
    import com.pulumi.aws.s3BucketVersioning;
    import com.pulumi.aws.s3BucketVersioningArgs;
    import com.pulumi.aws.s3BucketServerSideEncryptionConfiguration;
    import com.pulumi.aws.s3BucketServerSideEncryptionConfigurationArgs;
    import com.pulumi.mongodbatlas.StreamPrivatelinkEndpoint;
    import com.pulumi.mongodbatlas.StreamPrivatelinkEndpointArgs;
    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) {
            // S3 bucket for stream data
            var streamBucket = new S3Bucket("streamBucket", S3BucketArgs.builder()
                .bucket(s3BucketName)
                .forceDestroy(true)
                .build());
    
            var streamBucketVersioning = new S3BucketVersioning("streamBucketVersioning", S3BucketVersioningArgs.builder()
                .bucket(streamBucket.id())
                .versioningConfiguration(List.of(Map.of("status", "Enabled")))
                .build());
    
            var streamBucketEncryption = new S3BucketServerSideEncryptionConfiguration("streamBucketEncryption", S3BucketServerSideEncryptionConfigurationArgs.builder()
                .bucket(streamBucket.id())
                .rule(List.of(Map.of("applyServerSideEncryptionByDefault", List.of(Map.of("sseAlgorithm", "AES256")))))
                .build());
    
            // PrivateLink for S3
            var this_ = new StreamPrivatelinkEndpoint("this", StreamPrivatelinkEndpointArgs.builder()
                .projectId(projectId)
                .providerName("AWS")
                .vendor("S3")
                .region(region)
                .serviceEndpointId(serviceEndpointId)
                .build());
    
            ctx.export("privatelinkEndpointId", this_.id());
        }
    }
    
    resources:
      # S3 bucket for stream data
      streamBucket:
        type: aws:s3Bucket
        name: stream_bucket
        properties:
          bucket: ${s3BucketName}
          forceDestroy: true
      streamBucketVersioning:
        type: aws:s3BucketVersioning
        name: stream_bucket_versioning
        properties:
          bucket: ${streamBucket.id}
          versioningConfiguration:
            - status: Enabled
      streamBucketEncryption:
        type: aws:s3BucketServerSideEncryptionConfiguration
        name: stream_bucket_encryption
        properties:
          bucket: ${streamBucket.id}
          rule:
            - applyServerSideEncryptionByDefault:
                - sseAlgorithm: AES256
      # PrivateLink for S3
      this:
        type: mongodbatlas:StreamPrivatelinkEndpoint
        properties:
          projectId: ${projectId}
          providerName: AWS
          vendor: S3
          region: ${region}
          serviceEndpointId: ${serviceEndpointId}
    outputs:
      privatelinkEndpointId: ${this.id}
    

    Using getStreamPrivatelinkEndpoints

    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 getStreamPrivatelinkEndpoints(args: GetStreamPrivatelinkEndpointsArgs, opts?: InvokeOptions): Promise<GetStreamPrivatelinkEndpointsResult>
    function getStreamPrivatelinkEndpointsOutput(args: GetStreamPrivatelinkEndpointsOutputArgs, opts?: InvokeOptions): Output<GetStreamPrivatelinkEndpointsResult>
    def get_stream_privatelink_endpoints(project_id: Optional[str] = None,
                                         opts: Optional[InvokeOptions] = None) -> GetStreamPrivatelinkEndpointsResult
    def get_stream_privatelink_endpoints_output(project_id: Optional[pulumi.Input[str]] = None,
                                         opts: Optional[InvokeOptions] = None) -> Output[GetStreamPrivatelinkEndpointsResult]
    func LookupStreamPrivatelinkEndpoints(ctx *Context, args *LookupStreamPrivatelinkEndpointsArgs, opts ...InvokeOption) (*LookupStreamPrivatelinkEndpointsResult, error)
    func LookupStreamPrivatelinkEndpointsOutput(ctx *Context, args *LookupStreamPrivatelinkEndpointsOutputArgs, opts ...InvokeOption) LookupStreamPrivatelinkEndpointsResultOutput

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

    public static class GetStreamPrivatelinkEndpoints 
    {
        public static Task<GetStreamPrivatelinkEndpointsResult> InvokeAsync(GetStreamPrivatelinkEndpointsArgs args, InvokeOptions? opts = null)
        public static Output<GetStreamPrivatelinkEndpointsResult> Invoke(GetStreamPrivatelinkEndpointsInvokeArgs args, InvokeOptions? opts = null)
    }
    public static CompletableFuture<GetStreamPrivatelinkEndpointsResult> getStreamPrivatelinkEndpoints(GetStreamPrivatelinkEndpointsArgs args, InvokeOptions options)
    public static Output<GetStreamPrivatelinkEndpointsResult> getStreamPrivatelinkEndpoints(GetStreamPrivatelinkEndpointsArgs args, InvokeOptions options)
    
    fn::invoke:
      function: mongodbatlas:index/getStreamPrivatelinkEndpoints:getStreamPrivatelinkEndpoints
      arguments:
        # arguments dictionary

    The following arguments are supported:

    ProjectId string
    ProjectId string
    projectId String
    projectId string
    projectId String

    getStreamPrivatelinkEndpoints Result

    The following output properties are available:

    Id string
    The provider-assigned unique ID for this managed resource.
    ProjectId string
    Results List<GetStreamPrivatelinkEndpointsResult>
    Id string
    The provider-assigned unique ID for this managed resource.
    ProjectId string
    Results []GetStreamPrivatelinkEndpointsResult
    id String
    The provider-assigned unique ID for this managed resource.
    projectId String
    results List<GetStreamPrivatelinkEndpointsResult>
    id string
    The provider-assigned unique ID for this managed resource.
    projectId string
    results GetStreamPrivatelinkEndpointsResult[]
    id str
    The provider-assigned unique ID for this managed resource.
    project_id str
    results Sequence[GetStreamPrivatelinkEndpointsResult]
    id String
    The provider-assigned unique ID for this managed resource.
    projectId String
    results List<Property Map>

    Supporting Types

    GetStreamPrivatelinkEndpointsResult

    Arn string
    Amazon Resource Name (ARN). Required for AWS Provider and MSK vendor.
    DnsDomain string
    The domain hostname. Required for the following provider and vendor combinations:

    * AWS provider with CONFLUENT vendor.
    
    • AZURE provider with EVENTHUB or CONFLUENT vendor.
    DnsSubDomains List<string>
    Sub-Domain name of Confluent cluster. These are typically your availability zones. Required for AWS Provider and CONFLUENT vendor. If your AWS CONFLUENT cluster doesn't use subdomains, you must set this to the empty array [].

    ErrorMessage string

    Error message if the connection is in a failed state.
    Id string
    The ID of the Private Link connection.
    InterfaceEndpointId string
    Interface endpoint ID that is created from the specified service endpoint ID.
    InterfaceEndpointName string
    Name of interface endpoint that is created from the specified service endpoint ID.
    ProjectId string
    Unique 24-hexadecimal digit string that identifies your project. Use the /groups endpoint to retrieve all projects to which the authenticated user has access.NOTE: Groups and projects are synonymous terms. Your group id is the same as your project id. For existing groups, your group or project id remains the same. The resource and corresponding endpoints use the term groups.
    ProviderAccountId string
    Account ID from the cloud provider.
    ProviderName string
    Provider where the endpoint is deployed. Valid values are AWS and AZURE.
    Region string
    The region of the Provider’s cluster. See AZURE and AWS supported regions. When the vendor is CONFLUENT, this is the domain name of Confluent cluster. When the vendor is MSK, this is computed by the API from the provided arn.
    ServiceEndpointId string
    For AZURE EVENTHUB, this is the namespace endpoint ID. For AWS CONFLUENT cluster, this is the VPC Endpoint service name.
    State string
    Status of the connection.
    Vendor string
    Vendor that manages the endpoint. The following are the vendor values per provider:

    * **AWS**: MSK, CONFLUENT, and S3
    
    * **Azure**: EVENTHUB and CONFLUENT
    
    Arn string
    Amazon Resource Name (ARN). Required for AWS Provider and MSK vendor.
    DnsDomain string
    The domain hostname. Required for the following provider and vendor combinations:

    * AWS provider with CONFLUENT vendor.
    
    • AZURE provider with EVENTHUB or CONFLUENT vendor.
    DnsSubDomains []string
    Sub-Domain name of Confluent cluster. These are typically your availability zones. Required for AWS Provider and CONFLUENT vendor. If your AWS CONFLUENT cluster doesn't use subdomains, you must set this to the empty array [].

    ErrorMessage string

    Error message if the connection is in a failed state.
    Id string
    The ID of the Private Link connection.
    InterfaceEndpointId string
    Interface endpoint ID that is created from the specified service endpoint ID.
    InterfaceEndpointName string
    Name of interface endpoint that is created from the specified service endpoint ID.
    ProjectId string
    Unique 24-hexadecimal digit string that identifies your project. Use the /groups endpoint to retrieve all projects to which the authenticated user has access.NOTE: Groups and projects are synonymous terms. Your group id is the same as your project id. For existing groups, your group or project id remains the same. The resource and corresponding endpoints use the term groups.
    ProviderAccountId string
    Account ID from the cloud provider.
    ProviderName string
    Provider where the endpoint is deployed. Valid values are AWS and AZURE.
    Region string
    The region of the Provider’s cluster. See AZURE and AWS supported regions. When the vendor is CONFLUENT, this is the domain name of Confluent cluster. When the vendor is MSK, this is computed by the API from the provided arn.
    ServiceEndpointId string
    For AZURE EVENTHUB, this is the namespace endpoint ID. For AWS CONFLUENT cluster, this is the VPC Endpoint service name.
    State string
    Status of the connection.
    Vendor string
    Vendor that manages the endpoint. The following are the vendor values per provider:

    * **AWS**: MSK, CONFLUENT, and S3
    
    * **Azure**: EVENTHUB and CONFLUENT
    
    arn String
    Amazon Resource Name (ARN). Required for AWS Provider and MSK vendor.
    dnsDomain String
    The domain hostname. Required for the following provider and vendor combinations:

    * AWS provider with CONFLUENT vendor.
    
    • AZURE provider with EVENTHUB or CONFLUENT vendor.
    dnsSubDomains List<String>
    Sub-Domain name of Confluent cluster. These are typically your availability zones. Required for AWS Provider and CONFLUENT vendor. If your AWS CONFLUENT cluster doesn't use subdomains, you must set this to the empty array [].

    errorMessage String

    Error message if the connection is in a failed state.
    id String
    The ID of the Private Link connection.
    interfaceEndpointId String
    Interface endpoint ID that is created from the specified service endpoint ID.
    interfaceEndpointName String
    Name of interface endpoint that is created from the specified service endpoint ID.
    projectId String
    Unique 24-hexadecimal digit string that identifies your project. Use the /groups endpoint to retrieve all projects to which the authenticated user has access.NOTE: Groups and projects are synonymous terms. Your group id is the same as your project id. For existing groups, your group or project id remains the same. The resource and corresponding endpoints use the term groups.
    providerAccountId String
    Account ID from the cloud provider.
    providerName String
    Provider where the endpoint is deployed. Valid values are AWS and AZURE.
    region String
    The region of the Provider’s cluster. See AZURE and AWS supported regions. When the vendor is CONFLUENT, this is the domain name of Confluent cluster. When the vendor is MSK, this is computed by the API from the provided arn.
    serviceEndpointId String
    For AZURE EVENTHUB, this is the namespace endpoint ID. For AWS CONFLUENT cluster, this is the VPC Endpoint service name.
    state String
    Status of the connection.
    vendor String
    Vendor that manages the endpoint. The following are the vendor values per provider:

    * **AWS**: MSK, CONFLUENT, and S3
    
    * **Azure**: EVENTHUB and CONFLUENT
    
    arn string
    Amazon Resource Name (ARN). Required for AWS Provider and MSK vendor.
    dnsDomain string
    The domain hostname. Required for the following provider and vendor combinations:

    * AWS provider with CONFLUENT vendor.
    
    • AZURE provider with EVENTHUB or CONFLUENT vendor.
    dnsSubDomains string[]
    Sub-Domain name of Confluent cluster. These are typically your availability zones. Required for AWS Provider and CONFLUENT vendor. If your AWS CONFLUENT cluster doesn't use subdomains, you must set this to the empty array [].

    errorMessage string

    Error message if the connection is in a failed state.
    id string
    The ID of the Private Link connection.
    interfaceEndpointId string
    Interface endpoint ID that is created from the specified service endpoint ID.
    interfaceEndpointName string
    Name of interface endpoint that is created from the specified service endpoint ID.
    projectId string
    Unique 24-hexadecimal digit string that identifies your project. Use the /groups endpoint to retrieve all projects to which the authenticated user has access.NOTE: Groups and projects are synonymous terms. Your group id is the same as your project id. For existing groups, your group or project id remains the same. The resource and corresponding endpoints use the term groups.
    providerAccountId string
    Account ID from the cloud provider.
    providerName string
    Provider where the endpoint is deployed. Valid values are AWS and AZURE.
    region string
    The region of the Provider’s cluster. See AZURE and AWS supported regions. When the vendor is CONFLUENT, this is the domain name of Confluent cluster. When the vendor is MSK, this is computed by the API from the provided arn.
    serviceEndpointId string
    For AZURE EVENTHUB, this is the namespace endpoint ID. For AWS CONFLUENT cluster, this is the VPC Endpoint service name.
    state string
    Status of the connection.
    vendor string
    Vendor that manages the endpoint. The following are the vendor values per provider:

    * **AWS**: MSK, CONFLUENT, and S3
    
    * **Azure**: EVENTHUB and CONFLUENT
    
    arn str
    Amazon Resource Name (ARN). Required for AWS Provider and MSK vendor.
    dns_domain str
    The domain hostname. Required for the following provider and vendor combinations:

    * AWS provider with CONFLUENT vendor.
    
    • AZURE provider with EVENTHUB or CONFLUENT vendor.
    dns_sub_domains Sequence[str]
    Sub-Domain name of Confluent cluster. These are typically your availability zones. Required for AWS Provider and CONFLUENT vendor. If your AWS CONFLUENT cluster doesn't use subdomains, you must set this to the empty array [].

    error_message str

    Error message if the connection is in a failed state.
    id str
    The ID of the Private Link connection.
    interface_endpoint_id str
    Interface endpoint ID that is created from the specified service endpoint ID.
    interface_endpoint_name str
    Name of interface endpoint that is created from the specified service endpoint ID.
    project_id str
    Unique 24-hexadecimal digit string that identifies your project. Use the /groups endpoint to retrieve all projects to which the authenticated user has access.NOTE: Groups and projects are synonymous terms. Your group id is the same as your project id. For existing groups, your group or project id remains the same. The resource and corresponding endpoints use the term groups.
    provider_account_id str
    Account ID from the cloud provider.
    provider_name str
    Provider where the endpoint is deployed. Valid values are AWS and AZURE.
    region str
    The region of the Provider’s cluster. See AZURE and AWS supported regions. When the vendor is CONFLUENT, this is the domain name of Confluent cluster. When the vendor is MSK, this is computed by the API from the provided arn.
    service_endpoint_id str
    For AZURE EVENTHUB, this is the namespace endpoint ID. For AWS CONFLUENT cluster, this is the VPC Endpoint service name.
    state str
    Status of the connection.
    vendor str
    Vendor that manages the endpoint. The following are the vendor values per provider:

    * **AWS**: MSK, CONFLUENT, and S3
    
    * **Azure**: EVENTHUB and CONFLUENT
    
    arn String
    Amazon Resource Name (ARN). Required for AWS Provider and MSK vendor.
    dnsDomain String
    The domain hostname. Required for the following provider and vendor combinations:

    * AWS provider with CONFLUENT vendor.
    
    • AZURE provider with EVENTHUB or CONFLUENT vendor.
    dnsSubDomains List<String>
    Sub-Domain name of Confluent cluster. These are typically your availability zones. Required for AWS Provider and CONFLUENT vendor. If your AWS CONFLUENT cluster doesn't use subdomains, you must set this to the empty array [].

    errorMessage String

    Error message if the connection is in a failed state.
    id String
    The ID of the Private Link connection.
    interfaceEndpointId String
    Interface endpoint ID that is created from the specified service endpoint ID.
    interfaceEndpointName String
    Name of interface endpoint that is created from the specified service endpoint ID.
    projectId String
    Unique 24-hexadecimal digit string that identifies your project. Use the /groups endpoint to retrieve all projects to which the authenticated user has access.NOTE: Groups and projects are synonymous terms. Your group id is the same as your project id. For existing groups, your group or project id remains the same. The resource and corresponding endpoints use the term groups.
    providerAccountId String
    Account ID from the cloud provider.
    providerName String
    Provider where the endpoint is deployed. Valid values are AWS and AZURE.
    region String
    The region of the Provider’s cluster. See AZURE and AWS supported regions. When the vendor is CONFLUENT, this is the domain name of Confluent cluster. When the vendor is MSK, this is computed by the API from the provided arn.
    serviceEndpointId String
    For AZURE EVENTHUB, this is the namespace endpoint ID. For AWS CONFLUENT cluster, this is the VPC Endpoint service name.
    state String
    Status of the connection.
    vendor String
    Vendor that manages the endpoint. The following are the vendor values per provider:

    * **AWS**: MSK, CONFLUENT, and S3
    
    * **Azure**: EVENTHUB and CONFLUENT
    

    Package Details

    Repository
    MongoDB Atlas pulumi/pulumi-mongodbatlas
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the mongodbatlas Terraform Provider.
    mongodbatlas logo
    MongoDB Atlas v3.36.0 published on Friday, Aug 22, 2025 by Pulumi