What is @aws-sdk/client-ecs?
@aws-sdk/client-ecs is a part of the AWS SDK for JavaScript, which allows developers to interact with the Amazon Elastic Container Service (ECS). ECS is a fully managed container orchestration service that makes it easy to deploy, manage, and scale containerized applications using Docker. This package provides a set of APIs to manage ECS clusters, services, tasks, and more.
What are @aws-sdk/client-ecs's main functionalities?
Create Cluster
This feature allows you to create a new ECS cluster. The code sample demonstrates how to create a cluster named 'my-cluster' using the ECSClient and CreateClusterCommand.
const { ECSClient, CreateClusterCommand } = require('@aws-sdk/client-ecs');
const client = new ECSClient({ region: 'us-west-2' });
const command = new CreateClusterCommand({ clusterName: 'my-cluster' });
client.send(command).then(
(data) => console.log(data),
(error) => console.error(error)
);
Register Task Definition
This feature allows you to register a new task definition. The code sample demonstrates how to register a task definition with a single container named 'my-container' using the ECSClient and RegisterTaskDefinitionCommand.
const { ECSClient, RegisterTaskDefinitionCommand } = require('@aws-sdk/client-ecs');
const client = new ECSClient({ region: 'us-west-2' });
const command = new RegisterTaskDefinitionCommand({
family: 'my-task-family',
containerDefinitions: [
{
name: 'my-container',
image: 'my-image',
memory: 512,
cpu: 256,
essential: true,
},
],
});
client.send(command).then(
(data) => console.log(data),
(error) => console.error(error)
);
Run Task
This feature allows you to run a task on an ECS cluster. The code sample demonstrates how to run a task using a task definition named 'my-task-family' on a cluster named 'my-cluster' using the ECSClient and RunTaskCommand.
const { ECSClient, RunTaskCommand } = require('@aws-sdk/client-ecs');
const client = new ECSClient({ region: 'us-west-2' });
const command = new RunTaskCommand({
cluster: 'my-cluster',
taskDefinition: 'my-task-family',
count: 1,
});
client.send(command).then(
(data) => console.log(data),
(error) => console.error(error)
);
List Services
This feature allows you to list the services running in an ECS cluster. The code sample demonstrates how to list services in a cluster named 'my-cluster' using the ECSClient and ListServicesCommand.
const { ECSClient, ListServicesCommand } = require('@aws-sdk/client-ecs');
const client = new ECSClient({ region: 'us-west-2' });
const command = new ListServicesCommand({ cluster: 'my-cluster' });
client.send(command).then(
(data) => console.log(data),
(error) => console.error(error)
);
Other packages similar to @aws-sdk/client-ecs
dockerode
Dockerode is a Docker client for Node.js. It provides a way to interact with Docker containers, images, and other Docker resources. Unlike @aws-sdk/client-ecs, which is specific to AWS ECS, Dockerode is a more general-purpose Docker client that can be used with any Docker environment.
kubernetes-client
Kubernetes-client is a Node.js client for the Kubernetes API. It allows developers to interact with Kubernetes clusters, manage pods, services, deployments, and other Kubernetes resources. While @aws-sdk/client-ecs is specific to AWS ECS, kubernetes-client is used for managing Kubernetes clusters, which is another popular container orchestration platform.
node-docker-api
Node-docker-api is another Docker client for Node.js. It provides a simple and flexible API to interact with Docker resources. Similar to Dockerode, it is not specific to AWS ECS and can be used with any Docker environment.
@aws-sdk/client-ecs
Description
AWS SDK for JavaScript ECS Client for Node.js, Browser and React Native.
Amazon Elastic Container Service
Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast, container management service. It makes
it easy to run, stop, and manage Docker containers. You can host your cluster on a
serverless infrastructure that's managed by Amazon ECS by launching your services or tasks on
Fargate. For more control, you can host your tasks on a cluster of Amazon Elastic Compute Cloud (Amazon EC2)
or External (on-premises) instances that you manage.
Amazon ECS makes it easy to launch and stop container-based applications with simple API
calls. This makes it easy to get the state of your cluster from a centralized service,
and gives you access to many familiar Amazon EC2 features.
You can use Amazon ECS to schedule the placement of containers across your cluster based on
your resource needs, isolation policies, and availability requirements. With Amazon ECS, you
don't need to operate your own cluster management and configuration management systems.
You also don't need to worry about scaling your management infrastructure.
Installing
To install the this package, simply type add or install @aws-sdk/client-ecs
using your favorite package manager:
npm install @aws-sdk/client-ecs
yarn add @aws-sdk/client-ecs
pnpm add @aws-sdk/client-ecs
Getting Started
Import
The AWS SDK is modulized by clients and commands.
To send a request, you only need to import the ECSClient
and
the commands you need, for example ListTasksCommand
:
const { ECSClient, ListTasksCommand } = require("@aws-sdk/client-ecs");
import { ECSClient, ListTasksCommand } from "@aws-sdk/client-ecs";
Usage
To send a request, you:
- Initiate client with configuration (e.g. credentials, region).
- Initiate command with input parameters.
- Call
send
operation on client with command object as input. - If you are using a custom http handler, you may call
destroy()
to close open connections.
const client = new ECSClient({ region: "REGION" });
const params = {
};
const command = new ListTasksCommand(params);
Async/await
We recommend using await
operator to wait for the promise returned by send operation as follows:
try {
const data = await client.send(command);
} catch (error) {
} finally {
}
Async-await is clean, concise, intuitive, easy to debug and has better error handling
as compared to using Promise chains or callbacks.
Promises
You can also use Promise chaining
to execute send operation.
client.send(command).then(
(data) => {
},
(error) => {
}
);
Promises can also be called using .catch()
and .finally()
as follows:
client
.send(command)
.then((data) => {
})
.catch((error) => {
})
.finally(() => {
});
Callbacks
We do not recommend using callbacks because of callback hell,
but they are supported by the send operation.
client.send(command, (err, data) => {
});
v2 compatible style
The client can also send requests using v2 compatible style.
However, it results in a bigger bundle size and may be dropped in next major version. More details in the blog post
on modular packages in AWS SDK for JavaScript
import * as AWS from "@aws-sdk/client-ecs";
const client = new AWS.ECS({ region: "REGION" });
try {
const data = await client.listTasks(params);
} catch (error) {
}
client
.listTasks(params)
.then((data) => {
})
.catch((error) => {
});
client.listTasks(params, (err, data) => {
});
Troubleshooting
When the service returns an exception, the error will include the exception information,
as well as response metadata (e.g. request id).
try {
const data = await client.send(command);
} catch (error) {
const { requestId, cfId, extendedRequestId } = error.$metadata;
console.log({ requestId, cfId, extendedRequestId });
}
Getting Help
Please use these community resources for getting help.
We use the GitHub issues for tracking bugs and feature requests, but have limited bandwidth to address them.
To test your universal JavaScript code in Node.js, browser and react-native environments,
visit our code samples repo.
Contributing
This client code is generated automatically. Any modifications will be overwritten the next time the @aws-sdk/client-ecs
package is updated.
To contribute to client you can check our generate clients scripts.
License
This SDK is distributed under the
Apache License, Version 2.0,
see LICENSE for more information.
Client Commands (Operations List)
CreateCapacityProvider
Command API Reference / Input / Output
CreateCluster
Command API Reference / Input / Output
CreateService
Command API Reference / Input / Output
CreateTaskSet
Command API Reference / Input / Output
DeleteAccountSetting
Command API Reference / Input / Output
DeleteAttributes
Command API Reference / Input / Output
DeleteCapacityProvider
Command API Reference / Input / Output
DeleteCluster
Command API Reference / Input / Output
DeleteService
Command API Reference / Input / Output
DeleteTaskDefinitions
Command API Reference / Input / Output
DeleteTaskSet
Command API Reference / Input / Output
DeregisterContainerInstance
Command API Reference / Input / Output
DeregisterTaskDefinition
Command API Reference / Input / Output
DescribeCapacityProviders
Command API Reference / Input / Output
DescribeClusters
Command API Reference / Input / Output
DescribeContainerInstances
Command API Reference / Input / Output
DescribeServices
Command API Reference / Input / Output
DescribeTaskDefinition
Command API Reference / Input / Output
DescribeTasks
Command API Reference / Input / Output
DescribeTaskSets
Command API Reference / Input / Output
DiscoverPollEndpoint
Command API Reference / Input / Output
ExecuteCommand
Command API Reference / Input / Output
GetTaskProtection
Command API Reference / Input / Output
ListAccountSettings
Command API Reference / Input / Output
ListAttributes
Command API Reference / Input / Output
ListClusters
Command API Reference / Input / Output
ListContainerInstances
Command API Reference / Input / Output
ListServices
Command API Reference / Input / Output
ListServicesByNamespace
Command API Reference / Input / Output
ListTagsForResource
Command API Reference / Input / Output
ListTaskDefinitionFamilies
Command API Reference / Input / Output
ListTaskDefinitions
Command API Reference / Input / Output
ListTasks
Command API Reference / Input / Output
PutAccountSetting
Command API Reference / Input / Output
PutAccountSettingDefault
Command API Reference / Input / Output
PutAttributes
Command API Reference / Input / Output
PutClusterCapacityProviders
Command API Reference / Input / Output
RegisterContainerInstance
Command API Reference / Input / Output
RegisterTaskDefinition
Command API Reference / Input / Output
RunTask
Command API Reference / Input / Output
StartTask
Command API Reference / Input / Output
StopTask
Command API Reference / Input / Output
SubmitAttachmentStateChanges
Command API Reference / Input / Output
SubmitContainerStateChange
Command API Reference / Input / Output
SubmitTaskStateChange
Command API Reference / Input / Output
TagResource
Command API Reference / Input / Output
UntagResource
Command API Reference / Input / Output
UpdateCapacityProvider
Command API Reference / Input / Output
UpdateCluster
Command API Reference / Input / Output
UpdateClusterSettings
Command API Reference / Input / Output
UpdateContainerAgent
Command API Reference / Input / Output
UpdateContainerInstancesState
Command API Reference / Input / Output
UpdateService
Command API Reference / Input / Output
UpdateServicePrimaryTaskSet
Command API Reference / Input / Output
UpdateTaskProtection
Command API Reference / Input / Output
UpdateTaskSet
Command API Reference / Input / Output