!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())

[Skip to main content](#__docusaurus_skipToContent_fallback)

You are viewing the **preview** v0.2 docs. View the **stable** v0.1 docs [here](/v0.1/docs/get_started/introduction/). Leave feedback on the v0.2 docs [here](https://github.com/langchain-ai/langchainjs/discussions/5386).

[

![🦜️🔗 Langchain](/v0.2/img/brand/wordmark.png)![🦜️🔗 Langchain](/v0.2/img/brand/wordmark-dark.png)

](/v0.2/)[Integrations](/v0.2/docs/integrations/platforms/)[API Reference](https://v02.api.js.langchain.com)

[More](#)

*   [People](/v0.2/docs/people/)
*   [Community](/v0.2/docs/community)
*   [Tutorials](/v0.2/docs/additional_resources/tutorials)
*   [Contributing](/v0.2/docs/contributing)

[v0.2](#)

*   [v0.2](/v0.2/docs/introduction)
*   [v0.1](https://js.langchain.com/v0.1/docs/get_started/introduction)

[🦜🔗](#)

*   [LangSmith](https://smith.langchain.com)
*   [LangSmith Docs](https://docs.smith.langchain.com)
*   [LangChain Hub](https://smith.langchain.com/hub)
*   [LangServe](https://github.com/langchain-ai/langserve)
*   [Python Docs](https://python.langchain.com/)

[Chat](https://chatjs.langchain.com)[](https://github.com/langchain-ai/langchainjs)

Search

*   [Providers](/v0.2/docs/integrations/platforms/)
    
    *   [Providers](/v0.2/docs/integrations/platforms/)
    *   [Anthropic](/v0.2/docs/integrations/platforms/anthropic)
    *   [AWS](/v0.2/docs/integrations/platforms/aws)
    *   [Google](/v0.2/docs/integrations/platforms/google)
    *   [Microsoft](/v0.2/docs/integrations/platforms/microsoft)
    *   [OpenAI](/v0.2/docs/integrations/platforms/openai)
*   [Components](/v0.2/docs/integrations/components)
    
    *   [Chat models](/v0.2/docs/integrations/chat/)
        
    *   [LLMs](/v0.2/docs/integrations/llms/)
        
    *   [Embedding models](/v0.2/docs/integrations/text_embedding)
        
    *   [Document loaders](/v0.2/docs/integrations/document_loaders)
        
    *   [Document transformers](/v0.2/docs/integrations/document_transformers)
        
    *   [Vector stores](/v0.2/docs/integrations/vectorstores)
        
    *   [Retrievers](/v0.2/docs/integrations/retrievers)
        
    *   [Tools](/v0.2/docs/integrations/tools)
        
    *   [Toolkits](/v0.2/docs/integrations/toolkits)
        
        *   [Connery Toolkit](/v0.2/docs/integrations/toolkits/connery)
        *   [JSON Agent Toolkit](/v0.2/docs/integrations/toolkits/json)
        *   [OpenAPI Agent Toolkit](/v0.2/docs/integrations/toolkits/openapi)
        *   [AWS Step Functions Toolkit](/v0.2/docs/integrations/toolkits/sfn_agent)
        *   [SQL Agent Toolkit](/v0.2/docs/integrations/toolkits/sql)
        *   [VectorStore Agent Toolkit](/v0.2/docs/integrations/toolkits/vectorstore)
    *   [Stores](/v0.2/docs/integrations/stores/)
        

*   [](/v0.2/)
*   [Components](/v0.2/docs/integrations/components)
*   [Toolkits](/v0.2/docs/integrations/toolkits)
*   AWS Step Functions Toolkit

AWS Step Functions Toolkit
==========================

**AWS Step Functions** are a visual workflow service that helps developers use AWS services to build distributed applications, automate processes, orchestrate microservices, and create data and machine learning (ML) pipelines.

By including a `AWSSfn` tool in the list of tools provided to an Agent, you can grant your Agent the ability to invoke async workflows running in your AWS Cloud.

When an Agent uses the `AWSSfn` tool, it will provide an argument of type `string` which will in turn be passed into one of the supported actions this tool supports. The supported actions are: `StartExecution`, `DescribeExecution`, and `SendTaskSuccess`.

Setup[​](#setup "Direct link to Setup")
---------------------------------------

You'll need to install the Node AWS Step Functions SDK:

*   npm
*   Yarn
*   pnpm

    npm install @aws-sdk/client-sfn

    yarn add @aws-sdk/client-sfn

    pnpm add @aws-sdk/client-sfn

Usage[​](#usage "Direct link to Usage")
---------------------------------------

tip

See [this section for general instructions on installing integration packages](/v0.2/docs/how_to/installation#installing-integration-packages).

*   npm
*   Yarn
*   pnpm

    npm install @langchain/openai @langchain/community

    yarn add @langchain/openai @langchain/community

    pnpm add @langchain/openai @langchain/community

### Note about credentials:[​](#note-about-credentials "Direct link to Note about credentials:")

*   If you have not run [`aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) via the AWS CLI, the `region`, `accessKeyId`, and `secretAccessKey` must be provided to the AWSSfn constructor.
*   The IAM role corresponding to those credentials must have permission to invoke the Step Function.

    import { OpenAI } from "@langchain/openai";import {  AWSSfnToolkit,  createAWSSfnAgent,} from "@langchain/community/agents/toolkits/aws_sfn";const _EXAMPLE_STATE_MACHINE_ASL = `{  "Comment": "A simple example of the Amazon States Language to define a state machine for new client onboarding.",  "StartAt": "OnboardNewClient",  "States": {    "OnboardNewClient": {      "Type": "Pass",      "Result": "Client onboarded!",      "End": true    }  }}`;/** * This example uses a deployed AWS Step Function state machine with the above Amazon State Language (ASL) definition. * You can test by provisioning a state machine using the above ASL within your AWS environment, or you can use a tool like LocalStack * to mock AWS services locally. See https://localstack.cloud/ for more information. */export const run = async () => {  const model = new OpenAI({ temperature: 0 });  const toolkit = new AWSSfnToolkit({    name: "onboard-new-client-workflow",    description:      "Onboard new client workflow. Can also be used to get status of any excuting workflow or state machine.",    stateMachineArn:      "arn:aws:states:us-east-1:1234567890:stateMachine:my-state-machine", // Update with your state machine ARN accordingly    region: "<your Sfn's region>",    accessKeyId: "<your access key id>",    secretAccessKey: "<your secret access key>",  });  const executor = createAWSSfnAgent(model, toolkit);  const input = `Onboard john doe (john@example.com) as a new client.`;  console.log(`Executing with input "${input}"...`);  const result = await executor.invoke({ input });  console.log(`Got output ${result.output}`);  console.log(    `Got intermediate steps ${JSON.stringify(      result.intermediateSteps,      null,      2    )}`  );};

#### API Reference:

*   [OpenAI](https://v02.api.js.langchain.com/classes/langchain_openai.OpenAI.html) from `@langchain/openai`
*   [AWSSfnToolkit](https://v02.api.js.langchain.com/classes/langchain_community_agents_toolkits_aws_sfn.AWSSfnToolkit.html) from `@langchain/community/agents/toolkits/aws_sfn`
*   [createAWSSfnAgent](https://v02.api.js.langchain.com/functions/langchain_community_agents_toolkits_aws_sfn.createAWSSfnAgent.html) from `@langchain/community/agents/toolkits/aws_sfn`

* * *

#### Was this page helpful?

  

#### You can leave detailed feedback [on GitHub](https://github.com/langchain-ai/langchainjs/issues/new?assignees=&labels=03+-+Documentation&projects=&template=documentation.yml&title=DOC%3A+%3CPlease+write+a+comprehensive+title+after+the+%27DOC%3A+%27+prefix%3E).

[

Previous

OpenAPI Agent Toolkit

](/v0.2/docs/integrations/toolkits/openapi)[

Next

SQL Agent Toolkit

](/v0.2/docs/integrations/toolkits/sql)

Community

*   [Discord](https://discord.gg/cU2adEyC7w)
*   [Twitter](https://twitter.com/LangChainAI)

GitHub

*   [Python](https://github.com/langchain-ai/langchain)
*   [JS/TS](https://github.com/langchain-ai/langchainjs)

More

*   [Homepage](https://langchain.com)
*   [Blog](https://blog.langchain.dev)

Copyright © 2024 LangChain, Inc.