IronWord'u AWS Lambda Üzerinde Nasıl Kullanılır

This article was translated from English: Does it need improvement?
Translated
View the article in English

Bu makale, IronWord kullanarak bir AWS Lambda fonksiyonu kurulumuna yönelik kapsamlı bir kılavuz sunmaktadır. AWS Lambda ortamında Word belgeleri oluşturmak ve yönetmek için IronWord'ü nasıl yapılandıracağınızı öğreneceksiniz.

Kurulum

Bu örnek, bir S3 hedefi üzerine Word belgelerini okuyup/yazacağından, AWSSDK.S3 NuGet paketi gereklidir.

AWS Lambda'da IronWord ZIP Paketi Kullanımı

IronWord ZIP paketi kullanırken, AWS Lambda'nın /tmp/ klasörü dışında salt okunur bir dosya sistemine sahip olduğu için geçici bir dağıtım yolu belirlemek önemlidir. IronWord'un çalıştırma dosyaları için bu klasörü kullanacak şekilde yapılandırılması gerekir:

var awsTmpPath = @"/tmp/";
IronSoftware.Word.Installation.DeploymentPath = awsTmpPath;
var awsTmpPath = @"/tmp/";
IronSoftware.Word.Installation.DeploymentPath = awsTmpPath;
Dim awsTmpPath = "/tmp/"
IronSoftware.Word.Installation.DeploymentPath = awsTmpPath
$vbLabelText   $csharpLabel

IronWord'u AWS ile Entegre Etme

Bir AWS Lambda Projesi Oluşturma

Visual Studio kullanarak kapsüllenmiş bir AWS Lambda projesi oluşturun:

  1. Visual Studio için AWS Toolkit'i kurun
  2. AWS Lambda Projesi (.NET Core - C#) seçin
  3. .NET 8 (Container Image) şablonunu seçin ve kurulumu tamamlayın
  4. Dağıtım türü olarak konteyner imajını seçin

Paket Bağımlılıklarını Ekle

IronWord ve AWSSDK.S3 paketlerini projenize NuGet aracılığıyla ekleyin. IronWord kütüphanesi, doğru kurulum ile AWS Lambda üzerinde sorunsuz çalışır. IronWord'u AWS projenize sorunsuz bir şekilde yüklemek için aşağıdaki komutu çalıştırın:

Install-Package IronWord

Projenizin Dockerfile dosyasını .NET 8 Lambda taban imajını kullanacak şekilde güncelleyin ve derleme çıktılarınızı kopyalayın:

public.ecr.aws/lambda/dotnet:8

RUN dnf update -y

WORKDIR /var/task

COPY "bin/Release/lambda-publish"  .

FunctionHandler Kodunu Düzenleyin

Aşağıda basit bir Word belgesi oluşturan, .docx dosyası olarak kaydeden ve bir S3 kovasına yükleyen bir Lambda fonksiyonu örneği bulunmaktadır.

using Amazon.Lambda.Core;
using Amazon.S3;
using Amazon.S3.Model;
using IronWord;
using IronWord.Models;
using System.Text;

// 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 IronWordAwsLambda;

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

    public async Task FunctionHandler(ILambdaContext context)
    {
        var awsTmpPath = @"/tmp/";
        License.LicenseKey = "YOUR-LICENSE-KEY"; // Replace if you have one

        string filename = Guid.NewGuid() + ".docx";
        string localPath = Path.Combine(awsTmpPath, filename);
        string bucketName = "your-s3-bucket-name";
        string objectKey = $"IronWordAwsLambda/{filename}";

        try
        {
            // Create Word Document
            var doc = new WordDocument();
            Paragraph paragraph = new Paragraph(new TextContent("Hello from IronWord on AWS Lambda!"));
            doc.AddParagraph(paragraph);
            doc.SaveAs(localPath);

            context.Logger.LogLine("Word document created.");

            // Upload to S3
            byte[] fileBytes = await File.ReadAllBytesAsync(localPath);
            await UploadToS3Async(bucketName, objectKey, fileBytes);

            context.Logger.LogLine($"Document uploaded to S3: {bucketName}/{objectKey}");
        }
        catch (Exception ex)
        {
            context.Logger.LogLine($"[ERROR] {ex.Message}");
        }
    }

    private async Task UploadToS3Async(string bucketName, string objectKey, byte[] fileBytes)
    {
        using var stream = new MemoryStream(fileBytes);
        var request = new PutObjectRequest
        {
            BucketName = bucketName,
            Key = objectKey,
            InputStream = stream,
            ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
        };
        await _s3Client.PutObjectAsync(request);
    }
}
using Amazon.Lambda.Core;
using Amazon.S3;
using Amazon.S3.Model;
using IronWord;
using IronWord.Models;
using System.Text;

