1. Packages
  2. AWS Classic
  3. API Docs
  4. resourcegroups
  5. Group

Try AWS Native preview for resources not in the classic version.

AWS Classic v6.31.1 published on Thursday, Apr 18, 2024 by Pulumi

aws.resourcegroups.Group

Explore with Pulumi AI

aws logo

Try AWS Native preview for resources not in the classic version.

AWS Classic v6.31.1 published on Thursday, Apr 18, 2024 by Pulumi

    Provides a Resource Group.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const test = new aws.resourcegroups.Group("test", {
        name: "test-group",
        resourceQuery: {
            query: `{
      "ResourceTypeFilters": [
        "AWS::EC2::Instance"
      ],
      "TagFilters": [
        {
          "Key": "Stage",
          "Values": ["Test"]
        }
      ]
    }
    `,
        },
    });
    
    import pulumi
    import pulumi_aws as aws
    
    test = aws.resourcegroups.Group("test",
        name="test-group",
        resource_query=aws.resourcegroups.GroupResourceQueryArgs(
            query="""{
      "ResourceTypeFilters": [
        "AWS::EC2::Instance"
      ],
      "TagFilters": [
        {
          "Key": "Stage",
          "Values": ["Test"]
        }
      ]
    }
    """,
        ))
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/resourcegroups"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := resourcegroups.NewGroup(ctx, "test", &resourcegroups.GroupArgs{
    			Name: pulumi.String("test-group"),
    			ResourceQuery: &resourcegroups.GroupResourceQueryArgs{
    				Query: pulumi.String(`{
      "ResourceTypeFilters": [
        "AWS::EC2::Instance"
      ],
      "TagFilters": [
        {
          "Key": "Stage",
          "Values": ["Test"]
        }
      ]
    }
    `),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var test = new Aws.ResourceGroups.Group("test", new()
        {
            Name = "test-group",
            ResourceQuery = new Aws.ResourceGroups.Inputs.GroupResourceQueryArgs
            {
                Query = @"{
      ""ResourceTypeFilters"": [
        ""AWS::EC2::Instance""
      ],
      ""TagFilters"": [
        {
          ""Key"": ""Stage"",
          ""Values"": [""Test""]
        }
      ]
    }
    ",
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.resourcegroups.Group;
    import com.pulumi.aws.resourcegroups.GroupArgs;
    import com.pulumi.aws.resourcegroups.inputs.GroupResourceQueryArgs;
    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 test = new Group("test", GroupArgs.builder()        
                .name("test-group")
                .resourceQuery(GroupResourceQueryArgs.builder()
                    .query("""
    {
      "ResourceTypeFilters": [
        "AWS::EC2::Instance"
      ],
      "TagFilters": [
        {
          "Key": "Stage",
          "Values": ["Test"]
        }
      ]
    }
                    """)
                    .build())
                .build());
    
        }
    }
    
    resources:
      test:
        type: aws:resourcegroups:Group
        properties:
          name: test-group
          resourceQuery:
            query: |
              {
                "ResourceTypeFilters": [
                  "AWS::EC2::Instance"
                ],
                "TagFilters": [
                  {
                    "Key": "Stage",
                    "Values": ["Test"]
                  }
                ]
              }          
    

    Create Group Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Group(name: string, args?: GroupArgs, opts?: CustomResourceOptions);
    @overload
    def Group(resource_name: str,
              args: Optional[GroupArgs] = None,
              opts: Optional[ResourceOptions] = None)
    
    @overload
    def Group(resource_name: str,
              opts: Optional[ResourceOptions] = None,
              configurations: Optional[Sequence[GroupConfigurationArgs]] = None,
              description: Optional[str] = None,
              name: Optional[str] = None,
              resource_query: Optional[GroupResourceQueryArgs] = None,
              tags: Optional[Mapping[str, str]] = None)
    func NewGroup(ctx *Context, name string, args *GroupArgs, opts ...ResourceOption) (*Group, error)
    public Group(string name, GroupArgs? args = null, CustomResourceOptions? opts = null)
    public Group(String name, GroupArgs args)
    public Group(String name, GroupArgs args, CustomResourceOptions options)
    
    type: aws:resourcegroups:Group
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args GroupArgs
    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 GroupArgs
    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 GroupArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args GroupArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args GroupArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Example

    The following reference example uses placeholder values for all input properties.

    var examplegroupResourceResourceFromResourcegroupsgroup = new Aws.ResourceGroups.Group("examplegroupResourceResourceFromResourcegroupsgroup", new()
    {
        Configurations = new[]
        {
            new Aws.ResourceGroups.Inputs.GroupConfigurationArgs
            {
                Type = "string",
                Parameters = new[]
                {
                    new Aws.ResourceGroups.Inputs.GroupConfigurationParameterArgs
                    {
                        Name = "string",
                        Values = new[]
                        {
                            "string",
                        },
                    },
                },
            },
        },
        Description = "string",
        Name = "string",
        ResourceQuery = new Aws.ResourceGroups.Inputs.GroupResourceQueryArgs
        {
            Query = "string",
            Type = "string",
        },
        Tags = 
        {
            { "string", "string" },
        },
    });
    
    example, err := resourcegroups.NewGroup(ctx, "examplegroupResourceResourceFromResourcegroupsgroup", &resourcegroups.GroupArgs{
    	Configurations: resourcegroups.GroupConfigurationArray{
    		&resourcegroups.GroupConfigurationArgs{
    			Type: pulumi.String("string"),
    			Parameters: resourcegroups.GroupConfigurationParameterArray{
    				&resourcegroups.GroupConfigurationParameterArgs{
    					Name: pulumi.String("string"),
    					Values: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    				},
    			},
    		},
    	},
    	Description: pulumi.String("string"),
    	Name:        pulumi.String("string"),
    	ResourceQuery: &resourcegroups.GroupResourceQueryArgs{
    		Query: pulumi.String("string"),
    		Type:  pulumi.String("string"),
    	},
    	Tags: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    })
    
    var examplegroupResourceResourceFromResourcegroupsgroup = new Group("examplegroupResourceResourceFromResourcegroupsgroup", GroupArgs.builder()        
        .configurations(GroupConfigurationArgs.builder()
            .type("string")
            .parameters(GroupConfigurationParameterArgs.builder()
                .name("string")
                .values("string")
                .build())
            .build())
        .description("string")
        .name("string")
        .resourceQuery(GroupResourceQueryArgs.builder()
            .query("string")
            .type("string")
            .build())
        .tags(Map.of("string", "string"))
        .build());
    
    examplegroup_resource_resource_from_resourcegroupsgroup = aws.resourcegroups.Group("examplegroupResourceResourceFromResourcegroupsgroup",
        configurations=[aws.resourcegroups.GroupConfigurationArgs(
            type="string",
            parameters=[aws.resourcegroups.GroupConfigurationParameterArgs(
                name="string",
                values=["string"],
            )],
        )],
        description="string",
        name="string",
        resource_query=aws.resourcegroups.GroupResourceQueryArgs(
            query="string",
            type="string",
        ),
        tags={
            "string": "string",
        })
    
    const examplegroupResourceResourceFromResourcegroupsgroup = new aws.resourcegroups.Group("examplegroupResourceResourceFromResourcegroupsgroup", {
        configurations: [{
            type: "string",
            parameters: [{
                name: "string",
                values: ["string"],
            }],
        }],
        description: "string",
        name: "string",
        resourceQuery: {
            query: "string",
            type: "string",
        },
        tags: {
            string: "string",
        },
    });
    
    type: aws:resourcegroups:Group
    properties:
        configurations:
            - parameters:
                - name: string
                  values:
                    - string
              type: string
        description: string
        name: string
        resourceQuery:
            query: string
            type: string
        tags:
            string: string
    

    Group 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 Group resource accepts the following input properties:

    Configurations List<GroupConfiguration>
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    Description string
    A description of the resource group.
    Name string
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    ResourceQuery GroupResourceQuery
    A resource_query block. Resource queries are documented below.
    Tags Dictionary<string, string>
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    Configurations []GroupConfigurationArgs
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    Description string
    A description of the resource group.
    Name string
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    ResourceQuery GroupResourceQueryArgs
    A resource_query block. Resource queries are documented below.
    Tags map[string]string
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    configurations List<GroupConfiguration>
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description String
    A description of the resource group.
    name String
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resourceQuery GroupResourceQuery
    A resource_query block. Resource queries are documented below.
    tags Map<String,String>
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    configurations GroupConfiguration[]
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description string
    A description of the resource group.
    name string
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resourceQuery GroupResourceQuery
    A resource_query block. Resource queries are documented below.
    tags {[key: string]: string}
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    configurations Sequence[GroupConfigurationArgs]
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description str
    A description of the resource group.
    name str
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resource_query GroupResourceQueryArgs
    A resource_query block. Resource queries are documented below.
    tags Mapping[str, str]
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    configurations List<Property Map>
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description String
    A description of the resource group.
    name String
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resourceQuery Property Map
    A resource_query block. Resource queries are documented below.
    tags Map<String>
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.

    Outputs

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

    Arn string
    The ARN assigned by AWS for this resource group.
    Id string
    The provider-assigned unique ID for this managed resource.
    TagsAll Dictionary<string, string>
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    Arn string
    The ARN assigned by AWS for this resource group.
    Id string
    The provider-assigned unique ID for this managed resource.
    TagsAll map[string]string
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn String
    The ARN assigned by AWS for this resource group.
    id String
    The provider-assigned unique ID for this managed resource.
    tagsAll Map<String,String>
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn string
    The ARN assigned by AWS for this resource group.
    id string
    The provider-assigned unique ID for this managed resource.
    tagsAll {[key: string]: string}
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn str
    The ARN assigned by AWS for this resource group.
    id str
    The provider-assigned unique ID for this managed resource.
    tags_all Mapping[str, str]
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn String
    The ARN assigned by AWS for this resource group.
    id String
    The provider-assigned unique ID for this managed resource.
    tagsAll Map<String>
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    Look up Existing Group Resource

    Get an existing Group 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?: GroupState, opts?: CustomResourceOptions): Group
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            arn: Optional[str] = None,
            configurations: Optional[Sequence[GroupConfigurationArgs]] = None,
            description: Optional[str] = None,
            name: Optional[str] = None,
            resource_query: Optional[GroupResourceQueryArgs] = None,
            tags: Optional[Mapping[str, str]] = None,
            tags_all: Optional[Mapping[str, str]] = None) -> Group
    func GetGroup(ctx *Context, name string, id IDInput, state *GroupState, opts ...ResourceOption) (*Group, error)
    public static Group Get(string name, Input<string> id, GroupState? state, CustomResourceOptions? opts = null)
    public static Group get(String name, Output<String> id, GroupState 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:
    Arn string
    The ARN assigned by AWS for this resource group.
    Configurations List<GroupConfiguration>
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    Description string
    A description of the resource group.
    Name string
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    ResourceQuery GroupResourceQuery
    A resource_query block. Resource queries are documented below.
    Tags Dictionary<string, string>
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    TagsAll Dictionary<string, string>
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    Arn string
    The ARN assigned by AWS for this resource group.
    Configurations []GroupConfigurationArgs
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    Description string
    A description of the resource group.
    Name string
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    ResourceQuery GroupResourceQueryArgs
    A resource_query block. Resource queries are documented below.
    Tags map[string]string
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    TagsAll map[string]string
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn String
    The ARN assigned by AWS for this resource group.
    configurations List<GroupConfiguration>
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description String
    A description of the resource group.
    name String
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resourceQuery GroupResourceQuery
    A resource_query block. Resource queries are documented below.
    tags Map<String,String>
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tagsAll Map<String,String>
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn string
    The ARN assigned by AWS for this resource group.
    configurations GroupConfiguration[]
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description string
    A description of the resource group.
    name string
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resourceQuery GroupResourceQuery
    A resource_query block. Resource queries are documented below.
    tags {[key: string]: string}
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tagsAll {[key: string]: string}
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn str
    The ARN assigned by AWS for this resource group.
    configurations Sequence[GroupConfigurationArgs]
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description str
    A description of the resource group.
    name str
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resource_query GroupResourceQueryArgs
    A resource_query block. Resource queries are documented below.
    tags Mapping[str, str]
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tags_all Mapping[str, str]
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    arn String
    The ARN assigned by AWS for this resource group.
    configurations List<Property Map>
    A configuration associates the resource group with an AWS service and specifies how the service can interact with the resources in the group. See below for details.
    description String
    A description of the resource group.
    name String
    The resource group's name. A resource group name can have a maximum of 127 characters, including letters, numbers, hyphens, dots, and underscores. The name cannot start with AWS or aws.
    resourceQuery Property Map
    A resource_query block. Resource queries are documented below.
    tags Map<String>
    Key-value map of resource tags. .If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    tagsAll Map<String>
    A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

    Deprecated: Please use tags instead.

    Supporting Types

    GroupConfiguration, GroupConfigurationArgs

    Type string
    Specifies the type of group configuration item.
    Parameters List<GroupConfigurationParameter>
    A collection of parameters for this group configuration item. See below for details.
    Type string
    Specifies the type of group configuration item.
    Parameters []GroupConfigurationParameter
    A collection of parameters for this group configuration item. See below for details.
    type String
    Specifies the type of group configuration item.
    parameters List<GroupConfigurationParameter>
    A collection of parameters for this group configuration item. See below for details.
    type string
    Specifies the type of group configuration item.
    parameters GroupConfigurationParameter[]
    A collection of parameters for this group configuration item. See below for details.
    type str
    Specifies the type of group configuration item.
    parameters Sequence[GroupConfigurationParameter]
    A collection of parameters for this group configuration item. See below for details.
    type String
    Specifies the type of group configuration item.
    parameters List<Property Map>
    A collection of parameters for this group configuration item. See below for details.

    GroupConfigurationParameter, GroupConfigurationParameterArgs

    Name string
    The name of the group configuration parameter.
    Values List<string>
    The value or values to be used for the specified parameter.
    Name string
    The name of the group configuration parameter.
    Values []string
    The value or values to be used for the specified parameter.
    name String
    The name of the group configuration parameter.
    values List<String>
    The value or values to be used for the specified parameter.
    name string
    The name of the group configuration parameter.
    values string[]
    The value or values to be used for the specified parameter.
    name str
    The name of the group configuration parameter.
    values Sequence[str]
    The value or values to be used for the specified parameter.
    name String
    The name of the group configuration parameter.
    values List<String>
    The value or values to be used for the specified parameter.

    GroupResourceQuery, GroupResourceQueryArgs

    Query string
    The resource query as a JSON string.
    Type string
    The type of the resource query. Defaults to TAG_FILTERS_1_0.
    Query string
    The resource query as a JSON string.
    Type string
    The type of the resource query. Defaults to TAG_FILTERS_1_0.
    query String
    The resource query as a JSON string.
    type String
    The type of the resource query. Defaults to TAG_FILTERS_1_0.
    query string
    The resource query as a JSON string.
    type string
    The type of the resource query. Defaults to TAG_FILTERS_1_0.
    query str
    The resource query as a JSON string.
    type str
    The type of the resource query. Defaults to TAG_FILTERS_1_0.
    query String
    The resource query as a JSON string.
    type String
    The type of the resource query. Defaults to TAG_FILTERS_1_0.

    Import

    Using pulumi import, import resource groups using the name. For example:

    $ pulumi import aws:resourcegroups/group:Group foo resource-group-name
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    AWS Classic pulumi/pulumi-aws
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the aws Terraform Provider.
    aws logo

    Try AWS Native preview for resources not in the classic version.

    AWS Classic v6.31.1 published on Thursday, Apr 18, 2024 by Pulumi