簡體   English   中英

使用 Spring 將文件上傳到 AWS S3

[英]Upload files to AWS S3 using Spring Boot works fine without Proxy but fails with Proxy

使用 spring 將文件上傳到 AWS S3 啟動在沒有代理的情況下執行時效果很好,當我在 VM args 中添加代理時它失敗並出現以下錯誤,

Internal Server Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Server Error; Request ID: null; S3 Extended Request ID: null; Proxy: 192.168.1.171)

下面是我提供的vm arguments,

-Dhttp.proxyHost=192.168.1.171 -Dhttp.proxyPort=9999 -Dhttps.proxyHost=192.168.1.171 -Dhttps.proxyPort=9999

當我開始執行 package 時,AWS SDK 自動初始化代理,因為它在 args 列表中找到它並在控制台中打印

com.amazonaws.http.AmazonHttpClient - Configuring Proxy. Proxy Host: 192.168.1.171 Proxy Port: 9999

我無法刪除代理,因為我在 spring 安全性中使用 Oauth2 身份驗證。 有什么方法可以禁用自動初始化 AWS SDK 中的代理?

實際上,通過網絡進行通信的“端點”是一個地址,但鏈接需要“連接”,因此通過配置它可能更多是連接/連接的“主機沖突”。 例如,我可以同時擁有一個網絡服務器和一個通過 http 直接接收請求的數據庫,但這取決於它們是否相互配置和/或通過 irq 連接到網絡到其他任何東西。

聯系 AWS 后我能夠解決問題,我必須在 ClientConfiguration class 中配置方法“setNoneProxyHosts (String nonProxyHosts)”方法。 這將設置客戶端無需通過代理即可訪問的可選主機。 參數 – “nonProxyHosts” 采用客戶端無需通過代理即可訪問的主機。 有關 class 和方法的更多信息,請點擊此處的鏈接: https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html#setNonProxyHosts-java.lang.String-

根據 AWS Support 提供的說明,我修改了配置並添加了以下內容;

 public ClientConfiguration clientConfiguration() { final ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setNonProxyHosts("*.s3.<ZONE>.amazonaws.com|*.s3-<ZONE>.amazonaws.com"); return clientConfiguration; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM