小编Fre*_*001的帖子

无服务器:指定的存储桶不存在

我愚蠢地删除了无服务器项目的s3存储桶.当我现在尝试部署或删除我的应用程序时,我收到此错误:The specified bucket does not exist如何从Serverless重新创建s3存储桶?

lambda serverless-framework serverless-architecture

11
推荐指数
1
解决办法
4807
查看次数

无法执行 HTTP 请求:获取操作花费的时间超过配置的最大时间

我正在 AWS 中运行一个批处理作业,它使用来自 SQS 队列的消息并使用 akka 将它们写入 Kafka 主题。我创建了一个具有以下参数的 Sqs 异步客户端:

private static SqsAsyncClient getSqsAsyncClient(final Config configuration, final String awsRegion) {
    var asyncHttpClientBuilder = NettyNioAsyncHttpClient.builder()
            .maxConcurrency(100)
            .maxPendingConnectionAcquires(10_000)
            .connectionMaxIdleTime(Duration.ofSeconds(60))
            .connectionTimeout(Duration.ofSeconds(30))
            .connectionAcquisitionTimeout(Duration.ofSeconds(30))
            .readTimeout(Duration.ofSeconds(30));

    return SqsAsyncClient.builder()
            .region(Region.of(awsRegion))
            .httpClientBuilder(asyncHttpClientBuilder)
            .endpointOverride(URI.create("https://sqs.us-east-1.amazonaws.com/000000000000")).build();
}

private static SqsSourceSettings getSqsSourceSettings(final Config configuration) {
        final SqsSourceSettings sqsSourceSettings = SqsSourceSettings.create().withCloseOnEmptyReceive(false);
        if (configuration.hasPath(ConfigPaths.SqsSource.MAX_BATCH_SIZE)) {
            sqsSourceSettings.withMaxBatchSize(10);
        }
        if (configuration.hasPath(ConfigPaths.SqsSource.MAX_BUFFER_SIZE)) {
            sqsSourceSettings.withMaxBufferSize(1000);
        }
        if (configuration.hasPath(ConfigPaths.SqsSource.WAIT_TIME_SECS)) {
            sqsSourceSettings.withWaitTime(Duration.of(20, SECONDS));
        }


        return sqsSourceSettings;
    }
Run Code Online (Sandbox Code Playgroud)

但是,在运行批处理作业时,我收到以下 AWS SDK 异常:

software.amazon.awssdk.core.exception.SdkClientException:无法执行 HTTP 请求:获取操作花费的时间超过配置的最长时间。这表明请求在指定的最大时间内无法从池中获取连接。这可能是由于高请求率造成的。

即使我尝试调整此处提到的参数后,异常似乎仍然发生:

请考虑采取以下任一操作来缓解该问题:增加最大连接数、增加获取超时或降低请求速率。增加最大连接数可以增加客户端吞吐量(除非网络接口已被充分利用),但最终可能会开始遇到操作系统对进程使用的文件描述符数量的限制。如果您已充分利用网络接口或无法进一步增加连接计数,则增加获取超时可以为请求在超时之前获取连接提供额外的时间。如果连接不释放,后续请求仍然会超时。如果上述机制无法解决问题,请尝试平滑您的请求,以便大流量突发不会使客户端过载,通过减少需要调用 AWS 的次数或增加发送请求的主机数量来提高效率

以前有人遇到过这个问题吗?

java amazon-sqs amazon-web-services akka netty

10
推荐指数
1
解决办法
8256
查看次数

如何将 aws-sdk-go-v2 与 localstack 结合使用?

我正在尝试从aws-sdk-go迁移到aws-sdk-go-v2。但是,我在本地使用 localstack 来模仿一些 aws 服务,例如 sqs 和 s3。我不确定如何配置新的 sdk 以使用 localstack 端点而不是真实的端点。

例如,在 v1 SDK 中,我可以通过在此处设置端点将其指向 localstack:

session.Must(session.NewSession(&aws.Config{
    Region:   aws.String("us-east-1"),
    Endpoint: aws.String("http://localstack:4566"), 
}))
Run Code Online (Sandbox Code Playgroud)

但是,如何在 v2 SDK 中执行此操作?我想我需要在 中设置一些参数,config但我没有看到任何指定端点的选项。

go amazon-web-services aws-sdk localstack

8
推荐指数
1
解决办法
3769
查看次数

如何使用 AWS golang v2 SDK 配置 S3ForcePathStyle?

我正在使用AWS golang v2 SDK将文件放入 S3 并读取文件。在本地,我使用本地堆栈,因此需要设置 param S3ForcePathStyle。但是,我找不到在配置中设置此参数的位置。

这就是我的配置:

conf, err = config.LoadDefaultConfig(
            context.TODO(),
            config.WithRegion("us-east-1"),
            config.WithEndpointResolver(
                aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {
                    return aws.Endpoint{
                        PartitionID:   "aws",
                        URL:           "http://localstack:4566",
                        SigningRegion: "us-east-1",
                    }, nil
                }),
            ),
        )
