前端小誌(轉型中)

一個用來記錄人老會忘記的地方

Webpack S3 plugin

2017年09月30日

承前幾天寫的文章,我也忘記為什麼突然search到這個plugin,看了一下可以自動化上傳,於是就跳下去了...

試了一陣子,了解了之後其實很簡單

$ npm i webpack-s3-plugin

webpack設定

if (process.env.NODE_ENV === 'production') {
  config.webpack.extra.plugins.push(
    new S3Plugin({
      // s3Options are required
      s3Options: {
        accessKeyId: process.env.AWS_ACCESS_KEY,
        secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
        region: process.env.AWS_REGION,
      },
      s3UploadOptions: {
        Bucket: process.env.AWS_BUCKET,
      },
      cloudfrontInvalidateOptions: {
        // Automatically invalidate your Cloudfront distribution cache every time you upload your code
        DistributionId: process.env.CLOUDFRONT_DISTRIBUTION_ID,
        Items: ["/*"]
      }
    })
  );
}

Bucket就是你S3的bucket,region請參照此

先講cloudfront部份,cloudfront有cache機制,預設是86400秒(一天),如果要提前就要讓其失效(Invalidation)。關於失效的可以參考這裡,看起來是算更新次數而不是更新檔案,1000次非常夠用。

再來就是accessId跟Key,一開始找不到在哪,問了同事要從IAM設一個新user,然後將AmazonS3FullAccess與CloudFrontFullAccess加上,不想用Invalidation不需要後面的權限,這樣就完成囉!!

其實我相信真的有在大量使用AWS的公司,應該都會有DevOps做自動化流程,這套件也是將s3 cli包進來做指令。因為之前是微軟體系的,然後後來對前端比較有興趣,這次稍微碰了一下,AWS很強大,在很多服務中很容易不知道該做什麼,真的S難QAQ


展開Disqus
分類
最近文章
友站連結
© 2019 Ernie Yang