-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
66 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,9 +10,13 @@ jobs: | |
runs-on: ubuntu-22.04 | ||
strategy: | ||
matrix: | ||
node: [18, 20] | ||
os: ['ubuntu-latest'] | ||
node: [18, lts/*] | ||
fail-fast: false | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- uses: pnpm/[email protected] | ||
with: | ||
version: 8 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,13 +5,13 @@ | |
[![Codecov Status](https://codecov.io/gh/msudgh/sync-cloud-storage/branch/main/graph/badge.svg?token=2BY6063VOY)](https://codecov.io/gh/msudgh/sync-cloud-storage) | ||
[![License](https://img.shields.io/github/license/msudgh/sync-cloud-storage)](LICENSE) | ||
|
||
Synchronize files and directories between a remote machine and a cloud storage via cloud frameworks and stacks consisting of [AWS SAM (Serverless)](https://www.serverless.com/) and [AWS Cloud Development Kit (CDK)](https://aws.amazon.com/cdk/). This package supports the following cloud storage providers: [AWS S3](https://aws.amazon.com/s3/). | ||
sync-cloud-storage is a Node.js package designed to seamlessly synchronize files and directories between local environments and cloud storage providers like [AWS S3](https://aws.amazon.com/s3/). It leverages [AWS SAM (Serverless)](https://www.serverless.com/) and [AWS Cloud Development Kit (CDK)](https://aws.amazon.com/cdk/) for powerful, modern, and flexible integrations. | ||
|
||
## Features | ||
|
||
- Sync multiple storages at once and flexible file matching (single or multiple file/dir sync) by defining patterns of [`glob`](<https://en.wikipedia.org/wiki/Glob_(programming)>) to include or exclude | ||
- Supports a set of options as following for each file based on storage: `Prefix`, `Access Control List (ACL)`, `Tags`, `Metadata` | ||
- Select a list of specific sync actions for each storage: `uploading`, `deleting` | ||
- Sync multiple storage at once | ||
- Use pattern matching on finding files (single or multiple file/dir sync) by defining patterns of [`glob`](<https://en.wikipedia.org/wiki/Glob_(programming)>) to include or exclude | ||
- Supports a set of options as following for each file based on storage features: `Prefix`, `Access Control List (ACL)`, `Tags`, `Metadata` | ||
- Modern and uses the latest official cloud provider's SDK | ||
- AWS S3: [`[email protected]`](https://www.npmjs.com/package/@aws-sdk/client-s3) | ||
|
||
|
@@ -28,7 +28,17 @@ Synchronize files and directories between a remote machine and a cloud storage v | |
|
||
#### Serverless | ||
|
||
Sync storages action as a pre-deploy hook in the `serverless.yml`: | ||
The integration is powered by Serverless hooks and In below, the default configured hooks are listed: | ||
|
||
- scs:storages -> As a CLI command for serverless | ||
- scs:tags -> As a CLI command for serverless | ||
- scs:metadata -> As a CLI command for serverless | ||
- before:offline:start:init -> Sync storages (scs:storages) | ||
- before:deploy:deploy -> Sync storages (scs:storages) | ||
|
||
##### Example | ||
|
||
This setup uses `before:deploy:deploy` hook to sync storages before deploying the stack: | ||
|
||
```yaml | ||
plugins: | ||
|
@@ -47,11 +57,14 @@ custom: | |
metadata: | ||
foo: bar | ||
bar: foo | ||
tags: | ||
foo: bar | ||
bar: foo | ||
``` | ||
#### CDK | ||
Call sync storages action after setting up a CDK App: | ||
Call `storages` action to sync after setting up a CDK App and Stack: | ||
|
||
```typescript | ||
import { Stack, App } from '@aws-cdk/core' | ||
|
@@ -75,14 +88,7 @@ const syncCloudStorage = new SyncCloudStorage(stack, { | |
], | ||
}) | ||
// Sync storages | ||
syncCloudStorage.storages() | ||
|
||
// Sync tags | ||
syncCloudStorage.tags() | ||
|
||
// Sync metadata | ||
syncCloudStorage.metadata() | ||
``` | ||
|
||
## Options | ||
|
@@ -100,18 +106,18 @@ syncCloudStorage.metadata() | |
|
||
### Storage | ||
|
||
| Option | Notes | Type | Required | Default | | ||
| ----------- | ----------------------------------------------------------------------------------------------------------- | ------------------- | -------- | ------------------ | | ||
| name | Name of storage (AWS S3 Bucket), Minimum length: 1 | `string` | true | undefined | | ||
| patterns | Patterns of [`glob`][glob] paths to include or exclude on sync action, Minimum items: 1 | `array` of `string` | true | undefined | | ||
| actions | Sync actions, Valid values: `upload`, `delete` | `array` of `string` | false | `upload`, `delete` | | ||
| prefix | Prefix for the storage files and folders | `string` | false | `''` | | ||
| enabled | Enable or disable the storage on sync action | `boolean` | false | `true` | | ||
| acl | [AWS S3 Canned ACL][acl], Valid values: `private`, `public-read`, `public-read-write`, `authenticated-read` | `string` | false | undefined | | ||
| metadata | A set of metadata key/value pair to be set or unset on the object | `object` | false | undefined | | ||
| tags | A set of tag key/value pair to be set or unset on the object | `object` | false | `{}` | | ||
| gitignore | Use .gitignore file to exclude files and directories | `boolean` | false | false | | ||
| ignoreFiles | Ignore files and directories to exclude from sync action | `array` of `string` | false | undefined | | ||
| Option | Notes | Type | Required | Default | | ||
| ----------- | ----------------------------------------------------------------------------------------------------------- | ------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | ||
| name | Name of storage (AWS S3 Bucket), Minimum length: 1 | `string` | true | undefined | | ||
| patterns | Patterns of [`glob`][glob] paths to include or exclude on sync action, Minimum items: 1 | `array` of `string` | true | undefined | | ||
| actions | Sync actions, Valid values: `upload`, `delete` | `array` of `string` | false | `upload`: Only upload new or modified file, `delete`: Only delete files that are not in the local environment from the storage | | ||
| prefix | Prefix for the storage files and folders | `string` | false | `''` | | ||
| enabled | Enable or disable the storage on sync action | `boolean` | false | `true` | | ||
| acl | [AWS S3 Canned ACL][acl], Valid values: `private`, `public-read`, `public-read-write`, `authenticated-read` | `string` | false | undefined | | ||
| metadata | A set of metadata key/value pair to be set or unset on the object | `object` | false | undefined | | ||
| tags | A set of tag key/value pair to be set or unset on the object | `object` | false | undefined | | ||
| gitignore | Use .gitignore file to exclude files and directories | `boolean` | false | false | | ||
| ignoreFiles | Ignore files and directories to exclude from sync action | `array` of `string` | false | undefined | | ||
|
||
[glob]: https://en.wikipedia.org/wiki/Glob_(programming) | ||
[acl]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,5 +2,5 @@ coverage: | |
status: | ||
project: | ||
default: | ||
target: 90% | ||
target: 35% | ||
threshold: 20% |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters