2015-07-23 16 views
9

S3 & CloudFront'da dağıtılan bir AngularJS uygulamasına sahibim. Grunt & Jenkins aracılığıyla oluşturma sürecim, betik & satıcı JS dosyalarının her yeni sürümünü benzersiz olarak adlandırmak için bir FileRev adımı içerir. Son olarak, FileRev ayrıca scriptim & satıcı dosyalarının en yeni sürümlenmiş sürümlerine başvurmak için 'index.html' sayfa etiketlerimi günceller.Amazon CloudFront Sürüm oluşturma 'index.html'

Tüm dışında çok iyi ...

Nasıl programlı her sürümde yeni invalidation yaratma kısa, CloudFront hemen bütün kenar yerlerde 'index.html' geçersiz alabilirim ??

Teşekkürler!

+0

index.html her sürümde de sürüm gelmiş olabilir eğer geçersiz olmak istemiyorsan. Her sürümde bu tür yükleyicileriniz veya proxy'niz yeni index.html 'a işaret etmelidir. İndeks.html'deki geçersiz kılmayı çağırabilirim, tüm bu sirkleri yapmak yerine diğer tüm ui kaynaklarının sürümlerini güncellemeliyim. – Dhananjay

+1

Jenkins'i, CloudFront'da index.html dosyasını geçersiz kılmak için bir çağrı yapmak üzere AWS CLI'yi kullanacak şekilde yapılandırabilirsiniz https://docs.aws.amazon.com/cli/latest/reference/cloudfront/create-invalidation.html – JaredHatfield

+0

@ EarlD nasıl çözdün? –

cevap

2

Program aracılığıyla bunu nasıl yapabilirsiniz. Bu, dağıtım komut dosyanızın bir parçası olmalıdır. biz zaten diğer kaynakları sürüm beri Biz sadece onların dosya adları yoluyla index.html geçersiz kılar:

const aws = require('aws-sdk') 

function invalidateIndex() { 
    const client = new aws.CloudFront({ 
    accessKeyId: process.env.AWS_ACCESS_ID, 
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, 
    }) 
    const invalidation = client.createInvalidation({ 
    DistributionId: process.env.AWS_CLOUDFRONT_DISTRIBUTION_ID, /* required */ 
    InvalidationBatch: { 
     /* required */ 
     CallerReference: Date.now() + '', /* required - request ID given by you, any string is okay*/ 
     Paths: { 
     /* required */ 
     Quantity: 1, /* required */ 
     Items: [ 
      '/', 
      /* more items */ 
     ] 
     } 
    } 
    }, function (err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log('Index was invalidated with invalidation id: ', data.Invalidation.Id);   // successful response 
    }) 
} 

invalidateIndex() 

Burada API belgelerinde daha fazla bilgi edinebilirsiniz: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront.html#createInvalidation-property

+0

adresinden bakabilirsiniz. /index.html öğesini öğe olarak belirtmeniz gerekmiyor mu? Büyük mesaj teşekkürler. – Learner

+0

@Learner bu, Öğeler: ['/'] 'tarafından işlenir – amit

İlgili konular