2016-07-31 103 views
0

我想設置一個簡單的S3服務器我可以拉一個URL(在這種情況下,它將是一個已經導入的Quickbase文件),並通過單擊按鈕將調用存儲在Quickbase頁面中的腳本到S3與我定義的標籤領域,爲了簡單起見,它的dbid和記錄ID#這是在一個div領域作爲其數據每拉進腳本如何使用AWS S3 URL設置憑證?

var fileToUpload = $(this).attr('data'); 
var qbfiletag = $(this).attr('data'); 

文件上傳的URL是確切的說Quickbase是存儲我需要導入的文件。

我知道這是可能的,因爲果汁和Zapier團隊已經做到了,我只是很難設置憑據來做這個url。

我甚至不能100%確定我正確設置了訪問密鑰。我確實給mycompany.quickbase.com寫了讀取權限,但是除此之外,我有很多關於aws提供的信息來減少我搞亂的地方。

+0

爲了清楚起見,這裏的目標是推動Quickbase表單上的按鈕,導致與該記錄相關聯的文檔存儲在您的S3服務器上? –

+0

按下Quickbase表單上的一個按鈕,從Quickbase檢索文件並將其存儲在s3服務器上。 –

回答

0

看起來好像有幾個步驟來設置您的帳戶通過JavaScript訪問S3。在創建桶之後,您需要通過訪問桶的屬性並選擇編輯CORS配置來設置CORS。你提到給你公司域名的讀/寫權限,所以你可能已經這樣做了。我用這一個從Amazon到測試:

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
<CORSRule> 
    <AllowedOrigin>https://mycompany.quickbase.com</AllowedOrigin> 
    <AllowedMethod>PUT</AllowedMethod> 
    <AllowedMethod>POST</AllowedMethod> 
    <AllowedMethod>DELETE</AllowedMethod> 
    <AllowedHeader>*</AllowedHeader> 
</CORSRule> 

第二部分是創建在Identity and Access Management Console一個IAM用戶。在創建用戶的過程中,Amazon將自動生成訪問密鑰ID和祕密訪問密鑰對。稍後您需要這些API調用。您還需要附加一個爲用戶建立權限的策略。我爲我的測試使用了AmazonS3FullAccess策略。所有這些都是通過該控制檯完成的。

一旦您設置了IAM用戶,您可以在使用Amazon的JavaScript SDK實例化S3對象之前將訪問密鑰ID和祕密訪問密鑰傳遞給AWS配置器。

AWS.config.update({accessKeyId: 'ABCDEFGHIJKLMNOP', secretAccessKey: 'a1b2c3d4e5f6g7i8j9k0+0012ab'}); 
var bucket = new AWS.S3({params: {Bucket: 'myBucketName'}}); 

從那裏,你可以使用bucket對象調用任何的SDK中的包括上傳文件的S3方法。

+0

我試圖從quickbase內發帖,並有跨域問題。因此,我會使用類似GH的please.js這樣的方式發佈包含QB引用所需數據的消息,以便提取正確的文件。 我試圖使用[this](http://stackoverflow.com/questions/17585881/amazon-s3-direct-file-upload-from-client-browser-private-key-disclosure/31055652#31055652)格式張貼。 我對Access-Control-Allow-Origin有問題,我不確定如何在網站上聲明我知道我在Cors doc上有正確的文檔 –

+0

如果您仍然遇到跨域問題,這是一個很好的跡象表明CORS安裝不正確。你有沒有嘗試過讓亞馬遜的例子上傳數據到一個對象工作,然後再調整到你的項目的特定需求?如果沒有,我建議嘗試這個例子,並通過CORS和認證問題來處理已知的代碼。這就是我在上面測試我的答案的方式。 http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/browser-examples.html#Amazon_S3 –