API Gateway를 사용하여 Step Functions API 만들기 - AWS Step Functions

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

API Gateway를 사용하여 Step Functions API 만들기

Amazon API Gateway를 사용하여 API를 API 게이트웨이 API의 메서드와 연결할 수 있습니다. AWS Step Functions HTTPS 요청이 API 메서드로 전송되면 API Gateway에서 Step Functions API 작업을 간접적으로 호출합니다.

이 자습서에서는 하나의 리소스 및 POST 메서드를 사용하여 StartExecution API 작업과 통신하는 API를 생성하는 방법을 보여줍니다. AWS Identity and Access Management (IAM) 콘솔을 사용하여 API Gateway에 대한 역할을 생성합니다. 그런 다음 API Gateway 콘솔을 사용하여 API Gateway API를 만들고 리소스와 메서드를 만들고 메서드를 StartExecution API 작업에 매핑합니다. 마지막으로, API를 배포 및 테스트합니다.

참고

StartExecution을 직접적으로 호출하여 Amazon API Gateway에서 Step Functions 실행을 시작할 수 있지만 결과를 가져오려면 DescribeExecution을 직접적으로 호출해야 합니다.

1단계: API Gateway에 대한 IAM 역할 만들기

API Gateway API를 만들기 전에 Step Functions API 작업을 직접적으로 호출할 수 있는 권한을 API Gateway에 부여해야 합니다.

API Gateway에 대한 권한 설정하기
  1. IAM 콘솔에 로그인하고 역할, 역할 생성을 선택합니다.

  2. 신뢰할 수 있는 엔터티 선택(Select trusted entity) 페이지에서 다음을 수행합니다.

    1. 신뢰할 수 있는 엔터티 유형의 경우 AWS 서비스의 기본 선택 항목을 그대로 둡니다.

    2. 사용 사례의 드롭다운 목록에서 API Gateway를 선택합니다.

  3. API Gateway를 선택한 다음 다음을 선택합니다.

  4. 권한 추가 페이지에서 다음을 선택합니다.

  5. (선택 사항) 이름 지정, 검토 및 생성 페이지에서 역할 이름과 같은 세부 정보를 입력합니다. 예를 들면 APIGatewayToStepFunctions를 입력합니다.

  6. 역할 생성을 선택합니다.

    역할 목록에 IAM 역할이 표시됩니다.

  7. 다음 예제와 같이 역할 이름을 선택하고 역할 ARN을 적어 둡니다.

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
IAM 역할에 정책 연결하기
  1. 역할 페이지에서 역할(APIGatewayToStepFunctions)을 찾아 선택합니다.

  2. 권한 탭에서 권한 추가, 정책 연결을 차례로 선택합니다.

  3. 정책 연결 페이지에서 AWSStepFunctionsFullAccess를 검색하고 정책을 선택한 다음 권한 추가를 선택합니다.

2단계: API Gateway API 만들기

IAM 역할을 만든 후에는 사용자 지정 API Gateway API를 만들 수 있습니다.

API를 생성하려면
  1. Amazon API Gateway 콘솔을 열고 API 생성을 선택합니다.

  2. API 유형 선택 페이지의 REST API 창에서 빌드를 선택합니다.

  3. REST API 생성 페이지에서 새 API를 선택한 다음 StartExecutionAPI 이름으로 API를 입력합니다.

  4. API 엔드포인트 유형리전별로 유지한 다음 API 생성을 선택합니다.

리소스를 생성하려면
  1. StartExecutionAPI의 리소스 페이지에서 리소스 생성을 선택합니다.

  2. 리소스 생성 페이지에서 리소스 이름execution을 입력한 다음 리소스 생성을 선택합니다.

