2016-01-20 46 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权限允许从某个主机读取。