如何从 VPC 中的 Lambda 实例连接到 DynamoDB?

2 分钟阅读
0

我想将 Amazon DynamoDB 与我的 AWS Lambda 实例集成到 Amazon Virtual Private Cloud (Amazon VPC) 中。

解决方法

先决条件:

将 Lambda 连接到 DynamoDB

完成以下步骤:

  1. 打开 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 官方
AWS 官方已更新 2 个月前