Terraform을 사용하여 Step Functions에서 상태 머신을 배포하기 - AWS Step Functions

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

Terraform을 사용하여 Step Functions에서 상태 머신을 배포하기

Terraform HashiCorp by는 코드형 인프라 (IaC) 를 사용하여 애플리케이션을 구축하기 위한 프레임워크입니다. Terraform을 사용하면 상태 시스템을 만들고 인프라 배포 미리 보기 및 재사용 가능한 템플릿 만들기와 같은 기능을 사용할 수 있습니다. Terraform 템플릿을 사용하면 코드를 더 작은 청크로 나눠 유지하고 재사용할 수 있습니다.

Terraform에 익숙하면 Terraform에서 상태 시스템을 만들고 배포하기 위한 모델로 이 주제에 설명된 개발 수명 주기를 따를 수 있습니다. Terraform에 익숙하지 않으면 Terraform에 익숙해질 수 있도록 먼저 AWS용 Terraform 소개 워크숍을 완료하는 것이 좋습니다.

작은 정보

Terraform을 사용하여 구축한 스테이트 머신의 예제를 직접 배포하려면 The AWS 계정 Workshop의 코드로 인프라를 갖춘 상태 시스템 관리 모듈을 참조하십시오. AWS Step Functions

사전 조건

시작하기 전에 다음 사전 조건을 완료해야 합니다.

  • 시스템에 Terraform을 설치합니다. Terraform 설치 방법은 Terraform 설치를 참조하세요.

  • 시스템에 Step Functions Local을 설치합니다. Step Functions Local을 사용하려면 Step Functions Local 도커 이미지를 설치하는 것이 좋습니다. 자세한 내용은 Step Functions에서 스테이트 머신을 로컬로 테스트하기 단원을 참조하십시오.

  • 설치. AWS SAM CLI 설치 정보는 AWS Serverless Application Model 개발자 AWS SAM CLI 안내서의 설치를 참조하십시오.

  • AWS Toolkit for Visual Studio Code 를 설치하면 상태 머신의 워크플로 다이어그램을 볼 수 있습니다. 설치 정보는 AWS Toolkit for Visual Studio Code 사용 설명서AWS Toolkit for Visual Studio Code설치를 참조하세요.

Terraform을 사용한 상태 시스템 개발 수명 주기

다음 절차에서는 Step Functions 콘솔의 Workflow Studio를 사용하여 빌드한 상태 시스템 프로토타입을 Terraform 및 AWS Toolkit for Visual Studio Code를 사용한 로컬 개발의 시작점으로 사용하는 방법을 설명합니다.

Terraform을 사용한 상태 시스템 개발을 설명하고 모범 사례를 자세히 보여주는 전체 예제를 보려면 Step Functions Terraform 프로젝트 작성 모범 사례를 참조하세요.

Terraform을 사용하여 상태 시스템 개발 수명 주기 시작하기
  1. 다음 명령을 사용하여 새 Terraform 프로젝트를 부트스트랩합니다.

    terraform init
  2. Step Functions 콘솔을 열어 상태 시스템의 프로토타입을 만듭니다.

  3. Workflow Studio에서 다음을 수행합니다.

    1. 워크플로 프로토타입을 만듭니다.

    2. 워크플로의 Amazon States 언어 (ASL) 정의를 내보냅니다. 이렇게 하려면 가져오기/내보내기 드롭다운 목록을 선택한 다음 정의 내보내기를 선택합니다. JSON

  4. 내보낸 ASL 정의를 프로젝트 디렉터리에 저장합니다.

    내보낸 ASL 정의를 입력 매개변수로 함수를 사용하는 aws_sfn_state_machineTerraform 리소스에 전달합니다. templatefile 이 함수는 내보낸 정의 및 모든 변수 대체를 전달하는 ASL 정의 필드 내에서 사용됩니다.

    작은 정보

    ASL정의 파일에는 긴 텍스트 블록이 포함될 수 있으므로 인라인 EOF 메서드는 사용하지 않는 것이 좋습니다. 이렇게 하면 파라미터를 쉽게 상태 시스템 정의로 대체할 수 있습니다.

  5. (선택 사항) 내에서 ASL 정의를 IDE 업데이트하고 를 사용하여 변경 내용을 시각화합니다. AWS Toolkit for Visual Studio Code

    Visual Studio Code의 워크플로우 ASL 정의 및 시각적 표현에 대한 스크린샷입니다.

    정의를 계속 내보내고 프로젝트로 리팩토링하지 않으려면 로컬에서 IDE 업데이트하고 Git으로 업데이트를 추적하는 것이 좋습니다.

  6. Step Functions Local을 사용하여 워크플로를 테스트합니다.

  7. 스테이트 머신을 배포하기 전에 스테이트 머신 및 기타 AWS 리소스를 미리 볼 수 있습니다. 다음 명령으로 실행하세요.

    terraform plan
  8. 다음 명령어를 사용하여 로컬 환경에서 또는 CI/CD 파이프라인을 통해 상태 시스템을 배포합니다.

    terraform apply
  9. (선택 사항) 다음 명령을 사용하여 리소스를 정리하고 상태 시스템을 삭제합니다.

    terraform destroy

IAM스테이트 머신의 역할 및 정책

Terraform 서비스 통합 정책을 사용하여 상태 시스템에 필요한 IAM 권한 (예: Lambda 함수 호출 권한) 을 추가할 수 있습니다. 또한 명시적 역할과 정책을 정의하고 상태 시스템에 연결할 수 있습니다.

다음 IAM 정책 예제는 이름이 지정된 Lambda 함수를 호출할 수 있는 액세스 권한을 상태 시스템에 부여합니다. myFunction

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myFunction" } ] }

또한 Terraform에서 상태 머신에 대한 IAM 정책을 정의할 때 aws_iam_policy_document데이터 소스를 사용하는 것이 좋습니다. 이렇게 하면 정책이 잘못되었는지 확인하고 리소스를 변수로 대체할 수 있습니다.

다음 IAM 정책 예제는 aws_iam_policy_document 데이터 소스를 사용하고 상태 머신에 이라는 Lambda 함수를 호출할 수 있는 액세스 권한을 부여합니다. myFunction

data "aws_iam_policy_document" "state_machine_role_policy" { statement { effect = "Allow" actions = [ "lambda:InvokeFunction" ] resources = ["${aws_lambda_function.[[myFunction]].arn}:*"] } }
작은 정보

Terraform으로 배포된 고급 AWS 아키텍처 패턴을 보려면 서버리스 랜드 워크플로 컬렉션의 Terraform 예제를 참조하십시오.