IronWord'u AWS Lambda'da 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 AWS Lambda fonksiyonunu kurmada kapsamli bir rehber sunar. IronWord'u AWS Lambda ortaminda dokümanlar oluşturmak ve yonetmek icin nasıl yapılandiracağınızı ogreneceksiniz.

Kurulum

Bu örnek, bir S3 bucket'a Word dokümanlari okuma/yazma yapacagi icin AWSSDK.S3 NuGet paketi gereklidir.

AWS Lambda'da IronWord ZIP Paketini Kullanma

IronWord ZIP paketini kullanirken, AWS Lambda'nin yalnizca okunabilir bir dosya sistemi oldugu icin /tmp/ klasoru disinda bir gecici dağıtım yolu ayarlamak önemlidir. IronWord'u calisma zamani dosyalari icin bu klasoru kullanacak sekilde ayarlamalisiniz:

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 Etmek

AWS Lambda Projesi Oluşturma

Konteynerize AWS Lambda projesi oluşturmak icin Visual Studio'yu kullanin:

  1. Visual Studio icin AWS Toolkit'i yukleyin
  2. AWS Lambda Projesini secin (.NET Core - C#)
  3. .NET 8 (Konteyner Gorseli) taslagini secin ve kurulumu tamamlayin
  4. Dağıtım türü olarak konteyner görüntü secin

Paket Bagimliliklari Ekleme

IronWord ve AWSSDK.S3 paketlerini projenize NuGet araciligiyla ekleyin. Dogru ayarlarla IronWord kutuphanesi AWS Lambda'da sorunsuz calisir. AWS projenize IronWord'u kusursuz bir şekilde yuklemek icin surayi calistirin:

Install-Package IronWord

Projenizin Dockerfile'ini, .NET 8 Lambda baz görüntüsunu kullanacak sekilde güncelleyin ve derleme artifact'lerini kopyalayin:

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

RUN dnf update -y

WORKDIR /var/task

COPY "bin/Release/lambda-publish"  .

FunctionHandler Kodunu Değiştirin

Aşağıda, basit bir Word dokümanı oluşturan, bir .docx dosyası olarak kaydeden ve bir S3 bucket'a yukleyen örnek bir Lambda fonksiyonu verilmiştir.

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

Hafiza ve Zaman Asimi Arttirma

Doküman işleme hafiza kullanımı yogun olabilir, Lambda fonksiyonunuzun hafizasını en az 512 MB azami zaman aşımını 300 saniyeye cikartin aws-lambda-tools-defaults.json icerisinde:

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

Runtime exited with error: signal: killed gibi hatalarla karsilasirsaniz, hafizayi arttirin veya kodunuzu optimize edin.

Yayınla

Lambda fonksiyonunuzu yayınlama:

  • Visual Studio'da projenize sağ tıklayın
  • Publish to AWS Lambda... secenegini secin
  • Sihirbazı takip edin ve ayarları gerekirse konfigure edin

Deneyin!

Lambda fonksiyonunu AWS Lambda Konsol uzerinden veya Visual Studio ile calistirin. Calistirdiktan sonra, oluşturulan yeni Word belgesini S3 kutunuzda kontrol edin.

Sıkça Sorulan Sorular

IronWord nedir ve AWS Lambda üzerinde Word doküman işlemesini nasıl iyileştirebilir?

IronWord, Word belgelerini işlemek için güçlü bir araçtır ve AWS Lambda ile entegre edildiğinde, belgeleri otomatikleştirmenize ve Word belge görevlerini hızlandırmanıza olanak tanıyan ölçeklenebilir ve verimli bir belge yönetimi sunar.

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

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

AWS Lambda üzerinde IronWord kullanmanın faydaları nelerdir?

AWS Lambda üzerinde IronWord kullanmak, Word doküman işlemesi için sunucusuz bir mimariden yararlanmanıza olanak tanır, ölçeklenebilirlik, maliyet etkinlik ve azaltılmış altyapı yönetimi sağlar.

IronWord kullanarak AWS Lambda üzerinde Word belge görevlerini otomatikleştirebilir miyim?

Evet, AWS Lambda fonksiyonları içinde IronWord kullanarak oluşturma, değiştirme ve dönüştürme gibi çeşitli Word belge görevlerini otomatikleştirebilirsiniz.

IronWord ile AWS Lambda üzerinde büyük Word belgelerini işlemek mümkün müdür?

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 üzerinde 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şlemleri yerine getirebilir.

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

IronWord'u AWS Lambda'ya dağıtmadan önce, bir AWS hesabınızın olduğundan, AWS Lambda kurulumu hakkında bilgi sahibi olduğunuzdan ve gerekli IAM rolleri ve izinlerinin yapılandırıldığından emin olun.

IronWord, AWS Lambda'da güncellemeleri ve bakımı nasıl yönetir?

IronWord düzenli olarak güncellenir ve uyumluluk ve performans iyileştirmeleri sağlanır. AWS Lambda ortamında, IronWord'ün en son sürümüyle dağıtım paketini kolayca güncelleyerek optimal işlevselliği koruyabilirsiniz.

IronWord'u AWS Lambda ile kullanmak için hangi destekler mevcuttur?

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

Kye Stuart
Teknik Yazar

Kye Stuart, Iron Software'de kodlama tutkusu ve yazma becerisini birleştirir. Yoobee Koleji'nde yazılım dağıtımı üzerine eğitim almış ve şimdi karmaşık teknoloji kavramlarını net eğitim içeriklerine dönüştürmektedir. Kye, yaşam boyu öğrenmeyi önemser ve yeni teknoloji zorlukları...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 39,467 | Sürüm: 2026.4 just released
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronWord
bir örnek çalıştır verilerinizin bir Word belgesine dönüştüğünü izleyin.