Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core): CustomResourceProvider assets are staged in node_modules #20953

Merged
merged 15 commits into from
Jul 18, 2022

Conversation

otaviomacedo
Copy link
Contributor

Instead of using the source code directory as a staging directory (which, from the point of view of the consumer, is inside the node_modules directory), create a temporary directory for staging.

Fixes #17460.


All Submissions:

Adding new Unconventional Dependencies:

  • This PR adds new unconventional dependencies following the process described here

New Features

  • Have you added the new feature to an integration test?
    • Did you use yarn integ to deploy the infrastructure and generate the snapshot (i.e. yarn integ without --dry-run)?

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

@gitpod-io
Copy link

gitpod-io bot commented Jul 1, 2022

@github-actions github-actions bot added bug This issue is a bug. effort/medium Medium work item – several days of effort p1 labels Jul 1, 2022
@aws-cdk-automation aws-cdk-automation requested a review from a team July 1, 2022 11:44
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label Jul 1, 2022
// verify we have an index file there
if (!fs.existsSync(path.join(props.codeDirectory, 'index.js'))) {
throw new Error(`cannot find ${props.codeDirectory}/index.js`);
}

const stagingDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'cdk-custom-resource'));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using import { FileSystem } from '../fs';

Suggested change
const stagingDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'cdk-custom-resource'));
const stagingDirectory = FileSystem.mkdtemp('cdk-custom-resource');

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It has the advantage of using the real temp dir even when it is a symlink like on OSx

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. Thanks!

// verify we have an index file there
if (!fs.existsSync(path.join(props.codeDirectory, 'index.js'))) {
throw new Error(`cannot find ${props.codeDirectory}/index.js`);
}

const stagingDirectory = FileSystem.mkdtemp('cdk-custom-resource');
fs.copyFileSync(path.join(props.codeDirectory, 'index.js'), path.join(stagingDirectory, 'index.js'));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously we were copying the ENTRYPOINT_FILENAME into the codeDirectory. Now we are copy the ENTRYPOINT_FILENAME and just the index.js file from the codeDirectory into a tmp directory. What happens if some custom resources have more than just an index.js file that needs to be copied?

For example https://github.com/aws/aws-cdk/tree/main/packages/%40aws-cdk/aws-iam/lib/oidc-provider

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're absolutely right! Done.

@otaviomacedo otaviomacedo added the pr/do-not-merge This PR should not be merged at this time. label Jul 18, 2022
@otaviomacedo otaviomacedo removed the pr/do-not-merge This PR should not be merged at this time. label Jul 18, 2022
@mergify
Copy link
Contributor

mergify bot commented Jul 18, 2022

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildv2Project1C6BFA3F-wQm2hXv2jqQv
  • Commit ID: 0c69e63
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@mergify
Copy link
Contributor

mergify bot commented Jul 18, 2022

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@mergify mergify bot merged commit 901b225 into main Jul 18, 2022
@mergify mergify bot deleted the otaviom/temp-custom-resource-provider branch July 18, 2022 14:33
comcalvi pushed a commit to comcalvi/aws-cdk that referenced this pull request Jul 25, 2022
…ws#20953)

Instead of using the source code directory as a staging directory (which, from the point of view of the consumer, is inside the `node_modules` directory), create a temporary directory for staging.

Fixes aws#17460.

----

### All Submissions:

* [x] Have you followed the guidelines in our [Contributing guide?](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md)

### Adding new Unconventional Dependencies:

* [ ] This PR adds new unconventional dependencies following the process described [here](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md/#adding-new-unconventional-dependencies)

### New Features

* [ ] Have you added the new feature to an [integration test](https://github.com/aws/aws-cdk/blob/main/INTEGRATION_TESTS.md)?
	* [ ] Did you use `yarn integ` to deploy the infrastructure and generate the snapshot (i.e. `yarn integ` without `--dry-run`)?

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug This issue is a bug. contribution/core This is a PR that came from AWS. effort/medium Medium work item – several days of effort p1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

(core): CustomResourceProvider writes to node_modules
4 participants