首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制AWS Lambda源IP

控制AWS Lambda源IP
EN

Stack Overflow用户
提问于 2018-10-15 14:52:08
回答 1查看 3K关注 0票数 1

我有一个简单的Lambda函数,它的工作是使HTTP到达某个服务器。

我需要同时运行多个函数的副本(数百个),,并且我希望为来自每个Lambda的每个HTTP提供一个不同的源IP地址

我的问题:

  1. 如何确保Lambda函数的每个“副本”都有自己的IP地址?
  2. 如何使用boto调用来告诉AWS我需要我的Lambda的N个并发副本?我正在查看这里,但找不到设置并发副本数量的参数。

谢谢

阿维沙伊

至于问题2,我使用以下代码来调用Lambda函数的N个并发副本。

代码语言:javascript
复制
 import boto3, json
 from concurrent.futures import ThreadPoolExecutor

 N = 5
 unique_ips = set()

 lambda_client = boto3.client('lambda', region_name='us-west-2')


 def _lambda_caller(idx):
     test_event = dict(idx=idx)
     res = lambda_client.invoke(
        FunctionName='SimpleHTTPGetter',
        InvocationType='RequestResponse',
        Payload=json.dumps(test_event),
     )
     data = json.loads(res['Payload']._raw_stream.data)
     print('Thread {} is done'.format(idx))
     unique_ips.add(data['body'])

 with ThreadPoolExecutor(max_workers=N) as executor:
     for i in range(0,N):
         future = executor.submit(_lambda_caller,i)
     executor.shutdown()
    print('Done')

我的Lambda代码(简写)

代码语言:javascript
复制
import json
import socket    

def lambda_handler(event, context):
    print('-- HTTP Client started')
    hostname = socket.gethostname()    
    ip = socket.gethostbyname(hostname) 
    print('My IP address is {}:'.format(ip))
    return {
        "statusCode": 200,
        "body": ip
    }
EN

回答 1

Stack Overflow用户

发布于 2018-10-17 16:53:15

您需要创建一个VPC,确保您附加了一个允许访问internet的子网。然后将安全策略附加到您的lambda上。一步一步地在这里:https://medium.com/@philippholly/aws-lambda-enable-outgoing-internet-access-within-vpc-8dd250e11e12

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52819436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档