1. Packages
  2. Oracle Cloud Infrastructure
  3. API Docs
  4. Core
  5. InternetGateway
Oracle Cloud Infrastructure v1.27.0 published on Friday, Mar 15, 2024 by Pulumi

oci.Core.InternetGateway

Explore with Pulumi AI

oci logo
Oracle Cloud Infrastructure v1.27.0 published on Friday, Mar 15, 2024 by Pulumi

    This resource provides the Internet Gateway resource in Oracle Cloud Infrastructure Core service.

    Creates a new internet gateway for the specified VCN. For more information, see Access to the Internet.

    For the purposes of access control, you must provide the OCID of the compartment where you want the Internet Gateway to reside. Notice that the internet gateway doesn’t have to be in the same compartment as the VCN or other Networking Service components. If you’re not sure which compartment to use, put the Internet Gateway in the same compartment with the VCN. For more information about compartments and access control, see Overview of the IAM Service.

    You may optionally specify a display name for the internet gateway, otherwise a default is provided. It does not have to be unique, and you can change it. Avoid entering confidential information.

    For traffic to flow between a subnet and an internet gateway, you must create a route rule accordingly in the subnet’s route table (for example, 0.0.0.0/0 > internet gateway). See UpdateRouteTable.

    You must specify whether the internet gateway is enabled when you create it. If it’s disabled, that means no traffic will flow to/from the internet even if there’s a route rule that enables that traffic. You can later use UpdateInternetGateway to easily disable/enable the gateway without changing the route rule.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as oci from "@pulumi/oci";
    
    const testInternetGateway = new oci.core.InternetGateway("testInternetGateway", {
        compartmentId: _var.compartment_id,
        vcnId: oci_core_vcn.test_vcn.id,
        enabled: _var.internet_gateway_enabled,
        definedTags: {
            "Operations.CostCenter": "42",
        },
        displayName: _var.internet_gateway_display_name,
        freeformTags: {
            Department: "Finance",
        },
        routeTableId: oci_core_route_table.test_route_table.id,
    });
    
    import pulumi
    import pulumi_oci as oci
    
    test_internet_gateway = oci.core.InternetGateway("testInternetGateway",
        compartment_id=var["compartment_id"],
        vcn_id=oci_core_vcn["test_vcn"]["id"],
        enabled=var["internet_gateway_enabled"],
        defined_tags={
            "Operations.CostCenter": "42",
        },
        display_name=var["internet_gateway_display_name"],
        freeform_tags={
            "Department": "Finance",
        },
        route_table_id=oci_core_route_table["test_route_table"]["id"])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-oci/sdk/go/oci/Core"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := Core.NewInternetGateway(ctx, "testInternetGateway", &Core.InternetGatewayArgs{
    			CompartmentId: pulumi.Any(_var.Compartment_id),
    			VcnId:         pulumi.Any(oci_core_vcn.Test_vcn.Id),
    			Enabled:       pulumi.Any(_var.Internet_gateway_enabled),
    			DefinedTags: pulumi.Map{
    				"Operations.CostCenter": pulumi.Any("42"),
    			},
    			DisplayName: pulumi.Any(_var.Internet_gateway_display_name),
    			FreeformTags: pulumi.Map{
    				"Department": pulumi.Any("Finance"),
    			},
    			RouteTableId: pulumi.Any(oci_core_route_table.Test_route_table.Id),
    		})
    		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 testInternetGateway = new Oci.Core.InternetGateway("testInternetGateway", new()
        {
            CompartmentId = @var.Compartment_id,
            VcnId = oci_core_vcn.Test_vcn.Id,
            Enabled = @var.Internet_gateway_enabled,
            DefinedTags = 
            {
                { "Operations.CostCenter", "42" },
            },
            DisplayName = @var.Internet_gateway_display_name,
            FreeformTags = 
            {
                { "Department", "Finance" },
            },
            RouteTableId = oci_core_route_table.Test_route_table.Id,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.oci.Core.InternetGateway;
    import com.pulumi.oci.Core.InternetGatewayArgs;
    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 testInternetGateway = new InternetGateway("testInternetGateway", InternetGatewayArgs.builder()        
                .compartmentId(var_.compartment_id())
                .vcnId(oci_core_vcn.test_vcn().id())
                .enabled(var_.internet_gateway_enabled())
                .definedTags(Map.of("Operations.CostCenter", "42"))
                .displayName(var_.internet_gateway_display_name())
                .freeformTags(Map.of("Department", "Finance"))
                .routeTableId(oci_core_route_table.test_route_table().id())
                .build());
    
        }
    }
    
    resources:
      testInternetGateway:
        type: oci:Core:InternetGateway
        properties:
          #Required
          compartmentId: ${var.compartment_id}
          vcnId: ${oci_core_vcn.test_vcn.id}
          #Optional
          enabled: ${var.internet_gateway_enabled}
          definedTags:
            Operations.CostCenter: '42'
          displayName: ${var.internet_gateway_display_name}
          freeformTags:
            Department: Finance
          routeTableId: ${oci_core_route_table.test_route_table.id}
    

    Create InternetGateway Resource

    new InternetGateway(name: string, args: InternetGatewayArgs, opts?: CustomResourceOptions);
    @overload
    def InternetGateway(resource_name: str,
                        opts: Optional[ResourceOptions] = None,
                        compartment_id: Optional[str] = None,
                        defined_tags: Optional[Mapping[str, Any]] = None,
                        display_name: Optional[str] = None,
                        enabled: Optional[bool] = None,
                        freeform_tags: Optional[Mapping[str, Any]] = None,
                        route_table_id: Optional[str] = None,
                        vcn_id: Optional[str] = None)
    @overload
    def InternetGateway(resource_name: str,
                        args: InternetGatewayArgs,
                        opts: Optional[ResourceOptions] = None)
    func NewInternetGateway(ctx *Context, name string, args InternetGatewayArgs, opts ...ResourceOption) (*InternetGateway, error)
    public InternetGateway(string name, InternetGatewayArgs args, CustomResourceOptions? opts = null)
    public InternetGateway(String name, InternetGatewayArgs args)
    public InternetGateway(String name, InternetGatewayArgs args, CustomResourceOptions options)
    
    type: oci:Core:InternetGateway
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    name string
    The unique name of the resource.
    args InternetGatewayArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args InternetGatewayArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args InternetGatewayArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args InternetGatewayArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args InternetGatewayArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    InternetGateway Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The InternetGateway resource accepts the following input properties:

    CompartmentId string
    (Updatable) The OCID of the compartment to contain the internet gateway.
    VcnId string

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    DefinedTags Dictionary<string, object>
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    DisplayName string
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    Enabled bool
    (Updatable) Whether the gateway is enabled upon creation.
    FreeformTags Dictionary<string, object>
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    RouteTableId string
    (Updatable) The OCID of the route table the Internet Gateway is using.
    CompartmentId string
    (Updatable) The OCID of the compartment to contain the internet gateway.
    VcnId string

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    DefinedTags map[string]interface{}
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    DisplayName string
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    Enabled bool
    (Updatable) Whether the gateway is enabled upon creation.
    FreeformTags map[string]interface{}
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    RouteTableId string
    (Updatable) The OCID of the route table the Internet Gateway is using.
    compartmentId String
    (Updatable) The OCID of the compartment to contain the internet gateway.
    vcnId String

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    definedTags Map<String,Object>
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    displayName String
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled Boolean
    (Updatable) Whether the gateway is enabled upon creation.
    freeformTags Map<String,Object>
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    routeTableId String
    (Updatable) The OCID of the route table the Internet Gateway is using.
    compartmentId string
    (Updatable) The OCID of the compartment to contain the internet gateway.
    vcnId string

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    definedTags {[key: string]: any}
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    displayName string
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled boolean
    (Updatable) Whether the gateway is enabled upon creation.
    freeformTags {[key: string]: any}
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    routeTableId string
    (Updatable) The OCID of the route table the Internet Gateway is using.
    compartment_id str
    (Updatable) The OCID of the compartment to contain the internet gateway.
    vcn_id str

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    defined_tags Mapping[str, Any]
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    display_name str
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled bool
    (Updatable) Whether the gateway is enabled upon creation.
    freeform_tags Mapping[str, Any]
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    route_table_id str
    (Updatable) The OCID of the route table the Internet Gateway is using.
    compartmentId String
    (Updatable) The OCID of the compartment to contain the internet gateway.
    vcnId String

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    definedTags Map<Any>
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    displayName String
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled Boolean
    (Updatable) Whether the gateway is enabled upon creation.
    freeformTags Map<Any>
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    routeTableId String
    (Updatable) The OCID of the route table the Internet Gateway is using.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the InternetGateway resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    State string
    The internet gateway's current state.
    TimeCreated string
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    Id string
    The provider-assigned unique ID for this managed resource.
    State string
    The internet gateway's current state.
    TimeCreated string
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    id String
    The provider-assigned unique ID for this managed resource.
    state String
    The internet gateway's current state.
    timeCreated String
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    id string
    The provider-assigned unique ID for this managed resource.
    state string
    The internet gateway's current state.
    timeCreated string
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    id str
    The provider-assigned unique ID for this managed resource.
    state str
    The internet gateway's current state.
    time_created str
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    id String
    The provider-assigned unique ID for this managed resource.
    state String
    The internet gateway's current state.
    timeCreated String
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z

    Look up Existing InternetGateway Resource

    Get an existing InternetGateway resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: InternetGatewayState, opts?: CustomResourceOptions): InternetGateway
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            compartment_id: Optional[str] = None,
            defined_tags: Optional[Mapping[str, Any]] = None,
            display_name: Optional[str] = None,
            enabled: Optional[bool] = None,
            freeform_tags: Optional[Mapping[str, Any]] = None,
            route_table_id: Optional[str] = None,
            state: Optional[str] = None,
            time_created: Optional[str] = None,
            vcn_id: Optional[str] = None) -> InternetGateway
    func GetInternetGateway(ctx *Context, name string, id IDInput, state *InternetGatewayState, opts ...ResourceOption) (*InternetGateway, error)
    public static InternetGateway Get(string name, Input<string> id, InternetGatewayState? state, CustomResourceOptions? opts = null)
    public static InternetGateway get(String name, Output<String> id, InternetGatewayState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    CompartmentId string
    (Updatable) The OCID of the compartment to contain the internet gateway.
    DefinedTags Dictionary<string, object>
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    DisplayName string
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    Enabled bool
    (Updatable) Whether the gateway is enabled upon creation.
    FreeformTags Dictionary<string, object>
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    RouteTableId string
    (Updatable) The OCID of the route table the Internet Gateway is using.
    State string
    The internet gateway's current state.
    TimeCreated string
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    VcnId string

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    CompartmentId string
    (Updatable) The OCID of the compartment to contain the internet gateway.
    DefinedTags map[string]interface{}
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    DisplayName string
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    Enabled bool
    (Updatable) Whether the gateway is enabled upon creation.
    FreeformTags map[string]interface{}
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    RouteTableId string
    (Updatable) The OCID of the route table the Internet Gateway is using.
    State string
    The internet gateway's current state.
    TimeCreated string
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    VcnId string

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    compartmentId String
    (Updatable) The OCID of the compartment to contain the internet gateway.
    definedTags Map<String,Object>
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    displayName String
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled Boolean
    (Updatable) Whether the gateway is enabled upon creation.
    freeformTags Map<String,Object>
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    routeTableId String
    (Updatable) The OCID of the route table the Internet Gateway is using.
    state String
    The internet gateway's current state.
    timeCreated String
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    vcnId String

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    compartmentId string
    (Updatable) The OCID of the compartment to contain the internet gateway.
    definedTags {[key: string]: any}
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    displayName string
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled boolean
    (Updatable) Whether the gateway is enabled upon creation.
    freeformTags {[key: string]: any}
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    routeTableId string
    (Updatable) The OCID of the route table the Internet Gateway is using.
    state string
    The internet gateway's current state.
    timeCreated string
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    vcnId string

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    compartment_id str
    (Updatable) The OCID of the compartment to contain the internet gateway.
    defined_tags Mapping[str, Any]
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    display_name str
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled bool
    (Updatable) Whether the gateway is enabled upon creation.
    freeform_tags Mapping[str, Any]
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    route_table_id str
    (Updatable) The OCID of the route table the Internet Gateway is using.
    state str
    The internet gateway's current state.
    time_created str
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    vcn_id str

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    compartmentId String
    (Updatable) The OCID of the compartment to contain the internet gateway.
    definedTags Map<Any>
    (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see Resource Tags. Example: {"Operations.CostCenter": "42"}
    displayName String
    (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
    enabled Boolean
    (Updatable) Whether the gateway is enabled upon creation.
    freeformTags Map<Any>
    (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see Resource Tags. Example: {"Department": "Finance"}
    routeTableId String
    (Updatable) The OCID of the route table the Internet Gateway is using.
    state String
    The internet gateway's current state.
    timeCreated String
    The date and time the internet gateway was created, in the format defined by RFC3339. Example: 2016-08-25T21:10:29.600Z
    vcnId String

    The OCID of the VCN the Internet Gateway is attached to.

    ** IMPORTANT ** Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values

    Import

    InternetGateways can be imported using the id, e.g.

    $ pulumi import oci:Core/internetGateway:InternetGateway test_internet_gateway "id"
    

    Package Details

    Repository
    oci pulumi/pulumi-oci
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the oci Terraform Provider.
    oci logo
    Oracle Cloud Infrastructure v1.27.0 published on Friday, Mar 15, 2024 by Pulumi