AWS SAM Lambda授权者互联网访问

问题描述

只需添加到aws sam cli hello世界示例,然后尝试添加lambda授权者:

MyAuthFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: ./python
    Handler: auth/authorizer.lambda_handler
    Runtime: python3.8

我的lambda需要从租户那里获取公钥,因此我需要外部的get呼叫来获取它:

def lambda_handler(event,context):
  ...
  print("getting pub key from",'https://%s/pem' % os.environ['AUTH_DOMAIN'])
  pub_key = requests.get('https://%s/pem' % os.environ['AUTH_DOMAIN'])
  ... 

每次我碰到lambda都会超时:

Function 'MyAuthFunction' timed out after 3 seconds

在这里想念什么吗?我觉得自己的Lambda无法访问互联网

解决方法

您应该将Timeout的时间从默认3秒增加到函数正常运行所需的时间(最多15分钟)。

例如:

MyAuthFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: ./python
    Handler: auth/authorizer.lambda_handler
    Runtime: python3.8
    Timeout: 60 # one minute