Amazon Web Services 한국 블로그

AWS Step Functions에서 외부 엔드포인트 및 작업 상태 테스트 가능

이제 AWS Step Functions HTTPS 엔드포인트를 사용하면 서드 파티 API와 외부 서비스를 워크플로에 통합할 수 있습니다. HTTPS 엔드포인트는 외부 API를 직접적으로 호출하고 기존 SaaS 제공업체와 통합할 수 있는 더 간단한 방법을 제공합니다. 예를 들어 결제 처리를 위한 Stripe, 코드 협업 및 리포지토리 관리를 위한 GitHub, 판매 및 마케팅 인사이트를 위한 Salesforce 등이 있습니다. 출시 전에 고객은 AWS Lambda 함수를 사용하여 외부 엔드포인트를 직접 호출하고 코드에서 직접 인증 및 오류를 처리해야 했습니다.

또한 상태 머신을 배포하거나 실행할 필요 없이 작업 상태를 개별적으로 테스트할 수 있는 새로운 기능을 발표합니다.

AWS Step Functions는 개발자가 손쉽게 분산된 애플리케이션을 구축하고, 프로세스를 자동화하고, 마이크로서비스를 오케스트레이션하고, 데이터 및 기계 학습 (ML) 파이프라인을 생성할 수 있게 해주는 시각적 워크플로 서비스입니다. Step Functions는 220개 이상의 AWS 서비스와 통합되며 내장된 오류 처리, 실시간 및 감사 가능한 워크플로 실행 기록, 대규모 병렬 처리 등 개발자가 구축하는 데 도움이 되는 기능을 제공합니다.

HTTPS 엔드포인트
HTTPS 엔드포인트는 작업 상태를 위한 새로운 리소스로, 이를 통해 AWS 외부의 서드 파티 HTTP 대상에 연결할 수 있습니다. Step Functions는 HTTP 엔드포인트를 간접적으로 호출하고, 요청 본문, 헤더, 파라미터를 전달하고, 서드 파티 서비스로부터 응답을 받습니다. GET 또는 POST와 같은 선호하는 HTTP 메서드를 사용할 수 있습니다.

HTTPS 엔드포인트는 Amazon EventBridge 연결을 사용하여 대상에 대한 인증 자격 증명을 관리합니다. 이는 사용되는 인증 유형을 정의합니다. 이 유형은 사용자 이름과 암호, API 키 또는 OAuth가 있는 기본 인증일 수 있습니다. EventBridge 연결은 AWS Secrets Manager를 사용하여 비밀을 저장합니다. 이렇게 하면 비밀이 상태 머신에 들어가지 않게 되므로 로그나 상태 머신 정의에 실수로 비밀이 노출될 위험이 줄어듭니다.

HTTPS 엔드포인트 시작하기
HTTPS 엔드포인트를 시작하려면 먼저 EventBridge 연결을 생성해야 합니다. 그런 다음 새 AWS Identity and Access Management(AWS IAM) 역할을 생성하고 권한을 부여하여 상태 머신이 연결 리소스에 액세스하고, Secrets Manager로부터 비밀을 가져오고, HTTP 엔드포인트를 간접적으로 호출할 권한을 얻어야 합니다.

