无法连接到S3从LAMBDA / Python的/ Boto3 VPC时启用

问题描述 投票:0回答:1

我在这,如果我离开VPC禁用运行良好拉姆达一个非常简单的Python功能。

import json
import boto3
import botocore

    def lambda_handler(event, context):

    s3 = boto3.client('s3', 'us-east-1', config=botocore.config.Config(s3={'addressing_style':'path'}))
    keys = []
    resp = s3.list_objects_v2(Bucket='[BUCKET_NAME]')
    for obj in resp['Contents']:
        print(obj['Key'])

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

当VPC不断超时启用S3连接。

我经历了许多文件,教程,论坛,线程和堆栈溢出的贴子了,但没有人帮助我。

我的网络ACL有0.0.0.0/0映射端口80,443和5439(红移)。

我唯一的安全组具有0.0.0.0/0映射端口80,443和5439(红移)。

我只配置了一个VPC。

我有1 NAT网关配置。

我有1 Internet网关配置。

我在VPC 6个子网:

  • 子网A和B点到主路由表中。
  • 子网C和d点的“lambda_rt_table_gateway”路由表中。
  • 子网E和F点到“lambda_rt_table_nat”路由表。

我在VPC 2个端点:

  • 端点VPCE-A是为服务“com.amazonaws.us - 东 - 1.s3”定义,并且被映射到所有3个路由表。
  • 端点VPCE-B是服务“com.amazonaws.us - 东 - 1.dynamodb”定义,并且被映射到所有3个路由表。

最后,我有3个路由表:

  • 主路由表有以下途径: 172.31.0.0/1 - >本地 PL-02cd2c6b(com.amazonaws.us - 东 - 1.dynamodb,52.94.0.0/22,52.119.224.0/20) - > vpce-07a6eb423bbbea151 PL-63a5400a(com.amazonaws.us - 东 - 1.s3,54.231.0.0/17,52.216.0.0/15) - > vpce-0fd10c890bb176b5a 0.0.0.0/0 - > IGW-04b6aa7c
  • 在“lambda_rt_table_gateway”路由表具有相同的路由作为主。
  • 该“lambda_rt_table_nat”路由表中有相同的路线以及除了最后一项,它是 0.0.0.0/0 - > NAT-0a5c0a76e3c12c42f

我敢肯定这是一些简单的我失踪。请帮忙。

非常感谢。

amazon-web-services amazon-s3 aws-lambda amazon-vpc
1个回答
2
投票

你有很多东西配置!我不知道有多少是想的一部分得到这种具体情况定,或者是否有东西,像NAT网关,端点VPC等其他需求

最简单的设置,以使VPC-LAMBDA连接函数来调用到互联网(例如作出API调用到Amazon S3)是:

  • 添加NAT网关到公共子网
  • 安装lambda函数到专用子网
  • 设置路由的专用子网使用NAT网关的0.0.0.0/0

这是足够的VPC-LAMBDA连接功能访问互联网。

© www.soinside.com 2019 - 2024. All rights reserved.