

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

# 使用共用 `config`和 `credentials` 檔案來全域設定 AWS SDKs和工具
<a name="file-format"></a>

共用 AWS `config` 和 `credentials` 檔案是您可以為 AWS SDK 或工具指定身分驗證和組態的最常見方式。

共用 `config`和 `credentials` 檔案包含一組設定檔。設定檔是一組組態設定，用於 AWS SDKs、 AWS Command Line Interface (AWS CLI) 和其他工具的鍵值對。組態值會連接到設定檔，以便在使用該設定檔時設定 SDK/工具的某些層面。這些檔案是「共用」，因為這些值會影響使用者本機環境上的任何應用程式、程序或SDKs。

共用`config`和`credentials`檔案都是純文字檔案，只包含 ASCII 字元 (UTF-8 編碼）。它們採用通常稱為 [INI 檔案](https://wikipedia.org/wiki/INI_file)的形式。

## 個人檔案
<a name="file-format-profile"></a>

共用 `config`和 `credentials` 檔案內的設定與特定設定檔相關聯。您可以在 檔案中定義多個設定檔，以建立不同的設定組態，以套用至不同的開發環境。

 `[default]` 若未指定特定具名設定檔，設定檔會包含 SDK 或工具操作所使用的值。您也可以建立個別的設定檔，以便依名稱明確參考。每個設定檔都可以根據您的應用程式和案例使用不同的設定和值。

**注意**  
`[default]` 只是未命名的設定檔。此描述檔已命名，`default`因為如果使用者未指定描述檔，則它是 SDK 使用的預設描述檔。它不會將繼承的預設值提供給其他設定檔。如果您在`[default]`設定檔中設定了一些項目，但未在具名設定檔中設定它，則當您使用具名設定檔時，不會設定該值。

### 設定具名設定檔
<a name="set-named-profile"></a>

`[default]` 設定檔和多個具名設定檔可以存在於同一個檔案中。執行程式碼時，請使用下列設定來選取軟體開發套件或工具所使用的設定檔設定。使用 時，也可以在程式碼內或每個命令中選取設定檔 AWS CLI。

透過設定下列其中一項來設定此功能：

**`AWS_PROFILE` - 環境變數**  
當此環境變數設定為具名設定檔或「預設」時，所有 SDK 程式碼和 AWS CLI 命令都會使用該設定檔中的設定。  
透過命令列設定環境變數的 Linux/macOS 範例：  

```
export AWS_PROFILE="my_default_profile_name";
```
透過命令列設定環境變數的 Windows 範例：  

```
setx AWS_PROFILE "my_default_profile_name"
```

**`aws.profile` - JVM 系統屬性**  
對於 JVM 上的適用於 Kotlin 的 SDK 和適用於 Java 的 SDK 2.x，您可以[設定`aws.profile`系統屬性](jvm-system-properties.md#jvm-sys-props-set)。開發套件建立服務用戶端時，除非在程式碼中覆寫設定，否則會使用具名設定檔中的設定。適用於 Java 的 SDK 1.x 不支援此系統屬性。

**注意**  
如果您的應用程式位於執行多個應用程式的伺服器上，我們建議您一律使用具名設定檔，而非預設設定檔。預設設定檔會自動由環境中的任何 AWS 應用程式擷取，並在這些應用程式之間共用。因此，如果其他人更新其應用程式的預設設定檔，可能會無意中影響其他人。為了防止這種情況，請在共用`config`檔案中定義具名描述檔，然後在程式碼中設定具名描述檔，以在應用程式中使用該具名描述檔。如果您知道具名描述檔的範圍僅影響您的應用程式，您可以使用環境變數或 JVM 系統屬性來設定具名描述檔。

## 組態檔案的格式
<a name="file-format-config"></a>

`config` 檔案會組織成數個區段。區段是具名的設定集合，且會持續到發生其他區段定義列為止。

`config` 檔案是使用下列格式的純文字檔案：
+ 區段中的所有項目均採用 `setting-name=value` 的一般形式。
+ 您可以在列的開頭使用井字號 (`#`)，為列加上註解。

### 區段類型
<a name="section-types"></a>

區段定義是將名稱套用至設定集合的行。區段定義列以方括號 (`[`) 開頭和結尾`]`。在括號內，有一個區段類型識別符和區段的自訂名稱。您可以使用字母、數字、連字號 () `-` 和底線 `_` ()，但不能使用空格。

#### 區段類型：`default`
<a name="section-default"></a>

範例區段定義列： `[default]`

 `[default]` 是唯一不需要`profile`區段識別符的設定檔。

下列範例顯示具有`[default]`設定檔的基本`config`檔案。它會設定 [`region`](feature-region.md)設定。在遇到另一個區段定義之前，遵循此行的所有設定都是此設定檔的一部分。

```
[default]
#Full line comment, this text is ignored.
region = us-east-2
```

#### 區段類型：`profile`
<a name="section-profile"></a>

範例區段定義列： `[profile dev]`

`profile` 區段定義列是具名組態群組，您可以套用至不同的開發案例。若要進一步了解具名設定檔，請參閱設定檔上的上一節。

下列範例顯示具有`profile`區段定義列和名為 之設定檔`config`的檔案`foo`。此行之後直到遇到另一個區段定義為止的所有設定，都是此具名設定檔的一部分。

```
[profile foo]
...settings...
```

有些設定有自己的巢狀子集群組，例如下列範例中`s3`的設定和子集。以一個或多個空格縮排子集，將子集與群組建立關聯。

```
[profile test]
region = us-west-2
s3 =
    max_concurrent_requests=10
    max_queue_size=1000
```

#### 區段類型：`sso-session`
<a name="section-session"></a>

範例區段定義列： `[sso-session my-sso]`

`sso-session` 區段定義列會為您用來設定設定檔以使用 解析 AWS 登入資料的一組設定命名 AWS IAM Identity Center。如需設定單一登入身分驗證的詳細資訊，請參閱 [使用 IAM Identity Center 驗證 AWS SDK 和工具](access-sso.md)。設定檔由索引鍵/值對連結到`sso-session`區段，其中 `sso-session` 是索引鍵，而`sso-session`區段的名稱是值，例如 `sso-session = <name-of-sso-session-section>`。

下列範例會設定設定檔，該設定檔會使用來自 "my-sso" 的字符，取得 "111122223333" 帳戶中 "SampleRole" IAM 角色的短期 AWS 登入資料。在 `sso-session` 區段中，「my-sso」`profile`區段使用 `sso-session`金鑰依名稱參考。

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
```

#### 區段類型：`services`
<a name="section-services"></a>

範例區段定義列： `[services dev]`

**注意**  
`services` 本節支援服務特定的端點自訂，且僅適用於包含此功能SDKs 和工具。若要查看您的 SDK 是否可使用此功能，請參閱 [支援 AWS SDKs和工具](feature-ss-endpoints.md#ss-endpoints-sdk-compat) 以取得服務特定的端點。

`services` 區段定義列會為設定 AWS 服務 請求自訂端點的設定群組命名。設定檔由索引鍵/值對連結到`services`區段，其中 `services`是索引鍵，而`services`區段的名稱是值，例如 `services = <name-of-services-section>`。

 `services` 區段會依`<SERVICE> = `行進一步分隔為子區段，其中 `<SERVICE>`是 AWS 服務 識別符索引鍵。 AWS 服務 識別符是以 API 模型的 為基礎`serviceId`，方法是以底線取代所有空格，並縮小所有字母大小寫。如需要在 `services` 區段中使用的所有服務識別碼金鑰的清單，請參閱 [服務特定端點的識別符](ss-endpoints-table.md)。服務識別碼金鑰後面接續巢狀化設定，每個設定獨佔一列並縮排兩個空格。

 下列範例使用 `services`定義來設定端點，以用於僅對 服務提出的 Amazon DynamoDB 請求。在 `"local-dynamodb"` `services` 區段中，使用 `services`金鑰依名稱參考 `profile`區段。 AWS 服務 識別符索引鍵為 `dynamodb`。 Amazon DynamoDB 服務子區段從第 行開始`dynamodb = `。任何緊接著縮排的列都包含在該子區段中，並適用於該服務。

```
[profile dev]
services = local-dynamodb

[services local-dynamodb]
dynamodb = 
  endpoint_url = http://localhost:8000
```

如需自訂端點組態的詳細資訊，請參閱 [服務特定的端點](feature-ss-endpoints.md)。

## 登入資料檔案格式
<a name="file-format-creds"></a>

`credentials` 檔案的規則通常與 `config` 檔案的規則相同，但設定檔區段的開頭不是單字 `profile`。在方括號之間僅使用設定檔名稱本身。下列範例顯示一個`credentials`檔案，其中包含名為 的命名設定檔區段`foo`。

```
[foo]
...credential settings...
```

只有下列被視為「秘密」或敏感的設定才能存放在 `credentials` 檔案中：`aws_access_key_id``aws_secret_access_key`、 和 `aws_session_token`。雖然這些設定也可以放在共用`config`檔案中，但我們建議您將這些敏感值保留在單獨的`credentials`檔案中。如此一來，您可以視需要為每個檔案提供個別的許可。

下列範例顯示具有`[default]`設定檔的基本`credentials`檔案。它會設定 [`aws_access_key_id``aws_secret_access_key`、 和 `aws_session_token`](feature-static-credentials.md) 全域設定。

```
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
```

無論您是否在 `credentials` 檔案中使用具名設定檔或「`default`」，此處的任何設定都會與使用相同設定檔名稱之`config`檔案中的任何設定合併。如果兩個檔案中都有共用相同名稱之設定檔的憑證，則憑證檔案中的金鑰具有高優先順序。