Greengrass V2在网络代理后面时报错 - Failed to negotiate version with cloud。

0

【以下的问题经过翻译处理】 您好 AWS 团队,

非常感谢您更新文档以允许在网络代理后面安装。非常感谢。

我成功安装了 greengrass 核心。但我未能部署第一个组件 - Lambda 函数。

信息:

  • 已配置网络代理和端口 443
  • 网络代理不会终止 TLS 连接 - 我对此进行了测试(输出请参见下文):

curl --insecure -vvI https://iot.eu-central-1.amazonaws.com 2>&1 | awk 'BEGIN { cert=0 } /^** SSL connection/ { cert=1 } /^**/ { if (cert) print }'

2021-03-08T13:58:40.708Z [错误] (pool-2-thread-26) com.aws.greengrass.componentmanager.ComponentManager:无法与云协商版本且没有可回退的本地版本。 {componentName=XXXXX, versionRequirement={thinggroup/XXXXXXGreengrassCoreGroup==1.0.0}}
software.amazon.awssdk.services.greengrassv2.model.GreengrassV2Exception:Greengrass 服务仅支持通过 TLS 相互身份验证的连接(服务:GreengrassV2,状态代码:403,请求 ID:861d34a9-d648-4a0a-a079-1af57fa18cf1,扩展请求 ID:无效的)
        在 software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleErrorResponse(CombinedResponseHandler.java:123)
        在 software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleResponse(CombinedResponseHandler.java:79)
        在 software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:59)
        在 software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:40)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:40)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:30)
        在 software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:73)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:42)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:77)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:39)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:50)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:36)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:64)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:34)
        在 software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
        在 software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:56)
        在 software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:36)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:48)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:31)
        在 software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
        在 software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
        在 software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
        在 software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:193)
        在 software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:133)
        在 software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:159)
        在 software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:112)
        在 software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:167)
        在 software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:94)
        在 software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
        在 software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:55)
        在 software.amazon.awssdk.services.greengrassv2.DefaultGreengrassV2Client.resolveComponentCandidates(DefaultGreengrassV2Client.java:1905)
        在 com.aws.greengrass.componentmanager.ComponentServiceHelper.resolveComponentVersion(ComponentServiceHelper.java:67)
        在 com.aws.greengrass.componentmanager.ComponentManager.lambda$negotiateVersionWithCloud$0(ComponentManager.java:198)
        在 com.aws.greengrass.util.RetryUtils.runWithRetry(RetryUtils.java:46)
        在 com.aws.greengrass.componentmanager.ComponentManager.negotiateVersionWithCloud(ComponentManager.java:197)
        在 com.aws.greengrass.componentmanager.ComponentManager.resolveComponentVersion(ComponentManager.java:154)
        在 com.aws.greengrass.componentmanager.DependencyResolver.lambda$resolveDependencies$1(DependencyResolver.java:108)
        在 com.aws.greengrass.componentmanager.DependencyResolver.resolveComponentDependencies(DependencyResolver.java:215)
        在 com.aws.greengrass.componentmanager.DependencyResolver.resolveDependencies (DependencyResolver.java:107)
        在 com.aws.greengrass.deployment.DefaultDeploymentTask.lambda$call$2(DefaultDeploymentTask.java:98)
        在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
        在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        在 java.lang.Thread.run(Thread.java:748)

XX@XX:~$ curl --insecure -vvI https://iot.eu-central-1.amazonaws.com 2>&1 | awk 'BEGIN { cert=0 } /^** SSL connection/ { cert=1 } /^**/ { if (cert) print }'

  • 使用 TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 的 SSL 连接
  • ALPN,服务器接受使用 h2
  • 服务器证书:
  • 主题:CN=iot.eu-central-1.amazonaws.com
  • 开始日期:格林威治标准时间 2020 年 11 月 13 日 00:00:00
  • 到期日:格林威治标准时间 2021 年 12 月 12 日 23:59:59 *发行人:C=US; O=亚马逊; OU=服务器CA 1B;中国=亚马逊
  • SSL 证书验证正常。
  • 使用HTTP2,服务器支持multi-use
  • 连接状态改变(HTTP/2 confirmed)
  • 升级后将流缓冲区中的 HTTP/2 数据复制到连接缓冲区:len=0
  • 使用Stream ID:1(easy handle 0x55a53ac33580)
  • 连接状态已更改(MAX_CONCURRENT_STREAMS updated)!
  • 连接#0 到主机 10.XX.XX.XX 保持不变

非常感谢您的帮助!

profile picture
EXPERTE
gefragt vor 5 Monaten43 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 谢谢您提供的信息。Java 8更新242不支持ALPN,这是使用端口443作为数据平面端口所需的。请尝试切换到使用端口8443或更新您的Java版本。

参见:https://github.com/aws-greengrass/aws-greengrass-nucleus/blob/3da9657c0ba31a80e14309780763b3041abc9dd0/src/main/java/software/amazon/awssdk/http/apache/internal/conn/SdkTlsSocketFactory.java#L58-L61

编辑者:MichaelDombrowski-AWS 于2021年3月9日上午10:47编辑。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen