小编xtr*_*tra的帖子

AWS 在 S3 存储桶中查找最大文件大小

我想找到 S3 存储桶中最大文件的大小和名称。

目前我有:

aws s3api list-objects --bucket bucket-name --output json --query "[max(Contents[].Size), length(Contents[])]"
Run Code Online (Sandbox Code Playgroud)

这不允许我看到文件的名称。

我还有一个命令来列出存储桶上所有文件的详细信息:

aws s3api list-object-versions --bucket bucket-name --query 'Versions[*].Size'
Run Code Online (Sandbox Code Playgroud)

什么命令会给我 S3 存储桶上最大文件的名称和大小?

amazon-s3 amazon-web-services

9
推荐指数
2
解决办法
5724
查看次数

AWS Lambda 和 Kinesis 客户端库 (KCL)

我怎么会发现与 AWS Lambda 一起使用的 KCL 示例如此之少。 https://docs.aws.amazon.com/streams/latest/dev/developing-consumers-with-kcl.html

它确实提供了一个很好的实现来跟踪您在流中的位置(检查点)。

我想使用 KCL 作为消费者。我的设置是一个包含多个分片的流。在每个分片上,一个 Lambda 正在消耗。我想在 Lambda 中使用 KCL 来跟踪迭代器在分片上的位置。

为什么我找不到将 KCL 与 Lambda 结合使用的人。这里有什么问题?

amazon-kinesis aws-lambda

7
推荐指数
2
解决办法
2307
查看次数

使用基于 swagger 文件的 terraform 部署 api 网关

我想用 terraform 部署我的 api 网关,使用 swagger 文件来描述我的 api。swagger.yaml 看起来像这样:

swagger: '2.0'
info:
  version: '1.0'
  title: "CodingTips"
schemes:
  - https
paths:
  "/api":
    get:
      description: "Get coding tips"
      produces:
        - application/json
      x-amazon-apigateway-integration: ${apiIntegration}
      responses:
        '200':
          description: "Codingtips were successfully requested"
Run Code Online (Sandbox Code Playgroud)

Terraform 给了我一个BadRequestException说法The REST API doesn't contain any methods

因此,我认为它正在尝试部署 REST api,而无需等待创建此 api 的方法和集成。

这让我想到了必须添加DEPENDS_ONaws_api_gateway_deployment. 但是我不知道该依赖什么,因为我没有使用 swagger 定义方法和集成资源。它们应该从 swagger 定义中自动扣除。

我的思考方向是否正确,如果是,我必须aws_api_gateway_deployment依靠什么?或者我尝试部署这个 api 的方式有什么其他问题。

我的apigateway.tf文件看起来像这样:

