Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,24 @@ Enable server side encryption for the uploaded files. You can use `AES256` or `a

---

**transferAcceleration**

_optional_, default `false`

```yaml
custom:
client:
...
transferAcceleration: false
...
```

Enable or disable Transfer Acceleration on the bucket, set to `true` or `false`.

[AWS Documentation](https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)

---

**manageResources**

_optional_, default `true` (the plugin does manage your resources by default)
Expand Down
10 changes: 10 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ class Client {
redirectAllRequestsTo,
keyPrefix,
sse,
transferAcceleration,
routingRules,
manageResources,
tags;
Expand All @@ -154,6 +155,7 @@ class Client {
bucketName = this.options.bucketName;
keyPrefix = this.options.keyPrefix;
sse = this.options.sse || null;
transferAcceleration = this.options.transferAcceleration || false;
manageResources = this.options.manageResources;
headerSpec = this.options.objectHeaders;
orderSpec = this.options.uploadOrder;
Expand Down Expand Up @@ -254,6 +256,14 @@ class Client {
this.serverless.cli.log(`Configuring CORS for bucket...`);
return configure.configureCorsForBucket(this.aws, bucketName);
})
.then(() => {
if (this.cliOptions['config-change'] === false || manageResources === false) {
this.serverless.cli.log(`Retaining existing bucket Transfer Acceleration configuration...`);
return Promise.resolve();
}
this.serverless.cli.log(`Configuring Transfer Acceleration for bucket...`);
return configure.configureTransferAccelerationForBucket(this.aws, bucketName, transferAcceleration);
})
.then(() => {
this.serverless.cli.log(`Uploading client files to bucket...`);
return uploadDirectory(
Expand Down
20 changes: 19 additions & 1 deletion lib/configure.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,27 @@ function configureTagsForBucket(aws, bucketName, tags) {
return aws.request('S3', 'putBucketTagging', params);
}

/**
* Configures Transfer Acceleration for given bucket
* @param {Object} aws - AWS class
* @param {string} bucketName - Name of bucket to be configured
* @param {boolean} isAccelerated - if true, will enable transfer acceleration
*/
function configureTransferAccelerationForBucket(aws, bucketName, isAccelerated = false) {
const params = {
Bucket: bucketName,
AccelerateConfiguration: {
Status: isAccelerated ? 'Enabled' : 'Suspended'
}
};

return aws.request('S3', 'PutBucketAccelerateConfiguration', params);
}

module.exports = {
configureBucket,
configureCorsForBucket,
configurePolicyForBucket,
configureTagsForBucket
configureTagsForBucket,
configureTransferAccelerationForBucket
};