Milan Jovanović
Milan Jovanović
  • 551
  • 9 092 726
Building .NET 8 Minimal APIs With AWS Lambda and Amazon RDS
Get the source code for this video for FREE → the-dotnet-weekly.ck.page/aws-lambda
Join a community of 1000+ .NET developers: www.patreon.com/milanjovanovic
Master the Clean Architecture: bit.ly/3PupkOJ
The ultimate Modular Monolith blueprint: bit.ly/3SXlzSt
AWS Lambda is a compute service you can use to deploy your applications to the cloud. It has support for .NET 8. Want to know the most awesome part? You can deploy your .NET Minimal API applications with just one line of code. In this video, I'll show you how to create an AWS Lambda, deploy your .NET application, and connect it with Amazon RDS.
Get $25 AWS credit for free here: aws.amazon.com/developer/language/net/getting-started
Grab the source code from GitHub: github.com/m-jovanovic/aws-tutorials
Check out my courses:
www.milanjovanovic.tech/courses
Read my Blog here:
www.milanjovanovic.tech/blog
Join my weekly .NET newsletter:
www.milanjovanovic.tech
Chapters
0:00 AWS Lambda introduction
3:02 URL Shortener demo
5:02 PostgreSQL with Amazon RDS
9:16 Deploying .NET 8 AWS Lambda
11:53 AWS Lambda configuration & demo
Переглядів: 1 740

Відео

