In this lesson step we will build the initial PetStore solution using the .NET LazyStack tool configured as a Visual Studio Tool.
This tutorial assumes you are using the Mac Visual Studio IDE.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Product>LazyStackWebApi Template</Product>
<Description>A WebApi template compatible with LazyStack for local debugging of lambda functions</Description>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.7.2" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup>
</Project>
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PetStore
{
public partial class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
ConfigureSvcs(services);
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "PetStoreAPI", Version = "v1" });
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "PetStore V1");
});
app.Run(async (context) => await Task.Run(() => context.Response.Redirect("/swagger")));
}
}
}
Note: In a production application you may choose to use the corresponding NuGet packages instead of using these projects directly. In this tutorial it is useful to be able to debug into these projects to understand how their features are implemented.
The Generate Projects command created a default LazyStack.yaml file in your solution's root folder. The file is now visible in the "Solution Items" folder in the solution explorer. The top of the LazyStack.yaml file should look like this:
LazyStackDirectivesVersion: 1.1.0
Stacks:
Dev:
ProfileName: default
RegionName: us-east-1
StackName: PetStoreDev
Stage: Dev
UriCodeTarget: Debug/net6.0
Test:
Stage: Test
UriCodeTarget: Release/net6.0
Prod:
Stage: Prod
UriCodeTarget: Release/net6.0
ProjectOptions:
NugetPackageVersions:
Amazon.Lambda.AspNetCoreServer: 7.2.0
AWSSDK.Extensions.NETCore.Setup: 3.7.2
JsonSubTypes: 1.9.0
LazyStackAuth: 3.0.0
Newtonsoft.Json: 13.0.1
Swashbuckle.AspNetCore: 6.4.0
System.ComponentModel.Annotations: 5.0.0
System.IdentityModel.Tokens.Jwt: 6.22.0
ClientSDKProjects:
PackageReferences:
LazyStackAuth: ''
System.ComponentModel.Annotations: ''
JsonSubTypes: ''
Newtonsoft.Json: ''
SchemaProjects:
PackageReferences:
Newtonsoft.Json: ''
LambdaProjects:
Runtime: dotnet6
PackageReferences:
AWSSDK.Extensions.NETCore.Setup: ''
Amazon.Lambda.AspNetCoreServer: ''
WebApiProjects:
PackageReferences:
AWSSDK.Extensions.NETCore.Setup: ''
Swashbuckle.AspNetCore: ''
ControllerProjects:
PackageReferences:
System.IdentityModel.Tokens.Jwt: ''
The SAM_Review.yaml file was generated in the solution folder. This file contains the stack configuration without stack environment specific content inserted. Stack environments might include Dev, Test and Prod. Fully constituted templates are placed in the serverless.template files placed in the stack environment folder. For instance, the Stacks\Dev\serverless.template file is the template you will later use to publish the PetStoreDev stack to AWS.
You never edit the SAM_Review.yaml file directly.
The SAM_Review.yaml file will be updated with new content as we add and configure AWS stack resources during the tutorial. This file is regenerated each time you execute LazyStack -- Generate Projects.
LazyStack Generate Projects process generates one serverless.template file for each environment. In this case, we are using the Stacks Environment called "Dev" and the serverless.template file generated in the Stacks\Dev folder.
You want to review the SAM template we will later publish to AWS. You never edit this file directly.
The serverless.template file will be updated with new content as we add and configure AWS stack resources during the tutorial. This file is regenerated each time you execute LazyStack -- Generate Projects.
In this lesson step we created a PetStore solution using the ASP.NET API project template, downloaded a OpenApi Specification called PetStore.yaml and then used the Tools → LazyStack - Generate Projects to generate projects and configuration files for our stack. We added solution folders to surface these configuration files in the Visual Studio solution explorer. We then updated the LazyStack.yaml file AWS ProfileName and RegionName.