AWS

[AWS CI/CD]CodeDeploy 실패 오류

운덩하는 개발자 2022. 12. 7.
반응형

 Github Action에서 잘 빌드하여 s3까지 파일을 잘 압축하여 올라왔으나, ec2에 ls를 확인해보니 해당 파일이 없었다.

확인해보니 배포에 codedeploy랑 ec2랑 태그 연결이 잘못되어 생긴 문제였다.

 

 

이제 태그를 맞춰 해당 인스턴스로 잘 매치가 되었으나, 이번에는 객체가 버킷에서 누락되고 나에게 s3 listbucket에 액세스 권한이 없는거 같다.

 

Amazon S3에서 404 "NoSuchKey" 오류 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 1월 5일

사용자가 내 Amazon Simple Storage Service(Amazon S3) 버킷에서 객체에 액세스하려고 합니다. 그러나 Amazon S3에서 404 "NoSuchKey" 오류를 반환합니다. 이 오류를 해결하려면 어떻게 해야 합니까?

해결 방법

일반적으로 Amazon S3에서는 요청된 객체가 버킷에 없는 경우 404 오류를 반환합니다. 사용자가 특정 객체에 대한 GET 또는 HEAD 요청을 제출하기 전에 해당 객체가 생성되었으며 S3 버킷에서 사용 가능한지 확인해야 합니다.

버킷에서 객체를 사용할 수 있는지 확인하기 위해 Amazon S3 콘솔에서 버킷의 콘텐츠를 검토할 수 있습니다. 아니면 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 head-object 명령을 실행할 수 있습니다.

aws s3api head-object --bucket awsexamplebucket --key object.jpg

중요: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

Amazon S3가 모든 애플리케이션에 대해 강력한 읽기 후 쓰기 일관성 확인 기능을 제공합니다. 새 객체를 성공적으로  후 또는 기존 객체를 덮어쓰거나 삭제한 후, 후속 읽기 요청은 즉시 객체의 최신 버전을 수신합니다. 또한 S3는 목록 작업에 대해 강력한 일관성을 제공합니다. 쓰기 후에는 버킷의 객체를 나열할 수 있습니다. S3 일관성에 대한 자세한 내용은 일관성을 참조하세요.

요청된 객체를 S3 버킷에서 얼마 동안 사용할 수 있었지만 404 NoSuchKey 오류가 다시 발생하면 다음을 확인합니다.

  • 요청이 객체 이름의 대문자 표시를 포함하여 객체 이름과 정확히 일치하는지 확인합니다. S3 객체에 대한 요청은 대소문자를 구분합니다. 예를 들어, 객체 이름이 myimage.jpg이지만, Myimage.jpg를 요청하면 요청자에게 404 NoSuchKey 오류가 표시됩니다.
  • 요청된 경로가 객체에 대한 경로와 일치하는지 확인합니다. 그렇지 않으면 요청자에게 404 NosuchKey 오류가 표시됩니다.
  • 객체에 대한 경로에 공백이 포함되는 경우 경로를 인식하기 위해 요청에 올바른 구문을 사용해야 합니다. 예를 들어 AWS CLI를 사용하여 Windows 시스템에 객체를 다운로드하는 경우 객체 경로를 따옴표로 묶어야 합니다. 객체 경로는 다음과 같아야 합니다. aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3T000000.vbk"
  • 객체 이름에 캐리지 리턴(\r) 또는 줄 바꿈(\n)과 같이 확인하기 어려운 특수 문자나 URL 인코딩된 문자가 있는지 확인합니다. 예를 들어, 끝에 캐리지 리턴이 있는 객체 이름 test는 Amazon S3 콘솔에서 test%0A로 표시됩니다. 객체 이름에 특수 문자가 있는지 확인하려면 --output json 파라미터와 함께 list-objects-v2 명령을 실행할 수 있습니다. JSON 출력은 캐리지 리턴(\r)과 같은 문자를 표시합니다. 객체 이름에 항상 표시되지는 않는 특수 문자가 있는 경우 객체 이름에서 해당 문자를 제거합니다. 그런 다음 객체에 다시 액세스합니다.
  • 필요한 경우 서버 액세스 로깅을 활성화하여 요청 레코드에서 404 NoSuchKey 오류의 원인이 될 수 있는 문제에 대한 추가 세부 정보를 검토할 수 있습니다.

참고: 객체가 버킷에서 누락되었고 요청자에게 s3:ListBucket 액세스 권한이 없는 경우 요청자에게 403 액세스 거부(403 Access Denied) 오류가 표시됩니다. 403 액세스 거부(403 Access Denied) 오류가 나타나면 누락된 객체와 관련된 문제를 해결합니다.

 

아마

 ### 새로 추가한 부분 ###
      - name: Code Deploy
        run: aws deploy create-deployment --application-name GoldenHour_code_deploy --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name goldenhour-server --s3-location bucket=$S3_BUCKET_NAME,bundleType=zip,key=$PROJECT_NAME/$GITHUB_SHA.zip

여기서 deploy.yml에서 압축파일 명을 github_sha로 매번 다르게 줘서 key값을 제대로 못찾는거 같다.

 

아니였다.

 

버킷 정책이 현재 없어 이렇게 추가해 버킷이 퍼블릭 액세스 가능하도록 바꿨다

반응형

댓글