IaC 생성기와 쓰기 전용 속성
쓰기 전용 속성은 AWS CloudFormation이 쓸 수는 있지만 읽을 수는 없는 리소스 속성입니다. (데이터베이스 암호를 예로 들 수 있습니다.) 이로 인해 기존 리소스에서 템플릿을 생성하는 경우에 문제가 발생합니다. 일반적으로 쓰기 전용 속성은 생성된 템플릿에서 파라미터로 변환됩니다. 이렇게 하면 가져오기 작업 중에 속성을 파라미터 값으로 입력할 수 있습니다. 그러나 다음과 같은 경우에는 쓰기 전용 속성을 파라미터로 변환할 수 없습니다.
-
여러 개의 독점적인 속성 세트가 있으며 그중 적어도 일부는 쓰기 전용입니다. IaC 생성기는 생성 도중 리소스에 어떤 독점적인 속성 세트가 적용되었는지 확인할 수 없습니다. 예를 들어
AWS::Lambda::Function
에 대한 코드를-
Code/S3Bucket
,Code/S3Key
, 선택적으로Code/S3ObjectVersion
속성 세트를 사용하여 제공할 수 있습니다. -
Code/ImageUri
-
Code/ZipFile
해당 속성은 모두 쓰기 전용입니다. IaC 생성기는 독점적인 속성 세트 중에서 하나를 선택하여 생성된 템플릿에 추가합니다. 각 쓰기 전용 속성에 대해 파라미터가 추가됩니다. 파라미터 이름에는
OneOf
가 포함되며 파라미터 설명에 따르면 해당 속성을 다른 독점적인 속성으로 바꿀 수 있습니다. IaC 생성기는 포함된 속성에 대해MUTUALLY_EXCLUSIVE_PROPERTIES
의 경고Type
을 설정합니다. -
-
쓰기 전용 속성은 여러 데이터 유형 중 어느 것이든 될 수 있습니다. 예를 들어
AWS::ApiGateway::RestApi
의Body
속성은object
또는string
가 될 수 있습니다. 이러한 경우 IaC 생성기는MUTUALLY_EXCLUSIVE_TYPES
의 경고Type
을 설정하고string
유형을 사용하여 생성된 템플릿에 속성을 포함합니다. -
쓰기 전용 속성의 유형은
array
입니다. 파라미터는 스칼라 값만 가능하므로 배열을 위한 템플릿에 파라미터를 추가할 수 없습니다. 이러한 경우 IaC 생성기는 생성된 템플릿에 해당 속성을 포함하지 않고UNSUPPORTED_PROPERTIES
의 경고Type
을 설정합니다. -
쓰기 전용 속성은 선택적입니다. IaC 생성기는 리소스를 설정할 때 쓰기 전용 속성이 사용되었는지 여부를 감지할 수 없습니다. 이때 IaC 생성기는 생성된 템플릿에 해당 속성을 포함하지 않고
UNSUPPORTED_PROPERTIES
의 경고Type
을 설정합니다.
생성된 템플릿에 쓰기 전용 속성이 있는 리소스가 포함되어 있는 경우 IaC 생성기 콘솔에 문제 유형에 대한 요약과 함께 경고가 표시됩니다. 예:
![생성된 템플릿의 쓰기 전용 속성에 대한 IaC 생성기 콘솔 경고](images/IaC-generator-write-only-property-warning.png)
경고 세부 정보 보기를 선택하여 자세한 세부 정보를 확인할 수 있습니다. 쓰기 전용 속성이 있는 리소스는 생성된 템플릿과 리소스 유형에 사용된 논리적 ID에 따라 식별됩니다.
![생성된 템플릿의 쓰기 전용 속성에 대한 IaC 생성기 콘솔의 자세한 경고](images/IaC-generator-write-only-property-resource-warning.png)
경고 목록을 사용하여 쓰기 전용 속성이 있는 리소스를 식별하고 생성된 템플릿에 변경이 필요한 경우 어떤 변경이 필요한지 판단하기 위해 각 리소스를 살펴봅니다. 다운로드 버튼을 선택하여 생성된 템플릿을 다운로드할 수 있습니다. 변경이 완료되면 편집한 템플릿 가져오기 버튼을 선택하여 계속할 수 있습니다.
중요
현재 AWS 리소스 및 속성 유형 참조 설명서에는 속성이 쓰기 전용인지 또는 여러 유형을 지원하는지 여부가 표시되어 있지 않습니다. 어떤 속성이 쓰기 전용인지 판단하려면 IaC 생성기 콘솔 또는 리소스 공급자 스키마에서 반환되는 경고를 살펴보아야 합니다.
리소스 공급자 스키마에 대한 자세한 내용은 CloudFormation 명령줄 인터페이스 사용 설명서에서 리소스 공급자 스키마를 참조하세요. 리소스 공급자 스키마를 다운로드하려면 CloudFormation 리소스 공급자 스키마를 참조하세요.