AWS Proton 구성 요소 - AWS Proton

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

AWS Proton 구성 요소

구성 요소는 일종의 AWS Proton 리소스입니다. 서비스 템플릿에 유연성을 더합니다. 구성 요소는 플랫폼 팀에 핵심 인프라 패턴을 확장하고 개발자가 애플리케이션 인프라의 여러 측면을 관리할 수 있도록 지원하는 보호 장치를 정의하는 메커니즘을 제공합니다.

AWS Proton 관리자는 개발 팀과 애플리케이션 전반에서 사용되는 표준 인프라를 정의합니다. 하지만 개발팀은 특정 사용 사례에 맞게 Amazon Simple Queue Service(Amazon SQS) 대기열이나 Amazon DynamoDB 테이블과 같은 추가 리소스를 포함해야 할 수도 있습니다. 이러한 애플리케이션별 리소스는 특히 초기 애플리케이션 개발 과정에서 자주 변경될 수 있습니다. 관리자가 작성한 템플릿에서 이러한 빈번한 변경 사항을 유지 관리하는 것은 관리하고 규모를 조정하는 것이 어려울 수 있습니다. 즉, 관리자가 실질적인 추가 가치 없이 더 많은 템플릿을 유지 관리해야 하기 때문입니다. 애플리케이션 개발자가 애플리케이션을 위한 템플릿을 작성하도록 하는 대안은 관리자가 AWS Fargate 작업과 같은 주요 아키텍처 구성 요소를 표준화할 수 있는 능력을 빼앗기 때문에 이상적이지 않습니다. 바로 이 점이 구성 요소가 필요한 이유입니다.

개발자는 구성 요소를 사용하여 관리자가 환경 및 서비스 템플릿에서 정의한 것 이상으로 추가 리소스를 애플리케이션에 추가할 수 있습니다. 그런 다음 개발자는 구성 요소를 서비스 인스턴스에 연결합니다. AWS Proton은 환경 및 서비스 인스턴스에 리소스를 프로비저닝하는 것처럼 구성 요소에서 정의한 인프라 리소스를 프로비저닝합니다.

구성 요소는 완전히 통합된 환경을 위해 서비스 인스턴스 입력을 읽고 서비스 인스턴스에 출력을 제공할 수 있습니다. 예를 들어 구성 요소가 서비스 인스턴스에서 사용할 Amazon Simple Storage Service(S3) 버킷을 추가하는 경우, 구성 요소 템플릿은 환경 및 서비스 인스턴스 이름을 고려하여 버킷의 이름을 지정할 수 있습니다. AWS Proton이 서비스 인스턴스를 프로비저닝하기 위해 서비스 템플릿을 렌더링할 때 서비스 인스턴스는 버킷을 참조하여 사용할 수 있습니다.

AWS Proton이 현재 지원하는 구성 요소는 직접 정의된 구성 요소입니다. 구성 요소의 인프라를 정의하는 코드형 인프라(IaC) 파일을 AWS Proton API 또는 콘솔에 직접 전달합니다. 이는 템플릿 번들에서 IaC를 정의하고 번들을 템플릿 리소스로 등록한 다음 템플릿 리소스를 사용하여 환경이나 서비스를 생성하는 환경이나 서비스와는 다릅니다.

참고

직접 정의된 구성 요소를 통해 개발자는 추가 인프라를 정의하고 이를 프로비저닝할 수 있습니다. AWS Proton은 동일한 AWS Identity and Access Management(IAM) 역할을 사용하여 동일한 환경에서 실행되는 직접 정의된 모든 구성 요소를 프로비저닝합니다.

