DeveloperHA / Learn / AWS + .NET
AWS + .NET learning path

AWS concepts for .NET developers

Build a useful mental model for identity, configuration, compute, data and observability on AWS.

Foundation to practical30–45 min4 lessons

Outcome: Ask better architecture questions without treating AWS services as interchangeable building blocks.

Your local progress0 / 4 complete

The goal is not to memorize every AWS service. Start with workload, trust boundary, failure mode and operational responsibility.

Work through the path

Open a card when you need it. Marking a lesson complete is optional and stays only in this browser.

1Start with identity and least privilege

IAM6 min

An AWS design is incomplete until it says which identity can do what, to which resource and under which conditions.

Prefer workload identities such as IAM roles over long-lived access keys in application configuration. Separate deploy permissions from runtime permissions.

Access denied errors are useful design feedback. Do not fix them by attaching administrator access to the application.

Try it

For one service, list the AWS actions it actually calls and turn that list into a small runtime policy.

Watch outA secret in an environment variable is better than source control but still needs rotation and access control.
Validate local configuration →
Example
// Application code requests the SDK client.
// The runtime supplies credentials through its role.
var client = new AmazonS3Client();

// Do not commit accessKey or secretKey values.

2Separate configuration from secrets

Configuration5 min

A .NET application should read environment-specific settings at runtime and retrieve secrets from a managed mechanism.

Use appsettings for safe defaults and non-secret behavior. Use environment variables, a parameter store or a secrets manager for controlled access and rotation.

Make the configuration contract explicit and fail at startup for required values rather than deep inside a request.

Try it

Mark settings as safe default, environment setting or secret. Move the last category out of the file.

Watch outValidation proves shape, not that the credential is authorized or reachable.
Check appsettings risks →
Example
builder.Services
    .AddOptions<PaymentsOptions>()
    .BindConfiguration("Payments")
    .ValidateDataAnnotations()
    .ValidateOnStart();

3Choose compute by operational responsibility

Architecture6 min

The right AWS compute service depends on how much scheduling, patching, scaling and networking you want to own.

A containerized ASP.NET API may fit a managed container service when you want to ship an image without managing a cluster. A VM gives more control and more responsibility.

Start with request duration, traffic pattern, startup time, background work, networking and team operations.

Try it

Describe the service without naming AWS. Then map requirements to two candidate services and write the trade-off.

Watch outA managed service removes some operations; it does not remove identity, data or observability responsibility.
Containerize the app first →
Example
Workload: request / worker / scheduled
State: stateless or durable
Scale: steady, bursty or event-driven
Network: public, private or hybrid
Operations: who patches and observes it?

4Make a cloud service explain its failures

Operations6 min

Logs, metrics and traces answer different questions; an incident needs all three connected by useful correlation context.

Metrics show a symptom changed, logs explain an event and traces show where time moved across boundaries. Emit structured fields such as operation name and dependency duration.

Set alarms on user impact and resource saturation, not only on whether a process is alive.

Try it

Pick one API request and list the metric, log fields and trace span needed to debug a slow response.

Watch outDo not log access tokens, passwords, payment data or unbounded request bodies.
Test the API response →
Example
logger.LogWarning(
    "Payment provider returned {StatusCode} in {ElapsedMs} ms",
    response.StatusCode,
    stopwatch.ElapsedMilliseconds);

No lesson matches that phrase.

Related tools

Turn the concept into a working example with the browser-based tools.

Need a second pair of eyes?

When the quick answer turns into an architecture or delivery decision, use a fixed-price review or talk to DeveloperHA.

See packages All learning paths