Como usar o IronWord no AWS Lambda

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

Este artigo fornece um guia completo para configurar uma função AWS Lambda usando o IronWord. Você aprenderá como configurar o IronWord para criar e manipular documentos do Word em um ambiente AWS Lambda.

Instalação

Como este exemplo irá ler/gravar documentos do Word em um bucket do S3, o pacote NuGet AWSSDK.S3 é necessário.

Utilizando o pacote ZIP do IronWord no AWS Lambda

Ao usar o pacote ZIP do IronWord , é importante definir um caminho de implantação temporário, pois o AWS Lambda possui um sistema de arquivos somente leitura, com exceção da pasta /tmp/. Você precisa configurar o IronWord para usar esta pasta para seus arquivos de tempo de execução:

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

Integrando o IronWord com a AWS

Criar um projeto AWS Lambda

Utilize o Visual Studio para criar um projeto AWS Lambda em contêiner:

  1. Instale o AWS Toolkit para Visual Studio.
  2. Selecione o projeto AWS Lambda (.NET Core - C#)
  3. Selecione o modelo .NET 8 (Imagem de Contêiner) e conclua a configuração.
  4. Selecione a imagem do contêiner como o tipo de implantação.

Adicionar dependências de pacotes

Adicione os pacotes IronWord e AWSSDK.S3 ao seu projeto via NuGet. A biblioteca IronWord funciona perfeitamente no AWS Lambda com a configuração correta. Execute o seguinte comando para instalar o IronWord em seu projeto AWS sem problemas:

Install-Package IronWord

Atualize o Dockerfile do seu projeto para usar a imagem base do Lambda .NET 8 e copie os artefatos de compilação:

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

EXECUTE dnf update -y

DIRETÓRIO DE TRABALHO /var/tarefa

COPIAR "bin/Release/lambda-publish".

Modifique o código do manipulador de funções.

Abaixo está um exemplo de função Lambda que cria um documento Word simples, salva-o como um arquivo .docx e o carrega para um bucket S3.

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);
    }
}
$vbLabelText   $csharpLabel

Aumentar a memória e o tempo limite

Como o processamento de documentos pode consumir muita memória, aumente a memória da sua função Lambda para pelo menos 512 MB e o tempo limite para 300 segundos no arquivo aws-lambda-tools-defaults.json:

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

Se você se deparar com erros como "Runtime exited with error: signal: killed", aumente a memória ou otimize seu código.

Publicar

Para publicar sua função Lambda:

  • Clique com o botão direito do mouse no seu projeto no Visual Studio.
  • Selecione Publicar no AWS Lambda... Siga o assistente e configure as definições conforme necessário.

Experimente!

Invoque a função Lambda através do Console do AWS Lambda ou do Visual Studio. Após a execução, verifique seu bucket S3 para encontrar o documento do Word recém-criado.

Perguntas frequentes

O que é o IronWord e como ele pode aprimorar o processamento de documentos do Word no AWS Lambda?

O IronWord é uma ferramenta poderosa para processar documentos do Word e, quando integrado ao AWS Lambda, oferece gerenciamento de documentos escalável e eficiente, permitindo automatizar e otimizar tarefas relacionadas a documentos do Word.

Como faço para integrar o IronWord com o AWS Lambda?

Para integrar o IronWord com o AWS Lambda, você precisa configurar o pacote IronWord em seu ambiente AWS Lambda, configurar as permissões necessárias e implantar o código da sua função que utiliza os recursos do IronWord para processamento de documentos.

Quais são os benefícios de usar o IronWord no AWS Lambda?

Utilizar o IronWord no AWS Lambda permite aproveitar a arquitetura sem servidor para o processamento de documentos do Word, proporcionando escalabilidade, custo-benefício e gerenciamento de infraestrutura reduzido.

Posso automatizar tarefas em documentos do Word usando o IronWord no AWS Lambda?

Sim, você pode automatizar várias tarefas em documentos do Word, como criação, modificação e conversão, usando o IronWord em funções do AWS Lambda.

É possível processar documentos Word extensos com o IronWord no AWS Lambda?

O IronWord foi projetado para lidar com eficiência com documentos Word grandes e, quando usado com o AWS Lambda, pode processar documentos de forma escalável, dependendo da configuração do Lambda.

Que tipo de operações em documentos do Word o IronWord pode executar no AWS Lambda?

O IronWord pode executar diversas operações em documentos do Word, incluindo edição, formatação, extração de texto e conversão de documentos para diferentes formatos, tudo dentro de um ambiente AWS Lambda.

Há algum pré-requisito para implantar o IronWord no AWS Lambda?

Antes de implantar o IronWord no AWS Lambda, certifique-se de ter uma conta da AWS, estar familiarizado com a configuração do AWS Lambda e ter configurado todas as funções e permissões do IAM necessárias.

Como o IronWord lida com atualizações e manutenção no AWS Lambda?

O IronWord é atualizado regularmente para garantir compatibilidade e melhorias de desempenho. Em um ambiente AWS Lambda, você pode atualizar facilmente seu pacote de implantação com a versão mais recente do IronWord para manter a funcionalidade ideal.

Que tipo de suporte está disponível para usar o IronWord com o AWS Lambda?

A Iron Software fornece documentação e suporte para auxiliar os usuários na integração e utilização do IronWord no AWS Lambda, garantindo que você possa aproveitar efetivamente seus recursos para suas necessidades de processamento de documentos.

Kye Stuart
Redator Técnico

Kye Stuart une sua paixão por programação e sua habilidade de escrita na Iron Software. Formado em implantação de software pela Yoobee College, ele agora transforma conceitos tecnológicos complexos em conteúdo educacional claro. Kye valoriza o aprendizado contínuo e abraça novos desafios ...

Leia mais
Pronto para começar?
Nuget Downloads 35,581 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronWord
executar um exemplo Veja seus dados se transformarem em um documento do Word.