개발자가 AWS SAM을 사용하여 Lambda 함수를 프로토타입합니다. SAM 템플릿의 AWS::Serverless::Function은 CodeUri가 S3 위치를 가리키도록 설정되어 있습니다. 개발자는 함수를 package.zip으로 패키징하고, S3 위치에 업로드한 다음, sam deploy를 실행했습니다. 함수 코드를 업데이트하고 동일한 단계를 반복한 후(동일한 S3 키에 업로드), sam deploy가 "no changes to deploy"라는 메시지와 함께 실패합니다. 업데이트된 코드를 배포할 수 있는 접근 방식은 무엇입니까? (두 가지 선택)
정답 선택
옵션을 탭하여 정답을 확인하세요.
정답: CodeUri 속성을 로컬 코드 폴더를 가리키도록 변경하고 sam deploy를 실행합니다., CodeUri 속성을 로컬 코드 폴더를 가리키도록 변경하고, aws cloudformation package를 실행하여 아티팩트를 S3에 업로드한 다음, aws cloudformation deploy를 사용합니다..
이것이 정답인 이유
AWS SAM은 CodeUri가 S3 위치를 가리키는 경우, S3 객체의 ETag 또는 버전을 사용하여 코드 변경 여부를 감지합니다. 개발자가 동일한 S3 키에 새 package.zip을 업로드하면 S3 객체 자체는 변경되지만, SAM 템플릿의 CodeUri 속성 값(S3 경로)은 변경되지 않습니다. 따라서 SAM CLI는 템플릿에 변경 사항이 없다고 판단하여 "no changes to deploy" 메시지를 반환합니다. 업데이트된 코드를 배포하려면 CodeUri 속성을 로컬 코드 폴더를 가리키도록 변경해야 합니다. 이렇게 하면 sam deploy 명령이 로컬 코드를 S3에 패키징하고 업로드한 다음, CloudFormation 스택을 업데이트하여 새 코드 버전을 배포합니다. 다른 방법으로는 CodeUri를 로컬 폴더로 변경한 후, aws cloudformation package로 아티팩트를 S3에 업로드하고, aws cloudformation deploy를 사용하여 배포할 수 있습니다. 이는 SAM CLI의 내부 동작을 수동으로 수행하는 것과 유사합니다. aws cloudformation update-stack 또는 update-stack-instances는 SAM 템플릿의 직접적인 배포 명령이 아니며, create-change-set 및 execute-change-set은 변경 사항이 감지된 후에 사용되는 단계이므로, CodeUri 변경 없이는 작동하지 않습니다.
끝없는 정답 찾기 없이 시험 합격
이 시험에 대한 모든 검증된 문제와 설명을 한곳에서 얻고, 준비 시간을 몇 시간 절약하세요. 1,000개 이상의 자격증 · 20개 이상의 언어 · 무료로 시작.
더 빠르게 시험 합격 → 카드 필요 없음