บังคับให้มีการอัปเดตการกระจาย / ไฟล์ของ CloudFront


146

ฉันใช้ CloudFront ของ Amazon เพื่อให้บริการไฟล์คงที่ของเว็บแอปของฉัน

ไม่มีวิธีใดที่จะบอกการกระจายของคลาวด์ฟรอนต์ว่าจำเป็นต้องรีเฟรชไฟล์หรือชี้ให้เห็นไฟล์เดียวที่ควรรีเฟรช?

Amazon แนะนำให้คุณปรับรุ่นไฟล์ของคุณเช่น logo_1.gif, logo_2.gif และอื่น ๆ เพื่อเป็นวิธีแก้ปัญหาสำหรับปัญหานี้ แต่ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาที่ค่อนข้างโง่ ไม่มีทางอื่นหรือเปล่า?



ในฐานะ sidenote ฉันไม่คิดว่ามันโง่ที่จะตั้งชื่อไฟล์สแตติกเช่นนั้น เราใช้มันบ่อยครั้งและการเปลี่ยนชื่ออัตโนมัติตามรุ่นของไฟล์ในการควบคุมเวอร์ชันทำให้เราปวดหัวมาก
eis

1
@eis ยกเว้นว่าไฟล์ที่คุณต้องการแทนที่มีการเชื่อมโยงกับสถานที่ต่างๆ 1,000 แห่งทางออนไลน์ โชคดีที่ได้รับลิงก์ทั้งหมดที่อัปเดตแล้ว
Jake Wilson

@Jakobud ทำไมจึงควรอัพเดทลิงค์ในกรณีนั้น? พวกเขาอ้างถึงรุ่นที่เฉพาะเจาะจงซึ่งไม่ล่าสุดหากไฟล์มีการเปลี่ยนแปลง หากยังไม่ได้เปลี่ยนไฟล์มันจะทำงานเหมือนเดิม
eis

6
ในบางกรณี บริษัท อาจทำผิดพลาดในการโพสต์ภาพที่ไม่ถูกต้องสำหรับบางสิ่งบางอย่างหรือรายการประเภทอื่น ๆ ที่พวกเขาได้รับการแจ้งลบเนื้อหาจากสำนักงานกฎหมายและต้องเปลี่ยนไฟล์ เพียงแค่อัปโหลดไฟล์ใหม่ที่มีชื่อใหม่จะไม่สามารถแก้ไขปัญหาดังกล่าวได้ซึ่งน่าเสียดายที่ปัญหาที่เกิดขึ้นบ่อยในปัจจุบันนี้
Jake Wilson

คำตอบ:


134

ข่าวดี. ในที่สุด Amazon ก็เพิ่มคุณลักษณะการตรวจสอบความถูกต้อง ดูข้อมูลอ้างอิงของ API

นี่คือคำขอตัวอย่างจากการอ้างอิง API:

POST /2010-08-01/distribution/[distribution ID]/invalidation HTTP/1.0
Host: cloudfront.amazonaws.com
Authorization: [AWS authentication string]
Content-Type: text/xml

<InvalidationBatch>
   <Path>/image1.jpg</Path>
   <Path>/image2.jpg</Path>
   <Path>/videos/movie.flv</Path>
   <CallerReference>my-batch</CallerReference>
</InvalidationBatch>

9
โปรดทราบว่าการตรวจสอบความถูกต้องจะใช้เวลาสักครู่ (เห็นได้ชัดว่า 5-30 นาทีตามโพสต์บล็อกที่ฉันได้อ่าน)
Michael Warkentin

37
หากคุณไม่ต้องการที่จะขอ API ด้วยตัวคุณเองคุณยังสามารถเข้าสู่ Amazon Console และสร้างคำขอการตรวจสอบความถูกต้องได้ที่: docs.amazonwebservices.com/AmazonCloudFront/latest/ ......
j0nes

สำหรับผู้ที่ใช้ API ในการทำการตรวจสอบความถูกต้องจะใช้เวลาประมาณเท่าใดจึงจะมีผลบังคับใช้
ill_always_be_a_warriors

