IronWord'u AWS Lambda Üzerinde Nasıl Kullanılır
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.
AWS Lambda'da IronWord Nasıl Kullanılır
- IronWord'ü indirip projenize ekleyin
- Visual Studio kullanarak bir AWS Lambda projesi oluşturun
- FunctionHandler kodunu Word belgeleri oluşturacak şekilde değiştirin
- Projeyi bir Docker konteyneri ile yapılandırın ve dağıtın
- Lambda işlevini çağırın ve S3 üzerindeki çıktı dosyalarını kontrol edin
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
IronWord'u AWS ile Entegre Etme
Bir AWS Lambda Projesi Oluşturma
Visual Studio kullanarak kapsüllenmiş bir AWS Lambda projesi oluşturun:
- Visual Studio için AWS Toolkit'i kurun
- AWS Lambda Projesi (.NET Core - C#) seçin
- .NET 8 (Container Image) şablonunu seçin ve kurulumu tamamlayın
- 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
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.

