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(amplify): addBranch fails synth with "cannot find entry file..." #28658

Merged
merged 11 commits into from
Jan 16, 2024

Conversation

kaizencc
Copy link
Contributor

@kaizencc kaizencc commented Jan 10, 2024

Error:

Error: Cannot find entry file at /node_modules/@aws-cdk/custom-resource-handlers/dist/
aws-amplify-alpha/asset-deployment-handler/index.js

In #27955, we migrated the aws-amplify-alpha custom resource to @aws-cdk/custom-resource-handlers, our internal package for storing all custom resources. However, this migration was half-baked. The reason is because we seem to have depended on our @aws-cdk/custom-resource-handlers package directly. That works locally, as we have custom-resource-handlers readily available.

|-- @aws-cdk
    |-- aws-amplify-alpha
    |-- custom-resource-handlers

aws-amplify-alpha directly went into custom-resource-handlers to grab the necessary entry file. This works locally, because we have access to all folders with impunity.

Of course, when packaged and published, we publish only aws-amplify-alpha with no other outside folders:

|-- @aws-cdk 
    |-- aws-amplify-alpha

Thus, the published module would not have access to the file under custom-resource-handlers, and predictably fails at synth time.

In aws-cdk-lib, we airlift the necessary files into the package and release it alongside aws-cdk-lib:

|-- aws-cdk-lib
    |-- aws-synthetics
    |-- custom-resource-handlers/dist/aws-synthetics/custom-resource-handler // this was airlifted into aws-cdk-lib

We are supposed to do the same airlift mechanism for aws-amplify-alpha but somehow that was forgotten. This PR adds in the necessary structure, so now aws-amplify-alpha looks like this:

|-- @aws-cdk 
    |-- aws-amplify-alpha
        |-- custom-resource-handlers/dist/aws-amplify-alpha // airlifted in via this PR
    |-- custom-resource-handlers/dist
        |-- aws-amplify-alpha

(please excuse my horrible ascii notation)

Fixes #28633. Fixes #28089. I tested my locally packaged aws-amplify-alpha on a local CDK app to confirm that the necessary structure exists in the packaged module.


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

@github-actions github-actions bot added bug This issue is a bug. effort/medium Medium work item – several days of effort p1 labels Jan 10, 2024
@aws-cdk-automation aws-cdk-automation requested a review from a team January 10, 2024 22:16
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label Jan 10, 2024
Copy link
Collaborator

@aws-cdk-automation aws-cdk-automation left a comment

Choose a reason for hiding this comment

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

The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.

A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed add Clarification Request to a comment.

@paulhcsun paulhcsun added pr-linter/exempt-test The PR linter will not require test changes pr-linter/exempt-integ-test The PR linter will not require integ test changes labels Jan 10, 2024
@aws-cdk-automation aws-cdk-automation dismissed their stale review January 10, 2024 23:25

✅ Updated pull request passes all PRLinter validations. Dismissing previous PRLinter review.

@aws-cdk-automation aws-cdk-automation added the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Jan 12, 2024
@kaizencc kaizencc added the pr/do-not-merge This PR should not be merged at this time. label Jan 12, 2024
@tmokmss
Copy link
Contributor

tmokmss commented Jan 14, 2024

will also fix #28089 🙏

@brettstack
Copy link
Contributor

Thanks @kaizencc! I'm eagerly awaiting this PR merge. I'm stuck back on 2.108.1 until then.

@kaizencc kaizencc removed the pr/do-not-merge This PR should not be merged at this time. label Jan 16, 2024
Copy link
Contributor

mergify bot commented Jan 16, 2024

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 aws-cdk-automation removed the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Jan 16, 2024
@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

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

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

@mergify mergify bot merged commit 0f2b8f8 into main Jan 16, 2024
15 checks passed
@mergify mergify bot deleted the conroy/amplify branch January 16, 2024 23:37
Copy link
Contributor

mergify bot commented Jan 16, 2024

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).

@brettstack
Copy link
Contributor

Thanks! When will this be released?

mergify bot pushed a commit that referenced this pull request Jan 19, 2024
…28772)

#28658 missed changing one of the paths (i.e it didn't remove the extra '..') and I was still getting the "cannot find entry file" error. I can confirm that my CDK stack works as expected after making the change locally.

This is my first CDK PR. I did the following:

