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

feat(ecs): support container version consistency #32225

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

isker
Copy link
Contributor

@isker isker commented Nov 21, 2024

Issue # (if applicable)

Closes #32202.

Reason for this change

Support the new ECS::TaskDefinition ContainerDefinition VersionConsistency property. This is a simple enabled/disabled flag.

Description of changes

Add a simple enabled/disabled enum prop to the construct.

More consequentially, default the prop to disabled (instead of unset) if the container image is a CDK asset, for the reasons described in the comments.

Description of how you validated changes

Unit and integration tests.

Checklist


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

@aws-cdk-automation aws-cdk-automation requested a review from a team November 21, 2024 05:30
@github-actions github-actions bot added repeat-contributor [Pilot] contributed between 3-5 PRs to the CDK effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 labels Nov 21, 2024
@isker isker force-pushed the version-consistency branch from 63311e2 to f077a3f Compare November 21, 2024 05:40
Copy link

codecov bot commented Nov 21, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 81.37%. Comparing base (946b748) to head (cb2995a).
Report is 82 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #32225   +/-   ##
=======================================
  Coverage   81.37%   81.37%           
=======================================
  Files         222      222           
  Lines       13693    13693           
  Branches     2412     2412           
=======================================
  Hits        11143    11143           
  Misses       2271     2271           
  Partials      279      279           
Flag Coverage Δ
suite.unit 81.37% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
packages/aws-cdk 80.68% <ø> (ø)
packages/aws-cdk-lib/core 82.09% <ø> (ø)

@isker isker force-pushed the version-consistency branch 2 times, most recently from e4d61ca to 1255057 Compare November 22, 2024 04:26
@aws-cdk-automation aws-cdk-automation added the pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. label Nov 22, 2024
@isker isker force-pushed the version-consistency branch from 1255057 to 23808f7 Compare November 22, 2024 05:01
@isker
Copy link
Contributor Author

isker commented Nov 25, 2024

@iliapolo I'm not sure why you updated the branch, but it seems that the resulting CodeBuild CI job hanged or something, the GitHub check is stuck in pending.

Copy link
Contributor

@mazyu36 mazyu36 left a comment

Choose a reason for hiding this comment

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

Thank you for the contribution.
Some comments.

@isker isker force-pushed the version-consistency branch from 719bb27 to b28e007 Compare January 7, 2025 04:23
Support the new ECS::TaskDefinition ContainerDefinition
VersionConsistency property. This is a simple enabled/disabled flag.

Additionally, set a default disabled value if the container image is a
CDK asset, for the reasons described in the comments.
@isker isker force-pushed the version-consistency branch from b28e007 to cb2995a Compare January 7, 2025 04:31
@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

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

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

@aws-cdk-automation aws-cdk-automation removed the pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. label Jan 7, 2025
@isker isker requested a review from mazyu36 January 7, 2025 05:10
Copy link
Contributor

@mazyu36 mazyu36 left a comment

Choose a reason for hiding this comment

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

Thanks!

@aws-cdk-automation aws-cdk-automation added the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Jan 7, 2025
Copy link
Contributor

@GavinZZ GavinZZ left a comment

Choose a reason for hiding this comment

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

Left one comment to help me understand.

@@ -45,6 +45,7 @@ export abstract class ContainerImage {
public static fromDockerImageAsset(asset: DockerImageAsset): ContainerImage {
return {
bind(_scope: Construct, containerDefinition: ContainerDefinition): ContainerImageConfig {
containerDefinition._defaultDisableVersionConsistency?.();
Copy link
Contributor

Choose a reason for hiding this comment

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

This seems like a weird usage, can you help me understand this syntax.
Also if it's public method, we should remove _.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for reviewing.

can you help me understand this syntax.

This is optional chaining for invoking functions. I did it because evil code passes arguments to these functions that are in fact not ContainerDefinitions:

this.imageConfig = props.image.bind(this, {
...this as any,
taskDefinition: {
obtainExecutionRole: () => this.executionRole,
},
});

So, _defaultDisableVersionConsistency can be undefined in spite of what TypeScript indicates.

Also if it's public method, we should remove _.

I see many @internal public methods that have leading underscores. I can remove it if you like, but it does not seem unusal.

https://github.com/search?q=repo%3Aaws%2Faws-cdk%20path%3Apackages%2Faws-cdk-lib%20%40internal&type=code

Copy link
Contributor

@GavinZZ GavinZZ Jan 31, 2025

Choose a reason for hiding this comment

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

This is optional chaining for invoking functions.

Thanks for the information! This is good to know.

Thanks for getting back to me. If it's @internal method, it's okay to stay public for internal constructs usage. However, I see in the unit test files that this method is also exposed to be used in CDK stacks. If we will allow that kind of usage, I think we should remove _.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I see in the unit test files that this method is also exposed to be used in CDK stacks.

I'm not sure what you mean by "exposed to be used in CDK stacks." I'm not intending normal users to call this. In these tests, I'm just testing the behavior of _defaultDisableVersionConsistency on behalf of internal callers like those here in container-image.ts.

@GavinZZ GavinZZ self-assigned this Jan 31, 2025
@aws-cdk-automation aws-cdk-automation removed the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Jan 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 repeat-contributor [Pilot] contributed between 3-5 PRs to the CDK
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ecs: support new versionConsistency on container definitions
4 participants