IRONSOFTWAREHOME

Jak odczytywać i zapisywać kody QR na AWS Lambda

Curtis Chau
Curtis Chau
Updated: 22 kwietnia 2026

Ten artykuł zawiera szczegółowy przewodnik dotyczący konfigurowania funkcji AWS Lambda z IronQR. W tym tutorialu dowiesz się, jak skonfigurować IronQR do odczytywania i zapisywania kodów QR bezpośrednio w zasobniku S3.

Instalacja

Ten artykuł wykorzystuje kosz S3, więc wymagany jest pakiet AWSSDK.S3.

Start using IronQR in your project today with a free trial.

Pierwszy krok:
arrow pointer

Utwórz projekt AWS Lambda

Dzięki Visual Studio tworzenie kontenerowej funkcji AWS Lambda jest łatwym procesem:

  • Zainstaluj zestaw narzędzi AWS Toolkit dla Visual Studio
  • Wybierz "Projekt AWS Lambda (.NET Core – C#)"
  • Wybierz szablon ".NET 8 (obraz kontenera)", a następnie kliknij "Zakończ".

Wybierz obraz kontenera

Dodaj zależności pakietów

Biblioteka IronQR w .NET 8 działa na AWS Lambda bez konieczności instalowania dodatkowych zależności. Aby ją skonfigurować, zmodyfikuj Dockerfile projektu jak poniżej:

FROM public.ecr.aws/lambda/dotnet:8

# Install necessary packages and update repositories
RUN dnf update -y

WORKDIR /var/task

# This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. 
# The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built 
# with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project
# will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir`
# set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish".
#
# Alternatively, Docker multi-stage build could be used to build the .NET Lambda project inside the image.
# For more information on this approach, check out the project's README.md file.
COPY "bin/Release/lambda-publish"  .
Text

Modyfikacja kodu FunctionHandler

Ten przykład tworzy kod QR, przesyła go do zasobnika S3 i odczytuje nowo wygenerowany kod QR.

Ścieżka pliku jest określona w katalogu IronQrNuGet, a jako nazwa pliku używany jest unikalny globalnie identyfikator (GUID). Metoda Write generuje kod QR na podstawie podanej wartosci, a wynikowa tablica bajtow JPG jest nastepnie przekazywana do metody Read w celu odczytania kodu QR. To pokazuje, że ta funkcja AWS Lambda jest zdolna do odczytywania kodów QR.

using Amazon.Lambda.Core;
using Amazon.S3;
using Amazon.S3.Model;
using IronQr;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

namespace IronQrNuGetAwsLambda
{
    public class Function
    {
        private static readonly IAmazonS3 _s3Client = new AmazonS3Client(Amazon.RegionEndpoint.APSoutheast1);

        /// <summary>
        /// Main handler for AWS Lambda
        /// </summary>
        /// <param name="context">The ILambdaContext that provides methods for logging and describing the Lambda environment.</param>
        /// <returns></returns>
        public async Task FunctionHandler(ILambdaContext context)
        {
            // Set the license key for IronQR
            IronQr.License.LicenseKey = "IronQR-MYLICENSE-KEY-1EF01";

            string bucketName = "deploymenttestbucket";
            string objectKey = $"IronQrNuGet/{Guid.NewGuid()}.png";

            try
            {
                // Create a QR code with the content "12345"
                var myQr = QrWriter.Write("12345");

                context.Logger.LogLine("QR created.");

                // Upload the JPG to S3
                await UploadJpgToS3Async(bucketName, objectKey, myQr.Save().ExportBytesAsJpg());

                context.Logger.LogLine($"QR uploaded successfully to {bucketName}/{objectKey}");

                // Read the QR code
                QrImageInput imageInput = new QrImageInput(myQr.Save());
                QrReader reader = new QrReader();
                var resultFromByte = reader.Read(imageInput);

                foreach (var item in resultFromByte)
                {
                    // Log the read value
                    context.Logger.LogLine($"QR value is = {item.Value}");
                }
            }
            catch (Exception e)
            {
                context.Logger.LogLine($"[ERROR] FunctionHandler: {e.Message}");
            }
        }

        // Function to upload the JPG file to S3
        private async Task UploadJpgToS3Async(string bucketName, string objectKey, byte[] jpgBytes)
        {
            using (var memoryStream = new MemoryStream(jpgBytes))
            {
                var request = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = objectKey,
                    InputStream = memoryStream,
                    ContentType = "image/jpg",
                };

                await _s3Client.PutObjectAsync(request);
            }
        }
    }
}

Zwiększ pamięć i limit czasu

Przydział pamięci dla funkcji Lambda zależy od wielkości dokumentów i liczby przetwarzanych jednocześnie. Jako punkt wyjscia ustaw pamiec na 512 MB i limit czasu na 300 sekund w aws-lambda-tools-defaults.json.

