

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

# 搭配 AWS 資源使用臨時登入資料
<a name="id_credentials_temp_use-resources"></a>

您可以使用臨時安全登入資料，使用 AWS CLI 或 AWS API （使用 [AWS SDKs](https://aws.amazon.com/tools/)) 對 AWS 資源提出程式設計請求。暫時性憑證提供的許可與長期安全憑證許可相同，例如 IAM 使用者憑證。不過，有幾個差異：
+ 當您使用臨時安全登入資料進行呼叫時，呼叫必須包含工作階段字符，該字符會與這些臨時登入資料一起傳回。 AWS 會使用工作階段字符來驗證臨時安全登入資料。
+ 暫時性憑證在指定的間隔時間後到期。暫時性憑證到期後，使用這些憑證進行的任何呼叫都將失敗，所以您必須產生一組新的暫時性憑證。暫時性憑證無法延期或重新整理超過原始指定間隔。
+ 當您使用暫時憑證發出請求時，您的主體可能會包含一組標籤。這些標籤來自工作階段標籤和連接到您擔任角色的標籤。如需有關工作階段標籤的詳細資訊，請參閱 [在 中傳遞工作階段標籤 AWS STS](id_session-tags.md)。

如果您使用的是 [AWS SDK](https://aws.amazon.com/tools)、[AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/) (AWS CLI) 或 [Tools for Windows PowerShell](https://aws.amazon.com/powershell)，則取得和使用臨時安全憑證的方式會隨內容而有所不同。如果您在 EC2 執行個體內執行程式碼 AWS CLI或 Tools for Windows PowerShell 命令，您可以利用 Amazon EC2 的角色。否則，您可以呼叫 [AWS STS API](https://docs.aws.amazon.com/STS/latest/APIReference/) 以取得暫時憑證，然後明確地使用他們呼叫 AWS 服務。

**注意**  
您可以使用 AWS Security Token Service (AWS STS) 來建立信任的使用者，並提供暫時安全登入資料，以控制對 AWS 資源的存取。如需 的詳細資訊 AWS STS，請參閱 [IAM 中的暫時安全憑證](id_credentials_temp.md)。 AWS STS 是一項全域服務，其在 具有預設端點`https://sts.amazonaws.com`。此端點位在美國東部 (維吉尼亞北部) 區域，但您從此端點和其他端點取得的憑證為全域有效。這些憑證可配合任何區域中的服務和資源使用。您也可以選擇對任何支援區域中的端點進行 AWS STS API 呼叫。從地理位置較靠近您的區域的伺服器提出請求，可以降低延遲發生機率。無論您的憑證來自哪個區域，都能全域使用。如需詳細資訊，請參閱 [在 AWS STS 中管理 AWS 區域](id_credentials_temp_enable-regions.md)。

**Contents**
+ [在 Amazon EC2 執行個體中使用暫時憑證](#using-temp-creds-sdk-ec2-instances)
+ [搭配 AWS SDKs](#using-temp-creds-sdk)
+ [搭配 使用臨時安全登入資料 AWS CLI](#using-temp-creds-sdk-cli)
+ [使用暫時性安全憑證與 API 操作](#RequestWithSTS)
+ [其他資訊](#using-temp-creds-more-info)

## 在 Amazon EC2 執行個體中使用暫時憑證
<a name="using-temp-creds-sdk-ec2-instances"></a>

如果您想要在 EC2 執行個體內執行 AWS CLI 命令或程式碼，建議取得登入資料的方式是使用 [Amazon EC2 的角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。您建立 IAM 角色，指定要授予在 EC2 執行個體上執行之應用程式的許可。當您啟動執行個體時，會建立角色與執行個體的關聯。

然後 AWS CLI，在執行個體上執行的應用程式和 Tools for Windows PowerShell 命令可以從執行個體中繼資料取得自動臨時安全登入資料。您不必明確取得暫時安全憑證。適用於 Windows PowerShell AWS SDKs AWS CLI和 Tools 會自動從 EC2 執行個體中繼資料服務 (IMDS) 取得憑證並使用它們。暫時性憑證擁有您為與執行個體定義關聯的角色所定義的許可。

如需詳細資訊及範例，請參閱下列：
+  [使用 IAM 角色授予 AWS Amazon Elastic Compute Cloud 上資源的存取權](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html)： 適用於 Java 的 AWS SDK
+  [使用 IAM 角色授予存取權](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) — 適用於 .NET 的 AWS SDK 
+  [建立角色](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/iam-example-create-role.html) — 適用於 Ruby 的 AWS SDK

## 搭配 AWS SDKs
<a name="using-temp-creds-sdk"></a>

若要在程式碼中使用臨時安全登入資料，請以程式設計方式呼叫類似 的 AWS STS API，`AssumeRole`並擷取產生的登入資料和工作階段字符。然後，您可以將這些值用作後續呼叫的登入資料 AWS。下列範例顯示假碼，說明如何在使用 AWS SDK 時使用臨時安全登入資料：

```
assumeRoleResult = AssumeRole(role-arn);
tempCredentials = new SessionAWSCredentials(
   assumeRoleResult.AccessKeyId, 
   assumeRoleResult.SecretAccessKey, 
   assumeRoleResult.SessionToken);
s3Request = CreateAmazonS3Client(tempCredentials);
```

如需使用 Python 撰寫的範例 (使用 [適用於 Python (Boto) 的 AWS SDK](https://aws.amazon.com/sdk-for-python/))，請參閱[切換到 IAM 角色 (AWS API)](id_roles_use_switch-role-api.md)。此範例會示範如何呼叫 `AssumeRole` 以取得暫時安全憑證，然後使用這些憑證呼叫 Amazon S3。

如需如何呼叫 `AssumeRole`、`GetFederationToken` 以及其他 API 操作的詳細資訊，請參閱 [AWS Security Token Service API 參考](https://docs.aws.amazon.com/STS/latest/APIReference/)。有關從結果取得臨時安全憑證和工作階段權杖的詳細資訊，請參閱您正在使用的軟體開發套件的說明文件。您可以在 SDK **SDKs 和工具組**區段的主要文件頁面上找到所有 AWS SDKs 的文件。 [AWS](https://aws.amazon.com/documentation)

您必須在舊的憑證到期之前，確實取得一組新的憑證。在某些軟體開發套件中，您可以使用為您管理重新整理憑證程序的提供者；檢查您正在使用的開發套件的文件。

## 搭配 使用臨時安全登入資料 AWS CLI
<a name="using-temp-creds-sdk-cli"></a>

您可以使用暫時性安全憑證與 AWS CLI。這很適合用於測試政策。

若使用 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/)，您便可以呼叫 [AWS STS API](https://docs.aws.amazon.com/STS/latest/APIReference/) (例如 `AssumeRole` 或 `GetFederationToken`)，然後擷取產生的輸出。以下範例顯示對 `AssumeRole` 的呼叫，其會傳送輸出至檔案。在此範例中，假設 `profile` 參數是 AWS CLI 組態檔案中的設定檔。同時也假設會參考有權擔任角色之 IAM 使用者的憑證。

```
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt
```

當命令完成時，您可以從您路由的任何地方擷取存取金鑰 ID、私密存取金鑰和工作階段權杖。您可以手動或使用指令碼執行這項作業。然後，您可以將這些值指派給環境變數。

當您執行 AWS CLI 命令時， 會先在環境變數中 AWS CLI 尋找特定順序的登入資料，然後在組態檔案中尋找登入資料。因此，在您將臨時登入資料放入環境變數之後， 預設 AWS CLI 會使用這些登入資料。（如果您在 命令中指定`profile`參數， 會 AWS CLI 略過環境變數。 相反地， 會在組態檔案中 AWS CLI 尋找，這可讓您視需要覆寫環境變數中的登入資料。) 

下列範例示範如何設定暫時安全登入資料的環境變數，然後呼叫 AWS CLI 命令。由於 AWS CLI 命令中不包含 `profile` 參數，因此 會先在環境變數中 AWS CLI 尋找登入資料，因此會使用臨時登入資料。

**Linux**

```
$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
$ aws ec2 describe-instances --region us-west-1
```

**Windows**

```
C:\> SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> 
C:\> aws ec2 describe-instances --region us-west-1
```

## 使用暫時性安全憑證與 API 操作
<a name="RequestWithSTS"></a>

如果您要向 提出直接 HTTPS API 請求 AWS，您可以使用從 AWS Security Token Service () 取得的臨時安全登入資料來簽署這些請求AWS STS。若要這樣做，您可以使用您從中接收的存取金鑰 ID 和私密存取金鑰 AWS STS。使用存取金鑰 ID 和私密存取金鑰簽署請求的方式，就和使用長期憑證簽署請求一樣。您也可以將您收到的工作階段字符新增至您的 API 請求 AWS STS。您將工作階段權杖新增到 HTTP 標頭，或查詢名為 `X-Amz-Security-Token` 的字串參數。您將工作階段權杖新增到 HTTP 標頭「或」**查詢字串參數，但不是兩者。如需簽署 HTTPS API 請求的詳細資訊，請參閱《》中的[簽署 AWS API 請求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)*AWS 一般參考*。

## 其他資訊
<a name="using-temp-creds-more-info"></a>

如需將 AWS STS 與其他 AWS 服務搭配使用的詳細資訊，請參閱下列連結：
+ **Amazon S3** 請參閱 *《Amazon Simple Storage Service 使用者指南》*中的[使用 IAM 使用者暫時憑證提出請求](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempSessionToken.html)或[使用聯合身分使用者暫時憑證提出請求](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempFederationToken.html)。
+ **Amazon SNS**。請參閱《Amazon Simple Queue Service 開發人員指南》**中的[將身分型政策與 Amazon SNS 搭配使用](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#UsingTemporarySecurityCredentials_SNS)。
+ **Amazon SQS** 請參閱《Amazon Simple Queue Service 開發人員指南》**中的 [Amazon SQS 中的 Identity and Access Management](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html#UsingTemporarySecurityCredentials_SQS)。
+ **Amazon SimpleDB**。請參閱[使用臨時安全憑證](https://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?UsingTemporarySecurityCredentials_SDB.html)中的*Amazon SimpleDB 開發人員指南*。