Skip to content

Commit 0121221

Browse files
authored
Throw runtime error when unsupported features are invoked (#4067)
* recomment v3 sdk when supplied MRAP arn * throw runtime error when unsupported EndpointId is supplied
1 parent 8d6429f commit 0121221

File tree

7 files changed

+57
-2
lines changed

7 files changed

+57
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "feature",
3+
"category": "EventBridge",
4+
"description": "Throw runtime error when unsupported parameter EndpointId is supplied with PutEvents API"
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "feature",
3+
"category": "S3",
4+
"description": "Add error message to try v3 SDK when customer uses multi-regional ARN in s3"
5+
}

clients/eventbridge.js

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ var apiLoader = AWS.apiLoader;
55

66
apiLoader.services['eventbridge'] = {};
77
AWS.EventBridge = Service.defineService('eventbridge', ['2015-10-07']);
8+
require('../lib/services/eventbridge');
89
Object.defineProperty(apiLoader.services['eventbridge'], '2015-10-07', {
910
get: function get() {
1011
var model = require('../apis/eventbridge-2015-10-07.min.json');

lib/services/eventbridge.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
var AWS = require('../core');
2+
3+
AWS.util.update(AWS.EventBridge.prototype, {
4+
/**
5+
* @api private
6+
*/
7+
setupRequestListeners: function setupRequestListeners(request) {
8+
if (request.operation === 'putEvents') {
9+
var params = request.params || {};
10+
if (params.EndpointId !== undefined) {
11+
throw new AWS.util.error(new Error(), {
12+
code: 'InvalidParameter',
13+
message: 'EndpointId is not supported in current SDK.\n' +
14+
'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).'
15+
});
16+
}
17+
}
18+
},
19+
});

lib/services/s3util.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,14 @@ var s3util = {
144144
var allowFipsEndpoint = options.allowFipsEndpoint || false;
145145

146146
if (!regionFromArn) {
147+
var message = 'ARN region is empty';
148+
if (req._parsedArn.service === 's3') {
149+
message = message + '\nYou may want to use multi-regional ARN. The feature is not supported in current SDK. ' +
150+
'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).';
151+
}
147152
throw AWS.util.error(new Error(), {
148153
code: 'InvalidARN',
149-
message: 'ARN region is empty'
154+
message: message
150155
});
151156
}
152157

test/services/eventbridge.spec.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var helpers = require('../helpers');
2+
var AWS = helpers.AWS;
3+
4+
describe('AWS.EventBridge', function() {
5+
var eventBridge;
6+
beforeEach(function() {
7+
return eventBridge = new AWS.EventBridge();
8+
});
9+
describe('putEvents', function() {
10+
it('should throw if EndPointId is supplied', function(done) {
11+
try {
12+
eventBridge.putEvents({Entries: [], EndpointId: 'foo'});
13+
} catch (err) {
14+
expect(err.name).to.eql('InvalidParameter');
15+
expect(err.message).to.contain('EndpointId is not supported in current SDK.');
16+
done();
17+
}
18+
});
19+
});
20+
});

test/services/s3.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3477,7 +3477,7 @@ describe('AWS.S3', function() {
34773477
request.send(function(err, data) {
34783478
expect(err).to.exist;
34793479
expect(err.name).to.equal('InvalidARN');
3480-
expect(err.message).to.equal('ARN region is empty');
3480+
expect(err.message).to.contain('ARN region is empty');
34813481
done();
34823482
});
34833483
});

0 commit comments

Comments
 (0)