

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

# IMDS 登入資料提供者
<a name="feature-imds-credentials"></a>

**注意**  
如需了解設定頁面配置或解譯以下 **Support AWS SDKs和工具**資料表的說明，請參閱 [了解本指南的設定頁面](settings-reference.md#settingsPages)。

Instance Metadata Service (IMDS) 提供執行個體的資料，可用來設定或管理執行中的執行個體。如需可用資料的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[使用執行個體中繼資料](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)。Amazon EC2 提供執行個體可用的本機端點，可將各種位元的資訊提供給執行個體。如果執行個體已連接角色，則可以提供一組對該角色有效的登入資料。SDKs可以使用該端點來解析登入資料，做為其[預設登入資料提供者鏈結](standardized-credentials.md#credentialProviderChain)的一部分。執行個體中繼資料服務第 2 版 (IMDSv2) 是使用工作階段字符的更安全 IMDS 版本，預設為使用。如果因為不可重試的條件 (HTTP 錯誤代碼 403、404、405) 而失敗，則會使用 IMDSv1 做為備用。

使用下列項目設定此功能：

**`AWS_EC2_METADATA_DISABLED` - 環境變數**  
是否嘗試使用 Amazon EC2 執行個體中繼資料服務 (IMDS) 來取得登入資料。  
**預設值**：`false`。  
**有效值**：  
+ **`true`** – 請勿使用 IMDS 取得登入資料。
+ **`false`** – 使用 IMDS 取得登入資料。

**`ec2_metadata_v1_disabled` - 共用 AWS `config`檔案設定`AWS_EC2_METADATA_V1_DISABLED` - 環境變數`aws.disableEc2MetadataV1` - JVM 系統屬性：僅限 Java/Kotlin**  
如果 IMDSv1) 做為備用。 IMDSv2   
新的 SDKs 不支援 IMDSv1，因此不支援此設定。如需詳細資訊，請參閱資料表 [支援 AWS SDKs和工具](#feature-imds-credentials-sdk-compat)。
**預設值**：`false`。  
**有效值**：  
+ **`true`** – 請勿使用 IMDSv1 做為備用。
+ **`false`** – 使用 IMDSv1 做為備用。

**`ec2_metadata_service_endpoint` - 共用 AWS `config`檔案設定`AWS_EC2_METADATA_SERVICE_ENDPOINT` - 環境變數`aws.ec2MetadataServiceEndpoint` - JVM 系統屬性：僅限 Java/Kotlin**  
IMDS 的端點。此值會覆寫 AWS SDKs和工具將搜尋 Amazon EC2 執行個體中繼資料的預設位置。  
**預設值：**如果 `ec2_metadata_service_endpoint_mode`等於 `IPv4`，則預設端點為 `http://169.254.169.254`。如果 `ec2_metadata_service_endpoint_mode`等於 `IPv6`，則預設端點為 `http://[fd00:ec2::254]`。  
**有效值：**有效 URI。

**`ec2_metadata_service_endpoint_mode` - 共用 AWS `config`檔案設定`AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE` - 環境變數`aws.ec2MetadataServiceEndpointMode` - JVM 系統屬性：僅限 Java/Kotlin**  
IMDS 的端點模式。  
**預設值：**`IPv4`。  
**有效值：**`IPv4`、`IPv6`。

**注意**  
IMDS 登入資料提供者是 的一部分[了解登入資料提供者鏈結](standardized-credentials.md#credentialProviderChain)。不過，只有在此系列中的其他數個提供者之後，才會檢查 IMDS 登入資料提供者。因此，如果您希望程式使用此提供者的登入資料，您必須從組態中移除其他有效的登入資料提供者，或使用不同的設定檔。或者，不要依賴登入資料提供者鏈自動探索哪個提供者傳回有效的登入資料，而是在程式碼中指定 IMDS 登入資料提供者的使用。您可以在建立服務用戶端時直接指定登入資料來源。

## IMDS 登入資料的安全性
<a name="feature-imds-credentials-sdk-security"></a>

根據預設，當 AWS 軟體開發套件未設定有效的登入資料時，軟體開發套件會嘗試使用 Amazon EC2 執行個體中繼資料服務 (IMDS) 來擷取 AWS 角色的登入資料。將此`AWS_EC2_METADATA_DISABLED`環境變數設定為 ，即可停用此行為`true`。這可防止不必要的網路活動，並增強可能模擬 Amazon EC2 執行個體中繼資料服務之不受信任網路的安全性。

**注意**  
AWS 使用有效登入資料設定的 SDK 用戶端絕不會使用 IMDS 擷取登入資料，無論這些設定為何。

### 停用 Amazon EC2 IMDS 登入資料
<a name="feature-imds-credentials-disabling"></a>

如何設定此環境變數取決於正在使用的作業系統，以及您是否希望變更持續存在。

#### Linux 和 macOS
<a name="feature-imds-credentials-disabling-unix"></a>

使用 Linux 或 macOS 的客戶可以使用下列命令來設定此環境變數：

```
$ export AWS_EC2_METADATA_DISABLED=true
```

如果您希望此設定在多個 shell 工作階段和系統重新啟動之間持續存在，您可以將上述命令新增至您的 shell 設定檔，例如 `.bash_profile`、 `.zsh_profile`或 `.profile`。

#### Windows
<a name="feature-imds-credentials-disabling-windows"></a>

使用 Windows 的客戶可以使用下列命令來設定此環境變數：

```
$ set AWS_EC2_METADATA_DISABLED=true
```

如果您希望此設定在多個 Shell 工作階段間持續存在，且系統重新啟動，則可改用下列命令：

```
$ setx AWS_EC2_METADATA_DISABLED=true
```

**注意**  
**setx** 命令不會將值套用至目前的 Shell 工作階段，因此您需要重新載入或重新開啟 Shell，變更才會生效。

## 支援 AWS SDKs和工具
<a name="feature-imds-credentials-sdk-compat"></a>

下列 SDKs 支援本主題中所述的功能和設定。會記下任何部分例外狀況。 適用於 Java 的 AWS SDK 和 適用於 Kotlin 的 AWS SDK 僅支援任何 JVM 系統屬性設定。


| SDK | 支援 | 備註或更多資訊 | 
| --- | --- | --- | 
| [AWS CLI  ](https://docs.aws.amazon.com/cli/latest/userguide/) v2 | 是 |  | 
| [適用於 C\+\+ 的 SDK](https://docs.aws.amazon.com/sdk-for-cpp/latest/developer-guide/) | 是 |  | 
| [適用於 Go V2 的 SDK (1.x)](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/) | 是 |  | 
| [適用於 Go 的 SDK 1.x (V1)](https://docs.aws.amazon.com/sdk-for-go/latest/developer-guide/) | 是 | 若要使用共用config檔案設定，您必須開啟從組態檔案載入；請參閱[工作階段](https://docs.aws.amazon.com/sdk-for-go/api/aws/session/)。 | 
| [適用於 Java 的 SDK 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/) | 是 |  | 
| [適用於 Java 的 SDK 1.x](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/) | 部分 | JVM 系統屬性：使用 com.amazonaws.sdk.disableEc2MetadataV1而非 aws.disableEc2MetadataV1；aws.ec2MetadataServiceEndpointaws.ec2MetadataServiceEndpointMode不支援。 | 
| [適用於 JavaScript 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/) | 是 |  | 
| [適用於 JavaScript 的 SDK 2.x](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/) | 是 |  | 
| [適用於 Kotlin 的 SDK](https://docs.aws.amazon.com/sdk-for-kotlin/latest/developer-guide/) | 是 | 不使用 IMDSv1 備用。 | 
| [適用於 .NET 4.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/) | 是 |  | 
| [適用於 .NET 3.x 的 SDK](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/) | 是 |  | 
| [適用於 PHP 的 SDK 3.x](https://docs.aws.amazon.com/sdk-for-php/latest/developer-guide/) | 是 |  | 
| [適用於 Python 的 SDK (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) | 是 |  | 
| [適用於 Ruby 的 SDK 3.x](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/) | 是 |  | 
| [適用於 Rust 的 SDK](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/) | 是 | 不使用 IMDSv1 備用。 | 
| [適用於 Swift 的 SDK](https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/) | 是 |  | 
| [PowerShell V5 的工具](https://docs.aws.amazon.com/powershell/latest/userguide/) | 是 | 您可以使用 在程式碼中明確停用 IMDSv1 後援[Amazon.Util.EC2InstanceMetadata]::EC2MetadataV1Disabled = $true。 | 
| [PowerShell V4 的工具](https://docs.aws.amazon.com/powershell/v4/userguide/) | 是 | 您可以使用 在程式碼中明確停用 IMDSv1 後援[Amazon.Util.EC2InstanceMetadata]::EC2MetadataV1Disabled = $true。 | 