// 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 IronWordAwsLambda;

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

    public async Task FunctionHandler(ILambdaContext context)
    {
        var awsTmpPath = @"/tmp/";
        License.LicenseKey = "YOUR-LICENSE-KEY"; // Replace if you have one

        string filename = Guid.NewGuid() + ".docx";
        string localPath = Path.Combine(awsTmpPath, filename);
        string bucketName = "your-s3-bucket-name";
        string objectKey = $"IronWordAwsLambda/{filename}";

        try
        {
            // Create Word Document
            var doc = new WordDocument();
            Paragraph paragraph = new Paragraph(new TextContent("Hello from IronWord on AWS Lambda!"));
            doc.AddParagraph(paragraph);
            doc.SaveAs(localPath);

            context.Logger.LogLine("Word document created.");

            // Upload to S3
            byte[] fileBytes = await File.ReadAllBytesAsync(localPath);
            await UploadToS3Async(bucketName, objectKey, fileBytes);

            context.Logger.LogLine($"Document uploaded to S3: {bucketName}/{objectKey}");
        }
        catch (Exception ex)
        {
            context.Logger.LogLine($"[ERROR] {ex.Message}");
        }
    }

    private async Task UploadToS3Async(string bucketName, string objectKey, byte[] fileBytes)
    {
        using var stream = new MemoryStream(fileBytes);
        var request = new PutObjectRequest
        {
            BucketName = bucketName,
            Key = objectKey,
            InputStream = stream,
            ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
        };
        await _s3Client.PutObjectAsync(request);
    }
}
Imports Amazon.Lambda.Core
Imports Amazon.S3
Imports Amazon.S3.Model
Imports IronWord
Imports IronWord.Models
Imports System.Text

' Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
<Assembly: LambdaSerializer(GetType(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))>

Namespace IronWordAwsLambda

	Public Class [Function]
		Private Shared ReadOnly _s3Client As IAmazonS3 = New AmazonS3Client(Amazon.RegionEndpoint.APSoutheast1)

		Public Async Function FunctionHandler(ByVal context As ILambdaContext) As Task
			Dim awsTmpPath = "/tmp/"
			License.LicenseKey = "YOUR-LICENSE-KEY" ' Replace if you have one

			Dim filename As String = Guid.NewGuid().ToString() & ".docx"
			Dim localPath As String = Path.Combine(awsTmpPath, filename)
			Dim bucketName As String = "your-s3-bucket-name"
			Dim objectKey As String = $"IronWordAwsLambda/{filename}"

			Try
				' Create Word Document
				Dim doc = New WordDocument()
				Dim paragraph As New Paragraph(New TextContent("Hello from IronWord on AWS Lambda!"))
				doc.AddParagraph(paragraph)
				doc.SaveAs(localPath)

				context.Logger.LogLine("Word document created.")

				' Upload to S3
				Dim fileBytes() As Byte = Await File.ReadAllBytesAsync(localPath)
				Await UploadToS3Async(bucketName, objectKey, fileBytes)

				context.Logger.LogLine($"Document uploaded to S3: {bucketName}/{objectKey}")
			Catch ex As Exception
				context.Logger.LogLine($"[ERROR] {ex.Message}")
			End Try
		End Function

		Private Async Function UploadToS3Async(ByVal bucketName As String, ByVal objectKey As String, ByVal fileBytes() As Byte) As Task
			Dim stream = New MemoryStream(fileBytes)
			Dim request = New PutObjectRequest With {
				.BucketName = bucketName,
				.Key = objectKey,
				.InputStream = stream,
				.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
			}
			Await _s3Client.PutObjectAsync(request)
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

Hafıza ve Zaman Aşımını Artırın

Belge işleme bellek tüketimi yoğun olabildiğinden, aws-lambda-tools-defaults.json dosyasında Lambda işlevi belleğinizi en az 512 MB ve zaman aşımını 300 saniyeye çıkarın:

{
  "function-memory-size": 512,
  "function-timeout": 300
}

