Skip to content

Releases: aws/copilot-cli

copilot-cli: Release v1.15.0

08 Feb 18:48
62c9781
Compare
Choose a tag to compare

⚡️ Features and enhancements

  • Support connecting to a VPC for Request-Driven Web Services (AWS App Runner) (#3195)

    You can now connect to your environment's VPC by updating your manifest file with:

    network:
      vpc:
        placement: 'private'

    Once your App Runner service is connected to the VPC, you can then use existing features such as service discovery to connect to Backend Services or connect to an Amazon Aurora database with copilot storage init.
    For more details, see documentation.

  • Allow injecting AWS Secrets Manager secrets using secret names instead of ARNs (#3223)

    Previously, you could only specify AWS Secrets Manager secrets only using their full ARN. You can now inject secrets using their names to keep your manifest files succinct:

     secrets:
       DB:
          secretsmanager: 'demo/test/mysql'
       # You can refer to a specific key in the JSON blob.
       DB_PASSWORD:
          secretsmanager: 'demo/test/mysql:password::'

    For more details, see documentation.

  • Respect the AWS_CONFIG_FILE environment variable to read the config file for your profiles (#3232)

❤️ Contributions

Thank you, contributors!

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!