20
โปรดจำไว้ว่าค่าใช้จ่ายนี้ $ 0.005 ต่อไฟล์หลังจากคำขอการตรวจสอบ 1,000 ครั้งแรกของคุณต่อเดือนaws.amazon.com/cloudfront/pricing
TimS

1
@MichaelWarkentin หลังจากที่ทำcreateInvalidationคำขอAPI แล้วฉันยังเห็นการอัปเดตใช้เวลา 5-10 นาทีหรือมากกว่านั้นในการตรวจสอบความถูกต้อง สังเกตเห็นฉันเขียนความคิดเห็นนี้4ปีหลังจากของคุณ
ทิมปีเตอร์สัน

19

ตั้งแต่วันที่ 19 มีนาคมขณะนี้ Amazon อนุญาตให้แคช TTL ของ Cloudfront เป็น 0 วินาทีดังนั้นคุณ (ตามหลักวิชา) ไม่ควรเห็นวัตถุค้างอยู่ ดังนั้นหากคุณมีสินทรัพย์ใน S3 คุณสามารถไปที่ AWS Web Panel => S3 => แก้ไขคุณสมบัติ => ข้อมูลเมตาจากนั้นตั้งค่า "การควบคุมแคช" เป็น "max-age = 0"

ตรงจากเอกสาร API :

ในการควบคุมว่า CloudFront จะแคชวัตถุหรือไม่และเราแนะนำให้คุณใช้ส่วนหัวของ Cache-Control กับ max-age = directive CloudFront แคชวัตถุตามจำนวนวินาทีที่ระบุ (ค่าต่ำสุดคือ 0 วินาที)


การตั้งค่านี้อยู่ที่ไหนใน UI คอนโซลของ AWS ใหม่ ฉันหามันไม่เจอ
ill_always_be_a_warriors

1
ฉันพบการตั้งค่าสำหรับแต่ละไฟล์ แต่มีการตั้งค่าเพื่อให้สิ่งที่อัปโหลดไปยังที่เก็บข้อมูลของฉันมี TTL เป็น 0 หรือไม่
ill_always_be_a_warriors

ในขณะที่ฉันจะสนใจในการตั้งค่าทั้งกลุ่มอย่างแน่นอนฉันก็พบว่านี่เป็นวิธีแก้ปัญหาที่เร็วกว่า / ดีกว่า คำขอการตรวจสอบความถูกต้อง (รวมถึงส่วนที่เหลือของ API) นั้นสับสนมากและมีเอกสารไม่ดีและฉันปั่นล้อเป็นเวลา 3 ชั่วโมงก่อนที่มันจะทำงานได้ทันที
นักเล่นแร่แปรธาตุสองบิต

33
โทรหาฉันอย่างบ้าคลั่ง แต่การตั้งค่า TTL เป็น 0 และอายุสูงสุดเป็น 0 จริงๆแล้วใช้ CloudFront โดยไม่ใช้แคชนั่นจะไม่ส่งต่อคำขอทั้งหมดไปยังแหล่งกำเนิดอย่างต่อเนื่องเพื่อตรวจสอบการอัปเดตหรือไม่ เป็นหลักทำให้ CDN ไร้ประโยชน์หรือไม่?
acidjazz

6
หากคุณเพียงแค่ใช้ cloudfront เป็นกลไกในการมีไซต์ S3 ที่เปิดใช้งาน SSL แบบคงที่กับโดเมนที่กำหนดเองการแคชจะไม่สำคัญ นอกจากนี้ปัญหาเหล่านี้ที่เรากำลังพูดถึงคือในขั้นตอนการพัฒนาแคช 0 เวลานั้นดี
Dan G

10

ด้วย Invalidation API มันจะได้รับการอัพเดตภายในไม่กี่นาที
ตรวจสอบPHP Invalidator