"function-memory-size" : 512,
"function-timeout" : 300
JSON

Jeśli pamięć jest niewystarczająca, program wywoła błąd: 'Runtime exited with error: signal: killed.' Zwiększenie rozmiaru pamięci może pomóc w rozwiązaniu tego problemu. Aby uzyskać dalsze wskazówki, zapoznaj się z artykułem rozwiązywania problemów: AWS Lambda - Runtime Exited Signal: Killed.

Opublikuj

Aby opublikować w Visual Studio, wystarczy kliknąć prawym przyciskiem myszy projekt i wybrać 'Publish to AWS Lambda...' Następnie skonfiguruj wymagane ustawienia. Więcej informacji znajdziesz na stronie AWS.

Wypróbuj!

Funkcję Lambda można aktywować za pomocą konsoli Lambda lub programu Visual Studio.

Często Zadawane Pytania

Jak mogę zintegrować bibliotekę kodów QR z moim projektem C# na AWS Lambda?

Możesz zintegrować bibliotekę kodów QR, taką jak IronQR, ze swoim projektem C# w AWS Lambda, pobierając bibliotekę IronQR, tworząc kontenerowy projekt AWS Lambda za pomocą Visual Studio i konfigurując swoje środowisko tak, aby obsługiwało operacje związane z kodami QR.

Jakie kroki należy wykonać, aby skonfigurować IronQR dla AWS Lambda?

Skonfiguruj IronQR dla AWS Lambda, tworząc szablon projektu kontenerowego w Visual Studio, modyfikując plik Dockerfile, aktualizując FunctionHandler oraz dostosowując ustawienia pamięci i limitów czasu, aby zapewnić płynne działanie.

Jak zarządzać kodami QR w AWS S3 przy użyciu biblioteki C#?

Za pomocą IronQR można zarządzać kodami QR poprzez tworzenie, przesyłanie i odczytywanie ich z zasobników AWS S3. Wymaga to użycia biblioteki IronQR w połączeniu z pakietem AWSSDK.S3 do obsługi operacji z zasobnikami S3.

Co należy zrobić, jeśli funkcja AWS Lambda korzystająca z IronQR nie działa prawidłowo?

Jeśli Twoja funkcja AWS Lambda nie działa prawidłowo, rozważ zwiększenie ustawień pamięci i limitu czasu w pliku aws-lambda-tools-defaults.json, aby przydzielić więcej zasobów dla tej funkcji.

Jak wdrożyć funkcję Lambda w języku C# w AWS?

Wdroż funkcję Lambda w AWS, korzystając z opcji „Publish to AWS Lambda...” w Visual Studio, konfigurując niezbędne ustawienia i wykorzystując AWS Toolkit do wdrożenia.

Czy można przetestować moją funkcję AWS Lambda w Visual Studio?

Tak, możesz przetestować swoją funkcję AWS Lambda w Visual Studio, używając zestawu narzędzi AWS Toolkit do wywołania funkcji i sprawdzenia jej wyników bezpośrednio w swoim środowisku programistycznym.

Jak mogę rozwiązać problemy z pamięcią w mojej funkcji AWS Lambda?

Aby rozwiązać problemy z pamięcią, zwiększ przydział pamięci funkcji w pliku aws-lambda-tools-defaults.json i monitoruj wydajność funkcji po ponownym wdrożeniu.

Jaka jest istotność modyfikacji pliku Dockerfile w projekcie AWS Lambda?

Modyfikacja pliku Dockerfile w projekcie AWS Lambda jest kluczowa dla prawidłowego skonfigurowania środowiska, w tym aktualizowania repozytoriów i kopiowania niezbędnych artefaktów budowy, aby funkcja działała poprawnie.

Jak mogę się upewnić, że moja funkcja AWS Lambda sprawnie obsługuje operacje QR kodu?

Upewnij się, że twoja funkcja AWS Lambda sprawnie obsługuje operacje QR kodu, optymalizując ustawienia pamięci i czasu limitu, używając właściwych bibliotek jak IronQR, i prawidłowo konfigurując plik Dockerfile i ustawienia projektu.

Czy mogę zautomatyzować generowanie i odzyskiwanie QR kodów w AWS Lambda?

Tak, możesz zautomatyzować generowanie i odzyskiwanie QR kodów w AWS Lambda używając IronQR. Biblioteka umożliwia programistyczne tworzenie QR kodów, przesyłanie ich do S3 i odczytywanie ich w razie potrzeby.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 74,386Wersja:2026.9właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.9

PM > Install-Package IronQR
nuget.org/packages/IronQR/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz Przeglądaj i wyszukaj "IronQR"
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.9

  1. Pobierz i rozpakuj IronQR do lokalizacji, takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań Visual Studio kliknij prawym przyciskiem myszy Odwołania. Wybierz Przeglądaj, "IronQR.dll"

Licencje od $999

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta