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