Releases: aws/copilot-cli
copilot-cli: Release v1.15.0
⚡️ 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 theconfig
file for your profiles (#3232)
❤️ Contributions
Thank you, contributors!
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!