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
将ReactJS(带网页包)部署到S3&;云锋_Reactjs_Amazon S3_Webpack_Amazon Cloudfront - Fatal编程技术网

将ReactJS(带网页包)部署到S3&;云锋

将ReactJS(带网页包)部署到S3&;云锋,reactjs,amazon-s3,webpack,amazon-cloudfront,Reactjs,Amazon S3,Webpack,Amazon Cloudfront,我有一个ReactJS应用程序,当我执行npm构建时,它会生成一个dist文件夹。这可以上传到亚马逊的S3,一切都很好 我希望持续部署此应用程序,因此我的想法是部署到s3://RANDOM\u STRING/,生成: 随机字符串/js 随机字符串/css 随机字符串/index.html 就我所知,我无法告诉S3使用子目录作为web根目录,因此我查看了CloudFront并将源目录更新到该目录。这需要大量时间进行更新,实际上无法通过aws cli完成,因此连续部署将被破坏 我已经研究过使用文

我有一个ReactJS应用程序,当我执行
npm构建时,它会生成一个
dist
文件夹。这可以上传到亚马逊的S3,一切都很好

我希望持续部署此应用程序,因此我的想法是部署到
s3://RANDOM\u STRING/
,生成:


随机字符串/js
随机字符串/css
随机字符串/index.html

就我所知,我无法告诉S3使用子目录作为web根目录,因此我查看了CloudFront并将源目录更新到该目录。这需要大量时间进行更新,实际上无法通过
aws cli
完成,因此连续部署将被破坏

我已经研究过使用
文件加载器
重写
url()
调用,将
随机字符串
包含到部署资产中,但这感觉非常“难看”


有没有人有过这种部署的经验,可以帮我吗?

您是否尝试过设置默认的根对象?您可以将其配置为子目录


请参见此处:

是否尝试设置默认的根对象?您可以将其配置为子目录


请参见此处:

然后我的用户将看到
https://myapp.com/hfsdjkhfjskhfjsk/index.html
我希望避免这种情况,我明白你的意思。。。我想您可能正在推动S3的边界,此时需要考虑EC2实例(对Web服务器进行更精细的控制),然后我的用户会看到<代码>https://myapp.com/hfsdjkhfjskhfjsk/index.html
我希望避免这种情况,我明白你的意思。。。我想您可能正在推动S3的边界,此时需要考虑EC2实例(对于Web服务器的更精细的控制)是随机变量字符串桶名,还是桶内的路径?BukTi猜想中的路径,我总是可以部署到一个新的桶并改变DNS,但这也不正确:)我们使用CI将其部署到S3存储桶中,但只覆盖存储桶中的现有文件,尽管任何js资产都有缓存破坏文件名。使用自定义ssl证书在存储桶前面运行cloudfront。因此,您需要要求cloudfront使index.html无效?如何清理旧部署?RANDOM_STRING是bucket名称还是bucket中的路径?bucket中的路径?我想我可以随时部署到新bucket并更改DNS,但这也不正确:)我们使用CI部署到S3 bucket,但只覆盖bucket中的现有文件,尽管任何js资产都有破坏缓存的文件名。使用自定义ssl证书在存储桶前面运行cloudfront。因此,您需要要求cloudfront使index.html无效?如何清理旧的部署?