1. Answers
  2. How do I set an environment variable in C#?

How do I set an environment variable in C#?

To set an environment variable using Pulumi in C#, you will typically define the environment variable inside a cloud resource configuration. This example demonstrates how to work with AWS Lambda functions and set an environment variable for it.

Here’s a step-by-step guide:

  1. Install the necessary Pulumi packages: Make sure you have the Pulumi CLI and the required AWS Pulumi package installed.
  2. Create a Pulumi C# project: Use pulumi new aws-csharp to initialize a new Pulumi project for AWS in C#.
  3. Define the Lambda function and set an environment variable: In your Program.cs file, you will configure and deploy the AWS Lambda function along with setting its environment variable.

Below is a detailed example and explanation:

  1. First, ensure you have the Pulumi CLI set up and the required packages installed.

    pulumi new aws-csharp
    
  2. Then, open the Program.cs file in your new Pulumi project and replace its contents with the following code:

using Pulumi;
using Lambda = Pulumi.Aws.Lambda;
using Pulumi.Aws.Iam;
using System.Collections.Generic;

return await Deployment.RunAsync(() =>
{
    // Create a role for the lambda function
    var role = new Role("lambdaRole", new RoleArgs
    {
        AssumeRolePolicy = @"{
  ""Version"": ""2012-10-17"",
  ""Statement"": [
    {
      ""Action"": ""sts:AssumeRole"",
      ""Principal"": {
        ""Service"": ""lambda.amazonaws.com""
      },
      ""Effect"": ""Allow"",
      ""Sid"": """"
    }
  ]
}"
    });

    // Attach the AWSLambdaBasicExecutionRole policy to the role
    var rolePolicyAttachment = new RolePolicyAttachment("lambdaRolePolicyAttachment", new RolePolicyAttachmentArgs
    {
        Role = role.Name,
        PolicyArn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
    });

    // Define the Lambda function
    var lambda = new Lambda.Function("myLambdaFunction", new Lambda.FunctionArgs
    {
        Runtime = "dotnetcore3.1",  // Specifies the runtime environment for the Lambda function
        Role = role.Arn,  // Associates the role created above
        Handler = "MyLambdaNamespace.MyLambdaClass::MyLambdaNamespace.MyLambdaClass::FunctionHandler",
        Code = new FileArchive("./code.zip"),  // Upload the Lambda function code, replace with your file path.

        // Setting environment variables for Lambda function
        Environment = new Lambda.Inputs.FunctionEnvironmentArgs
        {
            Variables = 
            {
                { "MyEnvironmentVariable", "ValueOfMyEnvironmentVariable" }
            }
        }
    });

    // Export the name of the Lambda function
    return new Dictionary<string, object?>
    {
        ["lambdaName"] = lambda.Name
    };
});

Explanation:

  1. Role Creation: A new IAM role for the Lambda function is created with necessary policies. This role allows Lambda to assume the role and execute.
  2. Policy Attachment: The AWS Lambda Basic Execution role policy is attached to the role to allow basic Lambda permissions.
  3. Lambda Function: The Lambda function is defined, specifying the runtime, handler, and function code. We also set an environment variable named MyEnvironmentVariable with the value ValueOfMyEnvironmentVariable.

Code Comments:

  • The Role and RolePolicyAttachment setup ensures that the Lambda function has the necessary permissions to execute.
  • The Function definition configures the Lambda function and includes the environment variables within the FunctionEnvironmentArgs property.

Running the Program:

Make sure you have the AWS CLI configured and authenticated. Run the following commands in your project directory:

pulumi up

This will deploy the Lambda function to your AWS account with the specified environment variable. The function name will be outputted in your console at the end of the deployment.

Now you know how to set environment variables in a Pulumi C# program! This example can be adapted to other cloud resources and providers following a similar approach.

Deploy this code

Want to deploy this code? Sign up for a free Pulumi account to deploy in a few clicks.

Sign up

New to Pulumi?

Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.

Sign up