Aws-lambda-dotnet: Вопрос: Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Autofac Π² LambdaEntryPoint Π² net core 3.0?

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 7 Π°ΠΏΡ€. 2020  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: aws/aws-lambda-dotnet

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

Π― Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ api с Amazon.Lambda.AspNetCoreServer, ΠΈ я наткнулся Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ знаю, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ дальшС.
Autofac измСнил способ добавлСния:
Новый способ: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IHostBuilder .UseServiceProviderFactory(new AutofacServiceProviderFactory()
Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ способ: с IWebHostBuilder serviceCollection.AddAutofac()
Π’Π°ΠΊΠΆΠ΅, насколько я понимаю, IWebHostBuilder Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ LambdaEntryPoint ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Init.

Для IWebHostBuilder, ΠΊΠΎΠ³Π΄Π° я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Autofac, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ это ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ сообщСниС ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Π’ΠžΠ›Π¬ΠšΠž Π”Π›Π― Π₯ΠžΠ‘Π’Π˜ΠΠ“Π PRE-ASP.NET 3.0. ЭВО НЕ Π ΠΠ‘ΠžΠ’ΠΠ•Π’ Π”Π›Π― ASP.NET CORE 3.0+ Π˜Π›Π˜ ΠžΠ‘Π©Π•Π“Πž Π₯ΠžΠ‘Π’Π˜ΠΠ“Π.

И я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ IHostBuilder с LambdaEntryPoint.

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ сдСлал это ΠΈΠ»ΠΈ Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ? Π—Π°Ρ€Π°Π½Π΅Π΅ спасибо!

bug modullambda-client-lib response-requested

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”Π°, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Π²ΠΈΠΆΡƒ постоянноС использованиС, Ссли IWebHostBuilder являСтся Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ для использования Autofac Π² .NET Core 3.1. Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° IHostBuilder Π² Ρ€Π°ΠΌΠΊΠ°Ρ… основного измСнСния вСрсии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ с .NET Core 3.1. Π― пытался ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ слоТностСй с этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, которая Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ .NET Core 2.1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ IWebHostBuilder.

Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ сущСствСнныС критичСскиС измСнСния всСго Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Ρƒ нСдСль послС Π²Ρ‹Ρ…ΠΎΠ΄Π° послСднСй основной вСрсии, поэтому ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ½Π²Π°Π·ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вас всСх.

ВсС 7 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π£ мСня Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (.NET Core 3.1) с этим, ΠΈ Ρƒ мСня Π½Π΅Ρ‚ возмоТности Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Lambda Π² качСствС поставщика DI. Мой класс LocalEntryPoint прост ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ классу LambdaEntryPoint.

public static void Main(string[] args) 
{ 
    CreateHostBuilder(args).Build().Run(); 
}

public static IHostBuilder CreateHostBuilder(string[] args) 
{ 
    return Host.CreateDefaultBuilder(args) 
        .UseServiceProviderFactory(new AutofacServiceProviderFactory()) 
                .ConfigureWebHostDefaults(webBuilder => { webBuilder .UseStartup<Startup>(); }); 
}

_normj ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Π”Π°, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Π²ΠΈΠΆΡƒ постоянноС использованиС, Ссли IWebHostBuilder являСтся Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ для использования Autofac Π² .NET Core 3.1. Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° IHostBuilder Π² Ρ€Π°ΠΌΠΊΠ°Ρ… основного измСнСния вСрсии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ с .NET Core 3.1. Π― пытался ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ слоТностСй с этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, которая Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ .NET Core 2.1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ IWebHostBuilder.

Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ сущСствСнныС критичСскиС измСнСния всСго Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Ρƒ нСдСль послС Π²Ρ‹Ρ…ΠΎΠ΄Π° послСднСй основной вСрсии, поэтому ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ½Π²Π°Π·ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вас всСх.

Π― создал PR https://github.com/aws/aws-lambda-dotnet/pull/633, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° IHostBuilder, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эта функция Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CreateWebHostBuilder .

ВСрсия 5.1.0 ΠΈΠ· Amazon.Lambda.AspNetCoreServer Π²Ρ‹ΡˆΠ»Π° сСгодня с этим ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ.

Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» сообщСниС Π² Π±Π»ΠΎΠ³Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π», ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
https://aws.amazon.com/blogs/developer/one-month-update-to-net-core-3-1-lambda/

Π― Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Π±Ρ‹Π»ΠΎ Π»ΠΈ это ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, Π½ΠΎ Ρƒ мСня Π±Ρ‹Π» рСгрСсс ΠΌΠ΅ΠΆΠ΄Ρƒ 5.0.0 ΠΈ 5.1.1.

Π― оставил ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ выпускС: https://github.com/aws/aws-lambda-dotnet/issues/669#issuecomment -629447122 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Stacktrace. Мой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° github. Π’ ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ каТСтся, Π²Ρ‹Π·ΠΎΠ²ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

protected override void Init(IWebHostBuilder webHostBuilder)
        {
            webHostBuilder
                .ConfigureAppConfiguration((context, configurationBuilder) =>
                    {
                        configurationBuilder.Sources.Clear();
                        configurationBuilder.AddEnvironmentVariables();
                    }
                )
                .ConfigureServices(
                    sc =>
                    {
                        sc.TryAddSingleton<ICustomServiceProviderFactory>(new CustomServiceProviderFactory());
                    })
                .ConfigureLogging((hostingContext, logging) =>
                    {

                        logging.AddLambdaLogger(new LambdaLoggerOptions
                        {
                            IncludeLogLevel = true,
                            Filter = (category, logLevel) => true
                        });

                    })
                    .UseStartup<Startup>();
        }

https://github.com/d-velop/dvelop-app-template-cs/blob/bug/5_1_1/AwsLambda/Entrypoint/LambdaEntryPoint.cs

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @Xocix!

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° использованиС послСднСй вСрсии.

Благодаря,
Ашиш

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, @ashishdhingra, ΠΈΠ·Π²ΠΈΠ½ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ». Для мСня послСдняя вСрсия Ρ€Π΅ΡˆΠΈΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, спасибо всСм, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ я Π΄ΠΎΠ²ΠΎΠ»Π΅Π½!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