Java Can';t使来自谷歌云的出站请求在完全管理下运行

Java Can';t使来自谷歌云的出站请求在完全管理下运行,java,google-cloud-platform,google-cloud-run,Java,Google Cloud Platform,Google Cloud Run,当试图从Google Cloud向外部API发出出站请求时,http调用不知何故被卡住了,或者我们遇到了以下SSLHandshakeException远程主机,过了一会儿就终止了握手。该映像在本地执行时运行良好,因此我假设它来自沙盒云运行环境 我的docker配置: FROM maven:3.6.3-jdk-11 as builder WORKDIR /app COPY pom.xml . COPY src ./src # Build a release artifact. RUN mvn

当试图从Google Cloud向外部API发出出站请求时,http调用不知何故被卡住了,或者我们遇到了以下
SSLHandshakeException远程主机,过了一会儿就终止了握手。该映像在本地执行时运行良好,因此我假设它来自沙盒云运行环境

我的docker配置:

FROM maven:3.6.3-jdk-11 as builder

WORKDIR /app
COPY pom.xml .
COPY src ./src

# Build a release artifact.
RUN mvn package -DskipTests

FROM openjdk:11-jdk

COPY --from=builder /app/target/poc-*.jar /poc.jar

# Run the service on container startup.
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-Dserver.port=${PORT}","-jar","/poc.jar"]
代码片段被卡住了:

private HttpEntity<String> prepareSecuredRestCallToAJStage() {
    CredentialsDTO credentials = new CredentialsDTO(USERNAME, PASSWORD);
    // Getting stuck here
    TokenDTO response = restTemplate.postForObject(LOGIN_CHECK_URL, credentials, TokenDTO.class);
    // We never get the response
    String token = BEARER_TOKEN_PREFIX + Objects.requireNonNull(response).getToken();
}
私有HttpEntity prepareSecuredRestCallToAJStage(){
CredentialsDTO credentials=新的CredentialsDTO(用户名、密码);
//被困在这里
TokenDTO response=restemplate.postForObject(登录\检查\ URL、凭证、TokenDTO.class);
//我们从未得到回应
String token=BEARER\u token\u PREFIX+Objects.requirennull(response.getToken();
}
作为参考,这是一个Spring引导应用程序,我们将在启动时获得此跟踪:
容器沙箱:不支持的系统调用setsockopt(0x9,0x6,0x6,0x3e7a3d678e2c,0x4,0xa)


有什么我遗漏的吗?

这确实是云运行沙箱的一个限制。gVisor项目(Cloud Run使用的项目)。

这确实是Cloud Run沙箱的一个限制。gVisor项目(Cloud Run使用的项目)。

在深入研究之后,计算必须限定在一个请求的范围内。我的流程在启动/部署阶段执行后台活动,超出了请求的范围。在这种特殊情况下,出口交通似乎不可用

为了解决这个问题,我们公开了一个触发进程的API端点。这样就行了

作为旁注,该问题与日志跟踪不受支持的syscall setsockopt无关,因为该进程仅执行POST请求。

跳入后,计算范围必须限定为请求。我的流程在启动/部署阶段执行后台活动,超出了请求的范围。在这种特殊情况下,出口交通似乎不可用

为了解决这个问题,我们公开了一个触发进程的API端点。这样就行了


作为旁注,该问题与日志跟踪
不受支持的系统调用setsockopt
无关,因为该进程仅执行POST请求。

Hello Dustin。该问题似乎与日志跟踪
不受支持的系统调用setsockopt
无关,因为该进程仅执行POST请求。无论如何,谢谢你的帮助!你好,达斯汀。该问题似乎与日志跟踪
不受支持的系统调用setsockopt
无关,因为该进程仅执行POST请求。无论如何,谢谢你的帮助!