本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:在管道中使用 Amazon Step Functions 调用操作
您可以使用创建 Amazon Step Functions 和配置状态机。本教程介绍如何将调用操作添加到管道以便从管道激活状态机执行。
重要
作为创建管道的一部分,客户提供的 S3 工件存储桶将 CodePipeline 用于项目。(这与用于 S3 源操作的存储桶不同。) 如果 S3 工件存储桶与您的管道账户位于不同的账户中,请确保 S3 工件存储桶归其所有 Amazon Web Services 账户 ,该存储桶是安全且可靠的。
在本教程中,您将执行以下任务:
-
在中创建标准状态机 Amazon Step Functions。
-
JSON直接输入状态机输入。还可以将状态机输入文件上传到 Amazon Simple Storage Service (Amazon S3) 桶。
-
通过添加状态机操作来更新管道。
Step Functions 的 CodePipeline 操作不适用于中国(北京)和中国(宁夏)区域。要参考其他可用操作,请参阅 产品和服务与 CodePipeline。
先决条件:创建或选择简单管道
在本教程中,您将向现有管道添加调用操作。您可以使用在教程:创建一个简单的管道(S3 存储桶)或教程:创建简单的管道(CodeCommit存储库)中创建的管道。
您可以将现有管道与一个源操作和至少一个两阶段结构结合使用,但在此示例中不使用源构件。
注意
您可能需要通过添加运行此操作所需的其他权限来更新管道所使用的服务角色。为此,请打开 Amazon Identity and Access Management (IAM) 控制台,找到该角色,然后将权限添加到角色的策略中。有关更多信息,请参阅 向 CodePipeline 服务角色添加权限。
步骤 1:创建示例状态机
在 Step Functions 控制台中,使用 HelloWorld
示例模板创建状态机。有关说明,请参阅 Amazon Step Functions 开发者指南 中的创建状态机。
步骤 2:将 Step Functions 调用操作添加到管道
将 Step Functions 调用操作添加到管道,如下所示:
-
登录 Amazon Web Services Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home
。 将显示与您的 Amazon 账户关联的所有管道的名称。
-
在 Name 中,选择您要编辑的管道的名称。这将打开管道的详细视图,包括管道每个阶段中每个操作的状态。
-
在管道详细信息页中,选择编辑。
-
在简单管道的第二个阶段,选择 Edit stage (编辑阶段)。选择删除。这将立即删除您不再需要的第二个阶段。
-
在示意图底部,选择 + 添加阶段。
-
在 Stage name (阶段名称) 中,输入阶段的名称,例如
Invoke
,然后选择 Add stage(添加阶段)。 -
选择 + 添加操作组。
-
在 Action name (操作名称) 中,输入名称,例如
Invoke
。 -
在操作提供程序中,选择 Amazon Step Functions。允许区域默认为管道区域。
-
在 Input artifacts (输入构件) 中,选择
SourceArtifact
。 -
在状态机中ARN,为您之前创建的状态机选择 Amazon 资源名称 (ARN)。
-
(可选)在 Execution name prefix (执行名称前缀) 中,输入要添加到状态机执行 ID 的前缀。
-
在 Input type (输入类型) 中,选择 Literal (文本)。
-
在输入中,输入
HelloWorld
样本状态机期望的输JSON入。注意
状态机执行的输入与中 CodePipeline 用来描述操作输入工件的术语不同。
在本示例中,输入以下内容JSON:
{"IsHelloWorldExample": true}
-
选择完成。
-
在所编辑的阶段上,选择 Done (完成)。在 Amazon CodePipeline 窗格中,选择保存,然后选择警告消息上的保存。
-
要提交所做的更改并开始管道执行,请选择发布更改,然后选择发布。
-
在已完成的管道上,选择调用操作中的 Amazon Step Functions。在 Amazon Step Functions 控制台中,查看您的状态机执行 ID。ID 显示您的状态机名称
HelloWorld
和带有前缀my-prefix
的状态机执行 ID。arn:aws:states:us-west-2:
account-ID
:execution:HelloWorld:my-prefix-0d9a0900-3609-4ebc-925e-83d9618fcca1