亚马逊AWS官方博客

现已在 AWS Step Functions 中提供外部端点和任务状态测试



现在,使用 AWS Step Functions HTTPS 端点,您可以将第三方 API 和外部服务集成到工作流中。HTTPS 端点提供了一种更简单的方法,以调用外部 API 以及与现有的 SaaS 提供程序集成,例如用来处理付款的 Stripe、用来管理代码协作和存储库的 GitHub 以及用来提供销售和营销洞察的 Salesforce。在此次发布之前,客户需要使用 AWS Lambda 函数调用外部端点,并直接从代码中处理身份验证和错误。

此外,我们还宣布了一项新功能,无需部署或执行状态机即可单独测试任务状态。

AWS Step Functions 是一项可视化工作流服务,可帮助开发人员轻松构建分布式应用程序、自动执行流程、编排微服务以及创建数据和机器学习(ML)管道。Step Functions 与 220 多项 AWS 服务集成,并提供了一些可以帮助开发人员进行构建的功能,例如内置错误处理、实时和可审计的工作流执行历史记录以及大规模并行处理。

HTTPS 端点
HTTPS 端点是一个面向任务状态的新资源,使您能够连接到 AWS 以外的第三方 HTTP 目标。Step Functions 将调用 HTTP 端点,传送请求正文、标头和参数,并从第三方服务获取响应。您可以使用任何首选 HTTP 方法,例如 GET 或 POST。

HTTPS 端点使用 Amazon EventBridge 连接来管理目标的身份验证凭证。这样将定义所使用的授权类型,可以是使用用户名和密码、API 密钥或 OAuth 的基本身份验证。EventBridge 连接使用 AWS Secrets Manager 来存储密钥。这样可以确保将密钥拒之于状态机之外,因此降低了在日志或状态机定义中意外泄露密钥的风险。

HTTPS 端点入门
要开始使用 HTTPS 端点,您首先需要创建一个 EventBridge 连接。随后,您需要创建一个新的 AWS Identity and Access Management(IAM)角色并授予权限,以使状态机能够访问连接资源、从 Secrets Manager 获取密钥以及获得调用 HTTP 端点的权限。

您的状态机执行角色需要包含以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:events!connection/*"
        }
    ]
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RetrieveConnectionCredentials",
            "Effect": "Allow",
            "Action": [
                "events:RetrieveConnectionCredentials"
            ],
            "Resource": [
                "arn:aws:events:us-east-2:123456789012:connection/oauth_connection/aeabd89e-d39c-4181-9486-9fe03e6f286a"
            ]
        }
    ]
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InvokeHTTPEndpoint",
            "Effect": "Allow",
            "Action": [
                "states:InvokeHTTPEndpoint"
            ],
            "Resource": [
                "arn:aws:states:us-east-2:123456789012:stateMachine:myStateMachine"
            ]
        }
    ]
}

当一切准备就绪之后,您就可以创建状态机了。在状态机中,添加一个新的任务状态,以调用第三方 API。您可以配置 API 端点以指向所需的第三方 URL、设置正确的 HTTP 方法、为您以前创建的连接选择连接 Amazon 资源名称(ARN)作为此端点的身份验证,并在需要时提供请求正文。此外,可以在运行时从状态 JSON 输入中动态设置所有这些参数。

调用第三方 API

现在可以使用 Step Functions 轻松发出外部请求,您可以利用 Step Functions 提供的所有配置来处理错误(例如在发生暂时性错误或者服务暂时不可用时进行重试),并为需要更长调查或解决时间的错误进行再驱动

测试状态
为了缩短反馈周期,我们还宣布了一项用来测试各个状态的新功能。使用这项新功能,您可以独立于工作流的执行来测试状态。这对于端点配置测试特别有用。您可以更改输入并测试不同的场景,而无需部署工作流或执行整个状态机。这项新功能适用于所有任务、选项和通过状态。

当选择任务时,您将在 Step Functions Workflow Studio 中看到此测试功能。

“测试状态”按钮

当选择测试状态时,系统会将您重定向到另一个视图,您可以在那里测试任务状态。您可以测试状态机角色是否拥有正确的权限、是否正确配置了要调用的端点,并验证数据操作能够按预期方式执行。

如何测试状态

可用性
现在,使用 Step Functions 提供的所有功能,构建能够解决各种问题(例如支付流程、需要手动输入的工作流以及与遗留系统的集成)的状态机从未如此简单。使用 Step Functions HTTPS 端点,您可以直接与常用的支付平台集成,同时确保只对用户的信用卡扣款一次并自动处理错误。此外,甚至还可以在使用新的状态测试功能部署状态机之前测试这一新集成。

这些新功能已在所有 AWS 区域提供,但亚太地区(海得拉巴)、亚太地区(墨尔本)、AWS 以色列(特拉维夫)、中国和 GovCloud 区域除外。

要开始使用,您可以试用 AWS 管理控制台中的 Step Functions 提供的“使用 Stripe 生成发票”示例项目,或者查看《AWS Step Functions 开发人员指南》以了解更多信息。

Marcia