2015-10-13 69 views
0

從AngularJS上傳到S3而不將訪問密鑰或密碼傳遞給客戶端的最佳方式是什麼?我有一位朋友嘗試通過在服務器上創建一個預先簽名的URL(NodeJS & Express),然後將URL發送到客戶端進行上傳。他聲稱由於CORS而失敗,但他可以使用來自同一個AngularJS應用程序瀏覽器的sdk進行上傳。上傳到S3沒有本地密鑰?

更新清晰
棘手的部分是他們什麼也沒存儲在一個環境變量,每個桶有不同的憑據。他們將信息存儲在10-20個桶/區域/ IAM用戶上,並且需要最終用戶在客戶端上選擇桶BY NAME。這意味着他們不能在全球存儲任何東西。服務器必須能夠爲每個請求生成一些東西供客戶端使用。

他原題:
Generate S3 Put URL Per Request

回答

0

你可以做到這一點通過使用IAM Instance Profile爲您的EC2服務器。這樣您就不必提供訪問密鑰,因爲通過AWS SDK完成的任何呼叫都將通過實例配置文件權限進行身份驗證。任何一個,爲了!驗證AWS API調用:

  1. In system environment variables: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.

  2. In the Java system properties: aws.accessKeyId and aws.secretKey.

  3. In the default credentials file (the location of this file varies by platform).
  4. In the instance profile credentials, which exist within the instance metadata associated with the IAM role for the EC2 instance.

注意實例簡介creds是最後一次檢查!

更多信息here

+0

不要以爲他們可以走這條路線。他們將信息存儲在10-20個桶/區域/ IAM用戶上,並且需要最終用戶在客戶端上選擇桶BY NAME。這意味着他們不能在全球存儲任何東西。 –

+0

使用IAM實例配置文件並不意味着您需要全局存儲任何內容。所有你需要做的就是用一個可以訪問桶的實例配置文件啓動ec2實例/服務器。 – Daniel

+0

但是爲密鑰和祕密設置環境變量會假定所有的桶都具有相同的安全性,而他們不會。每個存儲桶有不同的憑據。 –

相關問題