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

feature request: option to invalidate CloudFront distribution for CodePipelineActions S3DeployAction #6243

Closed
2 tasks
datariomj opened this issue Feb 12, 2020 · 15 comments
Assignees
Labels
@aws-cdk/aws-codepipeline-actions documentation This is a problem with documentation. effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. good first issue Related to contributions. See CONTRIBUTING.md p2

Comments

@datariomj
Copy link

Ability to invalidate cloudfront distribution from CodePipelineActions S3DeployAction

Use Case

I'm creating a pipeline for static hosting and implementing this feature would simplify everything instead of creating a separate lambda function that will be added to the pipeline for invalidating cloudfront cache.

Proposed Solution

Provide an option for passing in a cloudfront.IDistribution and a list of invalidation paths in S3DeployActionProps that will create the invalidation.

Other

Basically it is this feature request but for S3DeployAction #3106

  • 👋 I may be able to implement this feature request
  • ⚠️ This feature might incur a breaking change

This is a 🚀 Feature Request

@datariomj datariomj added feature-request A feature should be added or improved. needs-triage This issue or PR still needs to be triaged. labels Feb 12, 2020
@SomayaB SomayaB added the @aws-cdk/aws-codepipeline Related to AWS CodePipeline label Feb 17, 2020
@skinny85 skinny85 added effort/large Large work item – several weeks of effort and removed needs-triage This issue or PR still needs to be triaged. labels Feb 24, 2020
@skinny85 skinny85 added the p2 label Sep 11, 2020
@GibzonDev
Copy link
Contributor

This is a great feature request as it's a very common thing one would want to do when working with static websites on Cloudfront with CDK.

Meanwhile, are there any workarounds for such a pipeline solution, without using the S3DeployAction?
For example, using the S3 BucketDeployment referenced in #3106 above. Or somehow being able to make a call with AWS CLI, where CF invalidation is a one-liner.

@skinny85
Copy link
Contributor

@gibzon69 yes, the workaround is to use S3BucketDeployment instead of the S3DeployAction. S3BucketDeployment has an option to do this invalidation.

@GibzonDev
Copy link
Contributor

Thanks for responding!
To be honest, I'm quite new with CDK so even though I tried to use that as a workaround, I didn't figure out how to do it. Within a Pipeline project that is.
Today I ended up adding another CodeBuildAction step after the S3DeployAction with the sole purpose of running this command:
aws cloudfront create-invalidation --distribution-id ${CLOUDFRONT_ID} --paths "/*"
Maybe not the prettiest solution, but it works :)

@skinny85
Copy link
Contributor

That's actually a pretty great workaround @gibzon69 !

Would you mind submitting us a PR adding that trick to the documentation of the S3DeployAction? It's here: https://github.com/aws/aws-cdk/blob/53f092f8a658e7b72adc996a0d06b18f7ca7ab4d/packages/@aws-cdk/aws-codepipeline-actions/README.md#aws-s3-deployment

Thanks,
Adam

@skinny85 skinny85 added documentation This is a problem with documentation. effort/small Small work item – less than a day of effort good first issue Related to contributions. See CONTRIBUTING.md @aws-cdk/aws-codepipeline-actions and removed effort/large Large work item – several weeks of effort @aws-cdk/aws-codepipeline Related to AWS CodePipeline labels Dec 23, 2020
@GibzonDev
Copy link
Contributor

Thanks.
I've created a PR. It's linked here.

mergify bot pushed a commit that referenced this issue Dec 29, 2020
This workaround was discussed in this issue: #6243 (comment)

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
flochaz pushed a commit to flochaz/aws-cdk that referenced this issue Jan 5, 2021
This workaround was discussed in this issue: aws#6243 (comment)

----

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

rantoniuk commented Mar 16, 2021

@skinny85 am I missing something or is S3BucketDeployment.Source currently missing the capability to use codepipeline.Artifact as the source for S3BucketDeployment? The types seem to be incompatible at the moment:

Property 'bind' is missing in type 'Artifact' but required in type 'ISource'.ts(2741)

and generic pipeline.actions compatibility:

Type 'BucketDeployment' is missing the following properties from type 'IAction': actionProperties, bind, onStateChangets(2739)

@skinny85
Copy link
Contributor

