Using the .NET platform
The AWS App Runner .NET platform provides managed runtimes. Each runtime makes it easy to build and run containers with web applications based on a .NET
version. When you use a .NET runtime, App Runner starts with a managed .NET runtime image. This image is based on the Amazon Linux Docker image
You specify a runtime for your App Runner service when you create a service using the App Runner console or the CreateService API operation. You can also specify a runtime as part of your source code. Use the
runtime
keyword in a App Runner configuration file that you include in your code repository.
The naming convention of a managed runtime is <language-name><major-version>
.
For valid .NET runtime names and versions, see .NET runtime release information.
App Runner updates the runtime for your service to the latest version on every deployment or service update. If your application requires a specific version of
a managed runtime, you can specify it using the runtime-version
keyword in the App Runner configuration file. You
can lock to any level of version, including a major or minor version. App Runner only makes lower-level updates to the runtime of your service.
Version syntax for .NET runtimes:
major
[.minor
[.patch
]]
For example: 6.0.9
The following examples demonstrate version locking:
-
6.0
– Lock the major and minor versions. App Runner updates only patch versions. -
6.0.9
– Lock to a specific patch version. App Runner doesn't update your runtime version.
.NET runtime configuration
When you choose a managed runtime, you must also configure, as a minimum, build and run commands. You configure them while creating or updating your App Runner service. You can do this using one of the following methods:
-
Using the App Runner console – Specify the commands in the Configure build section of the creation process or configuration tab.
-
Using the App Runner API – Call the CreateService or UpdateService API operation. Specify the commands using the
BuildCommand
andStartCommand
members of the CodeConfigurationValues data type. -
Using a configuration file – Specify one or more build commands in up to three build phases, and a single run command that serves to start your application. There are additional optional configuration settings.
Providing a configuration file is optional. When you create an App Runner service using the console or the API, you specify if App Runner gets your configuration settings directly when it's created or from a configuration file.
.NET runtime examples
The following examples show App Runner configuration files for building and running a .NET service. The last example is the source code for a complete .NET application that you can deploy to a .NET runtime service.
Note
The runtime version that's used in these examples is 6.0.9
. You can replace it with a version you want to use. For latest
supported .NET runtime version, see .NET runtime release information.
This example shows a minimal configuration file that you can use with a .NET managed runtime. For the assumptions that App Runner makes with a minimal configuration file, see Configuration file examples.
Example apprunner.yaml
version: 1.0 runtime: dotnet6 build: commands: build: - dotnet publish -c Release -o out run: command: dotnet out/HelloWorldDotNetApp.dll
This example shows the use of all configuration keys with a .NET managed runtime.
Note
The runtime version that's used in these examples is 6.0.9
. You can replace it with a version you want to use. For
latest supported .NET runtime version, see .NET runtime release information.
Example apprunner.yaml
version: 1.0 runtime: dotnet6 build: commands: pre-build: - scripts/prebuild.sh build: - dotnet publish -c Release -o out post-build: - scripts/postbuild.sh env: - name: MY_VAR_EXAMPLE value: "example" run: runtime-version:
6.0.9
command: dotnet out/HelloWorldDotNetApp.dll network: port: 5000 env: APP_PORT env: - name: ASPNETCORE_URLS value: "http://*:5000"
This example shows the source code for a complete .NET application that you can deploy to a .NET runtime service.
Note
-
Run following command to create a simple .NET 6 web app:
dotnet new web --name HelloWorldDotNetApp -f net6.0
-
Add the
apprunner.yaml
to the created .NET 6 web app.
Example HelloWorldDotNetApp
version: 1.0 runtime: dotnet6 build: commands: build: - dotnet publish -c Release -o out run: command: dotnet out/HelloWorldDotNetApp.dll network: port: 5000 env: APP_PORT env: - name: ASPNETCORE_URLS value: "http://*:5000"