นี่คือสิ่งที่ฉันกำลังมองหา ฉันจะขอสิ่งนี้ในเว็บ hooks ของ Beanstalkapp เมื่อปรับใช้อัตโนมัติจากคอมไพล์! ขอบคุณสำหรับลิงค์!
cointilt

10

ตั้งค่าการอัพเดทอัตโนมัติใน 5 นาที

ตกลงเลย วิธีที่ดีที่สุดที่เป็นไปได้ในตอนนี้เพื่อทำการอัปเดต CloudFront อัตโนมัติ (การทำให้เป็นโมฆะ) คือการสร้างฟังก์ชั่นแลมบ์ดาที่จะถูกเรียกใช้ทุกครั้งเมื่อมีการอัปโหลดไฟล์ใด ๆ ลงในที่ฝากข้อมูล S3

แม้ว่าคุณจะไม่เคยใช้ฟังก์ชั่นแลมบ์ดามาก่อนมันเป็นเรื่องง่าย - เพียงทำตามคำแนะนำทีละขั้นตอนและใช้เวลาเพียง 5 นาที:

ขั้นตอนที่ 1

ไปที่https://console.aws.amazon.com/lambda/homeและคลิกสร้างฟังก์ชั่นแลมบ์ดา

ขั้นตอนที่ 2

คลิกที่ฟังก์ชันว่าง (กำหนดเอง)

ขั้นตอนที่ 3

คลิกที่ช่องว่าง (ลูบ) และเลือกS3จากคำสั่งผสม

ขั้นตอนที่ 4

เลือกของคุณBucket (เช่นเดียวกับการกระจาย CloudFront)

ขั้นตอนที่ 5

ตั้งค่าประเภทเหตุการณ์เป็น "วัตถุที่สร้าง (ทั้งหมด)"

ขั้นตอนที่ 6

ตั้งค่าคำนำหน้าและคำต่อท้ายหรือปล่อยว่างถ้าคุณไม่รู้ว่ามันคืออะไร

ขั้นตอนที่ 7

ตรวจสอบการเปิดใช้ทริกเกอร์และคลิกถัดไป

ขั้นตอนที่ 8

ตั้งชื่อฟังก์ชั่นของคุณ (เช่นYourBucketNameS3ToCloudFrontOnCreateAll )

ขั้นตอนที่ 9

เลือกPython 2.7 (หรือใหม่กว่า) เป็นRuntime

ขั้นตอนที่ 10

วางรหัสต่อไปนี้แทนรหัสไพ ธ อนเริ่มต้น:

from __future__ import print_function

import boto3
import time

def lambda_handler(event, context):
    for items in event["Records"]:
        path = "/" + items["s3"]["object"]["key"]
        print(path)
        client = boto3.client('cloudfront')
        invalidation = client.create_invalidation(DistributionId='_YOUR_DISTRIBUTION_ID_',
            InvalidationBatch={
            'Paths': {
            'Quantity': 1,
            'Items': [path]
            },
            'CallerReference': str(time.time())
            })

ขั้นตอนที่ 11

เปิดhttps://console.aws.amazon.com/cloudfront/homeในแท็บเบราว์เซอร์ใหม่และคัดลอก ID การแจกจ่าย CloudFront ของคุณเพื่อใช้ในขั้นตอนต่อไป

ขั้นตอนที่ 12

กลับไปที่แลมบ์ดาแท็บและวางรหัสการแจกจ่ายของคุณแทน _YOUR_DISTRIBUTION_ID_ ในรหัสไพ ธ อน เก็บคำพูดโดยรอบ

ขั้นตอนที่ 13

ตั้งค่าตัวจัดการ : lambda_function.lambda_handler

ขั้นตอนที่ 14

คลิกที่บทบาท ComboBox และเลือกสร้างบทบาทที่กำหนดเอง แท็บใหม่ในเบราว์เซอร์จะถูกเปิด

ขั้นตอนที่ 15

