簡體   English   中英

grunt / npm插件grunt-s3 + knox無法上傳到S3

[英]grunt/npm plugin grunt-s3 + knox not uploading to S3

我正在嘗試將S3部署步驟集成到我的Grunt工具鏈中,以將新生成的文件上傳到AWS。 但是,該步驟總是默默地失敗(聲稱可以成功,但是什么也不做),並且在調試結果時,我發現了掛起過程中的一些不同點。 我使用grunt-s3作為處理grunt命令的程序包,該程序又調用包裝了Amazon S3 API的knox程序包。

這是事情崩潰的地方:

1)邏輯上有一個觀點,即knox使用fs包嘗試通過fs.stat(file,callback)獲取將要上傳的文件的大小。 據我所知,該進程死在fs.stat調用與被調用的回調之間的node.js層下。 我在回調邏輯的各處都設置了斷點和'debugger'語句,並且在調用fs.stat()之后,node-inspector和IntelliJ調試器似乎都無法捕獲該過程。

2)如果我修改了knox插件並將fs.stat調用更改為fs.statSync(),則該過程將成功進行。 但是,在此過程的稍后部分,我可以看到knox使用S3設置了預期的PUT URL以上傳文件,然后調用stream.pipe()來上傳文件。 stream.pipe()調用似乎沒有任何結果,而且我在WireShark上看不到任何表明計算機與AWS之間發生上載的活動。 但是,如果我使用命令行工具s3cmd進行上傳,則文件上傳正常。

我准備放棄此步驟而直接使用s3cmd,但是如果可能的話,我很樂意采用這種方法。 任何人都對這兩個步驟中可能發生的事情有任何建議?

謝謝!

你坐在我的代理后面嗎? 如果是這樣,諾克斯將無法正常工作。 如果沒有,您的s3-config看起來如何?

另一個需要注意的重要事項是您的存儲桶的位置。 手動設置區域(在我的示例中為“ eu-west-1”)對我有所幫助,因為knox默認將區域設置為“我們標准”。 在此處查看可能值的列表,檢入您的存儲桶屬性,然后手動設置該值!

這里(對我來說)工作配置:

s3: {
options: {
  key: "my-key",
  secret: "my-secret",
  access: "public-read",
  bucket: "my-bucket",
  region: "eu-west-1"
},
mysubtask: {
  upload: [
    {
      src: "src/*.js",
      dest: "/dist/",
      gzip: true,
      headers: {
        'Content-Type': 'application/javascript; charset=utf-8'
      }
    }
  ]
}

}

我建議使用aws cli api來實現這一目標。 您要做的就是配置aws cligrunt-shell

設置后,您可以使用Shell命令來同步文件。 檢查下面的代碼片段

  /**
   * Commands for copying assets from local to s3 bucket.
   * here we are using `aws s3 sync` command instead of `aws s3 cp`
   */
  let commands = [
    'echo "####### sync started #######"',
    'aws s3 sync ./www s3://bucketName/path --acl public-read',
    'echo "####### sync completed #######"'
  ];

  /**
   * Invalidate cache only when env is production
   */
  if(env === "production") {
    commands.push('echo "####### cache invalidation started #######"');
    commands.push('aws cloudfront create-invalidation --distribution-id {distribution_id} --paths "/*"');
  }

  grunt.config.set("shell", {
    s3sync: {
      command: commands.join('&&')
    }
  });

  grunt.loadNpmTasks('grunt-shell')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM