hogehogeプログラマ

PHPer。趣味ではServerless Frameworkをメインで触ってます

serverless-client-s3を利用してS3にファイルを転送する

プラグイン導入

github.com

READMEにはnpm installが記載されていますがその通りに実行した場合
古いパッケージが取得されてデプロイすると以下のエラーが発生します

Serverless plugin "serverless-client-s3" initialization errored: S.getServerlessPath is not a function

この問題は2018/4/1時点の事象になります。そのうち修正はされると思いますが
今回はGithubからインストールすることにします

npm install --save git://github.com/serverless/serverless-client-s3.git

試してみる

プラグインがインストールできたら実際に試してみます

serverless.yml

service: serverless-client-s3-test

plugins:
  - serverless-client-s3

custom:
  client:
       bucketName: Bucket Name

provider:
  name: aws
  region: ap-northeast-1
  stage: dev

resources:
  Resources:
    S3:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.client.bucketName}

また、serverless.ymlと同階層にclient/dist/フォルダを作成し
その中に転送対象の資材を格納します。

格納したらデプロイ&S3への格納処理を実施する

serverless deploy
serverless client deploy

これでS3に資材が格納されました
フォルダ名を変更したい場合は、distributionFolderを設定することで変更可能です。

serverless.yml

custom:
  client:
       bucketName: Bucket Name
       # client/test/
       # distributionFolder: test

       # test/
       # distributionFolder: ../test

ファイルを削除したい場合はフォルダ内のファイルを削除して
再度serverless client deployを実行すると削除されます