

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS SDK 서비스 통합을 사용하여 Amazon S3 버킷 정보 수집
<a name="tutorial-gather-s3-info"></a>

이 자습서에서는 Amazon Simple Storage Service와 [AWS SDK 통합](supported-services-awssdk.md)을 수행하는 방법을 보여줍니다. 이 자습서에서 만든 상태 머신은 Amazon S3 버킷에 대한 정보를 수집한 다음 현재 리전의 각 버킷에 대한 버전 정보와 함께 버킷을 나열합니다.

## 1단계: 상태 머신 만들기
<a name="aws-sdk-create-state-machine"></a>

Step Functions 콘솔을 사용하여 현재 계정과 리전의 모든 Amazon S3 버킷을 나열하는 `Task` 상태가 포함된 상태 머신을 만듭니다. 그런 다음 `[HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)` API를 간접적으로 호출하는 다른 `Task` 상태를 추가하여 반환된 버킷이 현재 리전에서 액세스할 수 있는지 확인합니다. 버킷이 액세스할 수 없으면 `HeadBucket` API 직접 호출에서 `S3.S3Exception` 오류를 반환합니다. 이 예외를 포착하기 위한 `Catch` 블록과 폴백 상태로 `Pass` 상태가 포함됩니다.

1. [AWS Step Functions 콘솔](https://console.aws.amazon.com/states/home)을 열고 메뉴에서 **상태 머신**을 선택한 다음 **상태 머신 생성**을 선택합니다.

1. **새로 생성**을 선택합니다.

1. 상태 머신의 이름을 지정한 다음 **계속**을 선택하여 Workflow Studio에서 상태 머신을 편집합니다.

1. 이 자습서에서는 [코드 편집기](workflow-studio.md#wfs-interface-code-editor)에서 상태 머신의 [Amazon States Language](concepts-amazon-states-language.md)(ASL) 정의를 작성합니다. 이렇게 하려면 **코드**를 선택합니다.

1. 기존 보일러플레이트 코드를 제거하고 다음 상태 머신 정의를 붙여넣습니다.

   ```
   {
     "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
       }
     }
   }
   ```

1. 상태 머신 이름을 지정합니다. 이렇게 하려면 기본 상태 머신 이름인 **MyStateMachine** 옆에 있는 편집 아이콘을 선택합니다. 그런 다음 **상태 머신 구성**에서 **상태 머신 이름** 상자에 이름을 지정합니다.

   이 튜토리얼에서는 이름 **Gather-S3-Bucket-Info-Standard**를 입력합니다.

1. (선택 사항) **상태 머신 구성**에서 상태 머신 유형 및 실행 역할과 같은 기타 워크플로 설정을 지정합니다.

   **상태 머신 설정**의 모든 기본 선택 항목을 그대로 둡니다.

   상태 머신에 대한 올바른 권한을 사용하여 [이전에 IAM 역할을 만들었고](procedure-create-iam-role.md) 이를 사용하려면 **권한**에서 **기존 역할 선택**을 선택한 다음 목록에서 역할을 선택합니다. 또는 **역할 ARN 입력**을 선택한 다음 IAM 역할에 대한 ARN을 제공합니다.

1. **역할 생성 확인** 대화 상자에서 **확인**을 선택하여 계속합니다.

   **역할 설정 보기**를 선택하여 **상태 머신 구성**으로 돌아갈 수도 있습니다.
**참고**  
Step Functions에서 만드는 IAM 역할을 삭제하면 나중에 Step Functions에서 이 역할을 다시 만들 수 없습니다. 마찬가지로, 역할을 수정하면(예: IAM 정책의 주요에서 Step Functions 제거) 나중에 Step Functions에서 해당 원본 설정을 복원할 수 없습니다.

   [2단계](#aws-sdk-add-iam-permissions)에서는 누락된 권한을 상태 머신 역할에 추가합니다.

## 2단계: 필요한 IAM 역할 권한 추가
<a name="aws-sdk-add-iam-permissions"></a>

현재 리전의 Amazon S3 버킷에 대한 정보를 수집하려면 상태 머신에 Amazon S3 버킷에 액세스하는 데 필요한 권한을 제공해야 합니다.

1. 상태 머신 페이지에서 **IAM 역할 ARN**을 선택하여 상태 머신 역할에 대한 **역할** 페이지를 엽니다.

1. **권한 추가**를 선택하고 **인라인 정책 생성**을 선택합니다.

1. **JSON** 탭을 선택한 후 다음 권한을 JSON 편집기에 붙여넣습니다.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:ListAllMyBuckets",
                   "s3:ListBucket",
                   "s3:GetBucketVersioning"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. **정책 검토**를 선택합니다.

1. **정책 검토**의 **이름**에 **s3-bucket-permissions**를 입력합니다.

1. **정책 생성**을 선택합니다.

## 3단계: 표준 상태 머신 실행
<a name="aws-sdk-run-standard"></a>

1. **Gather-S3-Bucket-Info-Standard** 페이지에서 **실행 시작**을 선택합니다.

1. **실행 시작** 대화 상자에서 다음을 수행합니다.

   1. (선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.
**비 ASCII 이름 및 로깅**  
Step Functions는 비 ASCII 문자가 포함된 상태 머신, 실행, 활동 및 레이블 이름을 허용합니다. 이러한 문자는 Amazon CloudWatch에서 데이터 로깅을 방지하므로 Step Functions 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다.

   1. **실행 시작**을 선택합니다.

   1. Step Functions 콘솔은 실행 ID가 제목인 페이지로 이동합니다. 이 페이지를 *실행 세부 정보* 페이지라고 합니다. 실행이 진행되는 동안 또는 완료된 후에 이 페이지에서 실행 결과를 검토할 수 있습니다.

      실행 결과를 검토하려면 **그래프 보기**에서 개별 상태를 선택한 다음 [단계 세부 정보](concepts-view-execution-details.md#exec-details-intf-step-details) 창에서 개별 탭을 선택하여 입력, 출력 및 정의가 포함된 각 상태의 세부 정보를 각각 봅니다. *실행 세부 정보* 페이지에서 볼 수 있는 실행 정보에 대한 자세한 내용은 [실행 세부 정보 개요](concepts-view-execution-details.md#exec-details-interface-overview) 섹션을 참조하세요.

## 4단계: Express 상태 머신 실행
<a name="aws-sdk-run-express"></a>

1. [1단계](#aws-sdk-create-state-machine)에서 제공한 상태 머신 정의를 사용하여 Express 상태 머신을 만듭니다. [2단계](#aws-sdk-add-iam-permissions)의 설명대로 필요한 IAM 역할 권한도 포함해야 합니다.
**작은 정보**  
앞에서 만든 표준 시스템과 구별하려면 Express 상태 머신 이름을 **Gather-S3-Bucket-Info-Express**로 지정합니다.

1. **Gather-S3-Bucket-Info-Standard** 페이지에서 **실행 시작**을 선택합니다.

1. **실행 시작** 대화 상자에서 다음을 수행합니다.

   1. (선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.
**비 ASCII 이름 및 로깅**  
Step Functions는 비 ASCII 문자가 포함된 상태 머신, 실행, 활동 및 레이블 이름을 허용합니다. 이러한 문자는 Amazon CloudWatch에서 데이터 로깅을 방지하므로 Step Functions 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다.

   1. **실행 시작**을 선택합니다.

   1. Step Functions 콘솔은 실행 ID가 제목인 페이지로 이동합니다. 이 페이지를 *실행 세부 정보* 페이지라고 합니다. 실행이 진행되는 동안 또는 완료된 후에 이 페이지에서 실행 결과를 검토할 수 있습니다.

      실행 결과를 검토하려면 **그래프 보기**에서 개별 상태를 선택한 다음 [단계 세부 정보](concepts-view-execution-details.md#exec-details-intf-step-details) 창에서 개별 탭을 선택하여 입력, 출력 및 정의가 포함된 각 상태의 세부 정보를 각각 봅니다. *실행 세부 정보* 페이지에서 볼 수 있는 실행 정보에 대한 자세한 내용은 [실행 세부 정보 개요](concepts-view-execution-details.md#exec-details-interface-overview) 섹션을 참조하세요.