resource "aws_api_gateway_rest_api" "codingtips-api-gateway" {
  name        = "ServerlessExample" …
Run Code Online (Sandbox Code Playgroud)

swagger terraform aws-api-gateway

7
推荐指数
1
解决办法
7795
查看次数

Spring boot 2 - Actuator端点,其中是/ beans端点

在spring boot 2应用程序中,我正在尝试访问执行器端点/ bean,就像之前在Spring boot 1.5.*应用程序中所做的那样.但我无能为力.此外,我没有看到在log.INFO中创建端点.

我的pom.xml包含:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

在application.properties中我只有关于数据库连接的信息:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/somedb
spring.datasource.username=someuser
spring.datasource.password=somepass
Run Code Online (Sandbox Code Playgroud)

作为映射的端点,我在信息日志中看到:

/actuator/health
/actuator/info
/actuator
Run Code Online (Sandbox Code Playgroud)

应用程序正在运行但未创建/ application/beans端点.

为什么我的/ beans或/ application/beans端点没有生成,我应该更改它以使其存在?

java spring spring-boot

6
推荐指数
1
解决办法
2679
查看次数

Cypress.io 在自定义登录命令中发出异步请求

我想配置一个自定义login命令,在其中我必须进行一个返回承诺的登录调用。

commands.js:

Cypress.Commands.add("login", () => {
  AuthLib.signIn(username, password).then((data) => {
    cy.setLocalStorage("accessToken", data.accessToken);
  });
Run Code Online (Sandbox Code Playgroud)

AuthLib.signIn()返回一个承诺。

然后我想在块中使用这个命令before

  before(() => {
    cy.login();
    cy.saveLocalStorage();
  });
Run Code Online (Sandbox Code Playgroud)

我注意到承诺没有得到解决。一个“hacky”修复方法是在和cy.wait(4000)之间添加。但这使得我的测试取决于身份验证服务器的加载时间login()saveLocalStorage()

我发现了这个“相关”问题:Cypress.io 如何处理异步代码,其中引用了https://www.npmjs.com/package/cypress-promise 。但这个库不能用于beforebeforeEach

我如何等待返回的承诺/确保在执行之前解决login()承诺?login()cy.saveLocalStorage()

更新

我添加了哪些有效和无效的示例:https://github.com/Nxtra/Cypress-Amplify-Auth-Example/blob/main/cypress/support/commands.js

解决方案是从以下开始cy.then()

Cypress.Commands.add("login", () => {
  cy.then(() => AuthLib.signIn(username, password)).then((data) => {
    cy.setLocalStorage("accessToken", data.accessToken);
  });
Run Code Online (Sandbox Code Playgroud)

javascript testing promise async-await cypress

6
推荐指数
1
解决办法
3555
查看次数

使用docker compose运行Gatsby

我正在尝试通过Docker Compose运行Gatsby。据我了解,Gatsby站点正在我的docker容器中运行。
我将容器的端口8000映射到我的本地主机上的端口8000。但是,在浏览时,localhost:8000我无法获得我的盖茨比站点。

我使用以下内容Dockerfile来构建图像docker build -t nxtra/gatsby .

FROM node:8.12.0-alpine

WORKDIR /project

COPY ./package.json /project/package.json
COPY ./.entrypoint/entrypoint.sh /entrypoint.sh

RUN apk update \
  && apk add bash \
  && chmod +x /entrypoint.sh \
  && npm set progress=false \
  && npm install -g yarn gatsby-cli

EXPOSE 8000

ENTRYPOINT [ "/entrypoint.sh" ]
Run Code Online (Sandbox Code Playgroud)

entrypoints.sh 包含:

#!/bin/bash

yarn install
gatsby develop
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml与 docker-compose up

version: '3.7'

services:
  gatsby:
    image: nxtra/gatsby
    ports:
    - "8000:8000"
    volumes:
    - ./:/project
    tty: true
Run Code Online (Sandbox Code Playgroud)

docker …

docker docker-compose gatsby

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

将EntrySet流收集到LinkedHashMap

我想收集流到LinkedHashMap<String, Object>.

我有一个JSON存储的资源LinkedHashMap<String, Object> resources.然后我JSON通过流式传输EntrySet此地图来过滤掉元素.目前我正在收集流的元素到常规HashMap.但在此之后我将其他元素添加到地图中.我希望这些元素处于插入的顺序中.

final List<String> keys = Arrays.asList("status", "createdDate");

Map<String, Object> result = resources.entrySet()
        .stream()
        .filter(e -> keys.contains(e.getKey()))
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

result.put("date", "someDate");
return result;
Run Code Online (Sandbox Code Playgroud)

这就是为什么我想收集流到一个LinkedHashMap<String, Object>.我怎样才能做到这一点?

java hashmap linkedhashmap java-stream

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

使用stream编写函数数组

我想为一个函数组合一个函数数组.给定多个函数,该方法应返回一个函数,该函数是输入函数的组合.

一种方法是

public static <T> Function<T,T> composeAll(Function<T,T>... functions){
    Function<T,T> res = Function.identity();
    for(Function<T,T> f : functions){
       res = res.compose(f);
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

我希望通过首先创建函数数组的流来实现相同的结果.但我无法弄清楚如何做到这一点

public static <T> Function<T,T> composeAll2 (Function<T,T>... functions){
    Function<T,T> res = Function.identity();
    Arrays.stream(functions). ??? 
    return res;
}
Run Code Online (Sandbox Code Playgroud)

我现在应该在最后一个提出问号的方法中输入什么代码?

java function java-8 java-stream

3
推荐指数
2
解决办法
471
查看次数

如何从另一个 OpenAPI 文件导入组件?

您可以导入在其他 OpenAPI 文件中定义的组件吗?
假设我有两个 openAPI 文件: openAPI.yamlotherOpenAPI.yaml. 我openAPI.yml想使用myItem中定义的组件otherOpenAPI.yaml

我可以做一些类似的事情吗: $ref: './otherOpenAPI.yaml/components/myItem

swagger openapi

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

通过 logback.xml 进行 Logback 结构化日志记录格式时间戳

我想格式化结构化日志中的时间戳。目前我定义logback.xml如下:

<configuration>
<appender name="json" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <fieldNames>
            <timestamp>timestamp</timestamp>
            <logger>[ignore]</logger>
            <version>[ignore]</version>
            <levelValue>[ignore]</levelValue>
            <stackTrace>exception</stackTrace>
        </fieldNames>
    </encoder>
</appender>

<root name="jsonLogger" level="DEBUG">
    <appender-ref ref="json"/>
</root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

使用<fieldNames>我可以更改时间戳字段的名称。

如何通过配置更改时间戳的模式logback.xml

java logback structured-logging

0
推荐指数
1
解决办法
6527
查看次数