using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

return await Deployment.RunAsync(() => 
{
    var config = new Config();
    // The tag of the VPC
    var vpcTag = config.Get("vpcTag");
    // The id of a VPC to use instead of creating a new one
    var vpcId = config.Get("vpcId");
    // The list of subnets to use
    var subnets = config.GetObject<string[]>("subnets");
    // Additional tags to add to the VPC
    var moreTags = config.GetObject<Dictionary<string, string>>("moreTags");
    // The userdata to use for the instances
    var userdata = config.GetObject<Userdata>("userdata");
    // A complex object
    var complexUserdata = config.GetObject<ComplexUserdata[]>("complexUserdata");
    var main = new Aws.Ec2.Vpc("main", new()
    {
        CidrBlock = "10.100.0.0/16",
        Tags = 
        {
            { "Name", vpcTag },
        },
    });

});

public class ComplexUserdata
{
    public string content { get; set; }
    public string path { get; set; }
}

public class Userdata
{
    public string content { get; set; }
    public string path { get; set; }
}