Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS中的Spring云网关未正确路由_Amazon Web Services_Amazon Elastic Beanstalk_Spring Cloud_Spring Cloud Gateway - Fatal编程技术网

Amazon web services AWS中的Spring云网关未正确路由

Amazon web services AWS中的Spring云网关未正确路由,amazon-web-services,amazon-elastic-beanstalk,spring-cloud,spring-cloud-gateway,Amazon Web Services,Amazon Elastic Beanstalk,Spring Cloud,Spring Cloud Gateway,我创建了一个简单的REST服务,如下所示: @RestController public class ServiceController { @GetMapping(value = "/getSimpleResponse") public ResponseEntity<String> getSimpleResponse() { return new ResponseEntity<>("Hello from Service 1", Http

我创建了一个简单的REST服务,如下所示:

@RestController
public class ServiceController {

    @GetMapping(value = "/getSimpleResponse")
    public ResponseEntity<String> getSimpleResponse() {
        return new ResponseEntity<>("Hello from Service 1", HttpStatus.OK);
    }
}
@Configuration
public class GatewayConfig {
    @Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(getFirstTestServiceRoute())
                .build();
    }

    private Function<PredicateSpec, Route.AsyncBuilder> getFirstTestServiceRoute() {
        return p -> p
                .path("/service1/**")
                .uri("http://testservice1-env.qgwe5a4qq8.ap-south-1.elasticbeanstalk.com/")
                .id("service1");
    }
}
@RestController
公共类服务控制器{
@GetMapping(value=“/getSimpleResponse”)
公共响应获取简单响应(){
返回新的响应状态(“来自服务1的你好”,HttpStatus.OK);
}
}
我将其部署到AWS elastic beanstalk,并且运行良好。在这里:

现在我创建了一个Spring云网关服务,路由配置如下:

@RestController
public class ServiceController {

    @GetMapping(value = "/getSimpleResponse")
    public ResponseEntity<String> getSimpleResponse() {
        return new ResponseEntity<>("Hello from Service 1", HttpStatus.OK);
    }
}
@Configuration
public class GatewayConfig {
    @Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(getFirstTestServiceRoute())
                .build();
    }

    private Function<PredicateSpec, Route.AsyncBuilder> getFirstTestServiceRoute() {
        return p -> p
                .path("/service1/**")
                .uri("http://testservice1-env.qgwe5a4qq8.ap-south-1.elasticbeanstalk.com/")
                .id("service1");
    }
}
@配置
公共类网关配置{
@豆子
公共路由器或网关路由(路由器或构建器生成器){
returnbuilder.routes()
.route(getFirstTestServiceRoute())
.build();
}
私有函数getFirstTestServiceRoute(){
返回p->p
.path(“/service1/**”)
.uri(“http://testservice1-env.qgwe5a4qq8.ap-south-1.elasticbeanstalk.com/")
.id(“服务1”);
}
}
我在AWS Elastic beanstalk中部署网关应用程序


但是返回一个白标签错误页面。我期望得到与服务1相同的输出。我做错了什么?

尝试在浏览器中打开您在网关中设置的URL,您将看到相同的白标签错误页面。
您的端点是/getSimpleResponse,但您的网关不知道它。它没有魔力,它根据您的配置工作


此外,堆栈也不会在本地工作。首先让它在本地工作,然后再将它一块一块地移动到云中。

我在类级别缺少RequestMapping。我的URL格式是

网关URL/service1/getSimpleResponse

我假设这是因为SpringCloudGateway可能正在将完整路径(/service1/getSimpleResponse)附加到下游服务URL

 @RestController
    @RequestMapping("/service1")
    public class ServiceController {

        @GetMapping(value = "/getSimpleResponse")
        public ResponseEntity<String> getSimpleResponse() {
            return new ResponseEntity<>("Hello from Service 1", HttpStatus.OK);
        }
    }
@RestController
@请求映射(“/service1”)
公共类服务控制器{
@GetMapping(value=“/getSimpleResponse”)
公共响应获取简单响应(){
返回新的响应状态(“来自服务1的你好”,HttpStatus.OK);
}
}

如果下游服务没有响应/service1,则需要修改路径,例如使用StripPrefix 1filter@spencergibb我对这整件事还不熟悉。你能给我举个例子吗?