

適用於 Xamarin 的 AWS Mobile SDK 現在已包含在 中 適用於 .NET 的 AWS SDK。本指南參考 Mobile SDK for Xamarin 的封存版本。

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

# Amazon Simple Storage Service (S3)
<a name="s3"></a>

## 什麼是 S3？
<a name="what-is-s3"></a>

 [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) 為開發人員提供安全、耐用、高度可擴展的物件儲存。Amazon S3 易於使用，具有簡單的 Web 服務界面，可從 Web 上的任何位置存放和擷取任意數量的資料。使用 Amazon S3，只需按實際使用的儲存容量付費。沒有最低費用也沒有設定費。

Amazon S3 為各種使用案例提供經濟實惠的物件儲存，包括雲端應用程式、內容分發、備份和封存、災難復原和大數據分析。

如需 AWS S3 區域可用性的相關資訊，請參閱 [AWS 服務區域可用性](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

## 重要概念
<a name="key-concepts"></a>

### 儲存貯體
<a name="bucket"></a>

您存放在 Amazon S3 的每個物件都位在儲存貯體內。您可以使用儲存貯體將相關物件分組，其方式與使用目錄將檔案系統中的檔案分組相同。儲存貯體具有屬性，例如存取許可和版本控制狀態，您可以指定要儲存貯體所在的區域。

若要進一步了解 S3 儲存貯體，請參閱S3 開發人員指南》中的[使用儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/UG/BucketOperations.html)。

### 物件
<a name="objects"></a>

物件是您存放在 Amazon S3 中的資料。每個物件都位在您於特定 AWS 區域中建立的儲存貯體內。

除非您明確地將存放在區域中的物件傳輸到其他區域，否則物件絕對不會離開該區域。例如，存放在歐洲 （愛爾蘭） 區域的物件絕不會離開它。存放在 Amazon S3 區域中的物件實際保留在該區域中。Amazon S3 不會保留副本或將其移至任何其他區域。不過，只要您有必要許可，就可以從任何位置存取物件。

物件可以是任何檔案類型：映像、備份資料、電影等。物件最大可達 5 TB。儲存貯體中可以有不限數目的物件。

您必須具備儲存貯體的寫入許可，才能將物件上傳至 Amazon S3。如需設定儲存貯體許可的詳細資訊，請參閱 S3 開發人員指南中的[編輯儲存貯體許可](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingBucketPermissions.html)。

若要進一步了解 S3 物件，請參閱S3 開發人員指南[》中的使用物件](https://docs.aws.amazon.com/AmazonS3/latest/UG/ObjectOperations.html)。

### 物件中繼資料
<a name="object-metadata"></a>

Amazon S3 中的每個物件都有一組代表其中繼資料的鍵值對。有兩種類型的中繼資料：
+  **系統中繼資料** – 有時由 Amazon S3 處理，例如 Content-Type 和 Content-Length。
+  **使用者中繼資料** – 從不由 Amazon S3 處理。使用者中繼資料會與物件一起存放，並與其一起傳回。使用者中繼資料的大小上限為 2 KB，而且索引鍵與其值必須符合 US-ASCII 標準。

若要進一步了解 S3 物件中繼資料，請參閱[編輯物件中繼資料](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingtheMetadataofanObject.html)。

## 專案設定
<a name="project-setup"></a>

### 先決條件
<a name="prerequisites"></a>

若要在應用程式中使用 Amazon S3，您需要將 SDK 新增至專案。若要這樣做，請遵循[設定適用於 .NET 和 Xamarin 的 AWS Mobile SDK](setup.md) 中的指示。

### 建立 S3 儲存貯體章節
<a name="create-an-s3-bucket"></a>

Amazon S3 會將您應用程式的資源存放在 Amazon S3 儲存貯體 - 位於特定[區域的](https://docs.aws.amazon.com/general/latest/gr/rande.html)雲端儲存容器。每個 Amazon S3 儲存貯體都必須具有全域唯一名稱。您可以使用 [Amazon S3 主控台](https://console.aws.amazon.com/s3/)來建立儲存貯體。

1. 登入 [Amazon S3 主控台](https://console.aws.amazon.com/s3/)，然後按一下**建立儲存貯**體。

1. 輸入儲存貯體名稱，選取區域，然後按一下**建立**。

### 設定 S3 的許可
<a name="set-permissions-for-s3"></a>

預設 IAM 角色政策會授予應用程式對 Amazon Mobile Analytics 和 Amazon Cognito Sync 的存取權。若要讓您的 Cognito 身分集區存取 Amazon S3，您必須修改身分集區的角色。

1. 前往 [Identity and Access Management Console](https://console.aws.amazon.com/iam/home)，然後按一下左側窗格中**的角色**。

1. 在搜尋方塊中輸入您的身分集區名稱。將會列出兩個角色：一個用於未經驗證的使用者，另一個用於通過驗證的使用者。

1. 按一下未驗證使用者的角色 （身分集區名稱將附加不驗證）。

1. 按一下**建立角色政策**，選取**政策產生器**，然後按一下**選取**。

1. 在**編輯許可**頁面上，輸入下圖中顯示的設定，以您自己的名稱取代 Amazon Resource Name (ARN)。S3 儲存貯體的 ARN 看起來像`arn:aws:s3:::examplebucket/*`，由儲存貯體所在的區域和儲存貯體的名稱組成。以下顯示的設定會讓您的身分集區完整存取指定儲存貯體的所有動作。  
![](http://docs.aws.amazon.com/zh_tw/mobile/sdkforxamarin/developerguide/images/edit-permissions.png)

1. 按一下**新增陳述式**按鈕，然後按一下**下一步**。

1. 精靈會顯示您產生的組態。按一下**套用政策**。

如需授予 S3 存取權的詳細資訊，請參閱[授予 Amazon S3 儲存貯體的存取權](http://blogs.aws.amazon.com/security/post/Tx3VRSWZ6B3SHAV/Writing-IAM-Policies-How-to-grant-access-to-an-Amazon-S3-bucket)。

### （選用） 設定 S3 請求的簽章版本
<a name="optional-configure-the-signature-version-for-s3-requests"></a>

與 Amazon S3 的每次互動，可以經過驗證身分或是匿名進行。AWS 使用 Signature 第 4 版或 Signature 第 2 版演算法來驗證對服務的呼叫。

2014 年 1 月之後建立的所有新 AWS 區域僅支援 Signature 第 4 版。不過，許多較舊的區域仍然支援 Signature 第 4 版和 Signature 第 2 版請求。

如果您的儲存貯體位於[此頁面](https://docs.aws.amazon.com/general/latest/gr/signature-version-2.html)列出的其中一個不支援 Signature 第 2 版請求的區域，您必須將 AWSConfigsS3.UseSignatureVersion4 屬性設定為「true」，如下所示：

```
AWSConfigsS3.UseSignatureVersion4 = true;
```

如需 AWS Signature 版本的詳細資訊，請參閱[驗證請求 (AWS Signature 第 4 版）](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)。

## 將 S3 與您的應用程式整合
<a name="integrating-s3-with-your-application"></a>

有兩種方式可以在 Xamarin 應用程式中與 S3 互動。在下列主題中深入探索這兩種方法：

**Topics**