คลิกดูเอกสารนโยบายคลิกแก้ไขคลิกตกลงและแทนที่การกำหนดบทบาทด้วยคำสั่งต่อไปนี้ (ตามสภาพ):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": [
          "cloudfront:CreateInvalidation"
      ],
      "Resource": [
          "*"
      ]
    }
  ]
}

ขั้นตอนที่ 16

คลิกอนุญาต สิ่งนี้จะนำคุณกลับสู่แลมบ์ดา ตรวจสอบอีกครั้งว่าชื่อบทบาทที่คุณเพิ่งสร้างนั้นถูกเลือกในบทบาทที่มีอยู่ Combobox

ขั้นตอนที่ 17

ตั้งค่าหน่วยความจำ (MB)ถึง 128 และหมดเวลาเป็น 5 วินาที

ขั้นตอนที่ 18

คลิกถัดไปจากนั้นคลิกสร้างฟังก์ชั่น

ขั้นตอนที่ 19

คุณสบายดี! ในตอนนี้ทุกครั้งที่คุณจะอัปโหลด / อัปโหลดไฟล์ใด ๆ ไปยัง S3 ใหม่จะมีการประเมินในทุกสถานที่ของ CloudFront Edge

ป.ล. - เมื่อคุณทำการทดสอบตรวจสอบให้แน่ใจว่าเบราว์เซอร์ของคุณกำลังโหลดภาพจาก CloudFront ไม่ใช่จากแคชในเครื่อง

PSS - โปรดทราบว่าการตรวจสอบความถูกต้อง 1,000 ไฟล์แรกต่อเดือนนั้นจะไม่เสียค่าใช้จ่ายแต่ละการตรวจสอบจะมีค่าเกิน $ 0.005 USD อาจมีค่าใช้จ่ายเพิ่มเติมสำหรับฟังก์ชั่นแลมบ์ดา แต่มันราคาถูกมาก


รายการสุดท้ายจากชุด S3 แต่ละชุดใช่ไหม
Phil

@Phil รหัสถูกเขียนขึ้นเพื่อให้ไฟล์ที่เพิ่งอัปโหลดใหม่เท่านั้นที่จะถูกทำให้เป็นโมฆะไม่ใช่ที่ฝากข้อมูลทั้งหมด ในกรณีที่อัปโหลดไฟล์หลายไฟล์แต่ละไฟล์จะถูกยกเลิกการใช้งานแยกกัน ทำงานเหมือนจับใจ
Kainax

เหตุผลเดียวที่รหัสนี้ใช้งานได้ตามที่คาดไว้คือปัจจุบัน S3 มีเพียงหนึ่งรายการต่อการแจ้งเตือนนั่นคือความยาวของอาร์เรย์มีความสุขเสมอ 1 และดังนั้นแม้ว่าคุณจะอัปโหลดหลายไฟล์ในครั้งเดียวคุณจะได้รับการแจ้งเตือนใหม่ทั้งหมด ต่อไฟล์ คุณไม่ได้รับการแจ้งเตือนสำหรับที่เก็บข้อมูลทั้งหมดในกรณีใด ๆ ไม่น้อยรหัสที่เขียนนี้ยังไม่พร้อมหาก AWS เปลี่ยนพฤติกรรมนั้น ปลอดภัยกว่าที่จะเขียนโค้ดที่จัดการกับอาเรย์ทั้งหมดโดยไม่คำนึงถึงความยาวซึ่งเป็นจุดดั้งเดิมของฉัน
Phil

เหตุผลเดียวที่ AWS เพิ่มตัวจัดการเหตุการณ์คือ ... ดี ... เพื่อจัดการเหตุการณ์ ทำไมพวกเขาจะลบมัน? ไม่ว่าจะมีการเพิ่มไฟล์ใหม่อย่างไรมันก็จะทำให้เกิดเหตุการณ์สำหรับ API และนั่นคือวิธีการทำงานในขณะนี้และจะทำงานต่อไป ฉันใช้ AWS เป็นเวลา 4 ปีและพวกเขาไม่เคยเปลี่ยนอะไรเลยรหัสก่อนหน้านี้หยุดทำงาน แม้ว่าพวกเขาจะเปลี่ยน API พวกเขาเปลี่ยนเป็นเวอร์ชันสแตนด์อโลนใหม่ แต่รุ่นก่อนหน้าทั้งหมดจะยังคงได้รับการสนับสนุนเสมอ ในกรณีนั้นฉันไม่เชื่อว่าเหตุการณ์ไฟล์ส่วนบุคคลจะถูกลบ มันอาจถูกใช้ไปแล้วหลายล้านโครงการทั่วโลก
Kainax

