

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立AWS Lambda函式
<a name="lambda"></a>

您可以從AWS Lambda函數。以下説明顯示如何在 Python 中建立 Lambda 函數，以調用[DetectDocumentText](API_DetectDocumentText.md)。它會返回[Block](API_Block.md)物件。要運行此示例，您需要一個包含 PNG 或 JPEG 格式文檔的 Amazon S3 存儲桶。若要建立函數，您可以使用主控台。

有關使用 Lambda 函數大規模處理文檔的示例，請參閲[使用 Amazon Textract 進行大規模文檔處理](https://github.com/aws-samples/amazon-textract-serverless-large-scale-document-processing)。

## 要從 Lambda 函數調用 DetectDocumentText 操作，請執行以下操作：
<a name="lambda-procedure"></a><a name="create-deployment-package"></a>

**步驟 1：建立 Lambda 部署套件**

1. 開啟命令視窗。

1. 輸入以下命令以最新版的AWS開發套件。

   ```
   pip install boto3 --target python/.
   zip boto3-layer.zip -r python/
   ```<a name="create-function"></a>

**步驟 2：建立 Lambda 函數**

1. 請登入 AWS 管理主控台，並開啟位於 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 的 AWS Lambda 主控台。

1. 選擇 **Create function** (建立函數)。

1. 指定下列內容。
   + 選擇 **Author from scratch (從頭開始撰寫)**。
   + 針對 **Function name (函數名稱)**，輸入名稱。
   + 適用於**執行時間**，選擇**Python 3.7**或者**Python 3.6**。
   + 適用於**選擇或建立執行角色**，選擇**建立具備基本 Lambda 許可的新角色**。

1. 選擇**建立函數**建立 Lambda 函數。

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選取**角色**。

1. 從資源列表中選擇 Lambda 為您建立的 IAM 角色。角色名稱以 Lambda 函數名稱開頭。

1. 選擇**Permissions (許可)**選項卡，然後選擇**連接政策**。

1. 選擇亞 AmazonTextractFullAccess 和 AmazonS3ReadOnlyAccess 政策。

1. 選擇**連接政策**。

如需詳細資訊，請參閱「」[使用主控台建立 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html)

**步驟 3：建立和添加圖層**

1. 於 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 開啟 AWS Lambda 主控台。

1. 在導覽窗格中，選擇 **Layers** (層)。

1. 選擇 **Create layer (建立 Layer)**。

1. 適用於**名稱**中，輸入名稱。

1. 在 **Description (描述)** 中，輸入描述。

1. 適用於**程式碼輸入類型**，選擇**上傳 .zip 檔案**，然後選取**上傳**。

1. 在對話框中，選擇 zip 文件 (boto3-layer.zip)，即您在[步驟 1：建立 Lambda 部署套件](#create-deployment-package)。

1. 適用於**相容的運行時**中，選擇您在[步驟 2：建立 Lambda 函數](#create-function)。

1. 選擇**建立**建立圖層。

1. 選擇導航窗格菜單圖標。

1. 在導覽窗格中，選擇**函數**。

1. 在資源列表中，選擇您在[步驟 2：建立 Lambda 函數](#create-function)。

1. 選擇**組態**並在**設計師**部分中，選擇**圖層**（在你的 Lambda 函數名稱下）。

1. 在 中**圖層**部分中，選擇**新增圖層**。

1. 選擇**從運行時兼容圖層列表中進行選擇**。

1. In**相容的層**中，選取**名稱**和**版本**在步驟 3 中建立的圖層。

1. 選擇 **Add** (新增)。

**步驟 4：將 python 程式碼複製到函數**

1. In**設計師**，選取函數。

1. 在函式程式碼編輯器中，將以下內容添加到**lambda\$1function.py**。更改`bucket`和`document`添加到您的存儲桶和文檔。

   ```
   import json
   import boto3
   
   def lambda_handler(event, context):
   
       bucket="bucket"
       document="document"
       client = boto3.client('textract')
   
   
   
       #process using S3 object
       response = client.detect_document_text(
           Document={'S3Object': {'Bucket': bucket, 'Name': document}})
   
       #Get the text blocks
       blocks=response['Blocks']
       
       return {
           'statusCode': 200,
           'body': json.dumps(blocks)
       }
   ```

1. 選擇**Save**以保存您的 Lambda 函數。

**步驟 5：測試您的 Lambda**

1. 選擇**測試**。

1. 輸入**Event name**。

1. 選擇 **Create (建立)**。

1. 輸出，列表[Block](API_Block.md)對象將顯示在「執行結果」窗格中。

如果AWS Lambda函數返回超時錯誤，則可能導致 Amazon Textract API 操作調用。有關延長超時期限的信息AWS Lambda函數，請參閲[AWS Lambda 功能](https://docs.aws.amazon.com/lambda/latest/dg/resource-model.html)。

有關從您的代碼調用 Lambda 函數的信息，請參閲[呼叫AWS Lambda函數](https://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-functions.html)。