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): RFC: Allow for multiple ECS environment files on a single task definition (#21313) #25031

Closed
wants to merge 1 commit into from

Conversation

ryanolee
Copy link
Contributor

@ryanolee ryanolee commented Apr 11, 2023

What

This PR includes a fix for the hard coded reference to EnvironmentFile reference in the ecs AssetEnvironmentFile construct.

Why

Currently only a single AssetEnvironmentFile can be used with a container definition (as outlined in #21313). This is because the underlying "Asset" construct has a hard coded construct Id that conflicts when multiple AssetEnvironmentFiles are bound to the same scope.

How does this fix things:

This PR changes the way the ID is sourced for the Asset construct to ensure it is unique (But a stable value).
The new approach:

  • Counts the number of adjacent constructs in the given scope with ids starting with EnvironmentFile
  • Uses that count to generate a new ID following the pattern EnvironmentPattern{N}

Ids will be generated for each scope as follows:

  • EnvironmentFile
  • EnvironmentFile1
  • EnvironmentFile2
  • {...}
  • EnvironmentFile{N}
    (This follows a similar pattern to the IDS generated for RDS Database Instances)

Why might this be a good approach?

I think this is likley going to be the least disruptive way of resolving this issue as:

  • It will not involve any BC breaks (the first call to AssetEnvironmentFile.bind will always return a construct with an ID of 'EnvironmentFile')
  • The public API's do not need to be updated /changed in order to effect this change.
  • It increments based on a given "scope" so container definitions have EnvironmentFile(s) that increment independently.
  • The order the calls to "bind" are made in a consistent manner so the internally generated ID's should not change between Synths

Possible issues with approach

There are some issues with this approach however including:

  • In cases where many environment files are used there is the possibility for cascade updates. I.e EnvironmentFile2 gets removed and EnvironmentFile3 -> EnvironmentFile2, EnvironmentFile4->EnvironmentFile3. I am not sure if this is likely to cause issues.

RFC

It would be great to get some input if this would be an appropriate fix verses directly passing ID's down to the lower level constructs. (Or hashing the paths to the assets as suggested in the original issue)

If this looks good I can add some new test cases for this 👀
Closes #21313.


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

…onstructs
@github-actions github-actions bot added the beginning-contributor [Pilot] contributed between 0-2 PRs to the CDK label Apr 11, 2023
@aws-cdk-automation aws-cdk-automation requested a review from a team April 11, 2023 15:04
@github-actions github-actions bot added bug This issue is a bug. effort/small Small work item – less than a day of effort p2 labels Apr 11, 2023
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.

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

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

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

@aws-cdk-automation
Copy link
Collaborator

This PR has been in the CHANGES REQUESTED state for 3 weeks, and looks abandoned. To keep this PR from being closed, please continue work on it. If not, it will automatically be closed in a week.

@aws-cdk-automation
Copy link
Collaborator

This PR has been deemed to be abandoned, and will be automatically closed. Please create a new PR for these changes if you think this decision has been made in error.

@aws-cdk-automation aws-cdk-automation added the closed-for-staleness This issue was automatically closed because it hadn't received any attention in a while. label May 10, 2023
@aws-cdk-automation
Copy link
Collaborator

The pull request linter fails with the following errors:

❌ Features must contain a change to a README file.
❌ Features must contain a change to a test file.
❌ Features must contain a change to an integration test file and the resulting snapshot.

PRs must pass status checks before we can provide a meaningful review.

If you would like to request an exemption from the status checks or clarification on feedback, please leave a comment on this PR containing Exemption Request and/or Clarification Request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
beginning-contributor [Pilot] contributed between 0-2 PRs to the CDK bug This issue is a bug. closed-for-staleness This issue was automatically closed because it hadn't received any attention in a while. effort/small Small work item – less than a day of effort p2
Projects
None yet
Development

Successfully merging this pull request may close these issues.

(aws-ecs): Unable to use multiple EnvironmentFile
2 participants