Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 从API网关和lambda访问js和css文件_Amazon S3_Aws Lambda_Aws Api Gateway - Fatal编程技术网

Amazon s3 从API网关和lambda访问js和css文件

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地址。每个

我在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如下所示:

<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服务代理看起来像我想要的。但在创建时,似乎无法获得正确的设置组合。