Releases: aws/copilot-cli
copilot-cli: Release v1.14.0
⚡️ 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'shttp
field, you can take advantage of thealias
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
topipeline deploy
(#3154)
🐛 Bug Fixes
- Error out when trying to initialize preexisting environments (#3088) or services/jobs (#3116)
- Enable the
--force
flag withcopilot 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
⚡️ 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 tocopilot 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 runningcopilot 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
⚡️ 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
⚡️ 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 theoutput_artifact_format
field to the pipeline manifest to enable theCODEBUILD_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
, andstart_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
🐛 Bug Fixes
- Fix
copilot app init
for Windows by adapting to go:embed changes (#2807)
copilot-cli: Release v1.10.0
⚡️ 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 tocopilot 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 forefs
,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
⚡️ 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
andderegistration_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
andcommand
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
🐛 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 forhttp
but withoutallowed_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
🐛 Bug Fixes
- Support creating applications in the China partition (BJS, ZHY) (#2468)
Note that
pipeline
commands andRequest-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 runningcopilot svc package
orcopilot deploy
(#2482) - Don't throw an error if the
addons/
directory is empty when runningcopilot 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
🐛 Bug Fixes
- Apply environment overrides when running
svc package
andjob deploy
(#2476)This ensures that the appropriate variables and secrets are applied to each environment with pipeline deployments
- Preserve default values for
entrypoint
andcommand
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!