관리자는 다음 두 가지 방법으로 개발자가 구성 요소로 수행할 수 있는 작업을 제어할 수 있습니다.

  • 지원되는 구성 요소 소스 - 관리자는 AWS Proton 서비스 템플릿 버전의 속성을 기반으로 서비스 인스턴스에 구성 요소를 첨부하도록 허용할 수 있습니다. 기본적으로 개발자는 서비스 인스턴스에 구성 요소를 연결할 수 없습니다.

    이 속성에 대한 자세한 내용은 AWS Proton API 참조CreateServiceTemplateVersion API 작업의 supportedComponentSources 매개변수를 참조합니다.

    참고

    템플릿 동기화를 사용하면 AWS Proton은 저장소의 서비스 템플릿 번들에 변경 사항을 커밋할 때 암시적으로 서비스 템플릿 버전을 생성합니다. 이 경우 서비스 템플릿 버전 생성 시 지원되는 구성 요소 소스를 지정하는 대신 각 서비스 템플릿 메이저 버전과 관련된 파일에 이 속성을 지정합니다. 자세한 내용은 서비스 템플릿 동기화을 참조합니다.

  • 구성 요소 역할 - 관리자는 환경에 구성 요소 역할을 할당할 수 있습니다. AWS Proton는 환경에서 직접 정의된 구성 요소로 정의된 인프라를 프로비저닝할 때 이 역할을 맡습니다. 따라서 구성 요소 역할은 개발자가 환경에서 직접 정의된 구성 요소를 사용하여 추가할 수 있는 인프라의 범위를 좁힙니다. 구성 요소 역할이 없는 경우 개발자는 환경에서 직접 정의된 구성 요소를 만들 수 없습니다.

    구성 요소 역할 할당에 대한 자세한 내용은 AWS ProtonAPI 참조CreateEnvironment API 작업의 componentRolearn 매개변수를 참조합니다.

    참고

    구성 요소 역할은 자체 관리형 프로비저닝 환경에서 사용되지 않습니다.

구성 요소는 다른 AWS Proton 리소스와 어떻게 비교되나요?

여러 면에서 구성 요소는 다른 AWS Proton 리소스와 유사합니다. 해당 인프라는 AWS CloudFormation YAML 또는 Terraform HCL 형식으로 작성된 IaC 템플릿 파일에 정의되어 있습니다. AWS Proton은 AWS-관리형 프로비저닝 또는 자체 관리형 프로비저닝을 사용하여 구성 요소 인프라를 프로비저닝할 수 있습니다.

하지만 구성 요소는 다음과 같은 몇 가지 측면에서 다른 AWS Proton 리소스와 다릅니다.

  • 분리된 상태 — 구성 요소는 서비스 인스턴스에 연결되고 인프라를 확장하도록 설계되었지만 서비스 인스턴스에 연결되지 않는 분리된 상태일 수도 있습니다. 구성 요소 상태에 대한 자세한 내용은 구성 요소 상태을 참조합니다.

  • 스키마 없음 - 구성 요소에는 템플릿 번들처럼 연결된 스키마가 없습니다. 구성 요소 입력은 서비스에 의해 정의됩니다. 구성 요소는 서비스 인스턴스에 연결될 때 입력을 사용할 수 있습니다.

  • 고객이 관리하는 구성 요소는 없습니다. AWS Proton는 항상 구성 요소 인프라를 대신 프로비저닝합니다. 자체 리소스를 가져오는 버전의 구성 요소는 없습니다. 사용자 관리 환경에 대한 자세한 내용은 환경 생성을 참조합니다.

  • 템플릿 리소스 없음 - 직접 정의된 구성 요소에는 환경 및 서비스 템플릿과 유사한 관련 템플릿 리소스가 없습니다. IaC 템플릿 파일을 구성 요소에 직접 제공합니다. 마찬가지로 구성 요소 인프라를 프로비저닝하기 위한 템플릿 언어 및 렌더링 엔진을 정의하는 매니페스트를 직접 제공합니다. 템플릿 번들 작성과 비슷한 방식으로 템플릿 파일과 매니페스트를 작성합니다. 하지만 직접 정의된 구성 요소를 사용하면 IaC 파일을 특정 위치에 번들로 저장할 필요가 없으며 IaC 파일 외부에서 AWS Proton에 템플릿 리소스를 만들지 않아도 됩니다.

  • CodeBuild 기반 프로비저닝 없음 CodeBuild 기반 프로비저닝이라고 하는 자체 사용자 지정 프로비저닝 스크립트를 사용하여 직접 정의된 구성 요소를 프로비저닝할 수 없습니다. 자세한 내용은 CodeBuild 프로비저닝 작동 방식을 참조합니다.

AWS Proton 콘솔의 구성 요소

AWS Proton 콘솔을 사용하여 AWS Proton 구성 요소를 만들고, 업데이트하고, 보고, 사용할 수 있습니다.

다음 콘솔 페이지는 구성 요소와 관련이 있습니다. 최상위 콘솔 페이지로 바로 연결되는 링크가 포함되어 있습니다.

  • 구성 요소 — AWS 계정의 구성 요소 목록을 볼 수 있습니다. 새 구성 요소를 만들고 기존 구성 요소를 업데이트 또는 삭제할 수 있습니다. 목록에서 구성 요소 이름을 선택하면 해당 세부 정보 페이지를 볼 수 있습니다.

    환경 세부 정보서비스 인스턴스 세부 정보 페이지에도 유사한 목록이 있습니다. 이 목록에는 보고 있는 리소스와 관련된 구성 요소만 표시됩니다. 이러한 목록 중 하나에서 구성 요소를 만드는 경우, AWS Proton은 구성 요소 만들기 페이지에서 관련 환경을 미리 선택합니다.

  • 구성 요소 세부 정보 - 구성 요소 세부 정보 페이지를 보려면 구성 요소 목록에서 구성 요소 이름을 선택합니다.

    세부 정보 페이지에서 구성 요소 세부 정보 및 상태를 보고 구성 요소를 업데이트하거나 삭제합니다. 출력 목록 (예: 프로비저닝된 리소스 ARN), 프로비저닝된 AWS CloudFormation 스택, 할당된 태그를 보고 관리합니다.

  • 구성 요소 생성 - 구성 요소를 생성합니다. 구성 요소 이름과 설명을 입력하고, 관련 리소스를 선택하고, 구성 요소 소스 IaC 파일을 지정하고, 태그를 할당합니다.

  • 구성 요소 업데이트 - 구성 요소를 업데이트하려면 구성 요소 목록에서 구성 요소를 선택한 다음 작업 메뉴에서 구성 요소 업데이트를 선택합니다. 또는 구성 요소 세부 정보 페이지에서 업데이트를 선택합니다.

    대부분의 구성 요소 세부 정보를 업데이트할 수 있습니다. 코드에서 직접 업데이트할 수 없습니다. 또한 업데이트 성공 후 구성 요소를 재배포할지 여부를 선택할 수 있습니다.

  • 환경 구성 - 환경을 만들거나 업데이트할 때 구성 요소 역할을 지정할 수 있습니다. 이 역할은 환경에서 직접 정의된 구성 요소를 실행하는 기능을 제어하고 구성 요소를 프로비저닝할 수 있는 권한을 제공합니다.

  • 새 서비스 템플릿 버전 생성 - 서비스 템플릿 버전을 생성할 때 템플릿 버전에 지원되는 구성 요소 소스를 지정할 수 있습니다. 이를 통해 이 템플릿 버전을 기반으로 서비스의 서비스 인스턴스에 구성 요소를 연결하는 기능이 제어됩니다.

AWS Proton API 및 AWS CLI에서 구성 요소

AWS Proton API 또는 AWS CLI를 사용하여 AWS Proton 구성 요소를 만들고, 업데이트하고, 보고, 사용할 수 있습니다.

다음 API 작업은 AWS Proton 구성 요소 리소스를 직접 관리합니다.

  • CreateComponent — AWS Proton 컴포넌트를 생성합니다.

  • DeleteComponent — AWS Proton 구성 요소를 삭제합니다.

  • GetComponent - 구성 요소에 대한 세부 데이터를 가져옵니다.

  • ListComponentOutputs — 구성 요소 코드형 인프라(IaC) 출력 목록을 가져옵니다.

  • ListComponentProvisionedResources - 구성 요소에 대해 프로비저닝된 리소스를 세부 정보와 함께 나열합니다.

  • ListComponents - 구성 요소를 요약 데이터와 함께 나열합니다. 환경, 서비스 또는 단일 서비스 인스턴스별로 결과 목록을 필터링할 수 있습니다.

