2016-01-20 43 views
0

我在AWS中有一個API網關,它調用一個返回一些html的lambda函數。該HTML然後在屏幕上正確呈現,但沒有包含任何樣式或js文件。我如何將這些交給客戶?有沒有比在API網關上創建/ js和/ css GET端點以獲取這些文件更好的方法?我希望我可以將它們存儲在S3中,並從那裏獲得自動加載。從API網關和lambda訪問js和css文件

+0

AWS服務代理看起來像我想要的。雖然在創建時似乎無法獲得正確的設置組合。 – scottndecker

回答

1

將它們存儲在S3上,並啓用S3 static website hosting。然後在HTML中包含正確的URL。

+0

會阻止它,因爲它來自不通過https服務的其他域https – scottndecker

+1

這與您在原始問題中發佈的內容完全不同。您需要在S3存儲桶上啓用CORS http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html –

+0

只需在存儲桶中添加CORS規則,以允許我的API網關域從存儲桶中獲取資源。我仍然得到「混合內容:'https://blahblah.execute-api.us-west-2.amazonaws.com/test/dashboard'頁面通過HTTPS加載,但要求一個不安全的樣式表'http:// my-bucket.s3-website-us-west-2.amazonaws.com/css/bootstrap-theme.css'。此請求已被阻止,內容必須通過HTTPS提供。「 – scottndecker

0

我把我想包括在我的HTML每個js/css文件的確切地址。您需要使用https地址,而不是存儲桶的http地址。每個文件都有它自己的https地址,可以按照上面的Mark B的說明找到它。值得注意的是,通過AWS管理控制檯,導航到S3存儲桶中的文件,單擊右上角的「屬性」按鈕,複製「鏈接」字段,並將其發佈到HTML文件中(該文件也在S3中在我的情況)。 Html看起來像這樣:

<link href="https://s3-us-west-2.amazonaws.com/my-bucket-name/css/bootstrap.min.css" rel="stylesheet"> 

我沒有在存儲桶上啓用靜態網站託管。我沒有任何CORS權限允許從某個主機讀取。