Severity
Blocking customers from deploying to ECS, workaround exists.
Version
2026.2.10675
Latest Version
I could reproduce the problem in the latest build
What happened?
Using an ECS Step in Octopus -
If you have a packageID with a forward slash in it, we are only picking up the second half of the package ID when sending the container to ECS (so clareecs2 in my image below):
This means the package is found in the step itself (as it exists), but when we go to send it to the ECS service to update it we take what is after the forward slash. This results in the error below when trying to deploy:
Amazon.ECS.Model.ClientException: Container.image contains invalid characters.
This works with a packageID without a forward slash in it aka using the clareecs repository name:
Reproduction
- Have a project with an
Update Amazon ECS Service step.
- Use a container definition with a container image from a feed with a package name with a forward slash in the ID.
- Save the step, create the release and deploy it.
- See the error.
Error and Stacktrace
Amazon.ECS.Model.ClientException: Container.image contains invalid characters.
Fri, May 15th 2026 13:00:25 +01:00 Error ---> Amazon.Runtime.Internal.HttpErrorResponseException: Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.HttpWebRequestMessage.ProcessHttpResponseMessage(HttpResponseMessage responseMessage)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.HttpHandler`1.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error --- End of inner exception stack trace ---
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleExceptionStream(IRequestContext requestContext, IWebResponseData httpErrorResponse, HttpErrorResponseException exception, Stream responseStream)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleExceptionAsync(IExecutionContext executionContext, HttpErrorResponseException exception)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ExceptionHandler`1.HandleAsync(IExecutionContext executionContext, Exception exception)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorHandler.ProcessExceptionAsync(IExecutionContext executionContext, Exception exception)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.Signer.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.BaseAuthResolverHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Aws.Deployment.Conventions.UpdateEcsServiceConvention.InstallAsync(RunningDeployment deployment) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Aws\Deployment\Conventions\UpdateEcsServiceConvention.cs:line 71
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Aws.Deployment.Conventions.UpdateEcsServiceConvention.Install(RunningDeployment deployment) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Aws\Deployment\Conventions\UpdateEcsServiceConvention.cs:line 35
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Deployment.ConventionProcessor.RunInstallConventions(IEnumerable`1 installConventions) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Shared\Deployment\ConventionProcessor.cs:line 80
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Deployment.ConventionProcessor.RunConventions(Boolean logExceptions) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Shared\Deployment\ConventionProcessor.cs:line 31
Fri, May 15th 2026 13:00:25 +01:00 Error Container.image contains invalid characters.
Fri, May 15th 2026 13:00:25 +01:00 Error Amazon.ECS.Model.ClientException
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleExceptionStream(IRequestContext requestContext, IWebResponseData httpErrorResponse, HttpErrorResponseException exception, Stream responseStream)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleExceptionAsync(IExecutionContext executionContext, HttpErrorResponseException exception)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ExceptionHandler`1.HandleAsync(IExecutionContext executionContext, Exception exception)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorHandler.ProcessExceptionAsync(IExecutionContext executionContext, Exception exception)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.Signer.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.BaseAuthResolverHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Aws.Deployment.Conventions.UpdateEcsServiceConvention.InstallAsync(RunningDeployment deployment) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Aws\Deployment\Conventions\UpdateEcsServiceConvention.cs:line 71
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Aws.Deployment.Conventions.UpdateEcsServiceConvention.Install(RunningDeployment deployment) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Aws\Deployment\Conventions\UpdateEcsServiceConvention.cs:line 35
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Deployment.ConventionProcessor.RunInstallConventions(IEnumerable`1 installConventions) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Shared\Deployment\ConventionProcessor.cs:line 80
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Deployment.ConventionProcessor.RunConventions(Boolean logExceptions) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Shared\Deployment\ConventionProcessor.cs:line 31
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Aws.Commands.UpdateEcsServiceCommand.Execute(String[] commandLineArguments) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Aws\Commands\UpdateEcsServiceCommand.cs:line 37
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Program.ResolveAndExecuteCommand(IContainer container, CommonOptions options) in C:\BuildAgent\work\62728692c7c35200\source\Calamari\Program.cs:line 86
Fri, May 15th 2026 13:00:25 +01:00 Error at Calamari.Common.CalamariFlavourProgram.Run(String[] args) in C:\BuildAgent\work\62728692c7c35200\source\Calamari.Common\CalamariFlavourProgram.cs:line 77
Fri, May 15th 2026 13:00:25 +01:00 Error --Inner Exception--
Fri, May 15th 2026 13:00:25 +01:00 Error Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.
Fri, May 15th 2026 13:00:25 +01:00 Error Amazon.Runtime.Internal.HttpErrorResponseException
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.HttpWebRequestMessage.ProcessHttpResponseMessage(HttpResponseMessage responseMessage)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.HttpHandler`1.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Error at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
Fri, May 15th 2026 13:00:25 +01:00 Fatal The remote script failed with exit code 100
Fri, May 15th 2026 13:00:25 +01:00 Fatal The action Update Amazon ECS Service on ECS Target failed
More Information
Initial Ticket (Internal) - https://octopuscd.zendesk.com/agent/tickets/204648
RnD Thread (Internal) - https://octopusdeploy.slack.com/archives/CNHBHV2BX/p1778847734540179
Reproduction (Internal) - https://octopus-operations.octopus.app/app#/Spaces-422/projects/aws-ecs/deployments/process/steps?actionId=a4bd4ebc-8412-4dde-a4b9-fef8b953c72d&parentStepId=5987de82-37e8-451a-97bd-2513b4c64244
Workaround
You would need to have a package ID without a forward slash in it, if using an ECR feed this would look like the below with the repository name being a name without a forward slash in it (green box being valid,red box being invalid):

Severity
Blocking customers from deploying to ECS, workaround exists.
Version
2026.2.10675
Latest Version
I could reproduce the problem in the latest build
What happened?
Using an ECS Step in Octopus -
If you have a packageID with a forward slash in it, we are only picking up the second half of the package ID when sending the container to ECS (so
clareecs2in my image below):This means the package is found in the step itself (as it exists), but when we go to send it to the ECS service to update it we take what is after the forward slash. This results in the error below when trying to deploy:
Amazon.ECS.Model.ClientException: Container.image contains invalid characters.This works with a packageID without a forward slash in it aka using the
clareecsrepository name:Reproduction
Update Amazon ECS Servicestep.Error and Stacktrace
More Information
Initial Ticket (Internal) - https://octopuscd.zendesk.com/agent/tickets/204648
RnD Thread (Internal) - https://octopusdeploy.slack.com/archives/CNHBHV2BX/p1778847734540179
Reproduction (Internal) - https://octopus-operations.octopus.app/app#/Spaces-422/projects/aws-ecs/deployments/process/steps?actionId=a4bd4ebc-8412-4dde-a4b9-fef8b953c72d&parentStepId=5987de82-37e8-451a-97bd-2513b4c64244
Workaround
You would need to have a package ID without a forward slash in it, if using an ECR feed this would look like the below with the repository name being a name without a forward slash in it (green box being valid,red box being invalid):