使用Amazon软件开发工具包服务集成收集 Amazon S3 存储桶信息 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用Amazon软件开发工具包服务集成收集 Amazon S3 存储桶信息

本教程向您展示如何使用亚马逊简单存储服务执行 AmazonSDK 集成。您在本教程中创建的状态机收集有关您的 Amazon S3 存储桶的信息,然后列出您的存储桶以及当前区域中每个存储桶的版本信息。

步骤 1:创建状态机

使用 Step Functions 控制台,您将创建一个包含状态的Task状态机,用于列出当前账户和区域中的所有 Amazon S3 存储桶。然后,您将添加另一个调用 HeadBucket API 的Task状态,以验证返回的存储桶是否可在当前区域访问。如果无法访问存储桶,HeadBucketAPI 调用将返回S3.S3Exception错误。您将包括一个用于捕获此异常的Catch块和一个Pass状态作为后备状态。

  1. 打开 Ste p Functions 控制台并选择创建状态机

  2. “选择模板” 对话框中,选择 “空白”。

  3. 选择 Select (选择)。这将在中打开工作流程工作室设计模式

  4. 在本教程中,你将在中编写状态机的 Amazon States Language (ASL) 定义。代码编辑器为此,请选择 “代码”。

  5. 删除现有的样板代码并粘贴以下状态机定义。

    { "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 } } }
  6. 为您的状态机指定一个名称。为此,请选择默认状态机名称旁边的编辑图标MyStateMachine。然后,在状态机配置中,在状态机名称框中指定一个名称

    对于本教程,请输入名称 Gather-S3-Bucket-Info-Standard

  7. (可选)在状态机配置中,指定其他工作流程设置,例如状态机类型及其执行角色。

    保留状态机设置中的所有默认选项。

    如果您之前为状态机创建了具有正确权限的 IAM 角色并想使用该角色,请在权限选择 “选择现有角色”,然后从列表中选择一个角色。或者选择输入角色 ARN,然后为该 IAM 角色提供一个 ARN。

  8. 在 “确认角色创建” 对话框中,选择 “确认” 继续。

    您也可以选择查看角色设置以返回状态机配置

    注意

    如果你删除 Step Functions 创建的 IAM 角色,Step Functions 以后将无法重新创建它。同样,如果您修改角色(例如,从 IAM 策略中的委托人中删除 Step Functions),Step Functions 以后将无法恢复其原始设置。

    步骤 2 中,您将向状态机角色添加缺少的权限。

步骤 2:添加必要的 IAM 角色权限

要收集有关您当前区域的 Amazon S3 存储桶的信息,您必须向状态机提供访问 Amazon S3 存储桶所需的权限。

  1. 在状态机页面上,选择 IAM 角色 ARN 以打开状态机角色的角色页面。

  2. 选择添加权限,然后选择创建内联策略

  3. 选择 JSON 选项卡,然后将以下权限粘贴到 JSON 编辑器中。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketVersioning" ], "Resource": "*" } ] }
  4. 选择Review policy(查看策略)

  5. Review policy (查看策略) 下,为策略 Name (名称) 输入 s3-bucket-permissions

  6. 选择 Create policy(创建策略)

步骤 3:运行标准状态机执行

  1. Gather-S3-Bucket-Info-Standard 页面上,选择开始执行。

  2. 在 “开始执行” 对话框中,执行以下操作:

    1. (可选)要识别您的执行,可以在名称框中为其指定名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。

      注意

      Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。

    2. 选择 Start execution (开始执行)

    3. Step Functions 控制台会将你引导到标题为你的执行 ID 的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进行或完成后查看执行结果。

      要查看执行结果,请在图表视图上选择各个状态,然后在步骤详情窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息页面-界面概述

步骤 4:运行 Express 状态机执行

  1. 使用步骤 1 中提供的状态机定义创建 Express 状态机。请确保您还包括步骤 2 中所述的必要的 IAM 角色权限。

    提示

    要与之前创建的标准计算机区分开来,请将 Express 状态机命名为Gather-S3-Bucket-Info-Express

  2. Gather-S3-Bucket-Info-Standard 页面上,选择开始执行。

  3. 在 “开始执行” 对话框中,执行以下操作:

    1. (可选)要识别您的执行,可以在名称框中为其指定名称。默认情况下,Step Functions 会自动生成一个唯一的执行名称。

      注意

      Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊。 CloudWatch为确保您可以跟踪 CloudWatch 指标,请选择仅使用 ASCII 字符的名称。

    2. 选择 Start execution (开始执行)

    3. Step Functions 控制台会将你引导到标题为你的执行 ID 的页面。该页面被称为执行详细信息页面。在此页面上,您可以随着执行的进行或完成后查看执行结果。

      要查看执行结果,请在图表视图上选择各个状态,然后在步骤详情窗格中选择各个选项卡,分别查看每个状态的详细信息,包括输入、输出和定义。有关可在执行详细信息页面上查看的执行信息的详细信息,请参阅执行详细信息页面-界面概述