ในกรณีที่ฉันเข้าใจผิดความคิดเห็นแรกของคุณและคุณหมายถึง'ปริมาณ': 1จะเพิ่มเฉพาะรายการสุดท้าย - มีการวนซ้ำสำหรับทุกรายการในอาร์เรย์
Kainax

9

Bucket Explorerมี UI ที่ทำให้ใช้งานได้ง่ายในตอนนี้ นี่คือวิธี:

คลิกขวาที่ฝากข้อมูลของคุณ เลือก "จัดการการกระจาย"
คลิกขวาที่การกระจายของคุณ เลือก "รับรายการทำให้ใช้งานไม่ได้ Cloudfront" จากนั้นเลือก "สร้าง" เพื่อสร้างรายการตรวจสอบใหม่ เลือกไฟล์ที่จะทำให้เป็นโมฆะและคลิก "ทำให้เป็นโมฆะ" รอ 5-15 นาที


4

หากคุณติดตั้งbotoไว้ (ซึ่งไม่ได้มีไว้สำหรับไพ ธ อนเท่านั้น แต่ยังติดตั้งยูทิลิตีบรรทัดคำสั่งที่มีประโยชน์) มันมีบรรทัดคำสั่งที่ใช้เรียกเฉพาะcfadminหรือ 'cloud front admin' ซึ่งมีฟังก์ชั่นต่อไปนี้:

Usage: cfadmin [command]
cmd - Print help message, optionally about a specific function
help - Print help message, optionally about a specific function
invalidate - Create a cloudfront invalidation request
ls - List all distributions and streaming distributions

คุณเรียกใช้สิ่งต่าง ๆ ด้วยการเรียกใช้:

$sam# cfadmin invalidate <distribution> <path>

cfadmin จริง ๆ แล้วเป็นเครื่องมือที่มีประโยชน์มากโดยเฉพาะถ้าคุณต้องการรีเซ็ตแคช CloudFront จากสคริปต์การปรับใช้ console \ bash \ travis ci BTW นี่คือโพสต์วิธีการรีเซ็ต \ ทำให้แคช CoudFront ในระหว่างการปรับใช้เทรวิสเป็น aws
Mikita Manko

3

เพียงแค่โพสต์เพื่อแจ้งให้ทุกคนที่เข้าชมหน้านี้ (ผลลัพธ์แรกใน 'การรีเฟรชไฟล์ Cloudfront') ว่ามีตัวตรวจสอบความถูกต้องออนไลน์ที่ใช้งานง่าย + เข้าถึงได้ที่ swook.net

เครื่องมือตรวจสอบความถูกต้องใหม่นี้คือ:

  • ออนไลน์เต็มรูปแบบ (ไม่มีการติดตั้ง)
  • มีให้บริการ 24x7 (โฮสต์โดย Google) และไม่ต้องการสมาชิกใด ๆ
  • มีการสนับสนุนประวัติและการตรวจสอบเส้นทางเพื่อให้คุณทำให้ไฟล์ใช้งานไม่ได้อย่างง่ายดาย (บ่อยครั้งด้วยการคลิกเพียงไม่กี่ครั้งหลังจากตรวจสอบความถูกต้องเป็นครั้งแรก!)
  • นอกจากนี้ยังเป็นที่เชื่อถือได้มากที่สุดเท่าที่คุณจะพบว่าเมื่อมีการอ่านของตนโพสต์ปล่อย

