File tree Expand file tree Collapse file tree 3 files changed +37
-0
lines changed Expand file tree Collapse file tree 3 files changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -144,6 +144,16 @@ The client specified MUST implement functions called `getObject` and `putObject`
144
144
145
145
* Default:* the default S3 library is ` aws-sdk `
146
146
147
+ ### endpoint
148
+
149
+ AWS (or AWS compatible endpoint) to use. E.g. with DigitalOcean Spaces, Microsoft Azure Blob Storage,
150
+ or Openstack Swift
151
+
152
+ If ` endpoint ` set the ` region ` option will be ignored.
153
+
154
+ * Default:* ` [region].s3.amazonaws.com `
155
+
156
+
147
157
### serverSideEncryption
148
158
149
159
The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws: kms ). Possible values include:
Original file line number Diff line number Diff line change @@ -30,6 +30,7 @@ module.exports = CoreObject.extend({
30
30
var plugin = options . plugin ;
31
31
var config = plugin . pluginConfig ;
32
32
var profile = plugin . readConfig ( 'profile' ) ;
33
+ var endpoint = plugin . readConfig ( 'endpoint' ) ;
33
34
34
35
this . _plugin = plugin ;
35
36
@@ -38,6 +39,11 @@ module.exports = CoreObject.extend({
38
39
AWS . config . credentials = new AWS . SharedIniFileCredentials ( { profile : profile } ) ;
39
40
}
40
41
42
+ if ( endpoint ) {
43
+ this . _plugin . log ( 'Using endpoint from config' , { verbose : true } ) ;
44
+ AWS . config . endpoint = new AWS . Endpoint ( endpoint ) ;
45
+ }
46
+
41
47
this . _client = plugin . readConfig ( 's3Client' ) || new AWS . S3 ( config ) ;
42
48
} ,
43
49
Original file line number Diff line number Diff line change @@ -195,6 +195,27 @@ describe('s3', function() {
195
195
} ) ;
196
196
} ) ;
197
197
198
+ it ( 'allows `endpoint` option to be passed to customize storage' , function ( ) {
199
+ var endpoint = 'foo.bar.baz' ;
200
+ subject = new S3 ( {
201
+ plugin : Object . assign ( plugin , {
202
+ readConfig : function ( propertyName ) {
203
+ if ( propertyName === 's3Client' ) {
204
+ return s3Client ;
205
+ } else if ( propertyName === 'endpoint' ) {
206
+ return endpoint ;
207
+ }
208
+ }
209
+ } )
210
+ } ) ;
211
+ var promise = subject . upload ( options ) ;
212
+ return assert . isFulfilled ( promise )
213
+ . then ( function ( ) {
214
+ assert . equal ( require ( 'aws-sdk' ) . config . endpoint . host , endpoint , 'Endpoint in SDK is correct' ) ;
215
+ assert . equal ( mockUi . messages [ 0 ] , '- Using endpoint from config' , 'Prefix is included in log output' ) ;
216
+ } ) ;
217
+ } ) ;
218
+
198
219
it ( 'allows `cacheControl` option to be passed to customize the used cache-control' , function ( ) {
199
220
var cacheControl = 'max-age=3600' ;
200
221
You can’t perform that action at this time.
0 commit comments