다른 AWS Proton 리소스의 다음 API 작업에는 구성 요소와 관련된 일부 기능이 있습니다.

  • CreateEnvironment, UpdateEnvironmentcomponentRoleArn을 이 환경에서 직접 정의된 구성 요소를 프로비저닝할 때 사용하는 IAM 서비스 역할의 Amazon 리소스 이름(ARN)을 지정하는 데 사용합니다. 이는 직접 정의된 구성 요소가 프로비저닝할 수 있는 인프라의 범위를 결정합니다.

  • CreateServiceTemplateVersion - 지원되는 구성 요소 소스를 지정하는 데 supportedComponentSources를 사용합니다. 지원되는 소스가 있는 구성 요소를 이 서비스 템플릿 버전을 기반으로 서비스 인스턴스에 연결할 수 있습니다.

구성 요소 관련 자주 묻는 질문

구성 요소의 수명 주기는 어떻게 되나요?

구성 요소는 연결된 상태이거나 분리된 상태일 수 있습니다. 서비스 인스턴스에 연결하여 대부분의 시간 동안 인프라를 개선하도록 설계되었습니다. 분리된 구성 요소는 과도기 상태이므로 제어되고 안전한 방식으로 구성 요소를 삭제하거나 다른 서비스 인스턴스에 연결할 수 있습니다. 자세한 내용은 구성 요소 상태을 참조합니다.

연결된 구성 요소를 삭제할 수 없는 이유는 무엇입니까?

해결 방법: 연결된 구성 요소를 삭제하려면 구성 요소를 업데이트하여 서비스 인스턴스에서 분리하고 서비스 인스턴스 안정성을 확인한 다음 구성 요소를 삭제하십시오.

이것이 왜 필요한가요? 연결된 구성 요소는 애플리케이션이 런타임 기능을 수행하는 데 필요한 추가 인프라를 제공합니다. 서비스 인스턴스는 구성 요소 출력을 사용하여 이 인프라의 리소스를 탐지하고 사용할 수 있습니다. 구성 요소를 삭제하여 해당 인프라 리소스를 제거하면 연결된 서비스 인스턴스가 중단될 수 있습니다.

추가 안전 조치로, AWS Proton은 구성 요소를 업데이트하고 서비스 인스턴스에서 분리한 다음 삭제하도록 요구합니다. 그런 다음 서비스 인스턴스의 유효성을 검사하여 제대로 배포되고 작동하는지 확인할 수 있습니다. 문제가 감지되면 구성 요소를 서비스 인스턴스에 빠르게 다시 연결한 다음 문제를 해결할 수 있습니다. 서비스 인스턴스에 구성 요소에 대한 종속성이 없다고 확신하면 구성 요소를 안전하게 삭제할 수 있습니다.

구성 요소에 연결된 서비스 인스턴스를 직접 변경할 수 없는 이유는 무엇입니까?

해결 방법: 첨부 파일을 변경하려면 구성 요소를 업데이트하여 서비스 인스턴스에서 분리하고 구성 요소 및 서비스 인스턴스 안정성을 확인한 다음 구성 요소를 새 서비스 인스턴스에 연결합니다.

이것이 왜 필요한가요? 구성 요소는 서비스 인스턴스에 연결되도록 설계되었습니다. 구성 요소는 인프라 리소스 이름 지정 및 구성에 서비스 인스턴스 입력을 사용할 수 있습니다. 연결된 서비스 인스턴스를 변경하면 구성 요소가 중단될 수 있습니다 (이전 FAQ, 연결된 구성 요소를 삭제할 수 없는 이유는 무엇입니까? 에서 설명한 것처럼 서비스 인스턴스가 중단될 수 있음). 예를 들어 구성 요소의 IaC 템플릿에 정의된 리소스의 이름이 바뀌거나 심지어 교체될 수도 있습니다.

추가 안전 조치로, AWS Proton은 구성 요소를 업데이트하고 해당 서비스 인스턴스에서 분리해야 다른 서비스 인스턴스에 연결하도록 요구합니다. 그런 다음 구성 요소를 새 서비스 인스턴스에 연결하기 전에 구성 요소와 서비스 인스턴스 모두의 안정성을 검증할 수 있습니다.