本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用Amazon软件开发工具包服务集成收集 Amazon S3 存储桶信息
本教程向您展示如何使用亚马逊简单存储服务执行 AmazonSDK 集成。您在本教程中创建的状态机收集有关您的 Amazon S3 存储桶的信息,然后列出您的存储桶以及当前区域中每个存储桶的版本信息。
步骤 1:创建状态机
使用 Step Functions 控制台,您将创建一个包含状态的Task
状态机,用于列出当前账户和区域中的所有 Amazon S3 存储桶。然后,您将添加另一个调用 HeadBucket
API 的Task
状态,以验证返回的存储桶是否可在当前区域访问。如果无法访问存储桶,HeadBucket
API 调用将返回S3.S3Exception
错误。您将包括一个用于捕获此异常的Catch
块和一个Pass
状态作为后备状态。
-
打开 Ste p Functions 控制台
并选择创建状态机。 在 “选择模板” 对话框中,选择 “空白”。
选择 Select (选择)。这将在中打开工作流程工作室设计模式。
-
在本教程中,你将在中编写状态机的 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": "*" } ] }
选择Review policy(查看策略)。
在 Review policy (查看策略) 下,为策略 Name (名称) 输入
s3-bucket-permissions
。选择 Create policy(创建策略)。
步骤 3:运行标准状态机执行
-
在 Gather-S3-Bucket-Info-Standard 页面上,选择开始执行。
-
在 “开始执行” 对话框中,执行以下操作:
-
(可选)要识别您的执行,可以在名称框中为其指定名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。
注意
Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。
-
选择 Start execution (开始执行)。
-
Step Functions 控制台会将你引导到标题为你的执行 ID 的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进行或完成后查看执行结果。
要查看执行结果,请在图表视图上选择各个状态,然后在步骤详情窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息页面-界面概述。
-
步骤 4:运行 Express 状态机执行
-
使用步骤 1 中提供的状态机定义创建 Express 状态机。请确保您还包括步骤 2 中所述的必要的 IAM 角色权限。
提示
要与之前创建的标准计算机区分开来,请将 Express 状态机命名为
Gather-S3-Bucket-Info-Express
。 -
在 Gather-S3-Bucket-Info-Standard 页面上,选择开始执行。
-
在 “开始执行” 对话框中,执行以下操作:
-
(可选)要识别您的执行,可以在名称框中为其指定名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。
注意
Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。
-
选择 Start execution (开始执行)。
-
Step Functions 控制台会将你引导到标题为你的执行 ID 的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进行或完成后查看执行结果。
要查看执行结果,请在图表视图上选择各个状态,然后在步骤详情窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息页面-界面概述。
-