Notice
Recent Posts
Recent Comments
Link
투케이2K
310. (TWOK/ERROR) [Android] Aws PutMedia The request signature .. does not match the .. you provided 본문
투케이2K 에러관리
310. (TWOK/ERROR) [Android] Aws PutMedia The request signature .. does not match the .. you provided
투케이2K 2025. 5. 23. 19:02[환경 설정 및 설명]
프로그램 : AndroidStudio
설 명 : [Android] Aws PutMedia The request signature .. does not match the .. you provided
[설 명]
--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------
- 제목 : [Android] Aws PutMedia The request signature .. does not match the .. you provided
- 테스트 환경 : 삼성 갤럭시 스마트폰 / 안드로이드 / Android
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------
1. 안드로이드 휴대폰에서 Aws Kvs HLS 스트리밍 MKV 파일 PutMedia 업로드 수행 시 잘못 된 요청으로 인한 403 에러 발생 이슈
2. 안드로이드 Aws 라이브러리 사용 의존성 모듈 :
implementation 'com.amazonaws:aws-android-sdk-kms:2.57.0'
implementation 'com.amazonaws:aws-android-sdk-s3:2.57.0'
implementation 'com.amazonaws:aws-android-sdk-iot:2.57.0'
implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.57.0'
implementation 'com.amazonaws:aws-android-sdk-kinesisvideo:2.57.0'
3. 에러 발생 로그 전문 :
E///===========//: ======================================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_Activity.A_Test_Activity_Start$52$1.onError(A_Test_Activity_Start.java:2251)]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: AWS KVS HLS 스트리밍 업로드 수행 :: onError]
I/: ----------------------------------------------------
I/: [LOG ::
----------------------------------------------------
RESPONSE_CODE :: 403
----------------------------------------------------
RESPONSE_DATA :: {"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."}
----------------------------------------------------
]
E///===========//: ======================================================================
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------
1. Aws Kvs HLS PutMedia 요청에 대한 프로세스 다시 점검 및 AWS4Signer 인증 서명 코드 수정 (Request setEncodedResourcePath 추가)
>> Aws Kvs 권한 확인 : FullAccess 포함 여부 확인 (PutMedia 포함)
>> 소스 코드 : 리전 일치 여부 확인 (GetDataEndpoint, signer.setRegionName, URL 모두 동일 리전)
>> 소스 코드 : putMedia 요청 URL 점검 확인 (DataEndopoint 로 요청)
>> Aws Kvs 스트림 존재 여부 확인 (해당 스트림이 존재하고 활성화 상태인지 확인)
>> 클라이언트 시각 확인 : 서명에 사용하는 x-amz-date 값이 UTC 기준 및 5분 이내인지 확인
>> HTTP 요청 메서드 타입 확인 : POST 방식으로 요청
>> 전송 스트림 타입 확인 : MKV 컨테이너 형식으로 실시간 스트리밍 전송
2. Aws PutMedia 호출 AWS4Signer 인증 서명 코드 :
// --------------------------------------------------------
Request<?> signRequest = new DefaultRequest<>("kinesisvideo");
signRequest.setHttpMethod(HttpMethodName.POST);
signRequest.setEndpoint(new URI(dataEndpoint)); // TODO [DataEndpoint 적용]
signRequest.setEncodedResourcePath("/putMedia"); // TODO [Path 설정 : 해당 값 추가 중요]
signRequest.addHeader("Host", new URI(dataEndpoint).getHost()); // TODO [호스트 지정]
signRequest.addHeader("x-amzn-stream-name", STREAM_NAME); // TODO [스트림 명칭]
signRequest.addHeader("x-amzn-fragment-timecode-type", "ABSOLUTE"); // TODO [타임 코드]
// TODO [수동 설정 시 참고 코드]
/*
SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
dateTimeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String amzDate = dateTimeFormat.format(new Date());
signRequest.addHeader("x-amzn-producer-start-timestamp", amzDate);
// */
signRequest.addHeader("Content-Type", "application/octet-stream"); // TODO [Body 에서 지정한 MediaType 타입]
signRequest.setContent(new StringInputStream("")); // TODO [Empty Body 지정 필요]
// --------------------------------------------------------
AWS4Signer signer = new AWS4Signer();
signer.setServiceName("kinesisvideo");
signer.setRegionName(REGION);
signer.sign(signRequest, credentials); // TODO [Sign 인증 수행]
// --------------------------------------------------------
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------
[Aws Kvs HSL 비디오 스트림 녹화 영상 관련 학습 정리]
https://blog.naver.com/kkh0977/223855980812
[Aws KVS HLS MKV 파일 설명 - PutMedia API 스트리밍 업로드 시 전송 파일]
https://blog.naver.com/kkh0977/223874472088
[Aws SigV4 인증 및 서명 프로토콜 설명 - AWS4Signer API 호출 시 서명 사용]
https://blog.naver.com/kkh0977/223874467995
[Aws KVS PutMedia 비디오 스트림 전송 API 설명 정리]
https://blog.naver.com/kkh0977/223856688678
[안드로이드 Raw 폴더에 저장 된 MKV 형식 파일 Aws Kvs HLS 비디오 스트리밍 업로드 수행]
https://blog.naver.com/kkh0977/223874458019
[안드로이드 Aws Kvs HLS 비디오 스트리밍 putMedia 호출 시 필요한 Signature V4 서명 방법]
https://blog.naver.com/kkh0977/223874442189
--------------------------------------------------------------------------
반응형
'투케이2K 에러관리' 카테고리의 다른 글
Comments