How To Implement Distributed Tracing for Microservices With Jaeger
Переглядів 6 тис.13 годин тому
Join a community of 1000 .NET developers: www.patreon.com/milanjovanovic Master the Clean Architecture: bit.ly/3PupkOJ The ultimate Modular Monolith blueprint: bit.ly/3SXlzSt So you build a Microservices system, but how will you monitor what's happening inside? This is where Observability comes in. Understanding how requests flow through your system is crucial for debugging and performance opti...
The Best Way To Implement Soft Deletes With EF Core (and why you shouldn't)
Переглядів 10 тис.22 години тому
Join a community of 1000 .NET developers: www.patreon.com/milanjovanovic Master the Clean Architecture: bit.ly/3PupkOJ The ultimate Modular Monolith blueprint: bit.ly/3SXlzSt To delete or not to delete, that is the question (pun intended). The traditional way to remove information in a database is through a "hard delete." A hard delete permanently erases a record from the database table. While ...
This Is What MassTransit Does to Your Message Broker | RabbitMQ
Переглядів 7 тис.День тому
Join a community of 1000 .NET developers: www.patreon.com/milanjovanovic Master the Clean Architecture: bit.ly/3PupkOJ The ultimate Modular Monolith blueprint: bit.ly/3SXlzSt How does MassTransit integrate with your message broker? In this video, I'll explain how MassTransit connects with RabbitMQ. We'll discuss exchanges, bindings, and queues. I'll also show you how to implement the producer-c...
Completely Get Rid of Exceptions Using This Technique
Переглядів 18 тис.14 днів тому
Get the source code for this video for FREE → the-dotnet-weekly.ck.page/rop Join a community of 1000 .NET developers: www.patreon.com/milanjovanovic Accelerate your Clean Architecture skills: bit.ly/3PupkOJ Master the Modular Monolith Architecture: bit.ly/3SXlzSt C# is an object-oriented language with many functional features built in. Functional programming is a fantastic paradigm that I belie...
Adding JWT Authentication in ASP.NET Core With Supabase Auth
Переглядів 6 тис.14 днів тому
Adding JWT Authentication in ASP.NET Core With Supabase Auth
EF Core Migrations Deep Dive, Applying Migration, SQL Scripts
Переглядів 11 тис.21 день тому
EF Core Migrations Deep Dive, Applying Migration, SQL Scripts
Master Claims Transformation for Flexible JWT Auth in ASP.NET Core
Переглядів 10 тис.21 день тому
Master Claims Transformation for Flexible JWT Auth in ASP.NET Core
Master the Fluent Builder Design Pattern in C#
Переглядів 24 тис.28 днів тому
Master the Fluent Builder Design Pattern in C#
What Is the Fastest Way To Do a Bulk Insert? Let’s Find Out
Переглядів 10 тис.Місяць тому
What Is the Fastest Way To Do a Bulk Insert? Let’s Find Out
The Best Way to Implement Long Running Tasks in .NET - Hangfire, Blazor, SignalR
Переглядів 11 тис.Місяць тому
The Best Way to Implement Long Running Tasks in .NET - Hangfire, Blazor, SignalR
How to design great Aggregate Roots in Domain-Driven Design
Переглядів 10 тис.Місяць тому
How to design great Aggregate Roots in Domain-Driven Design
A practical introduction to OpenTelemetry for .NET developers (+ Aspire Dashboard)
Переглядів 10 тис.Місяць тому
A practical introduction to OpenTelemetry for .NET developers ( Aspire Dashboard)
Data isolation for Modular Monoliths - DB Schemas, EF Core
Переглядів 7 тис.Місяць тому
Data isolation for Modular Monoliths - DB Schemas, EF Core
Implementing the Transactional Outbox pattern with Hangfire
Переглядів 10 тис.Місяць тому
Implementing the Transactional Outbox pattern with Hangfire
Creating a State Machine Saga With MassTransit (Orchestrated Saga)
Переглядів 9 тис.Місяць тому
Creating a State Machine Saga With MassTransit (Orchestrated Saga)
Authentication made easy with ASP.NET Core Identity in .NET 8
Переглядів 32 тис.Місяць тому
Authentication made easy with ASP.NET Core Identity in .NET 8
Simple File API Using Azure Blob Storage (running locally)
Переглядів 7 тис.Місяць тому
Simple File API Using Azure Blob Storage (running locally)
Implementing Modular Architecture With Sync Communication
Переглядів 7 тис.2 місяці тому
Implementing Modular Architecture With Sync Communication
The Beginner's Guide to Clean Architecture
Переглядів 19 тис.2 місяці тому
The Beginner's Guide to Clean Architecture
Modular Monolith - How To Create Your Modules
Переглядів 11 тис.2 місяці тому
Modular Monolith - How To Create Your Modules
Automatically Register Minimal APIs in ASP.NET Core | REPR Pattern
Переглядів 12 тис.2 місяці тому
Automatically Register Minimal APIs in ASP.NET Core | REPR Pattern
I made $100,000+ freelancing on Upwork. This is how
Переглядів 21 тис.2 місяці тому
I made $100,000 freelancing on Upwork. This is how
I tried coding with Amazon CodeWhisperer... This is what happened
Переглядів 37 тис.2 місяці тому
I tried coding with Amazon CodeWhisperer... This is what happened
Bulletproof Your Software Architecture With ArchUnitNET
Переглядів 8 тис.2 місяці тому
Bulletproof Your Software Architecture With ArchUnitNET
The Best .NET REST API Client You Didn't Know About
Переглядів 20 тис.2 місяці тому
The Best .NET REST API Client You Didn't Know About
Lightweight In-Memory Message Bus Using .NET Channels
Переглядів 10 тис.2 місяці тому
Lightweight In-Memory Message Bus Using .NET Channels
Amazon Cognito Token Authentication in ASP.NET Core With JWT
Переглядів 42 тис.3 місяці тому
Amazon Cognito Token Authentication in ASP.NET Core With JWT
Clean Architecture: Understand the Presentation Layer's Purpose
Переглядів 7 тис.3 місяці тому
Clean Architecture: Understand the Presentation Layer's Purpose
The Best Way to Run Integration Tests in Your CI/CD Pipeline
Переглядів 10 тис.3 місяці тому
The Best Way to Run Integration Tests in Your CI/CD Pipeline

КОМЕНТАРІ

  • @abhinavsrivastava2128
    @abhinavsrivastava2128 6 годин тому

    Hey Milan, huge fan of your videos. However, for this particular video, don't you think you should reconsider the choice of tool for hosting web applications from aws suite? Not only does the lambda cold start cause issues of increased start up time but also from the perspective of the web application having background services, the max run time limitations of lambda functions don't help much. Moreover looking at the benefits of lambda that you highlighted almost all of them are available with something like fargate beneath ECS. Please let me know your thoughts on this thanks.

  • @ahsanmehmoodqureshi7035
    @ahsanmehmoodqureshi7035 7 годин тому

    can we do without a docker..?

  • @user-xm7sh3vw8o
    @user-xm7sh3vw8o 10 годин тому

    How do you use the domain model modification, for example, in the order field, I need to change the data, but the content is not sure, how to make the modification method of the domain model

  •  10 годин тому

    Dude nice video! thanks for sharing all your knowledge with all of us. Quick question, why do you prefer Postgres instead of MSSQL for mostly all your videos? Is it because of the open-source stuff?

  • @user-gm3lg8gp3m
    @user-gm3lg8gp3m 11 годин тому

    Thanks a lot

  • @comroec
    @comroec 11 годин тому

    How to generate the report with Blazor? pls (crystal or any)

  • @YI-gt7kh
    @YI-gt7kh 11 годин тому

    Why am i getting an error when I want to take the user info System.InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found. The default schemes can be set using either AddAuthentication(string defaultScheme) or AddAuthentication(Action<AuthenticationOptions> configureOptions).

  • @vlad.kravchenko
    @vlad.kravchenko 11 годин тому

    I'm a complete 0 in AWS. Before, I tried few times publishing Hello World on AWS using other tutorials and Chat GPT with no luck. Thanks to you now I have one up and running!

    • @MilanJovanovicTech
      @MilanJovanovicTech 11 годин тому

      Nice work! I'm so thrilled to hear that, honestly 😅

  • @codenetw
    @codenetw 12 годин тому

    I don't like MassTransit because it creates a wrapper around the message. If it were possible to pass the service data not in the wrapper but in the message header, it would be ideal.

  • @blackpaw29
    @blackpaw29 13 годин тому

    Interesting, quite straightforward. Pity theirs not a permeant free RDS tier.

    • @MilanJovanovicTech
      @MilanJovanovicTech 13 годин тому

      I'd say you can still host a database cheaply. Of course, we'd have to compare it to other options (or cloud providers) to decide which option is better.

  • @TheEmqe
    @TheEmqe 13 годин тому

    the question is how can we show the errors on bootstrap modal ? and my project not API .net core mvc

  • @vshengur
    @vshengur 14 годин тому

    Thanks for good idea for Friday's evening!)

    • @MilanJovanovicTech
      @MilanJovanovicTech 13 годин тому

      You are welcome! I love how simple they've made the entire process.

  • @MilanJovanovicTech
    @MilanJovanovicTech 14 годин тому

    Get the source code for this video for FREE → the-dotnet-weekly.ck.page/aws-lambda

  • @SamehSaeedMohammad
    @SamehSaeedMohammad 14 годин тому

    Thanks 👍🏻

  • @voult89
    @voult89 15 годин тому

    In domain module we can have some interface that is responsible for email check. And on creation, we can call this interface to check that email is valid. In this case domain doesn't know anything about implementation of this interface and doesn't need any repository or flag to be passed. So, as a result: Performance is okay, since under the hood we can use repository. Completeness is okay, since domain has all necessary logic. And purity is good as well, since domain doesn't have any dependency on outer modules. Not sure, if it's possible to write code this way in .Net, but for sure it's possible in Java.

    • @MilanJovanovicTech
      @MilanJovanovicTech 13 годин тому

      How is that any different from calling the repository method before the domain method? (performance + purity)

    • @voult89
      @voult89 11 годин тому

      ​@@MilanJovanovicTech In this case you are sure, that check is happening in every creation, there's no chance that someone will provide true/false to create entity, and there's no need to discuss with team how to properly create entity. You do it once and forever, instead of always remembering about the repository method before the domain method. And if I saw this in production code base, for me it would be not clear and I rather ask colleagues about how to create, or I create one more method in domain without this flag.

  • @DiogoLScarmagnani
    @DiogoLScarmagnani 16 годин тому

    None os these decorators (FromBody, FromQuery etc.) are necessary nowadays?

    • @MilanJovanovicTech
      @MilanJovanovicTech 15 годин тому

      They can be inferred, yes

    • @magashkinson
      @magashkinson 14 годин тому

      FromForm necessary. Also FromQuery allows to specify the name of query parameter if it differs from variable name

  • @r0bertdenir0
    @r0bertdenir0 19 годин тому

    The problem with using the Result<T> pattern in C# is that the language doesn't give us the syntax to enforce it. Historically C# reference types have been "weak" in the sense that a string could be a (string or null). That has been fixed with nullable reference types. Now a value that could be null must be explicitly defined as being nullable (string?). But functions are still "weak" contracts. A function that returns a string can either (return a string OR raise an exception). Result<T> doesn't change that. A function that returns Result<T> can still (return Result<T> or raise an exception). We need some mechanism at the language level where the caller knows that when a function returns Result<T>, there is no possibility of an exception. That would be a "strong" contract. "async" kind of does this for "Task<T>". An async Task<T> function will only raise the exception when it is awaited. Unfortunately, a caller can't be confident that a function that returns Task<T> is an async function that won't raise an exception. Only the async keyword creates the state machine to wrap the exception, but a function can return Task<T> without using async, which could raise an exception directly. Perhaps this might be done with source generators or IL weaving? Are there any Result<T> implementations that provide this functionality of "strong" contracts?

    • @MilanJovanovicTech
      @MilanJovanovicTech 18 годин тому

      I don't think you will find what you're looking for in the open source world. Best we can do is accept that exception "can" happen, and we can deal with them accordingly.

    • @r0bertdenir0
      @r0bertdenir0 16 годин тому

      ​@@MilanJovanovicTech I do like the Result pattern & think it's a better way to explicitly declare that a function may return a Error, rather than the goto-ish behaviour of Exceptions. But currently it feels "ugly" in C#. Standard C# functions could (return value OR raise Exception. Using Result<T> leads to functions that could ((return T OR Exception) OR raise Exception) Is that really an improvement?

    • @r0bertdenir0
      @r0bertdenir0 16 годин тому

      If we follow the principle that functions are opaque, and we only interact with them via the contract of their signature (inputs -> outputs), then we must carry on wrapping everything in try...catch even when we have a functional pipeline, because we don't know if any of those functions in the pipeline will raise an exception instead of wrapping the exception in a Result.

  • @ahmedm_seada
    @ahmedm_seada 19 годин тому

    Never missed one of your notifications and as always that was very helpful so thanks. keep up the good work

  • @dispinser548
    @dispinser548 День тому

    If the app restarts, will data from the cache still be persistent?

  • @batressc
    @batressc День тому

    Always a good content quality! Thank you for sharing!

  • @jakelanning1535
    @jakelanning1535 День тому

    Why not have an author entity and let book have an author id column with a foreign key into the authors table modelBuilder.Entity<Book>() .HasOne<Author>() .WithMany(e => e.Books) .HasForeignKey(e => e.AuthorId) .IsRequired(); Book's `public Author Author` would become `public virtual Author Author` and, as previously stated, would need a `public int AuthorId` and Author would need to have a `public virtual ICollection<Book> Books` as well as a `public int Id` I understand this is an example just to show off the feature, but i just can't imagine any case where using .OwnsOne makes more sense than to use a separate entity with a navigation property enabled by a foreign key, especially if theres a chance that the owned entity might be used in multiple of the parent entities. are joins evil and no one told me?

    • @MilanJovanovicTech
      @MilanJovanovicTech 18 годин тому

      Just showcasing an EF feature here :) We're not talking about relational design 101.

  • @KingOfBlades27
    @KingOfBlades27 День тому

    Would definitely love you to cover this in a full video 👍 Sounds really useful.

  • @omerunald7663
    @omerunald7663 День тому

    I have two healthchecks. Can I trigger each of them separately on the HealthcheckUI side? redis like once every 10 seconds, mongo like once every 15 seconds

    • @MilanJovanovicTech
      @MilanJovanovicTech 18 годин тому

      It's usually exposed through 1 endpoint that runs all the health checks. In theory, you could expose a separate endpoint for mongo o

    • @omerunald7663
      @omerunald7663 9 годин тому

      @@MilanJovanovicTech Can you make an educational video on this subject?

  • @thabangmaleswena5846
    @thabangmaleswena5846 День тому

    i got the dbcontext in different libraries. do i have to do the map in the api for all my queries?

  • @christianchindy4712
    @christianchindy4712 День тому

    great

  • @bondymagnomous3544
    @bondymagnomous3544 День тому

    Finally a video about this topic that actually makes sense and not a 20 minutes long time-waste.

  • @willianpereiradossantos2258
    @willianpereiradossantos2258 День тому

    I always had to created this funcionallity manually on the projects I've worked. This new hybrid cache feature will be a useful time-gaining feature.

    • @MilanJovanovicTech
      @MilanJovanovicTech День тому

      Interesting that IMemoryCache has an extension method for it, but IDIstributedCache does not

  • @clashclan4739
    @clashclan4739 День тому

    What issue its solving?

    • @devliren
      @devliren День тому

      Cache stampede?

    • @MilanJovanovicTech
      @MilanJovanovicTech День тому

      Cache stampede. 2-level cache (in mem + distributed). Tag-based eviction.

    • @jowbloe4700
      @jowbloe4700 День тому

      Going backwards and not writing stored procedures. 😂. YAY... we get to write SQL in code now 🙄.

  • @rubananderson3880
    @rubananderson3880 День тому

    How do you invalidate the cache?

    • @MilanJovanovicTech
      @MilanJovanovicTech День тому

      There are methods for removing cache items by key or tag. Tag-based eviction isn't implemented yet, however.

    • @tekc0der
      @tekc0der 13 годин тому

      First time I've heard about tag based eviction. So does redis for example support tags? Or it's simply a pattern search on the key name?

  • @rcarubbi
    @rcarubbi 2 дні тому

    why not create the ValueObjects as Records?

    • @MilanJovanovicTech
      @MilanJovanovicTech День тому

      It'll look similar if you need to add a private constructor. Another issue with using records is avoiding value object invariants using the with expression.

    • @rcarubbi
      @rcarubbi День тому

      @@MilanJovanovicTech thanks for replying Milan! Your content is excellent! I'm addicted to your playlist.

    • @rcarubbi
      @rcarubbi День тому

      @@MilanJovanovicTech I got it. So the consumer would basically be able to bypass the validation logic in the fabric method applying a change using the with expression. That's a very valid point!

  • @timur2887
    @timur2887 2 дні тому

    So .Net Aspire can't kill docker-compose and open telemetry?))

    • @MilanJovanovicTech
      @MilanJovanovicTech День тому

      From my view, not yet. I still prefer docker-compose. Aspire uses OpenTelemetry extensively.

  • @CredsLife
    @CredsLife 2 дні тому

    Awesome!! Love to see the channel! ❤

  • @abdushakoor0099
    @abdushakoor0099 2 дні тому

    two interesting things i learned from your videos. 1. Vertical Slice architecture 2. Railway-oriented programming

    • @MilanJovanovicTech
      @MilanJovanovicTech День тому

      Awesome, glad you're finding new ideas 😁

    • @abdushakoor0099
      @abdushakoor0099 День тому

      @@MilanJovanovicTech yes I've been working with Either monad in flutter. Keep up the good work

  • @panayotivanov8607
    @panayotivanov8607 2 дні тому

    Very nice! Microsoft strikes again

  • @aliensoul7600
    @aliensoul7600 2 дні тому

    Full video please