코드 파일로서의 구성 요소 인프라 - AWS Proton

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

코드 파일로서의 구성 요소 인프라

코드형 구성 요소 인프라 (IaC) 파일은 다른 AWS Proton 리소스의 구성 요소 인프라 파일과 유사합니다. 여기에서 구성 요소별 몇 가지 세부 정보를 알아보세요. AWS Proton에 대한 IaC 파일 작성에 대한 자세한 내용은 템플릿 작성 및 번들 생성 AWS Proton를 참조합니다.

구성 요소와 함께 매개변수 사용

AWS Proton 매개변수 네임스페이스에는 서비스 IAC 파일이 관련 컴포넌트의 이름 및 출력을 가져오기 위해 참조할 수 있는 일부 매개변수가 포함되어 있습니다. 네임스페이스에는 구성 요소 IaC 파일이 참조하여 구성 요소가 연결된 환경, 서비스 및 서비스 인스턴스의 입력, 출력 및 리소스 값을 가져올 수 있는 매개변수도 포함되어 있습니다.

구성 요소에는 자체 입력이 없으며 연결된 서비스 인스턴스에서 입력을 가져옵니다. 구성 요소는 환경 출력을 읽을 수도 있습니다.

구성 요소 및 관련 서비스 IaC 파일의 매개변수 사용에 대한 자세한 내용은 구성 요소 CloudFormation IAC 파일 매개 변수 세부 정보 및 예을 참조합니다. AWS Proton 매개변수에 대한 일반 정보와 매개변수 네임스페이스에 대한 전체 참조는 AWS Proton 파라미터을 참조합니다.

견고한 IaC 파일 작성

관리자는 서비스 템플릿 버전을 생성할 때 템플릿 버전에서 생성된 서비스 인스턴스에 연결된 구성 요소를 허용할지 여부를 결정할 수 있습니다. AWS ProtonAPI 참조에서 CreateServiceTemplateVersion API 작업의 upportedComponentSources 매개변수를 참조합니다. 그러나 향후 서비스 인스턴스의 경우 인스턴스를 생성하고 구성 요소를 추가할지 여부를 결정하며 구성 요소 (직접 정의된 구성 요소의 경우) 작성자 (구성 요소 IaC) 는 일반적으로 서비스 템플릿을 사용하는 개발자와 다릅니다. 따라서 구성 요소가 서비스 인스턴스에 연결될 것이라고 보장할 수 없습니다. 또한 특정 구성 요소 출력 이름의 존재 여부 또는 이러한 출력 값의 유효성 및 안전성을 보장할 수 없습니다.

AWS Proton 및 Jinja 구문을 사용하면 이러한 문제를 해결하고 다음과 같은 방법으로 오류 없이 렌더링되는 강력한 서비스 템플릿을 작성할 수 있습니다.

  • AWS Proton매개변수 필터 — 구성 요소 출력 속성을 참조할 때는 매개변수 값의 유효성을 검사하고 필터링하고 형식을 지정하는 수정자인 매개변수 필터를 사용할 수 있습니다. 자세한 정보와 지침은 CloudFormation IaC 파일용 파라미터 필터을 참조합니다.

  • 단일 속성 기본값 - 구성 요소의 단일 리소스 또는 출력 속성을 참조하는 경우 default 필터를 사용하여 기본값이 있든 없든 서비스 템플릿 렌더링이 실패하지 않도록 할 수 있습니다. 구성 요소나 참조하는 특정 출력 매개변수가 없는 경우 기본값 (또는 기본값을 지정하지 않은 경우 빈 문자열) 이 대신 렌더링되고 렌더링이 성공합니다. 자세한 내용은 존재하지 않는 참조에 대한 기본값 제공을 참조합니다.

    예제:

    • {{ service_instance.components.default.name | default("") }}

    • {{ service_instance.components.default.outputs.my-output | default("17") }}

    참고

    직접 정의된 구성 요소를 지정하는 네임스페이스 .default 부분을 참조된 속성이 없을 때 기본값을 제공하는 default 필터와 혼동하지 마십시오.

  • 전체 개체 참조 — 전체 구성 요소 또는 구성 요소의 출력 컬렉션을 참조하는 경우 AWS Proton는 빈 개체, {}를 반환하므로 서비스 템플릿 렌더링이 실패하지 않습니다. 코드에서 직접 SDK의 보안 인증 정보를 제공할 필요가 없습니다. 빈 개체를 사용할 수 있는 컨텍스트에서 참조하거나 {{ if .. }} 조건을 사용하여 빈 개체를 테스트해야 합니다.

    예제:

    • {{ service_instance.components.default }}

    • {{ service_instance.components.default.outputs }}