4

我有使用 serverless-http 创建快速服务器的无服务器 lambda 函数 (AWS)。我用来验证请求的自定义授权器在成功运行后超时。以下是根据 CloudWatch 日志返回的策略:

2019-02-27T12:06:49.000Z 7b138c38-b316-4ae0-97ad-36242833cefa 策略 [ { 操作:'execute-api:Invoke',效果:'允许',资源:'arn:aws:execute-api:eu -west-1:xxxx:xxxx/dev/GET/data/age' } ]

在此之后我得到这个日志:

2019-02-27T12:06:54.778Z 7b138c38-b316-4ae0-97ad-36242833cefa 任务在 6.01 秒后超时

我应该在 auth 之后执行的函数甚至没有被调用。我正在使用 async/await 来针对标头中的授权令牌获取业务。

这是我的授权人代码:

if (business) {
  console.log(
    "policy",
    generatePolicy(business, "Allow", event.methodArn).policyDocument.Statement
  );

  callback(null, generatePolicy(business, "Allow", event.methodArn));
  return;
} else {
  callback(null, generatePolicy(null, "Deny", event.methodArn));
  return;
}

generatePolicy功能:

const generatePolicy = function(principalId, effect, resource) {
  const authResponse = {};
  authResponse.principalId = "Business";

if (effect && resource) {
  const policyDocument = {};
  policyDocument.Version = "2012-10-17";
  policyDocument.Statement = [];
  const statementOne = {};
  statementOne.Action = "execute-api:Invoke";
  statementOne.Effect = effect;
  statementOne.Resource = resource;
  policyDocument.Statement[0] = statementOne;
  authResponse.policyDocument = policyDocument;
  authResponse.context = {
  business: principalId
  };
}

 return authResponse;
};

serverless.yml

myData:
  handler: functions/myData.handler
  events:
    - http:
        path: /data/{proxy+}
        method: ANY
        cors: true
        authorizer: companyAuth
companyAuth:
  handler: middleware/auth.company
  cors: true

serverless-offline注意:如果我使用插件在本地运行它,同样的工作。

4

1 回答 1

0

查看问题,您很可能使用无服务器进行部署,并且您的任何功能都使用 VPC 执行角色,并且该规则必须也已应用于您的Authorizer功能。现在,如果您没有为 vpc 设置出站规则/公共子网来获取 http 调用,您需要明确地执行其中任何一个

  1. 访问 lambda 函数。在 VPC 下删除所有子网条目或选择NONE
  2. 使用 NAT/公共子网为您的 vpc 设置出站代理。如果您希望该功能在 vpc 下启动。教程链接如下。我将引用一些重要的台词。

公共子网中的实例可以将出站流量直接发送到 Internet,而私有子网中的实例则不能。相反,私有子网中的实例可以使用位于公共子网中的网络地址转换 (NAT) 网关访问 Internet。数据库服务器可以使用 NAT 网关连接到 Internet 以进行软件更新,但 Internet 无法与数据库服务器建立连接。

遵循此https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html

于 2020-08-15T10:27:22.113 回答