상태 머신 실행 역할에 포함해야 하는 정책은 다음과 같습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:events!connection/*"
        }
    ]
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RetrieveConnectionCredentials",
            "Effect": "Allow",
            "Action": [
                "events:RetrieveConnectionCredentials"
            ],
            "Resource": [
                "arn:aws:events:us-east-2:123456789012:connection/oauth_connection/aeabd89e-d39c-4181-9486-9fe03e6f286a"
            ]
        }
    ]
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InvokeHTTPEndpoint",
            "Effect": "Allow",
            "Action": [
                "states:InvokeHTTPEndpoint"
            ],
            "Resource": [
                "arn:aws:states:us-east-2:123456789012:stateMachine:myStateMachine"
            ]
        }
    ]
}

모든 준비가 완료되면 상태 머신을 만들 수 있습니다. 상태 머신에 새 작업 상태를 추가하여 서드 파티 API를 직접 호출합니다. 필요한 서드 파티 URL을 가리키도록 API 엔드포인트를 구성하고, 올바른 HTTP 메서드를 설정하고, 이전에 생성한 연결에 대한 Amazon 리소스 이름(ARN) 연결을 해당 엔드포인트에 대한 인증으로 선택하고, 필요한 경우 요청 본문을 제공할 수 있습니다. 또한 이러한 모든 파라미터는 상태 JSON 입력에서 런타임 시 동적으로 설정할 수 있습니다.

서드파티 API 직접 호출

이제 Step Functions로 외부 요청을 쉽게 만들 수 있으며, Step Functions에서 제공하는 모든 구성을 활용하여 오류를 처리하고, 일시적인 오류나 일시적인 서비스 가용성 중단에 대한 재시도, 조사 또는 해결 시간이 필요한 오류를 재구동하는 등의 오류를 처리할 수 있습니다.

테스트 상태
피드백 주기를 가속화하기 위해 개별 상태를 테스트할 수 있는 새로운 기능도 발표합니다. 이 새로운 기능을 사용하면 워크플로 실행과 관계 없이 상태를 테스트할 수 있습니다. 이는 엔드포인트 구성을 테스트할 때 특히 유용합니다. 워크플로를 배포하거나 전체 상태 머신을 실행할 필요 없이 입력을 변경하고 다양한 시나리오를 테스트할 수 있습니다. 이 새로운 기능은 모든 작업, 선택 및 통과 상태에서 사용할 수 있습니다.

작업을 선택하면 Step Functions 워크플로 스튜디오에서 테스트 기능을 볼 수 있습니다.

테스트 상태 버튼

테스트 상태를 선택하면 작업 상태를 테스트할 수 있는 다른 보기로 리디렉션됩니다. 상태 머신 역할에 올바른 권한이 있는지와 직접적으로 호출하려는 엔드포인트가 올바르게 구성되었는지 테스트하고, 데이터 조작이 예상대로 작동하는지 확인할 수 있습니다.

상태 테스트 방법

가용성
이제 Step Functions가 제공하는 모든 기능을 통해 결제 흐름, 수동 입력이 가능한 워크플로, 레거시 시스템과의 통합 등 다양한 문제를 해결할 수 있는 상태 머신을 구축하는 것이 그 어느 때보다 쉬워졌습니다. Step Functions HTTPS 엔드포인트를 사용하면 널리 사용되는 결제 플랫폼과 직접 통합하면서 사용자의 신용카드에 한 번만 요금이 청구되고 오류가 자동으로 처리되도록 할 수 있습니다. 또한 새 테스트 상태 기능을 사용하여 상태 머신을 배포하기 전에도 이 새 통합을 테스트할 수 있습니다.

이러한 새로운 기능은 12월 말 이전에 아시아 태평양(하이데라바드), 아시아 태평양(멜버른), AWS 이스라엘(텔아비브), 중국 및 GovCloud 지역을 제외한 모든 AWS 리전에 출시될 예정입니다.

시작하려면 AWS Managment Console의 Step Functions에서 ‘Stripe를 사용하여 인보이스 생성’ 샘플 프로젝트를 시도하거나 AWS Step Functions 개발자 안내서를 확인하여 자세히 알아볼 수 있습니다.

Marcia

2023년 12월 11일에 수정되었습니다. 이 게시물의 이전 버전에는 “모든 새로운 기능을 모든 AWS 리전인 아시아 태평양(하이데라바드), 아시아 태평양(멜버른), AWS 이스라엘(텔아비브), 중국, 및 GovCloud 지역”. 올바른 정보는 “이 새로운 기능은 12월 말 이전에 아시아 태평양(하이데라바드), 아시아 태평양(멜버른), AWS 이스라엘(텔아비브), 중국 및 GovCloud 지역을 제외한 모든 AWS 지역에 출시될 예정”이라는 것입니다.