

**本文件 AWS CLI 僅適用於 第 1 版。**

我們已宣布即將end-of-support。 AWS CLI 我們建議您遷移至 第 2 AWS CLI 版。如需日期、其他詳細資訊和如何遷移的資訊，請參閱 [公告](https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/)。如需 第 2 版的相關文件 AWS CLI，請參閱 第 [2 版使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/)。

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

# 的身分驗證和存取憑證 AWS CLI
<a name="cli-chap-authentication"></a>

當您使用 服務進行開發 AWS 時，您必須建立 的 AWS CLI AWS 身分驗證方式。若要為 設定程式設計存取的登入資料 AWS CLI，請選擇下列其中一個選項。選項是按照建議順序排列的。


****  

| 身分驗證類型 | 用途 | 指示 | 
| --- | --- | --- | 
| IAM 使用者短期憑證 | 使用比長期憑證更安全的 IAM 使用者短期憑證。如果憑證遭到入侵，憑證在過期前被利用的時間有限。 | [使用 的短期登入資料進行驗證 AWS CLI](cli-authentication-short-term.md) | 
| Amazon EC2 執行個體上的 IAM 。 | 使用 Amazon EC2 執行個體中繼資料，以使用指派給 Amazon EC2 執行個體的角色來查詢臨時憑證。 | [在 中使用 Amazon EC2 執行個體中繼資料做為登入資料 AWS CLI](cli-configure-metadata.md) | 
| 擔任許可的角色 | 配對另一個憑證方法，並擔任可暫時存取您的使用者可能無法存取之 AWS 服務 的角色。 | [在 中使用 IAM 角色 AWS CLI](cli-configure-role.md) | 
| IAM 使用者長期憑證 | (不建議) 使用不會過期的長期憑證。 | [使用 的 IAM 使用者登入資料進行驗證 AWS CLI](cli-authentication-user.md) | 
| IAM 或 外部儲存裝置  | (不建議) 配對另一個憑證方法，但將憑證值存放於 AWS CLI之外的位置。此方法的安全性僅與存放憑證的外部位置一樣安全。 | [在 中使用外部程序來採購登入資料 AWS CLI](cli-configure-sourcing-external.md) | 

## 組態和憑證優先順序
<a name="cli-chap-authentication-precedence"></a>

登入資料和組態設定位於多個位置，例如系統或使用者環境變數、本機 AWS 組態檔案，或在命令列上明確宣告為參數。某些位置的優先順序高於其他位置。 AWS CLI 憑證和組態設定的優先順序如下：

1. **[命令列選項](cli-configure-options.md)** – 覆寫任何其他位置 (例如 `--region`、`--output` 和 `--profile` 參數) 的設定。

1. **[環境變數](cli-configure-envvars.md)** – 您可以將數值存放在環境變數中。

1. **[擔任角色](cli-configure-role.md)**—透過組態或 [https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role.html) 命令，獲得 IAM 角色許可。

1. **[擔任具有 Web 身分的角色](cli-configure-role.md)**—透過組態或 [https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role-with-web-identity.html) 命令，使用 Web 身分獲得 IAM 角色許可。

1. **[憑證檔案](cli-configure-files.md)** – 當您執行 `aws configure` 命令時，會更新 `credentials` 和 `config` 檔案。`credentials` 檔案在 Linux 或 macOS 上位於 `~/.aws/credentials`，在 Windows 上位於 `C:\Users\USERNAME\.aws\credentials`。

1. **[自訂程序](cli-configure-sourcing-external.md)**—從外部來源取得憑證。

1. **[組態檔](cli-configure-files.md)** – 當您執行 `aws configure` 命令時，會更新 `credentials` 和 `config` 檔案。`config` 檔案在 Linux 或 macOS 上位於 `~/.aws/config`，在 Windows 上位於 `C:\Users\USERNAME\.aws\config`。

