Amazon s3 从API网关和lambda访问js和css文件
我在AWS中有一个API网关,它调用一个lambda函数,该函数返回一些html。然后在屏幕上正确呈现html,但不包括任何样式或js文件。我怎样才能把它们也送到客户那里?有没有比在API网关上创建/js和/css GET端点更好的方法来获取这些文件?我希望我可以将它们存储在S3中,然后从那里自动加载。将它们存储在S3中,然后启用。然后在HTML中包含这些资产的正确URL。我输入了要包含在HTML中的每个js/css文件的确切地址。您需要使用https地址,而不是bucket的http地址。每个文件都有自己的https地址,可以按照上面Mark B的说明找到。值得注意的是,通过AWS管理控制台,导航到S3 bucket中的文件,单击右上角的“Properties”按钮,复制“Link”字段,并将其发布到html文件中(在我的例子中,该文件也托管在S3中)。Html如下所示:Amazon s3 从API网关和lambda访问js和css文件,amazon-s3,aws-lambda,aws-api-gateway,Amazon S3,Aws Lambda,Aws Api Gateway,我在AWS中有一个API网关,它调用一个lambda函数,该函数返回一些html。然后在屏幕上正确呈现html,但不包括任何样式或js文件。我怎样才能把它们也送到客户那里?有没有比在API网关上创建/js和/css GET端点更好的方法来获取这些文件?我希望我可以将它们存储在S3中,然后从那里自动加载。将它们存储在S3中,然后启用。然后在HTML中包含这些资产的正确URL。我输入了要包含在HTML中的每个js/css文件的确切地址。您需要使用https地址,而不是bucket的http地址。每个
<link href="https://s3-us-west-2.amazonaws.com/my-bucket-name/css/bootstrap.min.css" rel="stylesheet">
我没有在bucket上启用静态网站托管。我没有任何允许从某个主机读取的CORS权限。阻止它,因为它来自不同的域,没有通过HttpST提供服务。这与您在原始问题中发布的问题完全不同。您需要在S3 bucket上启用CORS,只是在bucket中添加了一个CORS规则,允许我的API网关域从bucket中获取资源。我仍然得到“混合内容:位于“”的页面通过HTTPS加载,但请求的样式表不安全”。此请求已被阻止;内容必须通过HTTPS提供。显然,您需要使用S3为静态资产提供的HTTPS URL而不是HTTP URL来克服该错误。您可以通过进入S3控制台,查看其中一个静态文件的属性,并查看“Link”属性来了解这是什么。谢谢!我不知道每个文件都有自己的https地址;我以为我只有bucket的http地址。此外,您不必启用S3静态网站托管,也不必启用CORS来实现这一点。您只需要https addressAWS服务代理看起来像我想要的。但在创建时,似乎无法获得正确的设置组合。