Run Code Online (Sandbox Code Playgroud)

我可以从哪里进去S3ForcePathStyle = true

amazon-s3 go amazon-web-services aws-sdk aws-sdk-go

8
推荐指数
1
解决办法
5939
查看次数

如何配置 AWS 网络负载均衡器以使用 Terraform 路由 HTTPS 流量?

我正在尝试使用 API Gateway\xe2\x80\x99s VPC 链接将流量路由到 HTTPS 上的内部 API。\n但是,VPC 链接迫使我将 API\xe2\x80\x99s 负载均衡器从“应用程序”更改为“网络”。

\n\n

据我所知,网络负载均衡器位于第 4 层,因此不知道 HTTPS。

\n\n

我习惯使用第 7 层应用程序负载均衡器。因此,我不确定应该如何在 terraform 中配置或使用网络负载均衡器。

\n\n

以下是我在 Terraform 中配置网络负载均衡器的尝试。\n健康检查失败,我不确定我做错了什么。

\n\n
resource "aws_ecs_service" \xe2\x80\x9capp\xe2\x80\x9d {\n  name = "${var.env}-${var.subenv}-${var.appname}"\n  cluster = "${aws_ecs_cluster.cluster.id}"\n  task_definition = "${aws_ecs_task_definition.app.arn}"\n  desired_count = "${var.desired_app_count}"\n  deployment_minimum_healthy_percent = 50\n  deployment_maximum_percent = 200\n  iam_role = "arn:aws:iam::${var.account}:role/ecsServiceRole"\n\n  load_balancer {\n    target_group_arn = "${aws_lb_target_group.app-lb-tg.arn}"\n    container_name = "${var.env}-${var.subenv}-${var.appname}"\n    container_port = 9000\n  }\n  depends_on = [\n    "aws_lb.app-lb"\n  ]\n}\n\nresource "aws_lb" \xe2\x80\x9capp-lb" {\n  name               = "${var.env}-${var.subenv}-${var.appname}"\n  internal           = false\n  load_balancer_type = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-elb terraform aws-api-gateway terraform-provider-aws

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

oauth 隐式授权与授权代码授权?

我想更好地理解隐式授权流程和授权代码授权流程之间的区别,因为我不确定我目前的理解是否正确。

  1. 前端应用程序主要使用隐式授权流程来验证用户身份吗?
  2. 隐式授权流程是否只需要 client_id、用户名和密码来进行身份验证,换句话说,client_secret 永远不会发送?
  3. 授权码只是一个短暂的令牌吗?
  4. 授权码交换访问令牌后,客户端可以访问用户帐户多长时间?具体来说,如果客户端是长时间运行的脚本,用户每次运行脚本时都需要进行身份验证吗?或者我们是否可以假设在用户授权后,客户端有权在需要时访问用户(除非用户撤销访问),因此它只需要使用客户端凭据进行身份验证?
  5. 使用授权代码流与隐式流相比有什么优势?
  6. 它自己的资源服务器是否需要客户端 ID?

谢谢

authentication oauth oauth-2.0

5
推荐指数
2
解决办法
2484
查看次数

SqsListener 没有为本地堆栈队列运行?

我是 Spring Boot 的新手,并尝试使用 sqs 侦听器在本地堆栈中轮询测试队列。我可以将消息推送到我的本地堆栈队列中。但是,然后我想轮询同一个队列并记录消息的内容。但是,我没有收到 sqs 列表器记录到控制台的任何消息?

应用程序-local.properties

cloud.aws.region=us-east-1
cloud.local.sqs=http://localstack:4576
cloud.local.s3=http://localstack:4572

app.sqs.maxmessages=1
app.sqs.input=http://localstack:4576/queue/test-queue
app.sqs.output=http://localstack:4576/queue/test-queue
Run Code Online (Sandbox Code Playgroud)

应用控制器

@Log4j2
@RestController
public class AppController {

    private AmazonS3 s3;

    private SQSOutput output;

    @Autowired
    public AppController(AmazonS3 s3, SQSOutput output) {

        this.s3 = s3;
        this.output = output;
    }

    @RequestMapping("/send")
    public Map<String, String> sendMessage() {
        output.send("Test Message!");

        Map<String, String> response = new HashMap<>();
        response.put("message", "Message sent!");
        return response;
    }

    @SqsListener(value = "${app.sqs.input}", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
    public void getMessage(String message) {

        log.info("Received message: " + message);
    }

} …
Run Code Online (Sandbox Code Playgroud)

java amazon-sqs spring-boot

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

尝试抓住忽略?

以下代码在db中创建一个新表.我希望它能捕获任何sql错误,并在表已经存在的情况下继续运行.但是,当我执行代码时,如果表已经存在,我会得到预期的异常,但代码在编译期间退出.try catch被忽略了吗?

码:

 (ns app.storage
  (:import com.mchange.v2.c3p0.ComboPooledDataSource
           (clojure.lang ExceptionInfo))
  (:require [clojure.java.jdbc :refer :all]))

(def db {
         :classname   "org.sqlite.JDBC"
         :subprotocol "sqlite"
         :subname     "src/storage/journal.db"
         })

(defn create-db []
  (try
    (db-do-commands db
                    (create-table-ddl :entry
                                      [:id :primary :key]
                                      [:account "varchar(255)"]
                                      [:timestamp "timestamp"]
                                      [:debt "double(9,2)"]
                                      [:credit "double(9,2)"]))

    (catch ExceptionInfo e
      (println e))))

(create-db)
Run Code Online (Sandbox Code Playgroud)

例外:

    Exception in thread "main" java.sql.BatchUpdateException: batch entry 0: [SQLITE_ERROR] SQL error or missing database (table entry already exists), compiling:(app/storage.clj:29:21)
    at clojure.lang.Compiler.load(Compiler.java:7142)
    at clojure.lang.RT.loadResourceScript(RT.java:370)
    at clojure.lang.RT.loadResourceScript(RT.java:361)
    at clojure.lang.RT.load(RT.java:440)
    at clojure.lang.RT.load(RT.java:411)
    at clojure.core$load$fn__5066.invoke(core.clj:5641) …
Run Code Online (Sandbox Code Playgroud)

jdbc clojure

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

如何绑定动态变量?

如何在compojure中绑定动态变量?请参阅下面的示例,这里request-id是为每个api请求生成的唯一uuid.我希望能够访问该请求ID在随后的方法记录等等.我已经使用绑定功能试过,但我仍然无法访问请求IDsome-page/some-method.

handler.clj

(ns some_app.handler
  (:require
    [compojure.api.sweet :refer :all]
    [compojure.route :as route]
    [some_api.some_page :as some-page]))

(def ^:dynamic *request-id*
  nil)

(defn ^:private generate-request-id []
  (str (java.util.UUID/randomUUID)))

(def app
  (binding [*request-id* (generate-request-id)]
    (api
      (context "/api" [] (GET "/some-page" [] (some-page/some-method))))))
Run Code Online (Sandbox Code Playgroud)

一些-page.clj

(ns some_app.some_page
(:require
        [clojure.tools.logging :as log]))

(def some-method []
  (log/info {:request-id *request-id*}))
Run Code Online (Sandbox Code Playgroud)

binding clojure compojure compojure-api

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

如何使用with-redefs模拟对同一函数的多个调用?

我想能够模拟MyFunction然而我需要模拟在MyFunction调用时返回不同的值.

是否可以with-redefs根据函数的调用顺序返回不同的值?

(testing "POST /foo/bar and return ok"
  (with-redefs [->Baz (fn [_]
                    (reify MyProtocol (MyFunction [_] [{:something 1}]))
                    (reify MyProtocol (MyFunction [_] [{:something 2}])))]

    (let [response (routes/foo {:request-method :post
                            :uri            "/foo/bar"
                            :query-params   {}
                            })]

      (is (= (:status response) 200)))))
Run Code Online (Sandbox Code Playgroud)

unit-testing clojure mocking compojure

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

使用 Neo4j ogm 时,未找到类 Person 所需的标识符属性?

我是 neo4j 的新手。<id>从到目前为止我所读到的内容来看,我了解到在应用程序外部使用默认参数通常是不好的做法。因此,我希望能够指定我自己的personId参数,与<id>. 为此,我想使用neo4j-ogm,但是我收到此异常:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'personController' defined in file [/Users/freid/www/project/address-book/build/classes/java/main/com/addressbook/controller/PersonController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personRepository' defined in com.addressbook.repositories.PersonRepository defined in @EnableNeo4jRepositories declared on SetupBeans: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Required identifier property not found for class com.addressbook.model.Person!
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.5.jar:5.3.5]
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.5.jar:5.3.5]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354) ~[spring-beans-5.3.5.jar:5.3.5]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204) ~[spring-beans-5.3.5.jar:5.3.5]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) …
Run Code Online (Sandbox Code Playgroud)

java neo4j spring-boot neo4j-ogm

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

我应该如何在clojure中编码异常?

我希望能够json编码异常对象.我正在将我的日志推送到sumologic并且希望能够推送json编码的异常,以便我可以在sumo中解析和过滤这些日志.

但是,我不能json编码异常并得到此错误:

Cannot JSON encode object of class: class java.lang.Class: class clojure.lang.ExceptionInfo
Run Code Online (Sandbox Code Playgroud)

这是我的compojure-api异常处理程序:

(defn exception-handler
  "Handles exceptions."
  [f]

  (fn [^Exception ex data request]
    (log/error (json/generate-string {:request-id log-helper/*request-id*
                                      :error    ex}))

    (f (.getMessage ex))))
Run Code Online (Sandbox Code Playgroud)

clojure sumologic compojure-api

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