การเปิดเผยแบบเต็ม: ฉันทำสิ่งนี้ มีความสุข!


2
ขออภัย แต่แม้กระทั่ง "คุณพูดว่า" ข้อมูลประจำตัวที่ไม่ได้จัดเก็บหรือรั่วไหล ... หนึ่งไม่ควรให้ข้อมูลประจำตัวของเขากับบุคคลที่สาม อาจใช้การรับรองความถูกต้องของ amazon ระยะไกลหรืออะไร
d.raev

คุณควรจะวางไว้ด้านหลัง https อย่างน้อย
Oliver Tynes

โดยทั่วไปเครื่องมือออนไลน์นั้นดี แต่การให้ข้อมูลประจำตัวแก่เครื่องมือของบุคคลที่สามจะเป็นประเด็นด้านความปลอดภัยที่ถูกต้อง ฉันขอแนะนำให้ใช้ทั้งเว็บคอนโซลอย่างเป็นทางการหรือเครื่องมือ CLI อย่างเป็นทางการ
RayLuo

2
เพื่อความปลอดภัยของผู้อื่นฉันกำลังลงคะแนนคำตอบนี้ คุณไม่ควรขอข้อมูลประจำตัวของผู้คนอีกต่อไป
Moataz Elmasry

3

วิธีหนึ่งที่ง่ายมากที่จะทำคือการกำหนดเวอร์ชันของ FOLDER

ดังนั้นหากไฟล์สแตติกของคุณมีหลายร้อยตัวให้วางทั้งหมดไว้ในโฟลเดอร์ที่เรียกว่าตามปี + เวอร์ชัน

ตัวอย่างเช่นฉันใช้โฟลเดอร์ชื่อ 2014_v1 ภายในที่ฉันมีไฟล์คงที่ทั้งหมดของฉัน ...

ดังนั้นภายใน HTML ของฉันฉันมักจะใส่การอ้างอิงไปยังโฟลเดอร์ (แน่นอนฉันมี PHP รวมถึงที่ฉันได้ตั้งชื่อของโฟลเดอร์.) ดังนั้นโดยการเปลี่ยนใน 1 ไฟล์มันเปลี่ยนจริงในทุกไฟล์ PHP ของฉัน ..

หากฉันต้องการการรีเฟรชที่สมบูรณ์ฉันเพียงแค่เปลี่ยนชื่อโฟลเดอร์เป็น 2014_v2 เป็นแหล่งข้อมูลของฉันและเปลี่ยนภายใน php include เป็น 2014_v2

HTML ทั้งหมดเปลี่ยนโดยอัตโนมัติและขอเส้นทางใหม่แคช MISS บนคลาวด์และขอไปยังแหล่งที่มา

ตัวอย่าง: SOURCE.mydomain.com เป็นแหล่งที่มาของฉัน cloudfront.mydomain.com คือ CNAME ไปยังการกระจาย cloudfront

ดังนั้น PHP จึงเรียกไฟล์นี้ cloudfront.mydomain.com/2014_v1/javascript.js และเมื่อฉันต้องการรีเฟรชแบบเต็มฉันเพียงแค่เปลี่ยนชื่อโฟลเดอร์เป็นแหล่งที่มาเป็น "2014_v2" และฉันเปลี่ยน PHP รวมโดยการตั้งค่าโฟลเดอร์เป็น "2014_v2" .

เช่นนี้ไม่มีความล่าช้าในการตรวจสอบความถูกต้องและไม่มีค่าใช้จ่าย!

นี่เป็นโพสต์แรกของฉันใน stackoverflow หวังว่าฉันทำได้ดี!



2

ในทับทิมใช้พลอยหมอก

AWS_ACCESS_KEY = ENV['AWS_ACCESS_KEY_ID']
AWS_SECRET_KEY = ENV['AWS_SECRET_ACCESS_KEY']
AWS_DISTRIBUTION_ID = ENV['AWS_DISTRIBUTION_ID']

