AWS::Lambda::Function 리소스의 쓰기 전용 속성 문제를 해결하는 방법
이 주제에서는 IaC 생성기를 사용할 때 AWS::Lambda::Function 리소스의 쓰기 전용 속성 문제를 해결하는 방법을 설명합니다.
문제
AWS::Lambda::Function
리소스에는 Lambda 코드를 지정하기 위한 상호 배타적인 속성 세트가 3개 있습니다.
-
Code/S3Bucket
및Code/S3Key
속성과 선택적으로Code/S3ObjectVersion
속성 중 하나만 있을 수 있습니다. -
Code/ImageUri
속성 -
Code/ZipFile
속성
지정된 AWS::Lambda::Function
리소스에는 이러한 세트 중 하나만 사용할 수 있습니다.
IaC 생성기는 리소스를 생성하거나 업데이트하는 데 사용된 독점적인 쓰기 전용 속성 세트를 확인할 수 없습니다. 결과적으로 생성된 템플릿에 첫 번째 속성 세트만 포함합니다. Code/ImageUri
및 Code/ZipFile
속성은 생략됩니다.
또한 IaC 생성기는 다음과 같은 경고를 표시합니다.
-
MUTUALLY_EXCLUSIVE_PROPERTIES
-Code/S3Bucket
과Code/S3Key
가 상호 배타적 속성으로 식별된다고 경고합니다. -
UNSUPPORTED_PROPERTIES
-Code/S3ObjectVersion
속성이 지원되지 않는다고 경고합니다.
생성된 템플릿에 AWS::Lambda::Function
리소스를 포함하려면 템플릿을 다운로드하고 올바른 코드 속성으로 업데이트해야 합니다.
해결 방법
Amazon S3 버킷에 Lambda 코드를 저장하고 S3ObjectVersion
속성을 사용하지 않는 경우에는 생성된 템플릿을 수정하지 않고 가져올 수 있습니다. IaC 생성기는 가져오기 작업 중에 템플릿 파라미터로 Amazon S3 버킷과 키를 요청합니다.
Lambda 코드를 Amazon ECR 리포지토리로 저장하는 경우에는 다음 지침에 따라 템플릿을 업데이트할 수 있습니다.
-
생성된 템플릿을 다운로드합니다.
-
생성된 템플릿에서
Code/S3Bucket
및Code/S3Key
속성에 대한 속성 및 해당 파라미터를 제거합니다. -
생성된 템플릿에서 제거된 속성을
Code/ImageUri
속성으로 바꾸고 Amazon ECR 리포지토리의 URL을 지정합니다. -
IaC 생성기 콘솔에서 생성된 템플릿을 열고 편집한 템플릿 가져오기 버튼을 선택합니다.
Lambda 코드를 zip 파일로 저장하는 경우에는 다음 지침에 따라 템플릿을 업데이트할 수 있습니다.
-
생성된 템플릿을 다운로드합니다.
-
생성된 템플릿에서
Code/S3Bucket
및Code/S3Key
속성에 대한 속성 및 해당 파라미터를 제거합니다. -
생성된 템플릿에서 제거된 속성을
Code/ZipFile
속성으로 바꿉니다. -
IaC 생성기 콘솔에서 생성된 템플릿을 열고 편집한 템플릿 가져오기 버튼을 선택합니다.
Lambda 코드 사본이 없는 경우에는 다음 지침에 따라 템플릿을 업데이트할 수 있습니다.
-
AWS Lambda
GetFunction
API 작업을 사용하세요(예:aws lambda get-function
AWS CLI 명령 사용). -
응답에서
RepositoryType
파라미터는 코드가 Amazon S3 버킷에 있는 경우S3
, 코드가 Amazon ECR 리포지토리에 있는 경우에는ECR
입니다. -
응답에서
Location
파라미터에는 배포 패키지를 10분 동안 다운로드하는 데 사용할 수 있는 미리 서명된 URL이 포함되어 있습니다. 코드를 다운로드하십시오. -
Amazon S3 버킷에 코드를 업로드합니다.
-
생성된 템플릿으로 가져오기 작업을 실행하고 버킷 이름과 키를 파라미터 값으로 제공합니다.