Сборка лямбда-zip-файла в командной строке в AWS codebuild завершается неудачно с «требуемая библиотека libhostfxr.so не найдена» - PullRequest
0 голосов
/ 02 апреля 2020

Я выполняю команду во время AWS CodeBuild для создания лямбда-файла zip.

Команда выглядит следующим образом:

dotnet lambda package --framework netcoreapp2.1 -o ../../artifacts/Jobs.zip

Вот ошибка:

**A fatal error occurred, the required library libhostfxr.so could not be found.
If this is a self-contained application, that library should exist in [/root/.dotnet/tools/.store/amazon.lambda.tools/3.3.1/amazon.lambda.tools/3.3.1/tools/netcoreapp2.1/any/].
If this is a framework-dependent application, install the runtime in the default location [/usr/share/dotnet] or use the DOTNET_ROOT environment variable to specify the runtime location.
Makefile:28: recipe for target 'Jobs/artifacts/Jobs.zip' failed**

Because this is a container I have printed out the dotnet info:

.NET Core SDK (reflecting any global.json):

 Version:   2.2.402
 Commit:    c7f2f96116
 Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-x64
 Base Path:   /root/.dotnet/sdk/2.2.402/

Host (useful for support):
 Version: 3.1.2
 Commit:  916b5cba26

.NET Core SDKs installed:

2.2.402 [/root/.dotnet/sdk]

.NET Core runtimes installed:

Microsoft.AspNetCore.All 2.2.7 [/root/.dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.7 [/root/.dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.2 [/root/.dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.2.7 [/root/.dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.2 [/root/.dotnet/shared/Microsoft.NETCore.App]

Итак, проект в Visual Studio нацелен. NET Core 2.1

Эта проблема только началась около 10 дней go. Я смог go вернуться к более раннему коммиту, отправив sh его на GitHub, который пинает код, встроенный в AWS. Этот более ранний коммит, когда отправлено 2 недели, go был успешным, и я не увидел эту ошибку libhostfxr.so. В основном все, что я пу sh, теперь я получаю вышеуказанную ошибку. Во время исследования я обнаружил, что, поскольку я использую Контейнер, я могу использовать флаг

--self-contained=true and /p:PreserveCompilationContext=true

, чтобы я мог связывать все зависимости, но это тоже не сработало.

Не уверен, что еще попробовать на этом этапе. У кого-нибудь есть идеи? Целевая структура для этих лямбд является. NET core 2.1.

1 Ответ

0 голосов
/ 02 апреля 2020

После дополнительных исследований я нашел решение здесь. https://github.com/aws/aws-codebuild-docker-images/issues/321

Мне нужно установить DOTNET_ ROOT в моем файле yml.

...