2016-04-25 198 views
1

我正在創建簽名的URL並將它們發送到外部系統供以後使用。不幸的是,有一些長度參數不允許傳遞極長的字符串。最近,似乎簽名的URL被重新格式化和擴展,隨後打破了我的應用程序。縮短S3簽名的URL

是否有一些方法可以從S3生成較短的URL?由於多種原因,我不希望依賴第三方URL縮短服務(這是對URL生成的額外請求,它增加了一個失敗點)。

+0

我想你可以創建類似'bucket.s3.amazonaws.com/short/ <隨機串>的東西,並且讓它成爲一個HTML文件,將JS重定向到簽名的URL。 – ceejayoz

+0

我在一個簡單的CURL命令'curl -T [file] [url]'中使用了簽名的URL,所以javascript不會被執行。 – switz

+0

你可以在S3上設置301s,但這有點複雜。雖然可能。 http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html – ceejayoz

回答

0

可以內亞馬遜S3直接建立一個非常簡單的短網址:

  • 打開靜態網站託管。這會給你一個URL來訪問你的水桶,如:mybucket.s3-website-ap-southeast-2.amazonaws.com
  • 在S3與「短名稱」創建一個零長度對象,如pic1.jpg
  • 添加元零長度的對象:
    • 重點:Website Redirect Location
    • 價值:長網址

然後,當您訪問零長度對象(例如mybucket.s3-website-ap-southeast-2.amazonaws.com/pic.jpg)時,它實際上會重定向到存儲在元數據中的長URL。

簡單,無需數據庫!

+0

這太好了。爲了分享我的使用案例,我使用curl將文件上傳到S3,並且必須在上傳之前取出重定向。 'curl -Ls -o/dev/null -w%{url_effective} SHORT_URL | xargs curl -T file.png',其中SHORT_URL是縮短的AWS url。 – switz

+0

這遠不是一個簡短的網址..(mybucket.s3-website-ap-southeast-2.amazonaws.com/pic.jpg) –