conn = Fog::CDN.new(
    :provider => 'AWS',
    :aws_access_key_id => AWS_ACCESS_KEY,
    :aws_secret_access_key => AWS_SECRET_KEY
)

images = ['/path/to/image1.jpg', '/path/to/another/image2.jpg']

conn.post_invalidation AWS_DISTRIBUTION_ID, images

แม้ในการทำให้ใช้ไม่ได้จะใช้เวลา 5-10 นาทีในการทำให้การประมวลผลและการรีเฟรชบนเซิร์ฟเวอร์ amazon edge ทั้งหมด


คุณช่วยชีวิตฉันไว้!
Fábio Batista

2

AWS CLI ปัจจุบันสนับสนุนการตรวจสอบความถูกต้องในโหมดดูตัวอย่าง รันสิ่งต่อไปนี้ในคอนโซลของคุณหนึ่งครั้ง:

aws configure set preview.cloudfront true

ฉันปรับใช้โครงการเว็บของฉันโดยใช้ npm ฉันมีสคริปต์ต่อไปนี้ในของฉันpackage.json:

{
    "build.prod": "ng build --prod --aot",
    "aws.deploy": "aws s3 sync dist/ s3://www.mywebsite.com --delete --region us-east-1",
    "aws.invalidate": "aws cloudfront create-invalidation --distribution-id [MY_DISTRIBUTION_ID] --paths /",
    "deploy": "npm run build.prod && npm run aws.deploy && npm run aws.invalidate"
}

มีสคริปต์ข้างต้นในสถานที่ที่คุณสามารถปรับใช้เว็บไซต์ของคุณด้วย:

npm run deploy

1
ผมคิดว่าคุณต้องดอกจันในคำสั่งของคุณ aws.invalidate 'การเปลี่ยนแปลงไป--paths / --paths /*ของฉันก็เหมือนของคุณและมันก็ไม่ทำให้การแจกจ่ายเป็นโมฆะ ...
เฮรัลด์ส

1

หากคุณใช้ AWS คุณอาจใช้เครื่องมือทางการของ CLI (ไม่ช้าก็เร็ว) AWS CLI เวอร์ชั่น 1.9.12ขึ้นไปรองรับการทำให้รายชื่อไฟล์ไม่ถูกต้อง

การเปิดเผยแบบเต็ม: ฉันทำสิ่งนี้ มีความสุข!


ลิงก์เสีย - นำไปสู่ ​​404 :( และฉันไม่สามารถอัปเดตได้เนื่องจากเวอร์ชัน 1.9.12 หายไปจากบันทึกประจำรุ่น ( aws.amazon.com/releasenotes/?tag=releasenotes%23keywords%23cli )
SlyDave

เพื่อนนั่นคือรุ่นที่วางจำหน่ายเมื่อเกือบ 3 ปีที่แล้ว ลองใช้รุ่นล่าสุดและคุณลักษณะยังคงอยู่ที่นั่น (การเปิดเผยอย่างเต็มรูปแบบ: ฉันไม่ได้ทำงานกับ AWS CLI อีกต่อไป)
RayLuo

โอ้ฉันรู้ว่าเพิ่งพบว่ามันแปลกที่ของ releasenote ทั้งหมดมีเพียง 1.9.12 ไม่มีอยู่: D (ซึ่งเป็นสิ่งที่ฉันได้รับเกี่ยวกับการที่ไม่สามารถอัปเดตลิงก์) ความคิดเห็นเป็นคำใบ้เพิ่มเติมสำหรับทุกคนที่พบที่นี่เหมือนฉันและต้องการค้นหา releasenotes สำหรับ AWS CLI ไม่มีอันตรายไม่มีเหม็น
SlyDave

0

ไปที่ CloudFront

คลิกที่ ID / ดิสทริบิวชันของคุณ

คลิกที่การยกเลิก

คลิกสร้างการยกเลิก

ในช่องตัวอย่างขนาดยักษ์พิมพ์ * และคลิกใช้งานไม่ได้

เสร็จสิ้น

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.