本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用收集 Amazon S3 存储桶信息AmazonSDK 服务集成
本教程介绍如何部署AmazonSDK 集成该项目将创建一台标准状态机和一台 Express 状态机,每台状态机都具有相同的定义。这些将收集有关您的 Amazon S3 存储桶的信息,然后列出存储桶以及当前区域中每个存储桶的版本信息。
部署本教程中包含的 Amazon CloudFormation 堆栈将创建所有必需的资源,包括:
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Step Functions标准状态机
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon Step Functions快速状态机
-
相关 Amazon Identity and Access Management 角色和权限
有关更多信息,请参阅 。使用 CloudFormation 模板和AWS::StepFunctions::StateMachine
中的资源Amazon CloudFormation用户指南.
第 1 步:创建Amazon CloudFormation模板
-
从 Amazon CloudFormation 模板源代码 部分复制示例代码。
-
将 Amazon CloudFormation 模板的源粘贴到本地计算机的文件中。
在此示例中,文件名为
aws-sdk.yaml
。
第 2 步:创建堆栈
-
选择创建堆栈。
-
在 Choose a template (选择模板) 中,选择 Upload a template to Amazon S3 (将模板上传到 Amazon S3),然后选择 Choose File (选择文件)。
-
浏览到
aws-sdk.yaml
您之前创建的文件,其中包括模板源代码. -
选择 Open (打开),然后选择 Next (下一步)。
-
在 Specify Details (指定详细信息) 下,输入 Stack name (堆栈名称)。
-
在 Options (选项) 页面上,向下滚动并选择 Next (下一步)。
-
在存储库的审核页面上,选择:
我承认Amazon CloudFormation可能会创建 IAM 资源。
我承认Amazon CloudFormation可使用自定义名称创建 IAM 资源。
我承认Amazon CloudFormation可能需要以下功能:功能 _AUTO_展开
-
选择Create.Amazon CloudFormation开始创建您的堆栈并显示创建 _IN_PROGRESS状态。在此过程完成后,Amazon CloudFormation 将显示 CREATE_COMPLETE 状态。
-
(可选) 要显示您的堆栈中的资源,请选择堆栈,然后选择 Resources 选项卡。
第 3 步:在 Workflow Studio 中查看状态机
-
选择一台新的状态机,Gather-S3-Bucket 信息标准要么Gather-S3-Bucket-Info-Express.
-
选择 Edit (编辑)。
显示状态机的定义。
-
选择Workflow Studio. 您可以在 Step Functions Workflow Studio 中查看和编辑状态机。
第 4 步:运行标准状态机执行
-
如果您尚未登录,请登录到Step Functions 控制台
. -
在存储库的状态机页面上,选择Gather-S3-Bucket 信息标准.
-
选择 Start execution (开始执行)。
-
(可选)为执行输入一些内容。
{ "Comment": "Testing the Amazon SDK tutorial." }
-
选择 Start execution (开始执行)。
这些区域有:Gather-S3-Bucket 信息标准开始执行。
-
在执行完成后,您可以在执行输出选项卡。
第 5 步:运行 Express 状态机执行
-
如果您尚未登录,请登录到Step Functions 控制台
. -
在存储库的状态机页面上,选择Gather-S3-Bucket-Info-Express.
-
选择 Start execution (开始执行)。
-
(可选)为执行输入一些内容。
{ "Comment": "Testing the Amazon SDK Express tutorial." }
-
选择 Start execution (开始执行)。
这些区域有:Gather-S3-Bucket-Info-Express开始执行。
-
在执行完成后,您可以在执行输出的 部分详细信息.
Amazon CloudFormation 模板源代码
使用这个Amazon CloudFormation部署示例的模板AmazonSDK 集成Amazon Step Functions.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 AWSTemplateFormatVersion: "2010-09-09" Transform: AWS::Serverless-2016-10-31 Description: "An example of using Aws-SDK service integrations to gather info on S3 buckets" Resources: ApplicationRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - states.amazonaws.com Action: - "sts:AssumeRole" Policies: - PolicyName: AppPolicy PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - xray:PutTraceSegments - xray:PutTelemetryRecords - xray:GetSamplingRules - xray:GetSamplingTargets - s3:ListAllMyBuckets - s3:ListBucket - s3:GetBucketVersioning - s3:GetBucketLocation Resource: '*' StateMachineGetS3BucketInfoStandard: Type: AWS::Serverless::StateMachine Properties: Type: "STANDARD" Name: "Gather-S3-Bucket-Info-Standard" Role: !GetAtt ApplicationRole.Arn Definition: Comment: An example of using Aws-SDK service integrations to gather info on S3 buckets StartAt: ListBuckets States: ListBuckets: Type: Task Parameters: {} Resource: arn:aws:states:::aws-sdk:s3:listBuckets Next: Map Retry: - ErrorEquals: - States.ALL BackoffRate: 1 IntervalSeconds: 1 MaxAttempts: 3 Map: Type: Map Iterator: StartAt: GetBucketLocation States: GetBucketLocation: Type: Task Parameters: Bucket.$: "$.Name" Resource: arn:aws:states:::aws-sdk:s3:getBucketLocation ResultPath: "$.BucketLocationInfo" Next: Is In Current Region? Retry: - ErrorEquals: - States.ALL BackoffRate: 1 IntervalSeconds: 1 MaxAttempts: 3 Is In Current Region?: Type: Choice Choices: - And: - Variable: "$.BucketLocationInfo.LocationConstraint " IsPresent: true - Variable: "$.BucketLocationInfo.LocationConstraint " StringEquals: ca-central-1 Next: GetBucketVersioning Default: Add Unknown Version Info Add Unknown Version Info: Type: Pass End: true ResultPath: "$.BucketVersioningInfo" Result: Status: Unknown GetBucketVersioning: Type: Task End: true Parameters: Bucket.$: "$.Name" Resource: arn:aws:states:::aws-sdk:s3:getBucketVersioning ResultPath: "$.BucketVersioningInfo" Retry: - ErrorEquals: - States.ALL BackoffRate: 1 IntervalSeconds: 1 MaxAttempts: 3 End: true ItemsPath: "$.Buckets" StateMachineGetS3BucketInfoExpress: Type: AWS::Serverless::StateMachine Properties: Type: "EXPRESS" Name: "Gather-S3-Bucket-Info-Express" Role: !GetAtt ApplicationRole.Arn Definition: Comment: An example of using Aws-SDK service integrations to gather info on S3 buckets StartAt: ListBuckets States: ListBuckets: Type: Task Parameters: {} Resource: arn:aws:states:::aws-sdk:s3:listBuckets Next: Map Retry: - ErrorEquals: - States.ALL BackoffRate: 1 IntervalSeconds: 1 MaxAttempts: 3 Map: Type: Map Iterator: StartAt: GetBucketLocation States: GetBucketLocation: Type: Task Parameters: Bucket.$: "$.Name" Resource: arn:aws:states:::aws-sdk:s3:getBucketLocation ResultPath: "$.BucketLocationInfo" Next: Is In Current Region? Retry: - ErrorEquals: - States.ALL BackoffRate: 1 IntervalSeconds: 1 MaxAttempts: 3 Is In Current Region?: Type: Choice Choices: - And: - Variable: "$.BucketLocationInfo.LocationConstraint " IsPresent: true - Variable: "$.BucketLocationInfo.LocationConstraint " StringEquals: ca-central-1 Next: GetBucketVersioning Default: Add Unknown Version Info Add Unknown Version Info: Type: Pass End: true ResultPath: "$.BucketVersioningInfo" Result: Status: Unknown GetBucketVersioning: Type: Task End: true Parameters: Bucket.$: "$.Name" Resource: arn:aws:states:::aws-sdk:s3:getBucketVersioning ResultPath: "$.BucketVersioningInfo" Retry: - ErrorEquals: - States.ALL BackoffRate: 1 IntervalSeconds: 1 MaxAttempts: 3 End: true ItemsPath: "$.Buckets"