Löschen Sie den CloudFront-Cache mit Golang

Ich streame S3-Bilder mit CloudFront, wollte aber beim Aktualisieren des Bildes den Cache (Cache auf dem Edgeserver) leeren, also habe ich untersucht, wie das geht.

In Go implementieren

Verwenden Sie zur Implementierung mit Golang die Funktionen rund um CloudFront in AWS SDK Go. Der Beamte ist hier: Cloudfront - Amazon Web Services - Go SDK

Verwenden Sie die Methode "CreateInvalidation" dieses SDK. Die Implementierung sieht wie folgt aus.

const (
	//CloudFront ID
	CloudFrontID = "HOGEHOGE"

	//Pfad zum Löschen des Cache in der Cloudfront
	ClearTargetPath := "/*"
)

func ClearCache() error {
	svc := cloudfront.New(session.New())
	jstNow := time.Now().UTC().In(time.FixedZone("Asia/Tokyo", 9*60*60))
	callerReference := jstNow.Format("200601021504")

	_, err := svc.CreateInvalidation(createInvalidationInput(callerReference))
	if err != nil {
		return err
	}

	return nil
}

func createInvalidationInput(callerReference string) *cloudfront.CreateInvalidationInput {
	pathItems := []*string{&ClearTargetPath}

	return &cloudfront.CreateInvalidationInput{
		DistributionId: aws.String(CloudFrontID),
		InvalidationBatch: &cloudfront.InvalidationBatch{
			CallerReference: &callerReference,
			Paths: &cloudfront.Paths{
				Quantity: aws.Int64(1),
				Items:    pathItems,
			},
		},
	}
}

Es scheint, dass "CallerReference" ein eindeutiger Wert sein sollte, also habe ich einen Zeitstempel gesetzt. Geben Sie die Verteilungs-ID und den Pfad an, die mit "CreateInvalidationInput" gelöscht werden sollen.

Vergessen Sie nicht, CloudFront-Berechtigungen zu erteilen, wenn Sie auf Lambda ausgeführt werden.

Nebenbei (So löschen Sie von der AWS-Webkonsole)

Es scheint, dass der Cache selbst auf dem Edge-Server von CloudFront auch über die AWS-Webkonsole gelöscht werden kann. Wie in [AWS] Amazon CloudFront Invalidation gezeigt, wird es als "Invalidation" bezeichnet. Ist der Begriff zum Löschen des Caches.

Recommended Posts

Löschen Sie den CloudFront-Cache mit Golang
Verwenden Sie den HTTP-Cache in Python
Installieren Sie GoLang in goenv von anyenv
Doppelte Anführungszeichen CSV-Elemente in Golang