Skip to content

Releases: aws/copilot-cli

copilot-cli: Release v1.14.0

26 Jan 21:36
060b8d1
Compare
Choose a tag to compare

⚡️ Features and enhancements

  • Enable Network Load Balancer (#3142)

    You can enable Network Load Balancer for your Load-Balanced Web Service simply by adding nlb to your manifest, for example:

    nlb:
       port: 80/tcp # or tls

    You can then access your service through Network Load Balancer via its DNS name.

    Expand for additional NLB configuration

    If your application is associated with a domain, then Copilot will give your service a default alias of <service>-nlb.<environment>.<app>.<domain>. Similar to today's http field, you can take advantage of the alias field to change this behavior:

    nlb:
        port: 80/tcp
        alias: ["example.com", "v1.example.com"]

    In this way, your service will be accessible through "example.com:80" and "v1.example.com:80" with tcp protocol.

    Moreover, you can also enable TLS termination by

    nlb:
       port: 443/tls

    It is also possible to use only the Network Load Balancer - without the Application Load Balancer - for your Load-Balanced Web Service:

      http: false
      
      nlb:
         port: 80/tcp
  • Support external files for environment variables (#3138)

    More efficiently use and reuse multiple env vars by keeping them in a .env file. In your workload manifest:

    env_file: <path>

    You can specify different env vars per environment with env overrides:

    env_file: <test path>
    environment:
      prod:
        env_file: <prod path>
  • Provide the option to use CloudWatch Container Insights (#3126)

    When creating a new environment, use the new --container-insights flag to collect those metrics:
    copilot env init --container-insights

  • Check if associated domains are not registered with Route 53 and recommend actions accordingly (#3081)

  • Allow more than two availability zones when configuring the default environment in copilot env init (#3131)

  • Rename pipeline update to pipeline deploy (#3154)

🐛 Bug Fixes

  • Error out when trying to initialize preexisting environments (#3088) or services/jobs (#3116)
  • Enable the --force flag with copilot svc deploy when Auto Scaling is set (#3127)
  • Detect ARM-based CodeBuild images in the pipeline manifest and automatically change the build environment type (#3190)
  • Exit the pipeline build stage if workload manifests don't pass validations (#3080)

❤️ Contributions

Thank you, contributors!

copilot-cli: Release v1.13.0

23 Nov 18:39
cdbd8f9
Compare
Choose a tag to compare

⚡️ Features and enhancements

  • Support building and running Fargate ARM tasks (#3051)

    You can now update the manifest file for Load Balanced Web Services, Backend Services, Worker Services, Scheduled Jobs, and one-off tasks to build and run ARM containers on Fargate:

    platform: linux/arm64
  • Add gRPC support for Load Balanced Web Services (#3026)
  • Enable customizable parameters for addons/ templates (#2990)

    You can now pass any resource attribute created in the service or job stack down to your addon templates.
    To learn more check out the docs!

  • Add --build-context flag to copilot task run to specify the Docker context directory (#3046)
  • Inject default Copilot environment variables and enable container dependency for FireLens sidecar container (#3002, #3055)
  • Export the public route table ID in the environment stack to support S3 VPC endpoints (#2987)

🐛 Bug Fixes

  • Update the "Build" stage's buildspec.yml of your pipelines to build and push images with a separate tag per environment (#2970)

    If you are applying environment overrides for the image.build field in the manifest, we recommend re-generating the buildspec by running copilot pipeline init.

  • Let CloudFormation auto-generate the S3 bucket name on storage init -t S3 to avoid name collisions (#2974)
  • Don't error if AWS CodeCommit repository URIs don't have a region (#3019)

❤️ Contributions

Thank you, contributors!

copilot-cli: Release v1.12.0

28 Oct 20:02
73f3325
Compare
Choose a tag to compare

⚡️ Features and enhancements

  • Support building and running Windows containers (#2934)

    Copilot automatically detects your Windows machine, builds your Windows-based container image, and leverages brand-new Fargate support for Windows to run your application on ECS.
    The manifest for a Windows service includes:

    platform: windows/amd64

    Read the blog post!

  • Enable environment variable substitution in manifests (#2917)

    For example, you can use the TAG environment variable from your shell:

    image:
      location: id.dkr.ecr.zone.amazonaws.com/svc-name:${TAG}
  • Allow worker services to publish (#2903)
  • Inject default Copilot environment variables in sidecars (#2901)
  • Surface an error if an app has no existing workloads during pipeline deployment (#2946)
  • Enable colors on Windows (#2896)

🐛 Bug Fixes

  • Validate manifests with environment overrides applied (#2924)
  • Include domain certificate for successful environment deletion (#2897)
  • Build App Runner service images as AMD on ARM machines (#2955)
  • Use env account IDs instead of app account IDs for SNS topic ARNs (#2956)
  • Allow dashes in worker service topic names (#2903)

❤️ Contributions

Thank you, contributors!

copilot-cli: Release v1.11.0

04 Oct 18:00
4e7d638
Compare
Choose a tag to compare

⚡️ Features and enhancements

  • Improved manifest.yml file validation to error early on invalid inputs (#2881)
  • Allow autoscaling for Worker Services (#2827, #2813, #2804)

    By indicating the acceptable queue_delay in your manifest, you can tell Copilot when to scale your number of tasks up or down.

     count:
       range: 1-10
       queue_delay:  # Should result in a 900-msg backlog per Fargate task.
         acceptable_latency: 15m  # Acceptable amount of time that a message can sit in the queue.
         msg_processing_time: 1s  # Average amount of time required to process an SQS message. 

    To learn more, see the documentation.

  • Enable StartCommand configuration for App Runner workloads (#2844)

    App Runner (Request-Driven Web Service) manifests now include an optional command field to override the Docker image's default start command.
    To learn more, see the documentation.

  • Support OutputArtifactFormat specification for pipeline sources (#2830)

    Previously, Copilot left this field unspecified, so it defaulted to CODE_ZIP. We have added the output_artifact_format field to the pipeline manifest to enable the CODEBUILD_CLONE_REF format, unblocking repositories with git modules.
    To learn more, see the documentation.

  • Allow container healthchecks for sidecars (#2822)

    Just as you can for main containers, you can now also add healthchecks for sidecar containers. Fields are: command, interval, retries, timeout, and start_period.

     sidecars:
       nginx:
         healthcheck:
           command: ["CMD-SHELL", "curl -f http://localhost:8080 || exit 1"]
           interval: 10s
  • Add flexibility to log retention (#2834)

    Now you can decide how many days your logs are retained; just set the number in your workload manifest. (The default is thirty days.)

     logging:
       retention: 90

🐛 Bug Fixes

  • Error out if AWS credentials are invalid (#2816, #2819)
  • Build container images targeting AMD64 architectures even on ARM machines (#2814)
  • Prompt for missing custom env resources when some are passed with flags (#2784)
  • Make publish.allowed_workers field optional (#2821)

❤️ Contributions

Thank you, contributors!

copilot-cli: Release v1.10.1

08 Sep 03:55
0b1d401
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Fix copilot app init for Windows by adapting to go:embed changes (#2807)

copilot-cli: Release v1.10.0

30 Aug 22:25
07089bd
Compare
Choose a tag to compare

⚡️ Features and enhancements

  • Support publish/subscribe architecture pattern for asynchronous communication between your services (#2550)

    All existing service patterns now support an optional publish field in the manifest to broadcast events with SNS topics:

     publish:
    - name: orders
      allowed_workers: [receipt-worker]

    A new "Worker Service" pattern (SNS -> SQS -> ECS on Fargate) is introduced to copilot svc init to consume events from the topics.
    To learn more see the documentation.

  • Allow overriding Amazon ECS Task Definition fields with the new taskdef_overrides field (#2588)

    You can now add or update any Task Definition fields that in the manifest of Load Balanced Web Services, Backend Services, Worker Services, and Scheduled Jobs. Here is an example:

     taskdef_overrides:
     - path: ContainerDefinitions[0].Ulimits[-]
       value:
          Name: "cpu"
          SoftLimit: 1024
          HardLimit: 2048

    To learn more see the documentation.

  • Add a --force flag to copilot deploy, copilot svc deploy, copilot job deploy (#2736)

    Without the --force flag, Copilot returns a CloudFormation empty change set error. Now, you can run the deploy commands with the flag to force a new deployment.

  • Support multiple aliases for a Load Balanced Web Service (#2638)
    http:  # String version.
      alias: example.com
    http:  # Alternatively, as an array of strings.
      alias: ["example.com", "v1.example.com"]

🐛 Bug Fixes

  • Apply environment overrides for efs, healthcheck, alias, range fields in manifests (#2745)
  • Skip validating environment name if application name cannot be retrieved (#2781)
  • The "Build" stage of CodePipeline no longer throws an error if the pipeline manifest includes only a subset of your environments (#2715)
  • Return an error instead of a segmentation fault if there is no image.port field specified for Request-Driven Web Services (#2712)

❤️ Contributions

Thank you for the contributions!

copilot-cli: Release v1.9.0

29 Jul 22:44
8fb57ac
Compare
Choose a tag to compare

⚡️ Features and enhancements

  • Introduce custom domain names for App Runner workloads (#2664)

    We now support the alias field in Request-Driven Web Service manifests, too!
    You can specify a friendly URL instead of the default App Runner-generated endpoint.

  • Allow multiple environments per VPC (#2515)

    You can now import the same VPC multiple times when running env init.
    This change does not disrupt existing environments.

  • Enable building images with ARM hosts (#2636)

    If you're on ARM architecture, your images will automatically target the linux/amd64 platform at build time.
    A new manifest field, platform, shows the value to be passed with the --platform flag.

  • Implement the grace_period and deregistration_delay manifest fields (#2576)

    You may now customize these attributes in your Load Balanced Web Service manifest.

    http:
      healthcheck:
        grace_period: 30s    # How long to ignore unhealthy healthchecks after a deployment. 
      deregistration_delay: 45s   # How long to wait before deregistering the tasks.
  • Add the credential parameter for private repositories (#2582)

    Store the credentials to your private repo using AWS Secrets Manager, then pass them into your container definition using this new manifest field.

  • Support entrypoint and command overrides for sidecars (#2592)

    Override the default values for these config fields in your manifest--not just for your main container, but now for your sidecars, too.

  • Enable fish completion (#2517)

    Install completion for your fish shell with copilot completion fish.

🐛 Bug Fixes

  • Allow the default domain in the alias field (#2607)

❤️ Contributions

Thank you for the contributions!

copilot-cli: Release v1.8.3

08 Jul 22:23
4a347b8
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Preserve default allowed_source_ips with env overrides (#2543)

    The default allowed_source_ips entry was ignored if a user specified environment override for http but without allowed_source_ips. This fix ensures we retain the default value if the field is not overridden.

  • Re-running copilot init should work if an application was already initialized with a domain name (#2562)
  • Sidecar containers no longer set the port to be 80 if it's not specified. Instead if port is not present we leave it blank (#2565)
  • Revert the spinner library so that the text gets replaced when the deployments are done instead of creating a new line (#2568)
  • Running env init in applications with a domain name and multiple AWS accounts should now succeed (#2567)

copilot-cli: Release v1.8.2

29 Jun 21:55
3d97212
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Support creating applications in the China partition (BJS, ZHY) (#2468)

    Note that pipeline commands and Request-Driven Web Service won't be available until AWS CodePipeline and AWS App Runner are supported in the China partition.

  • Validate values for http.alias when running copilot svc package or copilot deploy (#2482)
  • Don't throw an error if the addons/ directory is empty when running copilot deploy (#2508)
  • Skip deleting validation records when using more than one http.alias for Load Balanced Web Services (#2513)
  • Ensure custom resources created with Copilot retain the physical ID on failures (#2524, #2536)

    Copilot managed custom resources now always return the same physical ID ensuring that stack update failures rollback without any side effects.

❤️ Contributions

Thank you for the contributions!

copilot-cli: Release v1.8.1

23 Jun 17:00
087823e
Compare
Choose a tag to compare

🐛 Bug Fixes

  • Apply environment overrides when running svc package and job deploy (#2476)

    This ensures that the appropriate variables and secrets are applied to each environment with pipeline deployments

  • Preserve default values for entrypoint and command when those manifest fields are empty (#2490)
  • Enable the importing of public subnets with MapPublicIPOnLaunch set to false (default) (#2457)
  • Reduce partition and sort key minimum lengths from 3 to 1 when defining DynamoDB tables via storage init (#2477)

❤️ Contributions

Thank you for the contributions!