Below you will find pages that utilize the taxonomy term “S3”
Posts
Deploy s3 bucket by cloudformation
預先準備 需要先把 aws cli 給裝起來
利用CLI可以把預先寫好的基礎建設結構佈署到AWS上,下面是簡單部署一個S3的bucket範例。
aws cloudformation deploy --stack-name paulteststack --template-file ./s3-create-template.json --stack-name: 想要deploy到哪一個cloudformation stack裡 --template-file: template 檔案的所在位置 還有很多參數可以設定,詳情可以參考 create-stack
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Create S3 bucket on AWS", "Resources": { "S3Test": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": "paul-test-1495611707" } } } } template 可以依照情境進行更進階的調整,例如調整bucket的CROS讓外部的前端程式可以進行存取。 { "AWSTemplateFormatVersion": "2010-09-09", "Description": "Create S3 bucket on AWS", "Resources": { "S3Test": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": "paul-test-1495611707", "AccessControl": "PublicReadWrite", "CorsConfiguration": { "CorsRules": [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposedHeaders": [ "Date" ], "Id": "myCORSRuleId1", "MaxAge": "3600" }, { "AllowedHeaders": [ "x-amz-*" ], "AllowedMethods": [ "DELETE" ], "AllowedOrigins": [ "http://www.
Posts
S3 multipart uplaod prsigned url教學
當系統需要做續傳功能或大檔上傳的功能時,S3提供multipart upload的功能,可將檔案切分上傳,最後到S3再進行合併。主要分成3步驟:
Multipart upload init 上傳一個或多個parts Multipart upload complete 上傳初始化 檔案要上傳到S3時,需指明當這個 multipart upload 完成組合成一個 object 後,object 的 key 值為何,若希望以 multipart upload 建立的 object 帶有自訂的 metadata,亦須在 multipart upload 初始化時提供。成功初始化後,S3會建立一組 upload ID 當成未來上傳為此 object 的依據。
<?xml version="1.0" encoding="UTF-8"?> <InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Bucket>test201705021548</Bucket> <Key>hello.jpg</Key> <UploadId>QAUmLo15J46MyspVk6PgCPg7C1yk9RdOR2XfsdwEe2xDVS33HTh.cAJzFfwcug--</UploadId> </InitiateMultipartUploadResult> 操作步驟
為 init multipart 的需求產出數位簽章。 var StringToSign = "POST" + "\n" + "" + "\n" + "" + "\n" + new Date().toUTCString() + "\n" + "/test201705021548/hello.jpg?uploads"; init成功時,S3會回傳對應的 upload ID
Posts
AWS S3 REST 數位簽章與驗證
AWS S3 REST簽章與驗證 假設在S3裡的物件只設定給 “authenticated AWS user” 操作,那我們要如何利用數位簽章讓使用者可以透過 api resquest 去做身份認可(identity)並操作S3裏面的物件。 假設在S3上我們有一個name為 wisigntest 的bucket,裏面存在一個名為hello.jpg的物件,設定為 “authenticated AWS user” 可以R/W。我們將紀錄如何使用API去存取S3物件。 簡易瀏覽物件
GET /hello.jpg HTTP/1.1 Host: https://wisigntest.s3-ap-northeast-1.amazonaws.com Date: Fri, 28 Apr 2017 05:56:29 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:frJIUN8DYpKDtOLCwo//yllqDzg= 下面是我用Postman去讀取S3檔案的畫面 The Authentication Header
下面的格式是主要傳送給 API 的 Header 上要添加的 Authorization 資訊,透過Signature,AWS可以驗證此次的操作是否有效。
Authorization: AWS {AWSAccessKeyId}:{Signature} 下面是 Nodejs 計算的Signature程式碼
var crypto = require("crypto"); // from IAM role var secret_access_key = '64nd6BY7gTPDspq54gQcRth5dvORNdDvqL4BZ5zd'; var access_key_id = 'AKIAIUHT2BNZP65ADZKQ' var StringToSign = "GET" + "\n" + "" + "\n" + "" + "\n" + new Date().