簡介
Zencoder 可以從您的 Amazon S3 存儲桶上傳和下載文件。要讓 Zencoder 下載文件,它們要么需要每個人都可以訪問,要么需要將存儲桶策略添加到您的存儲桶中以授予 Zencoder 訪問權限,或者您必須將憑據保存到您的帳戶以訪問存儲桶。
使用憑據
您可以將 憑據 保存到您的帳戶,這樣我們就可以使用您的帳戶而不是我們的帳戶來上傳文件。這意味著您的帳戶是該文件的所有者,對其擁有全部權利和特權。您可以將憑據設置為所有上傳和下載的默認憑據,或在每個請求中引用它們,但請記住,如果您將它們設置為 S3 的默認憑據,它們將用於所有 S3 上傳和下載。通常這不是問題,但如果稍後您想上傳到第三方的存儲桶,這可能會導致問題。
使用存儲桶策略
另一種選擇是使用存儲桶策略,它允許您對存儲桶中的所有文件設置權限。要開始使用,請訪問 AWS 控制台。在屏幕左側選擇您的存儲桶,然後單擊“屬性”。在最後一行單擊“添加存儲桶策略”。我們將在下面匯總一個 Bucket Policy,您可以將其複製到 Bucket Policy 文本框中。
我們推薦的存儲桶策略:
{
"Version": "2012-10-17",
"Id": "ZencoderBucketPolicy",
"Statement": [
{
"Sid": "Stmt1295042087538",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::395540211253:root"
},
"Action": [
"s3:GetObjectAcl",
"s3:GetObject",
"s3:PutObjectAcl",
"s3:PutObject",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::MY-BUCKET/*"
},
{
"Sid": "Stmt1295042087538",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::395540211253:root"
},
"Action": [
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::MY-BUCKET"
}
]
}
在準備好之前 ,您只需對該存儲桶策略進行一項更改 。
- 將 MY-BUCKET 替換為您的存儲桶名稱。將 /* 留在行尾,因為這會將策略應用於存儲桶中的每個文件。
- 或者,您可以使用您要允許的動作來取代動作陣列。Zencoder 可能需要的有效操作是:
對象權限-上面的例子中的第一個動作數組
s3:PutObject
-允許 ZENCODER 將文件上傳到存儲桶s3:GetObject
-允許 ZENCODER 從存儲桶下載文件s3:GetObjectAcl
-允許 ZENCODER 取得檔案的 ACL 權限s3:PutObjectAcl
-允許 ZENCODER 為其他用戶設置文件上的 ACL 權限s3:ListMultipartUploadParts
-允許 Zencoder 列出多部分文件的哪些部分已上傳到存儲桶
存儲桶權限-上面的例子中的第二個動作數組
s3:GetBucketLocation
-允許 Zencoder 獲取桶的位置(美國,歐盟,亞洲等)s3:ListBucketMultipartUploads
-允許 Zencoder 查看當前發生在存儲桶上的任何多部分上傳ex:
如果您希望 Zencoder 能夠下載並上傳文件,請將第一個動作數組替換為:["s3:PutObject", "s3:GetObject"]
請注意,原則中有兩個陳述式。第一個語句影響桶內的鍵,而第二部分影響桶本身。
政策的其餘部分可以單獨留下,它會正常工作。亞馬遜的文檔包含有關存儲桶政策的元素的更多信息。
Zencoder 還可以為我們為您創建的視頻和縮略圖設置 ACL 權限。這記錄在我們的 S3 API 文檔中。
注意:使用存儲桶策略時,您應該始終使用 s3://BUCKET/KEY 格式的 URL,以便 Zencoder 確保將它們識別為 S3 URL 並適當地簽署請求。
如果您想構建自己的 Bucket Policy,可以使用 Amazon 的 Policy Generator 。使用 arn:aws:iam::395540211253:root 作為 AWS Principal 以允許 Zencoder 訪問。
具體文件
我可以只授予特定文件的權限嗎?
你絕對可以。雖然 Bucket Policy 方法通常更容易、更快速,但它並不適合所有人。如果是這樣,您可以向我們的 Amazon AWS 帳戶授予許可aws@zencoder.com
。
如果您需要使用我們的標準 ID,則可以使用6c8583d84664a381db0c6af0e79b285ede571885fbe768e7ea50e5d3760597dd
。
故障排除
我的權限仍然被拒絕!
如果訪問被拒絕或找不到文件,S3 將以“拒絕訪問”作為響應。如果您認為自己已正確設置 S3 憑據或存儲桶策略,但仍然收到“拒絕訪問”錯誤,請仔細檢查您提交的 URL。如果輸入看起來像"s3://my-bucket/this+file+is+great.mp4"
,那麼你真正想要的是一個很好的機會"s3://my-bucket/this file is great.mp4"
使用歐盟法蘭克福地區時出現錯誤!
為了將 EU 法蘭克福地區與 Zencoder 一起使用,您必須生成包含地區名稱的 S3 URL。要做到這一點,只需創建這樣的 URL "s3+eu-central-1://my-bucket/file.mp4"
。