skinny85 commented Mar 16, 2021

Wrong class @warden , you want S3DeployAction. Source is something completely different, in a different module (@aws-cdk/aws-s3-deployment) 🙂.

@skinny85
Copy link
Contributor

Closing this one, as the original ask has been done.

@github-actions
Copy link

⚠️COMMENT VISIBILITY WARNING⚠️

Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.

@rantoniuk
Copy link

No @skinny85, I am talking exactly about the deployment module - you have suggested using S3DeploymentAction instead of S3DeployAction before and that's what I am trying to use but I fail to see how to use it in the pipeline context.
Are you sure this issue should be closed as done?

@skinny85
Copy link
Contributor

You use it by doing a normal CFN deployment. Nothing special required.

Note that if you want to use the S3DeployAction, you can do CloudFront invalidation very easily in the pipeline: https://github.com/aws/aws-cdk/blob/20a2820ee4d022663fcd0928fbc0f61153ae953f/packages/@aws-cdk/aws-codepipeline-actions/README.md#invalidating-the-cloudfront-cache-when-deploying-to-s3

@rantoniuk
Copy link

rantoniuk commented Mar 17, 2021

@skinny85 I must be missing something or there is a misunderstanding, so let me clarify:

I think we agree that using the CodeBuildAction is a workaround, because it includes additional CodePipeline build that consumes additional resources and actually pollutes the target IAM account in cross-IAM scenario:

So, that being said I wanted to try your suggestion:

the workaround is to use S3BucketDeployment instead of the S3DeployAction. S3BucketDeployment has an option to do this invalidation.

but indeed, S3BucketDeployment is in different module as you pointed out and it does not support being in CodePipeline.actions.

This issue was a feature request to be able to do it in CodePipeline actions directly, not via a workaround, so for me this is not yet resolved..

@skinny85
Copy link
Contributor

What I meant was that you have 2 options:

  1. Use the S3DeployAction along with the invalidation trick from the ReadMe; or
  2. Use the @aws-cdk/aws-s3-deployment module, which will upload your files during a normal CloudFormation deployment. You will need to use the CDK Pipelines module to create a compatible CodePipeline.

Hope this clears this up!

Thanks,
Adam

@abend-arg
Copy link

abend-arg commented Oct 30, 2021

I must support @rantoniuk point that this shouldn't be marked as closed since a workaround is not a properly solution to this matter. S3BucketDeployment needs that the code to deploy exists in the same directory than the infrastructure package which is a use case completely different to S3DeployAction.

I can understand that this feature may have a very low priority in comparison to other issues, but giving you a workaround as a solution is a very cheap outcome.

@Townsheriff
Copy link

Lets not forget about http gateway which can be added as origin in cloudfront api route.

