vue.js - 如何使用 github s3 同步操作将缓存控制设置为 max-age=0

标签 vue.js amazon-s3 continuous-deployment cache-control github-actions

每次合并到 master 时,我都会将 vue 应用程序上传到我的 s3 存储桶。我的问题是缓存失效并不能完全起作用。我的下一步是在每次推送时向对象 index.html 添加元数据。为此,我想问如何将其添加到 github 操作 jakejarvis/s3-sync-action ( https://github.com/marketplace/actions/s3-sync ) 中?

或者我是否必须使用另一个 github 操作来完成该任务?

我的工作流程目前看起来是这样的:

name: Build

on:
  push:
    branches: [master]

  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Use Node.js 12.x
        uses: actions/setup-node@v1
        with:
          node-version: '12.x'

      - name: npm install
        run: |
          npm ci
      - name: build
        run: |
          npm run build

      - name: Deploy to S3
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --delete
        env:
          AWS_S3_BUCKET: ${{ secrets.AWS_STAGING_BUCKET_NAME }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: ${{ secrets.AWS_REGION }}
          SOURCE_DIR: 'dist'

      - name: Invalidate cloudfront
        uses: muratiger/invalidate-cloudfront-and-wait-for-completion-action@master
        env:
          DISTRIBUTION_ID: ${{ secrets.AWS_STAGING_DISTRIBUTION_ID }}
          PATHS: '/*'
          AWS_REGION: ${{ secrets.AWS_REGION }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

我正在寻找的结果是,每次部署后,index.html 都会有另一个元数据Cache-Control: max-age=0。目前我正在 s3 管理控制台中手动添加它,这对我来说不是一个好的解决方案。因为每次部署后元数据都会消失。

我找到了有关如何使用 aws-cli 执行此操作的答案,但我不知道是否可以将其添加到我的操作中。

aws s3 cp s3://[mybucket]/index.html s3://[mybucket]/index.html --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=0,public

PS:我知道我需要编写测试🙈

最佳答案

在您的示例中:

    with:
      args: --acl public-read --delete

args 生效,因为它按原样传递到 aws s3 invocation ,末尾有 $*:

sh -c "aws s3 sync ${SOURCE_DIR:-.} s3://${AWS_S3_BUCKET}/${DEST_DIR} \
              --profile s3-sync-action \
              --no-progress \
              ${ENDPOINT_APPEND} $*"

如果您还想设置--cache-control max-age=0,public,请将其添加到args:

    with:
      args: --acl public-read --delete --cache-control max-age=0,public

关于vue.js - 如何使用 github s3 同步操作将缓存控制设置为 max-age=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61609774/

相关文章:

vue.js - VueJS List Transitions JavaScript Hooks 并没有被列表中的每个元素调用

java - 最佳实践 : Creation of SAX parser for XMLReader

sql-server - SQL部署自动化

azure - 错误 MSB4086 : A numeric comparison was attempted on "$(MSBuildVersion)" that evaluates to "" instead of a number

azure - VS Team Services 和 Azure 持续交付子目录

javascript - Vue Chart.js - 图表在数据更改时不更新

mysql - 我无法将输入保存到数据库 Vuejs 和 Laravel

vue.js - 我可以在 Bootstrap-vue 表中删除带有 sr-only 类的 span 元素吗?

python - 使用 Boto3 将缩略图上传到 S3

html - 提供索引文件而不是下载提示