이제 '사전서명된 URL' 을 가져오는 코드를 구현하도록 하자.
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;
[System.Serializable]
public class ResponseData
{
public string url;
}
public class AWSManager
{
public static async UniTask<string> GetPresignedUrl(string apiUrl, string bucketName, string objectName)
{
string requestUrl = $"{apiUrl}?bucket_name={bucketName}&object_name={objectName}";
using (UnityWebRequest request = UnityWebRequest.Get(requestUrl))
{
var operation = request.SendWebRequest();
while (!operation.isDone)
await UniTask.Yield();
if (request.result == UnityWebRequest.Result.Success)
{
var jsonResponse = request.downloadHandler.text;
var responseData = JsonUtility.FromJson<ResponseData>(jsonResponse);
return responseData.url;
}
else
{
Debug.LogError($"API 호출 실패: {request.error}");
return null;
}
}
}
}
매개변수의 apiUrl 은 AWS API Gateway의 엔드포인트 URL을 넣고 가져올 버킷이름, 가져올 오브젝트 이름을 넣으면 '사전서명된 URL'을 받아온다. 이 URL은 해당 버킷과 해당 오브젝트에 대한 권한을 부여하였기 때문에 사전서명된 URL을 통해 JSON 파일들을 가져올 수 있게 된다.

UnityWebRequest.Get()을 통해 원하는 JSON 데이터를 가져올 수 있다.

이로써 우리는 보안성을 높인 클라이언트 데이터를 받아오도록 구현해보았다.
포스팅을 하면서 상세히 적지 않은 부분을 나열해보았다.
- GoogleSheets 를 JSON 파일로 파싱하는 툴 (AWS S3 업로드 포함)
- JSON 을 캐싱하여 최적화하는 부분
- AES 암호화 키 생성하고 S3에 업로드할 수 있는 툴
대충 이정도로 보여지는데 포스팅의 빈 부분은 차차 채워나가도록 해야겠다.
'프로그래밍 > 유니티' 카테고리의 다른 글
| 클라이언트 데이터 JSON 파싱 - 4 (0) | 2024.12.09 |
|---|---|
| 클라이언트 데이터 JSON 파싱 - 3 (1) | 2024.12.07 |
| 클라이언트 데이터 JSON 파싱 - 2 (1) | 2024.12.06 |
| 클라이언트 데이터 JSON 파싱 - 1 (0) | 2024.12.06 |