使用 Amazon S3 存儲和檢索文件 - AWS Mobile SDK

Xamarin 的AWS行動 SDK 現在已包含在AWS SDK for .NET. 本指南參考 Xamarin 行動 SDK 的封存版本。

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

使用 Amazon S3 存儲和檢索文件

Amazon Simple Storage Service (Amazon S3) 為移動開發人員提供安全、耐用、高可擴展性的物件儲存空間。Amazon S3 易於使用,提供了簡單好用的 Web 服務界面,可從 Web 中的任意位置,來儲存和檢索任意數量的資料。

下面的教學課程介紹如何集成 S3TransferUtility,這是一個用於將 S3 用於應用程序的高級實用程序。如需使用 Xamarin 應用程式 S3 的詳細資訊,請參Amazon Simple Storage Service (S3)

項目設定

先決條件

您必須完成設定適用於 .NET 和 Xamarin 的 AWS Mobile SDK,然後再開始本教程。

本教學課程還假設您已建立 S3 儲存貯體。若要建立 S3 儲存貯體,請訪問S3 AWS 主控台

設定 S3 的許可

默認 IAM 角色政策授予您的應用程式存取 Amazon Mobile Analytics 和 Amazon Cognito Sync 的權限。要使您的 Cognito 身份池能夠訪問 Amazon S3,您必須修改身份池的角色。

  1. 前往Identity and Access Management,然後按一下角色在左側窗格中。

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

  3. 按一下未通過身份驗證的用户的角色(它將在您的身份池名稱後附加無授權)。

  4. 按一下建立角色政策,選擇政策產生器,然後按一下選擇

  5. 編輯許可頁面上,輸入下圖中顯示的設定,將 Amazon Resource Name (ARN) 更換為您自己的資源名稱 (ARN)。S3 儲存貯體的 ARN 看起來像arn:aws:s3:::examplebucket/*,由儲存貯體所在的區域和儲存貯體名稱組成。下面顯示的設置將為您的身份池提供完全訪問指定存儲桶的所有操作。

    Edit Permissions interface for AWS policy creation, showing options for Amazon S3 access control.
  1. 按一下新增陳述式按鈕,然後單擊後續步驟

  2. 嚮導將顯示您產生的配置。按一下應用政策

如需授予 S3 存取權的詳細資訊,請參授予 Amazon S3 儲存貯體的存取權

AddNuGetS3 的軟件包到您的項目

請按照設定適用於 .NET 和 Xamarin 的 AWS Mobile SDK添加 S3NuGet套件添加到您的項目。

(可選)配置 S3 請求的簽名版本

與 Amazon S3 的每次互動,可以經過驗證身份或是匿名進行。AWS 使用簽名版本 4 或簽名版本 2 算法對服務的調用進行身份驗證。

2014 年 1 月之後創建的所有新 AWS 區域僅支持簽名版本 4。但是,許多較舊的區域仍然支援 Signature 第 4 版和 Signature 第 2 版請求。

如果您的存儲桶位於不支持簽名版本 2 請求的區域之一,如此頁面,您必須設定AWSConfigsS3.UseSignature版本 4 屬性設置為「true」,如下所示:

AWSConfigsS3.UseSignatureVersion4 = true;

如需 AWS Signature 版本的詳細資訊,請參驗證請求(AWS Signature 第 4 版)

初始化 S3TransferUtility用戶端

創建一個 S3 客户端,將其傳遞您的 AWS 證書對象,然後將 S3 客户端傳遞給傳輸實用程序,如下所示:

var s3Client = new AmazonS3Client(credentials,region); var transferUtility = new TransferUtility(s3Client);

將檔案上傳到 Amazon S3

若要將檔案上傳到 S3,請調用Upload,傳遞以下參數:

  • file-您要上傳的檔案字符串名稱

  • bucketName-存放檔案的 S3 儲存貯體的字符串名稱

transferUtility.Upload( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName" );

上面的代碼假設目錄環境中有一個檔案。SpecialFolder。ApplicationData。上傳功能會自動對大文件使用 S3 的多段上傳功能,以提高吞吐量。

從 Amazon S3 下載檔案

若要從 S3 下載檔案,請調用Download,傳遞以下參數:

  • file-您要下載的檔案的字符串名稱

  • bucketName-您要從中下載檔案的 S3 儲存貯體的字符串名稱

  • key-一個字符串,表示要下載的 S3 對象(在本例中是一個文件)的名稱

transferUtility.Download( Path.Combine(Environment.SpecialFolder.ApplicationData,"file"), "bucketName", "key" );

有關從 Xamarin 應用程序訪問 Amazon S3 的詳細信息,請參閲Amazon Simple Storage Service (S3)