1. Packages
  2. Azure Native
  3. API Docs
  4. agfoodplatform
  5. DataConnector
This is the latest version of Azure Native. Use the Azure Native v1 docs if using the v1 version of this package.
Azure Native v2.75.0 published on Saturday, Nov 30, 2024 by Pulumi

azure-native.agfoodplatform.DataConnector

Explore with Pulumi AI

azure-native logo
This is the latest version of Azure Native. Use the Azure Native v1 docs if using the v1 version of this package.
Azure Native v2.75.0 published on Saturday, Nov 30, 2024 by Pulumi

    DataConnector Model. Azure REST API version: 2023-06-01-preview.

    Example Usage

    DataConnectors_CreateOrUpdate

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using AzureNative = Pulumi.AzureNative;
    
    return await Deployment.RunAsync(() => 
    {
        var dataConnector = new AzureNative.AgFoodPlatform.DataConnector("dataConnector", new()
        {
            DataConnectorName = "WeatherIBM",
            DataManagerForAgricultureResourceName = "examples-dataManagerForAgricultureResourceName",
            Properties = new AzureNative.AgFoodPlatform.Inputs.DataConnectorPropertiesArgs
            {
                Credentials = new AzureNative.AgFoodPlatform.Inputs.ApiKeyAuthCredentialsArgs
                {
                    ApiKey = new AzureNative.AgFoodPlatform.Inputs.KeyVaultPropertiesArgs
                    {
                        KeyName = "abcApiKey",
                        KeyVaultUri = "https://testKeyVault.vault.azure.net/",
                        KeyVersion = "239c0475c7d44f20b0fc27d3fe90a41d",
                    },
                    Kind = "ApiKeyAuthCredentials",
                },
            },
            ResourceGroupName = "examples-rg",
        });
    
    });
    
    package main
    
    import (
    	agfoodplatform "github.com/pulumi/pulumi-azure-native-sdk/agfoodplatform/v2"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := agfoodplatform.NewDataConnector(ctx, "dataConnector", &agfoodplatform.DataConnectorArgs{
    			DataConnectorName:                     pulumi.String("WeatherIBM"),
    			DataManagerForAgricultureResourceName: pulumi.String("examples-dataManagerForAgricultureResourceName"),
    			Properties: &agfoodplatform.DataConnectorPropertiesArgs{
    				Credentials: agfoodplatform.ApiKeyAuthCredentials{
    					ApiKey: agfoodplatform.KeyVaultProperties{
    						KeyName:     "abcApiKey",
    						KeyVaultUri: "https://testKeyVault.vault.azure.net/",
    						KeyVersion:  "239c0475c7d44f20b0fc27d3fe90a41d",
    					},
    					Kind: "ApiKeyAuthCredentials",
    				},
    			},
    			ResourceGroupName: pulumi.String("examples-rg"),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.azurenative.agfoodplatform.DataConnector;
    import com.pulumi.azurenative.agfoodplatform.DataConnectorArgs;
    import com.pulumi.azurenative.agfoodplatform.inputs.DataConnectorPropertiesArgs;
    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 dataConnector = new DataConnector("dataConnector", DataConnectorArgs.builder()
                .dataConnectorName("WeatherIBM")
                .dataManagerForAgricultureResourceName("examples-dataManagerForAgricultureResourceName")
                .properties(DataConnectorPropertiesArgs.builder()
                    .credentials(ApiKeyAuthCredentialsArgs.builder()
                        .apiKey(KeyVaultPropertiesArgs.builder()
                            .keyName("abcApiKey")
                            .keyVaultUri("https://testKeyVault.vault.azure.net/")
                            .keyVersion("239c0475c7d44f20b0fc27d3fe90a41d")
                            .build())
                        .kind("ApiKeyAuthCredentials")
                        .build())
                    .build())
                .resourceGroupName("examples-rg")
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_azure_native as azure_native
    
    data_connector = azure_native.agfoodplatform.DataConnector("dataConnector",
        data_connector_name="WeatherIBM",
        data_manager_for_agriculture_resource_name="examples-dataManagerForAgricultureResourceName",
        properties={
            "credentials": {
                "api_key": {
                    "key_name": "abcApiKey",
                    "key_vault_uri": "https://testKeyVault.vault.azure.net/",
                    "key_version": "239c0475c7d44f20b0fc27d3fe90a41d",
                },
                "kind": "ApiKeyAuthCredentials",
            },
        },
        resource_group_name="examples-rg")
    
    import * as pulumi from "@pulumi/pulumi";
    import * as azure_native from "@pulumi/azure-native";
    
    const dataConnector = new azure_native.agfoodplatform.DataConnector("dataConnector", {
        dataConnectorName: "WeatherIBM",
        dataManagerForAgricultureResourceName: "examples-dataManagerForAgricultureResourceName",
        properties: {
            credentials: {
                apiKey: {
                    keyName: "abcApiKey",
                    keyVaultUri: "https://testKeyVault.vault.azure.net/",
                    keyVersion: "239c0475c7d44f20b0fc27d3fe90a41d",
                },
                kind: "ApiKeyAuthCredentials",
            },
        },
        resourceGroupName: "examples-rg",
    });
    
    resources:
      dataConnector:
        type: azure-native:agfoodplatform:DataConnector
        properties:
          dataConnectorName: WeatherIBM
          dataManagerForAgricultureResourceName: examples-dataManagerForAgricultureResourceName
          properties:
            credentials:
              apiKey:
                keyName: abcApiKey
                keyVaultUri: https://testKeyVault.vault.azure.net/
                keyVersion: 239c0475c7d44f20b0fc27d3fe90a41d
              kind: ApiKeyAuthCredentials
          resourceGroupName: examples-rg
    

    Create DataConnector Resource

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

    Constructor syntax

    new DataConnector(name: string, args: DataConnectorArgs, opts?: CustomResourceOptions);
    @overload
    def DataConnector(resource_name: str,
                      args: DataConnectorArgs,
                      opts: Optional[ResourceOptions] = None)
    
    @overload
    def DataConnector(resource_name: str,
                      opts: Optional[ResourceOptions] = None,
                      data_manager_for_agriculture_resource_name: Optional[str] = None,
                      properties: Optional[DataConnectorPropertiesArgs] = None,
                      resource_group_name: Optional[str] = None,
                      data_connector_name: Optional[str] = None)
    func NewDataConnector(ctx *Context, name string, args DataConnectorArgs, opts ...ResourceOption) (*DataConnector, error)
    public DataConnector(string name, DataConnectorArgs args, CustomResourceOptions? opts = null)
    public DataConnector(String name, DataConnectorArgs args)
    public DataConnector(String name, DataConnectorArgs args, CustomResourceOptions options)
    
    type: azure-native:agfoodplatform:DataConnector
    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 DataConnectorArgs
    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 DataConnectorArgs
    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 DataConnectorArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args DataConnectorArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args DataConnectorArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

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

    var dataConnectorResource = new AzureNative.AgFoodPlatform.DataConnector("dataConnectorResource", new()
    {
        DataManagerForAgricultureResourceName = "string",
        Properties = new AzureNative.AgFoodPlatform.Inputs.DataConnectorPropertiesArgs
        {
            Credentials = new AzureNative.AgFoodPlatform.Inputs.ApiKeyAuthCredentialsArgs
            {
                ApiKey = new AzureNative.AgFoodPlatform.Inputs.KeyVaultPropertiesArgs
                {
                    KeyName = "string",
                    KeyVaultUri = "string",
                    KeyVersion = "string",
                },
                Kind = "ApiKeyAuthCredentials",
            },
        },
        ResourceGroupName = "string",
        DataConnectorName = "string",
    });
    
    example, err := agfoodplatform.NewDataConnector(ctx, "dataConnectorResource", &agfoodplatform.DataConnectorArgs{
    	DataManagerForAgricultureResourceName: pulumi.String("string"),
    	Properties: &agfoodplatform.DataConnectorPropertiesArgs{
    		Credentials: agfoodplatform.ApiKeyAuthCredentials{
    			ApiKey: agfoodplatform.KeyVaultProperties{
    				KeyName:     "string",
    				KeyVaultUri: "string",
    				KeyVersion:  "string",
    			},
    			Kind: "ApiKeyAuthCredentials",
    		},
    	},
    	ResourceGroupName: pulumi.String("string"),
    	DataConnectorName: pulumi.String("string"),
    })
    
    var dataConnectorResource = new DataConnector("dataConnectorResource", DataConnectorArgs.builder()
        .dataManagerForAgricultureResourceName("string")
        .properties(DataConnectorPropertiesArgs.builder()
            .credentials(ApiKeyAuthCredentialsArgs.builder()
                .apiKey(KeyVaultPropertiesArgs.builder()
                    .keyName("string")
                    .keyVaultUri("string")
                    .keyVersion("string")
                    .build())
                .kind("ApiKeyAuthCredentials")
                .build())
            .build())
        .resourceGroupName("string")
        .dataConnectorName("string")
        .build());
    
    data_connector_resource = azure_native.agfoodplatform.DataConnector("dataConnectorResource",
        data_manager_for_agriculture_resource_name="string",
        properties={
            "credentials": {
                "api_key": {
                    "key_name": "string",
                    "key_vault_uri": "string",
                    "key_version": "string",
                },
                "kind": "ApiKeyAuthCredentials",
            },
        },
        resource_group_name="string",
        data_connector_name="string")
    
    const dataConnectorResource = new azure_native.agfoodplatform.DataConnector("dataConnectorResource", {
        dataManagerForAgricultureResourceName: "string",
        properties: {
            credentials: {
                apiKey: {
                    keyName: "string",
                    keyVaultUri: "string",
                    keyVersion: "string",
                },
                kind: "ApiKeyAuthCredentials",
            },
        },
        resourceGroupName: "string",
        dataConnectorName: "string",
    });
    
    type: azure-native:agfoodplatform:DataConnector
    properties:
        dataConnectorName: string
        dataManagerForAgricultureResourceName: string
        properties:
            credentials:
                apiKey:
                    keyName: string
                    keyVaultUri: string
                    keyVersion: string
                kind: ApiKeyAuthCredentials
        resourceGroupName: string
    

    DataConnector Resource Properties

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

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The DataConnector resource accepts the following input properties:

    DataManagerForAgricultureResourceName string
    DataManagerForAgriculture resource name.
    Properties Pulumi.AzureNative.AgFoodPlatform.Inputs.DataConnectorProperties
    DataConnector Properties.
    ResourceGroupName string
    The name of the resource group. The name is case insensitive.
    DataConnectorName string
    Connector name.
    DataManagerForAgricultureResourceName string
    DataManagerForAgriculture resource name.
    Properties DataConnectorPropertiesArgs
    DataConnector Properties.
    ResourceGroupName string
    The name of the resource group. The name is case insensitive.
    DataConnectorName string
    Connector name.
    dataManagerForAgricultureResourceName String
    DataManagerForAgriculture resource name.
    properties DataConnectorProperties
    DataConnector Properties.
    resourceGroupName String
    The name of the resource group. The name is case insensitive.
    dataConnectorName String
    Connector name.
    dataManagerForAgricultureResourceName string
    DataManagerForAgriculture resource name.
    properties DataConnectorProperties
    DataConnector Properties.
    resourceGroupName string
    The name of the resource group. The name is case insensitive.
    dataConnectorName string
    Connector name.
    data_manager_for_agriculture_resource_name str
    DataManagerForAgriculture resource name.
    properties DataConnectorPropertiesArgs
    DataConnector Properties.
    resource_group_name str
    The name of the resource group. The name is case insensitive.
    data_connector_name str
    Connector name.
    dataManagerForAgricultureResourceName String
    DataManagerForAgriculture resource name.
    properties Property Map
    DataConnector Properties.
    resourceGroupName String
    The name of the resource group. The name is case insensitive.
    dataConnectorName String
    Connector name.

    Outputs

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

    ETag string
    The ETag value to implement optimistic concurrency.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The name of the resource
    SystemData Pulumi.AzureNative.AgFoodPlatform.Outputs.SystemDataResponse
    Azure Resource Manager metadata containing createdBy and modifiedBy information.
    Type string
    The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
    ETag string
    The ETag value to implement optimistic concurrency.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The name of the resource
    SystemData SystemDataResponse
    Azure Resource Manager metadata containing createdBy and modifiedBy information.
    Type string
    The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
    eTag String
    The ETag value to implement optimistic concurrency.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The name of the resource
    systemData SystemDataResponse
    Azure Resource Manager metadata containing createdBy and modifiedBy information.
    type String
    The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
    eTag string
    The ETag value to implement optimistic concurrency.
    id string
    The provider-assigned unique ID for this managed resource.
    name string
    The name of the resource
    systemData SystemDataResponse
    Azure Resource Manager metadata containing createdBy and modifiedBy information.
    type string
    The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
    e_tag str
    The ETag value to implement optimistic concurrency.
    id str
    The provider-assigned unique ID for this managed resource.
    name str
    The name of the resource
    system_data SystemDataResponse
    Azure Resource Manager metadata containing createdBy and modifiedBy information.
    type str
    The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
    eTag String
    The ETag value to implement optimistic concurrency.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The name of the resource
    systemData Property Map
    Azure Resource Manager metadata containing createdBy and modifiedBy information.
    type String
    The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"

    Supporting Types

    ApiKeyAuthCredentials, ApiKeyAuthCredentialsArgs

    ApiKey KeyVaultProperties
    Properties of the key vault.
    apiKey KeyVaultProperties
    Properties of the key vault.
    apiKey KeyVaultProperties
    Properties of the key vault.
    api_key KeyVaultProperties
    Properties of the key vault.
    apiKey Property Map
    Properties of the key vault.

    ApiKeyAuthCredentialsResponse, ApiKeyAuthCredentialsResponseArgs

    ApiKey KeyVaultPropertiesResponse
    Properties of the key vault.
    apiKey KeyVaultPropertiesResponse
    Properties of the key vault.
    apiKey KeyVaultPropertiesResponse
    Properties of the key vault.
    api_key KeyVaultPropertiesResponse
    Properties of the key vault.
    apiKey Property Map
    Properties of the key vault.

    DataConnectorProperties, DataConnectorPropertiesArgs

    Credentials ApiKeyAuthCredentials | OAuthClientCredentials
    AuthCredentials abstract base class for Auth Purpose.
    credentials ApiKeyAuthCredentials | OAuthClientCredentials
    AuthCredentials abstract base class for Auth Purpose.
    credentials ApiKeyAuthCredentials | OAuthClientCredentials
    AuthCredentials abstract base class for Auth Purpose.
    credentials ApiKeyAuthCredentials | OAuthClientCredentials
    AuthCredentials abstract base class for Auth Purpose.
    credentials Property Map | Property Map
    AuthCredentials abstract base class for Auth Purpose.

    DataConnectorPropertiesResponse, DataConnectorPropertiesResponseArgs

    Credentials ApiKeyAuthCredentialsResponse | OAuthClientCredentialsResponse
    AuthCredentials abstract base class for Auth Purpose.
    credentials ApiKeyAuthCredentialsResponse | OAuthClientCredentialsResponse
    AuthCredentials abstract base class for Auth Purpose.
    credentials ApiKeyAuthCredentialsResponse | OAuthClientCredentialsResponse
    AuthCredentials abstract base class for Auth Purpose.
    credentials ApiKeyAuthCredentialsResponse | OAuthClientCredentialsResponse
    AuthCredentials abstract base class for Auth Purpose.
    credentials Property Map | Property Map
    AuthCredentials abstract base class for Auth Purpose.

    KeyVaultProperties, KeyVaultPropertiesArgs

    KeyName string
    Name of Key Vault key.
    KeyVaultUri string
    Uri of the key vault.
    KeyVersion string
    Version of Key Vault key.
    KeyName string
    Name of Key Vault key.
    KeyVaultUri string
    Uri of the key vault.
    KeyVersion string
    Version of Key Vault key.
    keyName String
    Name of Key Vault key.
    keyVaultUri String
    Uri of the key vault.
    keyVersion String
    Version of Key Vault key.
    keyName string
    Name of Key Vault key.
    keyVaultUri string
    Uri of the key vault.
    keyVersion string
    Version of Key Vault key.
    key_name str
    Name of Key Vault key.
    key_vault_uri str
    Uri of the key vault.
    key_version str
    Version of Key Vault key.
    keyName String
    Name of Key Vault key.
    keyVaultUri String
    Uri of the key vault.
    keyVersion String
    Version of Key Vault key.

    KeyVaultPropertiesResponse, KeyVaultPropertiesResponseArgs

    KeyName string
    Name of Key Vault key.
    KeyVaultUri string
    Uri of the key vault.
    KeyVersion string
    Version of Key Vault key.
    KeyName string
    Name of Key Vault key.
    KeyVaultUri string
    Uri of the key vault.
    KeyVersion string
    Version of Key Vault key.
    keyName String
    Name of Key Vault key.
    keyVaultUri String
    Uri of the key vault.
    keyVersion String
    Version of Key Vault key.
    keyName string
    Name of Key Vault key.
    keyVaultUri string
    Uri of the key vault.
    keyVersion string
    Version of Key Vault key.
    key_name str
    Name of Key Vault key.
    key_vault_uri str
    Uri of the key vault.
    key_version str
    Version of Key Vault key.
    keyName String
    Name of Key Vault key.
    keyVaultUri String
    Uri of the key vault.
    keyVersion String
    Version of Key Vault key.

    OAuthClientCredentials, OAuthClientCredentialsArgs

    ClientId string
    ClientId associated with the provider.
    ClientSecret Pulumi.AzureNative.AgFoodPlatform.Inputs.KeyVaultProperties
    Properties of the key vault.
    ClientId string
    ClientId associated with the provider.
    ClientSecret KeyVaultProperties
    Properties of the key vault.
    clientId String
    ClientId associated with the provider.
    clientSecret KeyVaultProperties
    Properties of the key vault.
    clientId string
    ClientId associated with the provider.
    clientSecret KeyVaultProperties
    Properties of the key vault.
    client_id str
    ClientId associated with the provider.
    client_secret KeyVaultProperties
    Properties of the key vault.
    clientId String
    ClientId associated with the provider.
    clientSecret Property Map
    Properties of the key vault.

    OAuthClientCredentialsResponse, OAuthClientCredentialsResponseArgs

    ClientId string
    ClientId associated with the provider.
    ClientSecret Pulumi.AzureNative.AgFoodPlatform.Inputs.KeyVaultPropertiesResponse
    Properties of the key vault.
    ClientId string
    ClientId associated with the provider.
    ClientSecret KeyVaultPropertiesResponse
    Properties of the key vault.
    clientId String
    ClientId associated with the provider.
    clientSecret KeyVaultPropertiesResponse
    Properties of the key vault.
    clientId string
    ClientId associated with the provider.
    clientSecret KeyVaultPropertiesResponse
    Properties of the key vault.
    client_id str
    ClientId associated with the provider.
    client_secret KeyVaultPropertiesResponse
    Properties of the key vault.
    clientId String
    ClientId associated with the provider.
    clientSecret Property Map
    Properties of the key vault.

    SystemDataResponse, SystemDataResponseArgs

    CreatedAt string
    The timestamp of resource creation (UTC).
    CreatedBy string
    The identity that created the resource.
    CreatedByType string
    The type of identity that created the resource.
    LastModifiedAt string
    The timestamp of resource last modification (UTC)
    LastModifiedBy string
    The identity that last modified the resource.
    LastModifiedByType string
    The type of identity that last modified the resource.
    CreatedAt string
    The timestamp of resource creation (UTC).
    CreatedBy string
    The identity that created the resource.
    CreatedByType string
    The type of identity that created the resource.
    LastModifiedAt string
    The timestamp of resource last modification (UTC)
    LastModifiedBy string
    The identity that last modified the resource.
    LastModifiedByType string
    The type of identity that last modified the resource.
    createdAt String
    The timestamp of resource creation (UTC).
    createdBy String
    The identity that created the resource.
    createdByType String
    The type of identity that created the resource.
    lastModifiedAt String
    The timestamp of resource last modification (UTC)
    lastModifiedBy String
    The identity that last modified the resource.
    lastModifiedByType String
    The type of identity that last modified the resource.
    createdAt string
    The timestamp of resource creation (UTC).
    createdBy string
    The identity that created the resource.
    createdByType string
    The type of identity that created the resource.
    lastModifiedAt string
    The timestamp of resource last modification (UTC)
    lastModifiedBy string
    The identity that last modified the resource.
    lastModifiedByType string
    The type of identity that last modified the resource.
    created_at str
    The timestamp of resource creation (UTC).
    created_by str
    The identity that created the resource.
    created_by_type str
    The type of identity that created the resource.
    last_modified_at str
    The timestamp of resource last modification (UTC)
    last_modified_by str
    The identity that last modified the resource.
    last_modified_by_type str
    The type of identity that last modified the resource.
    createdAt String
    The timestamp of resource creation (UTC).
    createdBy String
    The identity that created the resource.
    createdByType String
    The type of identity that created the resource.
    lastModifiedAt String
    The timestamp of resource last modification (UTC)
    lastModifiedBy String
    The identity that last modified the resource.
    lastModifiedByType String
    The type of identity that last modified the resource.

    Import

    An existing resource can be imported using its type token, name, and identifier, e.g.

    $ pulumi import azure-native:agfoodplatform:DataConnector SatelliteSentinelHub /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AgFoodPlatform/farmBeats/{dataManagerForAgricultureResourceName}/dataConnectors/{dataConnectorName} 
    

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

    Package Details

    Repository
    Azure Native pulumi/pulumi-azure-native
    License
    Apache-2.0
    azure-native logo
    This is the latest version of Azure Native. Use the Azure Native v1 docs if using the v1 version of this package.
    Azure Native v2.75.0 published on Saturday, Nov 30, 2024 by Pulumi