Skip to content

Commit

Permalink
chore(dynamodb): do not install aws-sdk in replica handler (#7047)
Browse files Browse the repository at this point in the history
The Node.js 12.x runtime now comes with AWS SDK for JavaScript v2.631.0. Installation
of the latest version is no longer necessary (`ReplicaUpdates` has been introduced in
v2.577.0).
  • Loading branch information
jogold committed Apr 27, 2020
1 parent 908c166 commit 9aff357
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 51 deletions.
25 changes: 1 addition & 24 deletions packages/@aws-cdk/aws-dynamodb/lib/replica-handler/index.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,6 @@
/* tslint:disable no-console */
import { IsCompleteRequest, IsCompleteResponse, OnEventRequest, OnEventResponse } from '@aws-cdk/custom-resources/lib/provider-framework/types';
import { DynamoDB } from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies
import { execSync } from 'child_process';

let latestSdkInstalled = false;

function installLatestSdk(): void {
console.log('Installing latest AWS SDK v2');
// Both HOME and --prefix are needed here because /tmp is the only writable location
execSync('HOME=/tmp npm install aws-sdk@2 --production --no-package-lock --no-save --prefix /tmp');
latestSdkInstalled = true;
}

export async function onEventHandler(event: OnEventRequest): Promise<OnEventResponse> {
console.log('Event: %j', event);
Expand All @@ -20,20 +10,7 @@ export async function onEventHandler(event: OnEventRequest): Promise<OnEventResp
* update request and in case we do there is nothing to update.
*/
if (event.RequestType === 'Create' || event.RequestType === 'Delete') {
// ReplicaUpdates has been introduced in v2.577.0
// Node.js 12.x currently uses v2.536.0
if (!latestSdkInstalled && !process.env.USE_NORMAL_SDK) {
installLatestSdk();
}

let AWS: any;
if (process.env.USE_NORMAL_SDK) { // For tests only
AWS = require('aws-sdk'); // eslint-disable-line @typescript-eslint/no-require-imports, import/no-extraneous-dependencies
} else {
AWS = require('/tmp/node_modules/aws-sdk'); // eslint-disable-line @typescript-eslint/no-require-imports
}

const dynamodb = new AWS.DynamoDB() as DynamoDB;
const dynamodb = new DynamoDB();

const data = await dynamodb.updateTable({
TableName: event.ResourceProperties.TableName,
Expand Down
38 changes: 19 additions & 19 deletions packages/@aws-cdk/aws-dynamodb/test/integ.global.expected.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
},
"/",
{
"Ref": "AssetParametersc1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37cS3BucketAF315054"
"Ref": "AssetParametersff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68S3BucketF1B0B267"
},
"/",
{
Expand All @@ -101,7 +101,7 @@
"Fn::Split": [
"||",
{
"Ref": "AssetParametersc1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37cS3VersionKey0BF5AB05"
"Ref": "AssetParametersff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68S3VersionKey39DCF57D"
}
]
}
Expand All @@ -114,7 +114,7 @@
"Fn::Split": [
"||",
{
"Ref": "AssetParametersc1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37cS3VersionKey0BF5AB05"
"Ref": "AssetParametersff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68S3VersionKey39DCF57D"
}
]
}
Expand All @@ -133,11 +133,11 @@
"referencetocdkdynamodbglobal20191121TableB640876BRef": {
"Ref": "TableCD117FA1"
},
"referencetocdkdynamodbglobal20191121AssetParameters01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2bS3Bucket3DE786D6Ref": {
"Ref": "AssetParameters01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2bS3Bucket797A9731"
"referencetocdkdynamodbglobal20191121AssetParameters23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260S3Bucket9DB95B91Ref": {
"Ref": "AssetParameters23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260S3Bucket578442F1"
},
"referencetocdkdynamodbglobal20191121AssetParameters01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2bS3VersionKey2E16D513Ref": {
"Ref": "AssetParameters01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2bS3VersionKey32273025"
"referencetocdkdynamodbglobal20191121AssetParameters23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260S3VersionKeyC55DE477Ref": {
"Ref": "AssetParameters23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260S3VersionKey1B6BA461"
},
"referencetocdkdynamodbglobal20191121AssetParameters5e49cf64d8027f48872790f80cdb76c5b836ecf9a70b71be1eb937a5c25a47c1S3Bucket6627F4A7Ref": {
"Ref": "AssetParameters5e49cf64d8027f48872790f80cdb76c5b836ecf9a70b71be1eb937a5c25a47c1S3Bucket663A709C"
Expand All @@ -150,17 +150,17 @@
}
},
"Parameters": {
"AssetParameters01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2bS3Bucket797A9731": {
"AssetParameters23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260S3Bucket578442F1": {
"Type": "String",
"Description": "S3 bucket for asset \"01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2b\""
"Description": "S3 bucket for asset \"23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260\""
},
"AssetParameters01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2bS3VersionKey32273025": {
"AssetParameters23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260S3VersionKey1B6BA461": {
"Type": "String",
"Description": "S3 key for asset version \"01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2b\""
"Description": "S3 key for asset version \"23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260\""
},
"AssetParameters01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2bArtifactHash54F789B6": {
"AssetParameters23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260ArtifactHash57F1E9B3": {
"Type": "String",
"Description": "Artifact hash for asset \"01d4c194f7ecc9749658a221ceb33b29ff0c4e9d202cb82d7126e6532458da2b\""
"Description": "Artifact hash for asset \"23c030d344d23d11a9deeaeca621a2fed8d153a4906d94da81b3cf75beb34260\""
},
"AssetParameters5e49cf64d8027f48872790f80cdb76c5b836ecf9a70b71be1eb937a5c25a47c1S3Bucket663A709C": {
"Type": "String",
Expand All @@ -174,17 +174,17 @@
"Type": "String",
"Description": "Artifact hash for asset \"5e49cf64d8027f48872790f80cdb76c5b836ecf9a70b71be1eb937a5c25a47c1\""
},
"AssetParametersc1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37cS3BucketAF315054": {
"AssetParametersff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68S3BucketF1B0B267": {
"Type": "String",
"Description": "S3 bucket for asset \"c1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37c\""
"Description": "S3 bucket for asset \"ff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68\""
},
"AssetParametersc1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37cS3VersionKey0BF5AB05": {
"AssetParametersff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68S3VersionKey39DCF57D": {
"Type": "String",
"Description": "S3 key for asset version \"c1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37c\""
"Description": "S3 key for asset version \"ff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68\""
},
"AssetParametersc1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37cArtifactHashDAE30A7E": {
"AssetParametersff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68ArtifactHash1FBBCC08": {
"Type": "String",
"Description": "Artifact hash for asset \"c1289fc4cd3d56f60845ad47d38292003289b914d85114c8184c42f7c29cc37c\""
"Description": "Artifact hash for asset \"ff9385d45e080dd6d7d73d81931d4eb97c31883610969bc8e00008b67f40ab68\""
}
}
}
9 changes: 1 addition & 8 deletions packages/@aws-cdk/aws-dynamodb/test/replica-provider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,8 @@ const createEvent: OnEventRequest = {
ResourceType: 'resource-type',
};

beforeEach(done => {
process.env.USE_NORMAL_SDK = 'true';
done();
});

afterEach(done => {
delete process.env.USE_NORMAL_SDK;
afterEach(() => {
AWS.restore();
done();
});

test('on event', async () => {
Expand Down

0 comments on commit 9aff357

Please sign in to comment.