小编Jef*_*Wen的帖子

在 Jest 中,如何模拟具有依赖项的 TypeScript 类?

考虑到这个相对人为的类从 Elasticsearch(或任何与此相关的数据存储)获取一条记录:

export default class UserRepoImpl implements UserRepo {
  constructor(private readonly esClient: ElasticsearchClient) {}

  public async getUser(id: string): Promise<User> {
    const response = await this.esClient.request('GET', `/users/_doc/${id}`);

    return response._source;
  }
}

Run Code Online (Sandbox Code Playgroud)

如何编写一个测试来UserRepoImpl为我实例化 a 但插入一个模拟的 ElasticsearchClient作为构造函数的参数?

typescript jestjs ts-jest

5
推荐指数
1
解决办法
1万
查看次数

您如何从 CFN 资源“依赖”一个 Lambda 函数?

在无服务器中,我正在创建一个AWS::Lambda::PermissionCFN 资源,它允许 Cognito 调用自定义消息 Lambda 处理程序

AWS::Lambda::Permission取决于 lambda。如何确保首先创建 lambda?

我已经尝试向CFN 资源添加一个DependsOn属性,但AWS::Lambda::Permission没有成功。

下面是我的 CFN 资源,它尝试向 Cognito 添加权限以调用 lambda:

UserPoolLambdaInvokePermission:
  Type: AWS::Lambda::Permission
  Properties:
    Action: lambda:invokeFunction
    Principal: cognito-idp.amazonaws.com
    FunctionName: arn:aws:lambda:${self:provider.region}:#{AWS::AccountId}:function:${self:service}-${self:provider.stage}-cognitoCustomMessage
    SourceArn: arn:aws:cognito-idp:${self:provider.region}:#{AWS::AccountId}:userpool/${self:provider.environment.USER_POOL_ID}
Run Code Online (Sandbox Code Playgroud)

这是我的 lambda 在我的 lambda 中的样子serverless.yml

cognitoCustomMessage:
  handler: src/main/lambdas/users_handler.cognitoCustomMessage
Run Code Online (Sandbox Code Playgroud)

这是我的 lambda 在非常基本的层面上所做的:

cognitoCustomMessage(event, next) {
  if (event.triggerSource === 'CustomMessage_ForgotPassword') {
    // do stuff
  }
  return next(null, event);
}
Run Code Online (Sandbox Code Playgroud)

我从上面得到的错误是:

发生错误:CognitoCustomMessageLambdaFunction - 找不到函数:arn:aws:lambda:us-west-2:1234567890:my-service-dev-cognitoCustomMessage(服务:AWSLambdaInternal;状态代码:404;错误代码:ResourceNotFoundException;请求 ID:e2a98525 -5090-4d0f-a1f5-20610474f93b)。

如果我添加一个DependsOn

UserPoolLambdaInvokePermission:
  Type: AWS::Lambda::Permission
  DependsOn: …
Run Code Online (Sandbox Code Playgroud)

aws-cloudformation amazon-cognito aws-lambda serverless-framework

4
推荐指数
2
解决办法
2327
查看次数

AWS - ELB 可用区 + VPC 最佳实践?

设置ELB时,它会说以下内容:

您必须从至少两个可用区中指定子网,以提高负载均衡器的可用性。

我目前有两个 VPC:

  1. 网络VPC
    1. public-subnet-us-east-1a
    2. private-subnet-us-east-1b
  2. 数据库VPC
    1. public-subnet-us-east-1a
    2. private-subnet-us-east-1b

ELB 仅适用于 WebVPC(为 Web 流量提供服务)。我目前每个 VPC 只有一个公共子网和一个私有子网,这意味着我只能从我的 WebVPC 为 ELB 提供一个公共子网。

这是否意味着拥有至少两个公共子网和至少两个私有子网是最佳实践?

amazon-web-services amazon-elb amazon-vpc

2
推荐指数
1
解决办法
2682
查看次数