1. **[容器憑證](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)** – 您可以將 IAM 角色與您的每一個 Amazon Elastic Container Service (Amazon ECS) 任務定義關聯起來。然後，該角色的臨時憑證就可供該任務的容器使用。如需詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》**中的[任務 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。

1. **[Amazon EC2 執行個體設定檔憑證](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)** – 您可以將 IAM 角色與您的每一個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體關聯起來。然後，該角色的臨時憑證就可供執行個體中執行的程式碼使用。憑證是透過 Amazon EC2 中繼資料服務傳遞。如需詳細資料，請參閱《Amazon EC2 使用者指南》**中的 [Amazon EC2 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)，以及《IAM 使用者指南》**中的[使用執行個體設定檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。

## 本區段的其他主題
<a name="cli-chap-authentication-topics"></a>
+ [使用 的短期登入資料進行驗證 AWS CLI](cli-authentication-short-term.md)
+ [在 中使用 IAM 角色 AWS CLI](cli-configure-role.md)
+ [使用 的 IAM 使用者登入資料進行驗證 AWS CLI](cli-authentication-user.md)
+ [在 中使用 Amazon EC2 執行個體中繼資料做為登入資料 AWS CLI](cli-configure-metadata.md)
+ [在 中使用外部程序來採購登入資料 AWS CLI](cli-configure-sourcing-external.md)

# 使用 的短期登入資料進行驗證 AWS CLI
<a name="cli-authentication-short-term"></a>

建議您設定 SDK 或工具，以延長的工作階段持續時間選項使用 [IAM Identity Center 驗證](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html)。不過，您可以複製並使用 AWS 存取入口網站中提供的臨時登入資料。若這些憑證過期，便需要複製新憑證。您可以在設定檔中使用臨時憑證，或用作系統屬性和環境變數的值。

1. [登入 AWS 存取入口網站](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosignin.html)。

1. 請依照[這些指示](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html)，從 AWS 存取入口網站複製 IAM 角色登入資料。

   1. 針對連結指示中的步驟 2，選擇針對您的開發需求授予存取權 AWS 的帳戶和 IAM 角色名稱。此角色的名稱通常如 **PowerUserAccess** 或 **Developer**。

   1. 針對步驟 4，請選取**將設定檔新增至 AWS 憑證檔案**，然後複製該內容。

1. 建立或開啟共用的 `credentials` 檔案。這個檔案是位於 Linux 和 macOS 系統上的 `~/.aws/credentials` 和 Windows 上的 `%USERPROFILE%\.aws\credentials`。如需詳細資訊，請參閱 [中的組態和登入資料檔案設定 AWS CLI](cli-configure-files.md)。

1. 將以下文字新增至共用的 `credentials` 檔案。以您複製的憑證取代範例值。

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

1. 將您偏好的預設區域和格式新增至共用的 `config` 檔案。

   ```
   [default]
   region=us-west-2
   output=json
   
   [profile user1]
   region=us-east-1
   output=text
   ```

SDK 在建立服務用戶端時，會存取這些臨時憑證並用於每個要求。在步驟 2a 中選擇的 IAM 角色設定會決定[臨時憑證的有效時長](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)。最長持續時間為 12 小時。

每當您的憑證過期時，請重複這些步驟。

# 在 中使用 IAM 角色 AWS CLI
<a name="cli-configure-role"></a>

[AWS Identity and Access Management (IAM) 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是一種授權工具，可讓使用者取得額外的 （或不同的） 許可，或取得在不同 AWS 帳戶中執行動作的許可。

**Topics**
+ [先決條件](#cli-role-prereqs)
+ [使用 IAM 角色概觀](#cli-role-overview)
+ [設定和使用角色](#cli-role-prepare)
+ [使用多重要素驗證](#cli-configure-role-mfa)
+ [跨帳戶角色和外部 ID](#cli-configure-role-xaccount)
+ [指定角色工作階段名稱以更輕鬆地稽核](#cli-configure-role-session-name)
+ [擔任具有 Web 身分的角色](#cli-configure-role-oidc)
+ [清除快取的憑證](#cli-configure-role-cache)

## 先決條件
<a name="cli-role-prereqs"></a>

若要執行 `iam` 命令，您需要安裝和設定 AWS CLI。這包括設定已設定的設定檔，因為假設角色與另一個憑證方法配對。如需詳細資訊，請參閱 [安裝、更新和解除安裝 AWS CLI](cli-chap-install.md)。

## 使用 IAM 角色概觀
<a name="cli-role-overview"></a>

您可以透過在 `~/.aws/config` 檔案中定義角色的描述檔，將 AWS Command Line Interface (AWS CLI) 設定為使用 IAM 角色。

以下範例顯示名為 `marketingadmin` 的角色描述檔。如果您使用 `--profile marketingadmin`（或使用 [AWS\$1PROFILE 環境變數](cli-configure-envvars.md)指定） 執行命令， AWS CLI 會使用在個別設定檔中定義的登入資料`user1`來擔任具有 Amazon Resource Name (ARN) 的角色`arn:aws:iam::123456789012:role/marketingadminrole`。您可以執行指派給該角色的許可所允許的任何操作。

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
source_profile = user1
```

接著，您就可以指定 `source_profile` 來指向另一個具名描述檔，其中包含有許可使用此角色的使用者登入資料。在上述範例中，`marketingadmin` 描述檔使用 `user1` 描述檔中的憑證。當您指定 AWS CLI 命令要使用設定檔 時`marketingadmin`， AWS CLI 會自動查詢連結`user1`設定檔的登入資料，並使用它們來請求指定 IAM 角色的臨時登入資料。CLI 在背景中使用 [sts:AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 操作實現這一點。然後，這些臨時憑證就會用來執行所要求的 AWS CLI 命令。指定的角色必須已連接允許請求 AWS CLI 命令執行的 IAM 許可政策。

若要從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或 Amazon Elastic Container Service (Amazon ECS) 容器內執行 AWS CLI 命令，您可以使用連接至執行個體設定檔或容器的 IAM 角色。如果您未指定描述檔或未設定環境變數，則會直接使用該角色。這可讓您避免將長時間存留的存取金鑰存放在您的執行個體。您也可以使用這些執行個體或容器角色來僅取得另一個角色的憑證。若要這樣做，請使用 `credential_source` (而不是 `source_profile`) 以指定如何尋找憑證。`credential_source` 屬性支援下列數值：
+ `Environment` – 從環境變數擷取來源憑證。
+ `Ec2InstanceMetadata` – 使用連接到 Amazon EC2 執行個體描述檔的 IAM 角色。
+ `EcsContainer` – 使用連接到 Amazon ECS 容器的 IAM 角色。

以下範例顯示經由參考 Amazon EC2 執行個體描述檔而使用的相同 `marketingadminrole` 角色。

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
```

當您叫用角色時，您會有其他選項可以取得，例如使用多重要素驗證、外部 ID (由第三方公司用來存取其用戶端資源)。您也可以指定可在 AWS CloudTrail 日誌中更輕鬆地稽核的唯一角色工作階段名稱。

## 設定和使用角色
<a name="cli-role-prepare"></a>

當您使用指定 IAM 角色的設定檔執行命令時， AWS CLI 會使用來源設定檔的登入資料來呼叫 AWS Security Token Service (AWS STS) 並請求指定角色的臨時登入資料。來源描述檔中的使用者必須有許可針對指定的描述檔中的角色呼叫 `sts:assume-role`。此角色必須有信任關係而允許來源描述檔中的使用者使用該角色。針對角色來擷取並使用臨時憑證的過程就稱為*擔任角色*。

在 IAM 中建立一個角色，並使用您希望使用者按照《AWS Identity and Access Management 使用者指南》**中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)下的過程來承擔的許可。如果角色和來源描述檔的 使用者在同一帳戶中，則您可以在設定角色的信任關係時輸入自己的帳戶 ID。

建立角色後，修改信任關係以允許 使用者承擔此角色。

以下範例顯示可連接到角色的信任政策。此政策允許帳戶 (123456789012) 中的任何使用者擔任角色，但***前提是***該帳戶的管理員明確將 `sts:AssumeRole` 許可授予使用者。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

信任政策不會實際授予許可。帳戶的管理員必須連結含有適當許可的政策，才能將擔任角色的許可委派給個別使用者。以下範例顯示可連接到使用者的政策，該政策只允許使用者擔任 `marketingadminrole` 角色。如需有關授予使用者擔任角色之權限的詳細資訊，請參閱《IAM 使用者指南》**中的[授予使用者許可以切換角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/marketingadminrole"
    }
  ]
}
```

------

使用者不需要額外的許可，即可使用角色描述檔執行 AWS CLI 命令。反之，執行命令所需的許可來自於連接到*角色*的許可。您可以將許可政策連接到角色，以指定可以對哪些 AWS 資源執行哪些動作。如需有關將許可附加至角色 (運作方式與使用者相同) 的詳細資訊，請參閱《IAM 使用者指南》**中的[變更 IAM 使用者的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)。

既然您已正確設定角色描述檔、角色許可、角色信任關係和使用者許可，您可以在命令列叫用 `--profile` 選項來使用該角色。例如，以下使用本主題開頭範例所定義的 `marketingadmin` 角色所連接的許可，呼叫 Amazon S3 `ls` 命令。

```
$ aws s3 ls --profile marketingadmin
```

若要使用多個呼叫的角色，可以從命令列為目前工作階段設定 `AWS_PROFILE` 環境變數。因為已定義環境變數，您不需要在每個命令中指定 `--profile` 選項。

**Linux 或 macOS**

```
$ export AWS_PROFILE=marketingadmin
```

**Windows**

```
C:\> setx AWS_PROFILE marketingadmin
```

如需設定使用者與角色的詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 身分 (使用者、使用者群組和角色)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) 和 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id-roles.html)。

## 使用多重要素驗證
<a name="cli-configure-role-mfa"></a>

為了提高安全性，當使用者嘗試使用角色設定檔進行呼叫時，您可以要求使用者提供由多重要素驗證 (MFA) 裝置、U2F 裝置或行動應用程式產生的一次性金鑰。

首先，您可以選擇修改 IAM 角色的信任關係來要求 MFA。這可防止任何人在使用該角色之前未先使用 MFA 進行驗證。相關範例請參閱下列範例中的 `Condition` 行。此政策可讓名為 `anika` 的使用者擔任政策連接的角色，前提是使用者已使用 MFA 進行驗證。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" },
      "Action": "sts:AssumeRole",
      "Condition": { "Bool": { "aws:multifactorAuthPresent": true } }
    }
  ]
}
```

------

接著，在角色設定檔中新增一行，指定使用者的 MFA 裝置的 ARN。以下範例 `config` 檔案項目顯示兩個角色設定檔，都使用使用者 `anika` 的存取金鑰來請求角色 `cli-role` 的臨時登入資料。使用者 `anika` 具有擔任角色的許可，由角色的信任政策所授予。

```
[profile role-without-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile=cli-user

[profile role-with-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile = cli-user
mfa_serial = arn:aws:iam::128716708097:mfa/cli-user

[profile cli-user]
region = us-west-2
output = json
```

`mfa_serial` 設定可以採取 ARN，如圖所示，或硬體 MFA 字符的序號。

第一個設定檔 `role-without-mfa` 不需要 MFA。不過，由於連接到該角色的上述範例信任政策要求 MFA，因此使用此設定檔來執行命令的任何嘗試都會失敗。

```
$ aws iam list-users --profile role-without-mfa

An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied
```

第二個設定檔項目 `role-with-mfa` 識別要使用的 MFA 裝置。當使用者嘗試使用此設定檔執行 AWS CLI 命令時， 會 AWS CLI 提示使用者輸入 MFA 裝置提供的一次性密碼 (OTP)。如果 MFA 驗證成功，命令會執行請求操作。OTP 不會顯示在螢幕上。

```
$ aws iam list-users --profile role-with-mfa
Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user:
{
    "Users": [
        {
            ...
```

## 跨帳戶角色和外部 ID
<a name="cli-configure-role-xaccount"></a>

您可以藉由將角色設定為跨帳戶角色，使 使用者能夠使用屬於不同帳戶的角色。在角色建立期間，將角色類型設定為 **Another AWS account** (其他 AWS 帳戶)，如[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)所述。或者，您可以選取 **Require MFA (需要 MFA)**。如 [使用多重要素驗證](#cli-configure-role-mfa) 中所描述的，**Require MFA** (需要 MFA) 選項在信任關係中設定適當的條件。

如果您使用[外部 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) 以進一步控制誰可使用跨帳戶的角色，則您還必須將 `external_id` 參數新增至角色描述檔。這通常是在另一個帳戶由公司或組織外的某人控制時才使用。

```
[profile crossaccountrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
external_id = 123456
```

## 指定角色工作階段名稱以更輕鬆地稽核
<a name="cli-configure-role-session-name"></a>

當多人共用一個角色時，稽核就更具挑戰。您想要將呼叫的每個操作與呼叫該動作的個人建立關聯。不過，當該個人使用某個角色時，個人擔任的角色會是與呼叫操作不同的動作，因此您必須手動將兩者建立關聯。

您可以在使用者擔任角色時指定唯一的角色工作階段名稱，藉此簡化此操作。您可以將 `role_session_name` 參數新增至指定角色的 `config` 檔案中的每個具名描述檔。`role_session_name` 值會傳遞到 `AssumeRole` 操作，並成為角色工作階段的 ARN 的一部分。它也包含在所有記錄操作的 AWS CloudTrail 日誌中。

例如，您可以建立以角色為基礎的設定檔，如下所示。

```
[profile namedsessionrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
role_session_name = Session_Maria_Garcia
```

這會導致角色工作階段中具有下列 ARN。

```
arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia
```

此外，所有 AWS CloudTrail 日誌都會在每個操作擷取的資訊中包含角色工作階段名稱。

## 擔任具有 Web 身分的角色
<a name="cli-configure-role-oidc"></a>

您可以設定設定檔，以指示 AWS CLI 應該使用 [Web 聯合身分和 Open ID Connect (OIDC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) 擔任角色。當您在設定檔中指定此項目時， AWS CLI 會自動為您進行對應的 AWS STS `AssumeRoleWithWebIdentity`呼叫。

**注意**  
當您指定使用 IAM 角色的設定檔時， AWS CLI 會進行適當的呼叫以擷取臨時登入資料。這些憑證會儲存在 `~/.aws/cli/cache` 中。指定相同設定檔的後續 AWS CLI 命令會使用快取的暫時登入資料，直到過期為止。此時， AWS CLI 會自動重新整理登入資料。

若要使用 Web 聯合身分擷取並使用臨時憑證，您可以在共用描述檔中指定以下組態值。

[role\$1arn](#cli-configure-role)  
指定要擔任的角色 ARN。

web\$1identity\$1token\$1file  
指定檔案的路徑，該檔案包含由身分提供者提供的 OAuth 2.0 存取字符或 OpenID Connect ID 字符。 AWS CLI 會載入此檔案，並傳遞其內容作為 `WebIdentityToken` 操作的 `AssumeRoleWithWebIdentity` 引數。

[role\$1session\$1name](#cli-configure-role-session-name)  
指定套用到此擔任角色工作階段的選用名稱。

下列是擔任具有 Web 身分角色描述檔所需的最少量組態的組態範例。

```
# In ~/.aws/config

[profile web-identity]
role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume
web_identity_token_file=/path/to/a/token
```

您也可以使用 [環境變數](cli-configure-envvars.md) 提供此組態。

AWS\$1ROLE\$1ARN  
要擔任的角色 ARN。

AWS\$1WEB\$1IDENTITY\$1TOKEN\$1FILE  
Web 身分字符檔案的路徑。

AWS\$1ROLE\$1SESSION\$1NAME  
套用到此擔任角色工作階段的名稱。

**注意**  
這些環境變數目前只適用於擔任具有 Web 身分提供者的角色。它們不適用於一般擔任角色供應商組態。

## 清除快取的憑證
<a name="cli-configure-role-cache"></a>

當您使用角色時， 會在本機 AWS CLI 快取臨時登入資料，直到過期為止。下次您嘗試使用它們時， AWS CLI 會嘗試代表您續約它們。

如果角色的臨時憑證被[撤銷](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)，則不會自動續約，而嘗試使用它們會失敗。不過，您可以刪除快取，強制 AWS CLI 擷取新的登入資料。

**Linux 或 macOS**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# 使用 的 IAM 使用者登入資料進行驗證 AWS CLI
<a name="cli-authentication-user"></a>

**警告**  
為避免安全風險，在開發專用軟體或使用真實資料時，請勿使用 IAM 使用者進行身分驗證。相反地，搭配使用聯合功能和身分提供者，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

本節說明如何以 IAM 使用者進行基本設定。其中包含使用 `config` 和 `credentials` 檔案的安全憑證。

**Contents**
+ [步驟 1：建立 IAM 使用者](#cli-authentication-user-create)
+ [步驟 2：取得您的存取金鑰](#cli-authentication-user-get)
+ [步驟 3：設定 AWS CLI](#cli-authentication-user-configure.title)
  + [使用 `aws configure`](#cli-authentication-user-configure-wizard)

## 步驟 1：建立 IAM 使用者
<a name="cli-authentication-user-create"></a>

按照 *IAM 使用者指南*中的[建立 IAM 使用者 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) 程序來建立 IAM 使用者。
+ 針對**權限選項**，請選擇**直接連接政策**做為您指派權限給此使用者的方式。
+ 多數「入門」SDK 教學都使用 Amazon S3 服務做為範例。若要讓應用程式能夠完整存取 Amazon S3，請選取要連接至此使用者的 `AmazonS3FullAccess` 政策。

## 步驟 2：取得您的存取金鑰
<a name="cli-authentication-user-get"></a>

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選取**使用者**，然後選取您先前建立使用者的 **`User name`**。

1. 在使用者頁面上，選取**安全憑證**頁面。接著，在**存取金鑰**下，選取**建立存取金鑰**。

1.  針對**建立存取金鑰步驟 1**，請選擇**命令列界面 (CLI)**。

1. 在**建立存取金鑰步驟 2** 中，輸入選用標籤並選取**下一步**。

1. 在**建立存取金鑰步驟 3** 中，選取**下載 .csv 檔案**，以儲存包含 IAM 使用者存取金鑰和私密存取金鑰的 `.csv` 檔案。您之後將會用到此資訊。

1. 選取完成。

## 步驟 3：設定 AWS CLI
<a name="cli-authentication-user-configure.title"></a>

針對一般用途， AWS CLI 需要下列資訊：
+ 存取金鑰 ID
+ 私密存取金鑰
+ AWS 區域
+ 輸出格式

會將此資訊 AWS CLI 儲存在 `credentials` 檔案中名為 的*設定檔* （設定集合） `default`中。根據預設，當您執行未明確指定要使用之設定檔的 AWS CLI 命令時，會使用此設定檔中的資訊。如需有關 `credentials` 檔案的詳細資訊，請參閱[中的組態和登入資料檔案設定 AWS CLI](cli-configure-files.md)。

若要設定 AWS CLI，請使用下列其中一個程序：

**Topics**
+ [使用 `aws configure`](#cli-authentication-user-configure-wizard)

### 使用 `aws configure`
<a name="cli-authentication-user-configure-wizard"></a>

對於一般用途， `aws configure`命令是設定 AWS CLI 安裝的最快方式。此設定精靈會針對您要使用的每項資訊給予提示。除非使用 `--profile`選項另有指定，否則 會將此資訊 AWS CLI 存放在 `default` 設定檔中。

下列範例使用範例值來設定 `default` 設定檔。將範本值取代為您自己的值，如下列章節所述。

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

下列範例使用範例值來設定名為 `userprod` 的設定檔。將範本值取代為您自己的值，如下列章節所述。

```
$ aws configure --profile userprod
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

# 在 中使用 Amazon EC2 執行個體中繼資料做為登入資料 AWS CLI
<a name="cli-configure-metadata"></a>

當您 AWS CLI 從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體內執行 時，您可以簡化將登入資料提供給命令的程序。每個 Amazon EC2 執行個體都包含中繼資料，可供 AWS CLI 直接查詢臨時憑證。當 IAM 角色連接至執行個體時， AWS CLI 會自動且安全地從執行個體中繼資料擷取登入資料。

若要停用此服務，請使用 [AWS\$1EC2\$1METADATA\$1DISABLED](cli-configure-envvars.md#envvars-list-AWS_EC2_METADATA_DISABLED) 環境變數。

**Topics**
+ [先決條件](#cli-configure-metadata-prereqs)
+ [設定用於 Amazon EC2 中繼資料的設定檔](#cli-configure-metadata-configure)

## 先決條件
<a name="cli-configure-metadata-prereqs"></a>

若要搭配 使用 Amazon EC2 登入資料 AWS CLI，您需要完成下列操作：
+ 安裝及設定 AWS CLI。如需詳細資訊，請參閱[安裝、更新和解除安裝 AWS CLI](cli-chap-install.md)及[的身分驗證和存取憑證 AWS CLI](cli-chap-authentication.md)。
+ 您瞭解組態檔案和命名設定檔。如需詳細資訊，請參閱[中的組態和登入資料檔案設定 AWS CLI](cli-configure-files.md)。
+ 您已建立可存取所需資源的 AWS Identity and Access Management (IAM) 角色，並在啟動時將該角色連接至 Amazon EC2 執行個體。如需詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 的 IAM 政策](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)，以及《IAM 使用者指南》中的[授予在 Amazon EC2 執行個體上執行的應用程式存取 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html)的權限。 *Amazon EC2 * **

## 設定用於 Amazon EC2 中繼資料的設定檔
<a name="cli-configure-metadata-configure"></a>

若要指定您想要使用託管 Amazon EC2 執行個體設定檔中可用的憑證，請在組態檔案中的具名設定檔使用下列語法。如需詳細說明，請參閱下列步驟。

```
[profile profilename]
role_arn = arn:aws:iam::123456789012:role/rolename
credential_source = Ec2InstanceMetadata
region = region
```

1. 在組態檔案中建立設定檔。

   ```
   [profile profilename]
   ```

1. 新增可存取所需資源的 IAM ARN 角色。

   ```
   role_arn = arn:aws:iam::123456789012:role/rolename
   ```

1. 指定 `Ec2InstanceMetadata` 作為憑證來源。

   ```
   credential_source = Ec2InstanceMetadata
   ```

1. 設定您的區域。

   ```
   region = region
   ```

**範例**

下列範例會假設 *`marketingadminrole`* 角色，並在名為 `marketingadmin` 的 Amazon EC2 執行個體描述檔中使用 `us-west-2` 區域。

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
region = us-west-2
```

# 在 中使用外部程序來採購登入資料 AWS CLI
<a name="cli-configure-sourcing-external"></a>

**警告**  
本主題討論從外部程序取得憑證。如果用於產生憑證的命令可由未經核准的程序或使用者所存取，這可能會有安全風險。我們建議您使用 AWS CLI 和 提供的支援、安全替代方案 AWS ，以降低入侵憑證的風險。務必保護 `config` 檔案及任何支援檔案和工具，以防止洩露。  
請確定您的自訂登入資料工具不會將任何秘密資訊寫入 ，`StdErr`因為 SDKs和 AWS CLI 可以擷取並記錄這類資訊，並可能將其公開給未經授權的使用者。

如果您有方法可以產生或查詢 未直接支援的登入資料 AWS CLI，您可以透過在 `config` 檔案中設定 `credential_process` 設定來設定 AWS CLI 來使用登入資料。

例如，您在 `config` 檔案中可能包含類似以下的項目。

```
[profile developer]
credential_process = /opt/bin/awscreds-custom --username helen
```

**語法**  
若要以與任何作業系統相容的方式建立此字串，請遵循這些規則：
+ 如果路徑或檔案名稱包含空格，完整的路徑和檔案名稱請以雙引號 (「」) 括住。路徑和檔案名稱只能包含字元：A-Z a-z 0-9 – \$1. 空格
+ 如果參數名稱或參數值包含空格，則該元素請以雙引號 (「」) 括住。僅括住名稱或值，而非對組。
+ 請勿在字串中包含任何環境變數。例如，您無法包含 `$HOME` 或 `%USERPROFILE%`。
+ 請勿將主資料夾指定為 `~`。您必須指定完整路徑。

**適用於 Windows 的範例**

```
credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
```

**適用於 Linux 或 macOS 的範例**

```
credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
```

**登入資料程式的預期輸出**

會執行設定檔中指定的 AWS CLI 命令，然後從 讀取資料`STDOUT`。您指定的命令必須在 `STDOUT` 上產生符合以下語法的 JSON 輸出。

```
{
  "Version": 1,
  "AccessKeyId": "an AWS access key",
  "SecretAccessKey": "your AWS secret access key",
  "SessionToken": "the AWS session token for temporary credentials", 
  "Expiration": "ISO8601 timestamp when the credentials expire"
}
```

**注意**  
截至本文編寫時，`Version` 索引鍵必須設定為 `1`。這可能隨著結構演進而逐漸遞增。

`Expiration` 索引鍵是 [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) 格式的時間戳記。如果 `Expiration` 索引鍵未出現在工具的輸出中，CLI 會假設憑證是不重新整理的長期憑證。否則，憑證就視為臨時憑證，在過期之前可透過重新執行 `credential_process` 命令來自動重新整理。

**注意**  
 AWS CLI ***不會***像擔任角色登入資料一樣快取外部程序登入資料。如果需要快取，您必須在外部程序中實作它。

外部程序可能傳回非零傳回碼，以表示擷取憑證時發生錯誤。