mergify bot pushed a commit that referenced this issue Apr 26, 2024
Bumps [axios](https://github.com/axios/axios) from 0.27.2 to 1.6.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/axios/axios/releases">axios's releases</a>.</em></p>
<blockquote>
<h2>Release v1.6.8</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>AxiosHeaders:</strong> fix AxiosHeaders conversion to an object during config merging (<a href="https://redirect.github.com/axios/axios/issues/6243">#6243</a>) (<a href="https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb">2656612</a>)</li>
<li><strong>import:</strong> use named export for EventEmitter; (<a href="https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1">7320430</a>)</li>
<li><strong>vulnerability:</strong> update follow-redirects to 1.15.6 (<a href="https://redirect.github.com/axios/axios/issues/6300">#6300</a>) (<a href="https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27">8786e0f</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li> <a href="https://github.com/jasonsaayman" title="+4572/-3446 ([#6238](axios/axios#6238) )">Jay</a></li>
<li> <a href="https://github.com/DigitalBrainJS" title="+30/-0 ([#6231](axios/axios#6231) )">Dmitriy Mozgovoy</a></li>
<li> <a href="https://github.com/Creaous" title="+9/-9 ([#6300](axios/axios#6300) )">Mitchell</a></li>
<li> <a href="https://github.com/mannoeu" title="+2/-2 ([#6196](axios/axios#6196) )">Emmanuel</a></li>
<li> <a href="https://github.com/ljkeller" title="+3/-0 ([#6194](axios/axios#6194) )">Lucas Keller</a></li>
<li> <a href="https://github.com/ADITYA-176" title="+1/-1 ()">Aditya Mogili</a></li>
<li> <a href="https://github.com/petrovmiroslav" title="+1/-1 ([#6243](axios/axios#6243) )">Miroslav Petrov</a></li>
</ul>
<h2>Release v1.6.7</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li>capture async stack only for rejections with native error objects; (<a href="https://redirect.github.com/axios/axios/issues/6203">#6203</a>) (<a href="https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0">1a08f90</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li> <a href="https://github.com/DigitalBrainJS" title="+30/-26 ([#6203](axios/axios#6203) )">Dmitriy Mozgovoy</a></li>
<li> <a href="https://github.com/zh-lx" title="+0/-3 ([#6186](axios/axios#6186) )">zhoulixiang</a></li>
</ul>
<h2>Release v1.6.6</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li>fixed missed dispatchBeforeRedirect argument (<a href="https://redirect.github.com/axios/axios/issues/5778">#5778</a>) (<a href="https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39">a1938ff</a>)</li>
<li>wrap errors to improve async stack trace (<a href="https://redirect.github.com/axios/axios/issues/5987">#5987</a>) (<a href="https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab">123f354</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li> <a href="https://github.com/ikonst" title="+91/-8 ([#5987](axios/axios#5987) )">Ilya Priven</a></li>
<li> <a href="https://github.com/zaosoula" title="+6/-6 ([#5778](axios/axios#5778) )">Zao Soula</a></li>
</ul>
<h2>Release v1.6.5</h2>
<h2>Release notes:</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>ci:</strong> refactor notify action as a job of publish action; (<a href="https://redirect.github.com/axios/axios/issues/6176">#6176</a>) (<a href="https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c">0736f95</a>)</li>
<li><strong>dns:</strong> fixed lookup error handling; (<a href="https://redirect.github.com/axios/axios/issues/6175">#6175</a>) (<a href="https://github.com/axios/axios/commit/f4f2b039dd38eb4829e8583caede4ed6d2dd59be">f4f2b03</a>)</li>
</ul>
<h3>Contributors to this release</h3>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/axios/axios/blob/v1.x/CHANGELOG.md">axios's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/axios/axios/compare/v1.6.7...v1.6.8">1.6.8</a> (2024-03-15)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>AxiosHeaders:</strong> fix AxiosHeaders conversion to an object during config merging (<a href="https://redirect.github.com/axios/axios/issues/6243">#6243</a>) (<a href="https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb">2656612</a>)</li>
<li><strong>import:</strong> use named export for EventEmitter; (<a href="https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1">7320430</a>)</li>
<li><strong>vulnerability:</strong> update follow-redirects to 1.15.6 (<a href="https://redirect.github.com/axios/axios/issues/6300">#6300</a>) (<a href="https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27">8786e0f</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li> <a href="https://github.com/jasonsaayman" title="+4572/-3446 ([#6238](axios/axios#6238) )">Jay</a></li>
<li> <a href="https://github.com/DigitalBrainJS" title="+30/-0 ([#6231](axios/axios#6231) )">Dmitriy Mozgovoy</a></li>
<li> <a href="https://github.com/Creaous" title="+9/-9 ([#6300](axios/axios#6300) )">Mitchell</a></li>
<li> <a href="https://github.com/mannoeu" title="+2/-2 ([#6196](axios/axios#6196) )">Emmanuel</a></li>
<li> <a href="https://github.com/ljkeller" title="+3/-0 ([#6194](axios/axios#6194) )">Lucas Keller</a></li>
<li> <a href="https://github.com/ADITYA-176" title="+1/-1 ()">Aditya Mogili</a></li>
<li> <a href="https://github.com/petrovmiroslav" title="+1/-1 ([#6243](axios/axios#6243) )">Miroslav Petrov</a></li>
</ul>
<h2><a href="https://github.com/axios/axios/compare/v1.6.6...v1.6.7">1.6.7</a> (2024-01-25)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>capture async stack only for rejections with native error objects; (<a href="https://redirect.github.com/axios/axios/issues/6203">#6203</a>) (<a href="https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0">1a08f90</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li> <a href="https://github.com/DigitalBrainJS" title="+30/-26 ([#6203](axios/axios#6203) )">Dmitriy Mozgovoy</a></li>
<li> <a href="https://github.com/zh-lx" title="+0/-3 ([#6186](axios/axios#6186) )">zhoulixiang</a></li>
</ul>
<h2><a href="https://github.com/axios/axios/compare/v1.6.5...v1.6.6">1.6.6</a> (2024-01-24)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>fixed missed dispatchBeforeRedirect argument (<a href="https://redirect.github.com/axios/axios/issues/5778">#5778</a>) (<a href="https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39">a1938ff</a>)</li>
<li>wrap errors to improve async stack trace (<a href="https://redirect.github.com/axios/axios/issues/5987">#5987</a>) (<a href="https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab">123f354</a>)</li>
</ul>
<h3>Contributors to this release</h3>
<ul>
<li> <a href="https://github.com/ikonst" title="+91/-8 ([#5987](axios/axios#5987) )">Ilya Priven</a></li>
<li> <a href="https://github.com/zaosoula" title="+6/-6 ([#5778](axios/axios#5778) )">Zao Soula</a></li>
</ul>
<h2><a href="https://github.com/axios/axios/compare/v1.6.4...v1.6.5">1.6.5</a> (2024-01-05)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>ci:</strong> refactor notify action as a job of publish action; (<a href="https://redirect.github.com/axios/axios/issues/6176">#6176</a>) (<a href="https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c">0736f95</a>)</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/axios/axios/commit/ab3f0f9a94853c821cb00f1112788ecdd3ae7ed1"><code>ab3f0f9</code></a> chore(release): v1.6.8 (<a href="https://redirect.github.com/axios/axios/issues/6303">#6303</a>)</li>
<li><a href="https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb"><code>2656612</code></a> fix(AxiosHeaders): fix AxiosHeaders conversion to an object during config mer...</li>
<li><a href="https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1"><code>7320430</code></a> fix(import): use named export for EventEmitter;</li>
<li><a href="https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27"><code>8786e0f</code></a> fix(vulnerability): update follow-redirects to 1.15.6 (<a href="https://redirect.github.com/axios/axios/issues/6300">#6300</a>)</li>
<li><a href="https://github.com/axios/axios/commit/d844227411263fab39d447442879112f8b0c8de5"><code>d844227</code></a> chore: update and bump deps (<a href="https://redirect.github.com/axios/axios/issues/6238">#6238</a>)</li>
<li><a href="https://github.com/axios/axios/commit/caa06252015003990958d7db96f63aa646bc58e8"><code>caa0625</code></a> docs: update README responseEncoding types (<a href="https://redirect.github.com/axios/axios/issues/6194">#6194</a>)</li>
<li><a href="https://github.com/axios/axios/commit/41c4584a41fad1d94cf86331667deff5a0b75044"><code>41c4584</code></a> docs: Update README.md to point to current axios version in CDN links (<a href="https://redirect.github.com/axios/axios/issues/6196">#6196</a>)</li>
<li><a href="https://github.com/axios/axios/commit/bf6974f16af6c72985f094a98d874c5a6adcdc83"><code>bf6974f</code></a> chore(ci): add npm tag action; (<a href="https://redirect.github.com/axios/axios/issues/6231">#6231</a>)</li>
<li><a href="https://github.com/axios/axios/commit/a52e4d9af51205959ef924f87bcf90c605e08a1e"><code>a52e4d9</code></a> chore(release): v1.6.7 (<a href="https://redirect.github.com/axios/axios/issues/6204">#6204</a>)</li>
<li><a href="https://github.com/axios/axios/commit/2b69888dd5601bbc872452ccd24010219fb6e41a"><code>2b69888</code></a> chore: remove unnecessary check (<a href="https://redirect.github.com/axios/axios/issues/6186">#6186</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/axios/axios/compare/v0.27.2...v1.6.8">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=axios&package-manager=npm_and_yarn&previous-version=0.27.2&new-version=1.6.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/aws/aws-cdk/network/alerts).

</details>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
@aws-cdk/aws-codepipeline-actions documentation This is a problem with documentation. effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. good first issue Related to contributions. See CONTRIBUTING.md p2
Projects
None yet
Development

No branches or pull requests

7 participants