IronWord'u AWS Lambda'da Nasıl Kullanılır
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.
IronWord'u AWS Lambda'da Nasıl Kullanılır
- IronWord'u indir ve projenize ekleyin
- Visual Studio kullanarak bir AWS Lambda projesi oluşturun
- Word dokümanlari oluşturmak icin FunctionHandler kodunu değiştirin
- Docker kapsulunu kullanarak projeyi yapılandirin ve dağıtin
- Lambda fonksiyonunu calistirin ve S3 uzerindeki cikis dosyalarini kontrol edin
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
IronWord'u AWS ile Entegre Etmek
AWS Lambda Projesi Oluşturma
Konteynerize AWS Lambda projesi oluşturmak icin Visual Studio'yu kullanin:
- Visual Studio icin AWS Toolkit'i yukleyin
- AWS Lambda Projesini secin (.NET Core - C#)
- .NET 8 (Konteyner Gorseli) taslagini secin ve kurulumu tamamlayin
- 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
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.

