本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon 开发工具包服务集成收集 Amazon S3 存储桶信息
本教程向您展示了如何使用 Amazon Simple Storage Service 执行 Amazon 开发工具包集成。您在本教程中创建的状态机可以收集有关您的 Amazon S3 存储桶的信息,然后列出存储桶以及当前区域中每个存储桶的版本信息。
第 1 步:创建状态机
使用 Step Functions 控制台,您将创建一个包含 Task
状态的状态机,用于列出当前账户和区域中的所有 Amazon S3 存储桶。然后,您将添加另一个调用 HeadBucket
API 的 Task
状态,用于验证返回的存储桶是否可在当前区域访问。如果无法访问存储桶,HeadBucket
API 调用将返回 S3.S3Exception
错误。您将包括一个用于捕获此异常的 Catch
块和一个作为后备状态的 Pass
状态。
-
打开 Step Functions 控制台
,然后选择创建状态机。 在 选择模板对话框中,选择空白。
选择选择,以便在设计模式下打开工作流程工作室。
-
在本教程中,您将在代码编辑器中编写状态机的 Amazon States Language (ASL) 定义。要执行此操作,请选择代码。
-
删除现有的样板代码并粘贴以下状态机定义。
{ "Comment": "A description of my state machine", "StartAt": "ListBuckets", "States": { "ListBuckets": { "Type": "Task", "Parameters": {}, "Resource": "arn:aws:states:::aws-sdk:s3:listBuckets", "Next": "Map" }, "Map": { "Type": "Map", "ItemsPath": "$.Buckets", "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "HeadBucket", "States": { "HeadBucket": { "Type": "Task", "ResultPath": null, "Parameters": { "Bucket.$": "$.Name" }, "Resource": "arn:aws:states:::aws-sdk:s3:headBucket", "Catch": [ { "ErrorEquals": [ "S3.S3Exception" ], "ResultPath": null, "Next": "Pass" } ], "Next": "GetBucketVersioning" }, "GetBucketVersioning": { "Type": "Task", "End": true, "Parameters": { "Bucket.$": "$.Name" }, "ResultPath": "$.BucketVersioningInfo", "Resource": "arn:aws:states:::aws-sdk:s3:getBucketVersioning" }, "Pass": { "Type": "Pass", "End": true, "Result": { "Status": "Unknown" }, "ResultPath": "$.BucketVersioningInfo" } } }, "End": true } } }
-
为状态机指定一个名称。要执行此操作,请选择默认状态机名称 MyStateMachine 旁边的编辑图标。然后,找到状态机配置,在状态机名称框中指定一个名称。
对于本教程,请输入名称
Gather-S3-Bucket-Info-Standard
。 -
(可选)在状态机配置中,指定其他工作流设置,例如状态机类型及其执行角色。
保留状态机设置中的所有默认选项。
如果您之前为状态机创建了具有正确权限的 IAM 角色并想使用该角色,请在权限中选择选择现有角色,然后从列表中选择一个角色。或者选择输入角色 ARN,然后为该 IAM 角色的 ARN 获取该角色。
-
在确认角色创建对话框中,选择确认继续。
您也可以选择查看角色设置,返回至状态机配置。
注意
如果您删除了 Step Functions 创建的 IAM 角色,Step Functions 在以后无法重新创建该角色。同样,如果您修改了该角色(例如,通过在 IAM 策略中从主体中删除 Step Functions),Step Functions 在以后也无法还原其原始设置。
在第 2 步 中,您将向状态机角色添加缺少的权限。
第 2 步:添加必要的 IAM 角色权限
要收集有关您当前区域的 Amazon S3 存储桶的信息,您必须向状态机提供访问 Amazon S3 存储桶所需的权限。
-
在状态机页面上,选择 IAM 角色 ARN,打开状态机角色的角色页面。
-
选择添加权限,然后选择创建内联策略。
选择 JSON 选项卡,然后将以下权限粘贴到 JSON 编辑器中。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketVersioning" ], "Resource": "*" } ] }
选择查看策略。
在查看策略下,为策略名称输入
s3-bucket-permissions
。选择创建策略。
第 3 步:启动一个标准状态机执行
-
在 Gather-S3-Bucket-Info-Standard 页面上,选择启动执行。
-
在启动执行对话框中,执行以下操作:
-
(可选)输入自定义执行名称,以便覆盖生成的默认执行名称。
非 ASCII 名称和日志记录
Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符不适用于 Amazon CloudWatch,因此我们建议您仅使用 ASCII 字符,这样您就可以在 CloudWatch 中跟踪指标。
-
选择启动执行。
-
Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。
要查看执行结果,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息概览。
-
第 4 步:运行一个快速状态机执行
-
使用第 1 步中提供的状态机定义创建一个快速状态机。请确保您还包括第 2 步 中所述的必要的 IAM 角色权限。
提示
要与之前创建的标准状态机区分开来,请将快速状态机命名为
Gather-S3-Bucket-Info-Express
。 -
在 Gather-S3-Bucket-Info-Standard 页面上,选择启动执行。
-
在启动执行对话框中,执行以下操作:
-
(可选)输入自定义执行名称,以便覆盖生成的默认执行名称。
非 ASCII 名称和日志记录
Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符不适用于 Amazon CloudWatch,因此我们建议您仅使用 ASCII 字符,这样您就可以在 CloudWatch 中跟踪指标。
-
选择启动执行。
-
Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进展或者在执行完成后查看执行结果。
要查看执行结果,请在图表视图上选择各个状态,然后在步骤详细信息窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息概览。
-