POST 메서드 만들기
  1. /execution 리소스를 선택한 다음 메서드 생성을 선택합니다.

  2. 메서드 유형에서 POST를 선택합니다.

  3. 통합 유형에서 AWS 서비스를 선택합니다.

  4. AWS 리전의 목록에서 리전을 선택합니다.

    참고

    현재 Step Functions를 지원하는 리전은 지원되는 리전을 참조하세요.

  5. AWS 서비스의 목록에서 Step Functions를 선택합니다.

  6. AWS 하위 도메인은 비워 둡니다.

  7. HTTP 메서드 목록에서 POST를 선택합니다.

    참고

    모든 Step Functions API 작업에서 HTTP POST 메서드를 사용합니다.

  8. 작업 유형에서 작업 이름 사용을 선택합니다.

  9. 함수 이름StartExecution를 입력합니다.

  10. 다음 예제와 같이 실행 역할앞에서 만든 IAM 역할의 역할 ARN을 입력합니다.

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
  11. 보안 인증 캐시기본 제한 시간에 대한 기본 옵션을 유지한 다음 저장을 선택합니다.

API Gateway 및 Step Functions 간의 시각적 매핑은 /execution - POST - 메서드 실행 페이지에 표시됩니다.

3단계: API Gateway API 테스트 및 배포

API를 생성한 후 테스트하고 배포합니다.

API Gateway 및 Step Functions 간의 통신을 테스트하기
  1. /execution - POST - 메서드 실행 페이지에서 테스트 탭을 선택합니다. 탭을 표시하려면 오른쪽 화살표 버튼을 선택해야 할 수도 있습니다.

  2. /execution - POST - 메서드 테스트 탭에서 기존 상태 시스템의 ARN을 사용하여 다음 요청 파라미터를 요청 본문 섹션에 복사하거나 Lambda 함수를 사용하는 새 상태 시스템을 만든 다음 테스트를 선택합니다.

    { "input": "{}", "name": "MyExecution", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

    자세한 내용은 AWS Step Functions API 참조StartExecution 요청 구문을 참조하세요.

    참고

    API Gateway 직접 호출 본문에 상태 머신의 ARN을 포함하지 않으려면 다음 예제와 같이 통합 요청 탭에서 매핑 템플릿을 구성하면 됩니다.

    { "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)" }

    이러한 방법을 사용하면 배포 상태(예: dev, testprod)에 따라 다양한 상태 시스템의 ARN을 지정할 수 있습니다. 매핑 템플릿에서 단계 변수를 지정하는 방법에 대한 자세한 내용은 API Gateway 개발자 안내서$stageVariables를 참조하세요.

  3. 실행이 시작되고 실행 ARN 및 해당 epoch 날짜가 응답 본문 아래에 표시됩니다.

    { "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution", "startDate": 1486768956.878 }
    참고

    AWS Step Functions 콘솔에서 상태 시스템을 선택하여 실행을 볼 수 있습니다.

API를 배포하려면
  1. StartExecutionAPI의 리소스 페이지에서 API 배포를 선택합니다.

  2. 스테이지에서 새 스테이지를 선택합니다.

  3. 단계 이름alpha를 입력합니다.

  4. (선택 사항) 설명에 설명을 입력합니다.

  5. 배포를 선택합니다.

배포를 테스트하려면
  1. StartExecutionAPI의 스테이지 페이지에서 알파,/, /실행, POST를 확장한 다음 POST 메서드를 선택합니다.

  2. 메서드 재정의에서 복사 아이콘을 선택하여 API의 간접 호출 URL을 복사합니다. 전체 URL은 다음 예제와 비슷해야 합니다.

    https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
  3. 다음 예제와 같이 명령줄에서 상태 머신의 ARN을 사용하여 curl 명령을 실행하고 배포 URL을 호출합니다.

    curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution

    다음 예제와 같이 실행 ARN 및 해당 epoch 날짜가 반환됩니다.

    {"executionArn":"arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}
    참고

    “인증 토큰 누락” 오류가 발생하면 간접 호출 URL이 /execution으로 끝나는지 확인합니다.