

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 JVM 系統屬性全域設定 適用於 Java 的 AWS SDK 和 適用於 Kotlin 的 AWS SDK
<a name="jvm-system-properties"></a>

[JVM 系統屬性](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html)提供另一種方式，為在 JVM 上執行SDKs 指定組態選項和登入資料，例如 適用於 Java 的 AWS SDK 和 適用於 Kotlin 的 AWS SDK。如需 SDKs 支援的 JVM 系統屬性清單，請參閱[設定參考](settings-reference.md#JVMSettings)。

**選項的優先順序**
+ 如果您使用其 JVM 系統屬性指定設定，它會覆寫環境變數中找到的任何值，或從共用 AWS `config`和`credentials`檔案中的設定檔載入的任何值。
+ 如果您使用環境變數指定設定，它會覆寫從共用 AWS `config`和`credentials`檔案中的設定檔載入的任何值。

## 如何設定 JVM 系統屬性
<a name="jvm-sys-props-set"></a>

您可以透過多種方式設定 JVM 系統屬性。

### 在命令列上
<a name="jvm-sys-props-set-cl"></a>

使用 `-D` 切換叫用`java`命令時，在命令列上設定 JVM 系統屬性。除非您明確覆寫程式碼中的值，否則下列命令會為所有服務用戶端 AWS 區域 全域設定 。

```
java -Daws.region=us-east-1 -jar <your_application.jar> <other_arguments>
```

如果您需要設定多個 JVM 系統屬性，請指定多次`-D`切換。

### 使用環境變數
<a name="jvm-sys-props-set-evar"></a>

如果您無法存取命令列來叫用 JVM 來執行應用程式，您可以使用 `JAVA_TOOL_OPTIONS`環境變數來設定命令列選項。此方法適用於在 Java 執行時間執行 AWS Lambda 函數或在內嵌 JVM 中執行程式碼等情況。

下列範例會為所有服務用戶端 AWS 區域 全域設定 ，除非您明確覆寫程式碼中的值。

------
#### [ Linux, macOS, or Unix ]

```
$ export JAVA_TOOL_OPTIONS="-Daws.region=us-east-1"
```

設定環境變數會變更使用的數值，直到 Shell 工作階段結束或直到您將該變數設為其他數值。您可以在 Shell 的啟動指令碼中設定變數，讓它們跨未來的工作階段持續生效。

------
#### [ Windows Command Prompt ]

```
C:\> setx JAVA_TOOL_OPTIONS -Daws.region=us-east-1
```

使用 `[set](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)`設定環境變數會變更使用的值，直到目前的命令提示工作階段結束，或直到您將變數設定為不同的值為止。使用 [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx)設定環境變數會變更目前命令提示工作階段和您在執行命令後建立的所有命令提示工作階段中使用的值。***不會***影響您執行命令當時已執行的其他命令 Shell。

------

### 在執行時間
<a name="jvm-sys-props-set-runtime"></a>

您也可以使用 `System.setProperty`方法在程式碼中的執行時間設定 JVM 系統屬性，如下列範例所示。

```
System.setProperty("aws.region", "us-east-1");
```

**重要**  
在初始化 SDK 服務用戶端*之前*設定任何 JVM 系統屬性，否則服務用戶端可能會使用其他值。