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

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

使用 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 状态。

  1. 打开 Step Functions 控制台,然后选择创建状态机

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

  3. 选择选择。这将在设计模式中打开 Workflow Studio。

  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. 选择查看策略

  5. 查看策略下,为策略名称输入 s3-bucket-permissions

  6. 选择创建策略

第 3 步:启动一个标准状态机执行

  1. Gather-S3-Bucket-Info-Standard 页面上,选择启动执行

  2. 启动执行对话框中,执行以下操作:

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

      注意

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

    2. 选择启动执行

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

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

第 4 步:运行一个快速状态机执行

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

    提示

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

  2. Gather-S3-Bucket-Info-Standard 页面上,选择启动执行

  3. 启动执行对话框中,执行以下操作:

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

      注意

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

    2. 选择启动执行

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

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