我已在React
部署了s3
个应用。我正在使用Cloudfront使用证书并通过s3 bucket
到达HTTPS
。
在努力完成所有工作之后,我设法将其全部设置好,现在运行良好。
现在我更新了我的项目,创建了新版bundle.js
,并将其上传到s3
。
我现在的问题是mydomain.com
指向bundle.js
所以我试图挖掘更多,这就是我发现的:
mydomain.com
指向V1 xxxxx.cloudfront.net
指向V1 mydomain.com.s3-website-eu-west-1.amazonaws.com
指向V2 所以我的猜测是,出于某种原因,cloudfront
指向V1,但为什么呢?那里的某处有缓存吗?
这是配置,以防它有用:
Route53
Type A
指向xxxxxx.cloudfront.net
cloudfront
域名为xxxxxx.cloudfront.net
cloudfront
CNAMES
为mydomain.com
和www.mydomain.com
cloudfront
origin domain name and path
是mydomain.com.s3-website-eu-west-1.amazonaws.com
s3 bucket
是mydomain.com
PS:只是要仔细检查问题是否来自bundle.js
,我从存储桶中删除了背景图片,但不知何故,在访问mydomain.com
时仍然可以找到并使用它(所以显示V1)
答案 0 :(得分:3)
正如@Joe Clay所证实的那样,Cloudfront
正在缓解一切。
要使用AWS console
强制清除缓存(我在某些文档中发现可以使用API
完成),以下是我执行的步骤:
AWS console
Cloudfront
并查看您的发布详情invalidations
标签,然后点击Create invalidation
*
并保存mydomain.com
(可能需要清理浏览器缓存)希望这个答案可以帮助任何坚持同样问题的人!
答案 1 :(得分:1)
我知道这是个老问题。但是我找到了一种使用部署脚本自动执行此过程的方法。这是我package.json文件中的一个条目
HiveCompaction.initialize(table);
Dataset<Row> dataToCompact = sparkSession.sql("select * from staging.dummy_table");
HiveCompaction.compact(table, dataToCompact);
sparkSession.sql("select * from staging.dummy_table_compacted").show();
System.out.println("Compaction successful");
此后,您要做的就是运行"deploy": "npm run build && aws s3 sync --delete build/ s3://bucket-name && npm run invalidateCache",
"invalidateCache": "aws cloudfront create-invalidation --distribution-id E23232323 --paths '/*'",
。
命令说明。
npm run deploy
,以便清除所有路径的缓存。
希望这会有所帮助:)
答案 2 :(得分:0)
我知道这是一个老问题。也可以使用lambda fn来实现,它将使源源s3存储桶中的任何更新都使Cloudfront缓存无效。
相同的代码段在这里。
from __future__ import print_function
import boto3
import time
def lambda_handler(event, context):
path = []
for items in event["Records"]:
if items["s3"]["object"]["key"] == "index.html":
path.append("/")
else:
path.append("/" + items["s3"]["object"]["key"])
print(path)
client = boto3.client('cloudfront')
invalidation = client.create_invalidation(DistributionId='cloudfrontdistribution id',
InvalidationBatch={
'Paths': {
'Quantity': 1,
'Items': path
},
'CallerReference': str(time.time())
})