```
yarn install
npx lerna run build --scope=@aws-cdk/aws-amplify-alpha
cd packages/@aws-cdk/aws-amplify-alpha
yarn build
yarn test
yarn integ-runner --update-on-failed
npx lerna run build --scope=aws-cdk-lib
```

Closes #28764

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
mergify bot pushed a commit that referenced this pull request Jan 19, 2024
…ot find entry file…" (#28760)

Error:
```
Error: Cannot find entry file at /node_modules/@aws-cdk/custom-resource-handlers/dist/
aws-redshift-alpha/asset-deployment-handler/index.js
```

This PR fixes the same issue detailed in #28658 but for `aws-redshift-alpha` as both modules have the same issue with accessing `custom-resource-handlers`. 

This PR uses the same airlift mechanism as `aws-cdk-lib` to move the necessary files into the `aws-redshift-alpha` package so its structure now looks like this:
```
|-- @aws-cdk 
    |-- aws-redshift-alpha
        |-- custom-resource-handlers/dist/aws-redshift-alpha // airlifted in via this PR
    |-- custom-resource-handlers/dist
        |-- aws-redshift-alpha
```

The airlift script only moves the `index.js` file and not the `*/generated.ts` files because imports in alpha module `*/generated.ts` files do not currently work since the import paths were written to only support stable modules in `aws-cdk-lib`. 

I've tested the `aws-redshift-alpha` package locally on a local CDK app and confirmed the necessary structure exists in the packaged module. The local app calls the `cluster.enableRebootForParameterChanges()` method which creates the custom resource and I was able to verify that the cluster deploys properly and is rebootable. 

Related to #28633 but this is the fix for `aws-redshift-alpha`

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
mergify bot pushed a commit that referenced this pull request Feb 2, 2024
This is a follow up to #28658, #28772, and #28760. We had to fix multiple places where that file path extended beyond the package itself into other areas of the local repository (that would not be available after packaging). This caused myriad issues at synth time with `file not found` errors.

This PR introduces a linter rule with the following specifications:
- no inefficient paths, i.e. no going backwards multiple times. Ex. `path.join(__dirname, '..', 'folder', '..', 'another-folder')`. This should and can be easily simplified
- no paths that go backwards past a `package.json` file. This should catch the instances we faced next time.

The `yarn lint` command on `aws-cdk-lib` took 51.47s seconds without this new rule and 53.32s seconds with the rule enabled. The difference of ~2 seconds shouldn't be a hindrance in this case but I am happy to look for additional efficiencies in the rule I've written.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
SankyRed pushed a commit that referenced this pull request Feb 8, 2024
This is a follow up to #28658, #28772, and #28760. We had to fix multiple places where that file path extended beyond the package itself into other areas of the local repository (that would not be available after packaging). This caused myriad issues at synth time with `file not found` errors.

This PR introduces a linter rule with the following specifications:
- no inefficient paths, i.e. no going backwards multiple times. Ex. `path.join(__dirname, '..', 'folder', '..', 'another-folder')`. This should and can be easily simplified
- no paths that go backwards past a `package.json` file. This should catch the instances we faced next time.

The `yarn lint` command on `aws-cdk-lib` took 51.47s seconds without this new rule and 53.32s seconds with the rule enabled. The difference of ~2 seconds shouldn't be a hindrance in this case but I am happy to look for additional efficiencies in the rule I've written.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
TheRealAmazonKendra pushed a commit that referenced this pull request Feb 9, 2024
This is a follow up to #28658, #28772, and #28760. We had to fix multiple places where that file path extended beyond the package itself into other areas of the local repository (that would not be available after packaging). This caused myriad issues at synth time with `file not found` errors.

This PR introduces a linter rule with the following specifications:
- no inefficient paths, i.e. no going backwards multiple times. Ex. `path.join(__dirname, '..', 'folder', '..', 'another-folder')`. This should and can be easily simplified
- no paths that go backwards past a `package.json` file. This should catch the instances we faced next time.

The `yarn lint` command on `aws-cdk-lib` took 51.47s seconds without this new rule and 53.32s seconds with the rule enabled. The difference of ~2 seconds shouldn't be a hindrance in this case but I am happy to look for additional efficiencies in the rule I've written.

----

*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 pr-linter/exempt-integ-test The PR linter will not require integ test changes pr-linter/exempt-test The PR linter will not require test changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

@aws-cdk\aws-amplify-alpha: branch (amplify-alpha): custom-resource-handler not found
5 participants