跳至內容

如何從 VPC 中的 Lambda 執行個體連線到 DynamoDB?

2 分的閱讀內容
0

我想在 Amazon Virtual Private Cloud (Amazon VPC) 中,將 Amazon DynamoDB 與我的 AWS Lambda 執行個體整合。

解決方法

先決條件:

將 Lambda 連線到 DynamoDB

請完成以下步驟:

  1. 開啟 Lambda console (Lambda 主控台)。
  2. 在導覽窗格中,選擇 Functions (函式)。
  3. 選擇 Create function (建立函式)。
  4. 選擇 Author from scratch (從頭開始撰寫)。
  5. Basic information (基本資訊),設定以下項目:
    Function name (函式名稱),輸入函式名稱。
    Runtime (執行時期),選擇執行時期選項。在此範例中,使用 Python 3.12
    Architecture (架構),選擇 x86_64
  6. Advanced settings (進階設定) 下,設定以下項目:
    選取 Enable VPC (啟用 VPC),然後選取您的 VPC。
    Subnets (子網路),僅選取私有子網路。
    Security groups (安全群組),選取預設安全群組。
  7. 選擇 Create function (建立函式)。
  8. Function details (函式詳細資訊) 頁面的 Code source (程式碼來源) 下,輸入以下程式碼:
    import json
    import boto3
    
    client = boto3.client('dynamodb')
    
    def lambda_handler(event, context):
        response = client.get_item(
            TableName='Music',
            Key={
                'Artist': {
                    'S': 'No One You Know',
                },
                'SongTitle': {
                    'S': 'Call Me Today',
                },
            }
        )
    
        print(response)
    
        return {
            'statusCode': 200,
            'body': json.dumps('Success!')
        }
    **注意:**請將 TableNameKey 替換為您的值。
  9. 選擇 Deploy (部署)。
  10. 測試您的函式
    **注意:**若要測試函式,Lambda 的 AWS Identity and Access Management (IAM) 角色必須具備適當的權限。如需更多資訊,請參閱在 AWS Lambda 中管理權限

其他疑難排解

若要對連接到 VPC 的 Lambda 函式進行疑難排解,請採取以下動作:

  • 移除 Lambda 函式與公共子網路的任何連線。如果您連線到公共子網路,流量會嘗試通過公共子網路,並可能導致間歇性逾時問題。

  • 請確定您的 DynamoDB 閘道端點已正確設定

  • 更新與 Lambda 函式關聯的私有子網路,讓其透過 DynamoDB VPC 閘道端點路由傳送。這些端點具有 AWS 受管首碼清單,可簡化 Lambda 與 DynamoDB 之間安全群組設定的組態。
    私有子網路路由表範例:

    Route Table: rtb-12345
    Destination        Gateway     Status
    10.0.0.0/16         local      active
    pl-1234           vpce-1234    active
  • 更新 Lambda 安全群組規則以允許所有流量

相關資訊

使用主控台建立 Lambda 函式

使用 Amazon VPC 端點存取 DynamoDB

網路與 VPC 組態

AWS 官方已更新 2 年前