Runtime exited with error: signal: killed gibi hatalarla karşılaşırsanız, belleği artırın veya kodunuzu optimize edin.

Yayınla

Lambda işlevinizi yayınlamak için:

  • Visual Studio'da projenize sağ tıklayın
  • AWS Lambda'ya Yayınla'yı Seç...
  • Sihirbazı takip edin ve gerekli ayarları yapılandırın

Deneyin!

AWS Lambda Konsolu veya Visual Studio aracılığıyla Lambda işlevini çağırın. Yürütme işlemi tamamlandıktan sonra, yeni oluşturulan Word belgesi için S3 bucket'ınızı kontrol edin.

Sıkça Sorulan Sorular

IronWord nedir ve AWS Lambda'da Word belgesi işl менегеğini nasıl geliştirebilir?

IronWord, Word belgelerini işlemek için güçlü bir araçtır ve AWS Lambda ile entegre edildiğinde, ölçeklenebilir ve verimli belge yönetimi sağlar. Böylece Word belge görevlerinizi otomatikleştirip optimize etmenize imkan tanır.

IronWord'u AWS Lambda ile nasıl entegre edebilirim?

IronWord'u AWS Lambda ile entegre etmek için, IronWord paketini AWS Lambda ortamınızda ayarlamanız, gerekli izinleri yapılandırmanız ve IronWord'un belge işleme özelliklerini kullanan fonksiyon kodunuzu dağıtmanız gerekir.

AWS Lambda'da IronWord kullanmanın avantajları nelerdir?

AWS Lambda'da IronWord kullanarak, Word belge işleme için sunucusuz mimariden yararlanabilir, böylece ölçeklenebilirlik, maliyet etkinliği ve azaltılmış altyapı yönetimi sağlar.

AWS Lambda'da IronWord kullanarak Word belge görevlerini otomatikleştirebilir miyim?

Evet, IronWord'u AWS Lambda fonksiyonları içerisinde kullanarak belge oluşturma, düzenleme ve dönüştürme gibi çeşitli Word belge görevlerini otomatikleştirebilirsiniz.

AWS Lambda'da IronWord kullanarak büyük Word belgelerini işleyebilir miyim?

IronWord, büyük Word belgelerini verimli bir şekilde işlemeye yönelik tasarlanmıştır ve AWS Lambda ile kullanıldığında, Lambda yapılandırmanıza bağlı olarak belgeleri ölçeklenebilir bir şekilde işleyebilir.

AWS Lambda'da IronWord, Word belgeleri üzerinde ne tür işlemler gerçekleştirebilir?

IronWord, AWS Lambda ortamında Word belgeleri üzerinde düzenleme, biçimlendirme, metin çıkarma ve belgeleri farklı formatlara dönüştürme gibi çeşitli işlemler gerçekleştirebilir.

IronWord'u AWS Lambda'da dağıtmak için ön koşullar nelerdir?

IronWord'u AWS Lambda'da dağıtmadan önce bir AWS hesabınızın bulunması, AWS Lambda kurulumuna aşina olunması ve gerekli IAM rollerinin ve izinlerinin yapılandırılması gerekir.

IronWord AWS Lambda'da güncellemeler ve bakım işlemlerini nasıl gerçekleştirir?

IronWord, uyumluluk ve performans iyileştirmelerini sağlamak için düzenli olarak güncellenir. AWS Lambda ortamında, dağıtım paketini ironWord'un en son sürümüyle kolayca güncelleyerek optimal işlevselliği sürdürmek mümkündür.

IronWord'u AWS Lambda'da kullanmak için hangi destekler mevcut?

Iron Software, kullanıcıların AWS Lambda'da IronWord'u entegre edip kullanmalarına yardımcı olmak için belgeler ve destek sağlar, böylece belge işleme ihtiyaçlarınız için yeteneklerini etkili bir şekilde kullanabilirsiniz.

Kye Stuart
Teknik Yazar

Kye Stuart, Iron Software'de kodlama tutkusunu ve yazma becerisini birleştirir. Yoobee College'da yazılım dağıtımı eğitimi aldıktan sonra, şimdi karmaşık teknoloji kavramlarını net eğitim içeriklerine dönüştürür. Kye sürekli öğrenmeyi değer veriyor ve yeni ...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 44,829 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronWord
bir örnek çalıştırın verilerinizi bir Word belgesine dönüştürün.