(AWS) Dynamo DB에 데이터를 저장하고 로드 하기
<문제>
AWS Mobile SDK 는 arm64를 지원하지 않는다
구글플레이 정책상 모든 앱은 64bit를 지원해야하는데 AWS를 지원안함
따로 dll을 연결해 사용하면 된다는데... 코드가 에러만 남
unity 2019 버전의 경우 LINQ query문제가 있으며
unity 2018 이하 버전의 경우 32bit에 한해서 잘 작동함.
결론... 뜌벌...
따로 Java서버를 만들어서 EC2에 탑재하려한다.
1. aws sdk unity 3.3.679.0(AWS Mobile SDK for Unity)를 다운받음
2. 다운 받은 SDK 에서 Cognito, DynamoDB, Lambda package를 Import 함
3. AWS Cognito Service의 자격증명 풀을 만든다.
3. 저장할 Dynamo DB용 데이터 클래스를 만든다
4. 데이터 저장, 로드 하는 코드를 만든 후 Unity에서는 실행 성공
5. 빌드 후 실행시 앱 크래쉬
-> Plugins/Android/AndroidManifest.xml and change:
<activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app\_name">을 아래 처럼 Native를 삭제하면 실행 됨.
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app\_name">
6. 그러나 실행이후 ArgumentException 발생
Unity 2019 버전에서 발생하는 문제로 짐작 되며 LINQ query가 바뀌어서 그런듯 하다고 함
아래의 링크의 AWSSDK.Core.dll을 받아서 내 프로젝트에 적용하면 문제해결
<Sample>
[DynamoDBTable("AWS에 생성상 DynamoDB Table의 이름")]
public class SampleData
{
[DynamoDBHashKey]
public string user_id;
[DynamoDBProperty]
public ulong coin;
}
Cognito의 경우 우선 구글 연동 실패하여, 비인증 로그인으로 시도함
// 아래 코드를 안넣으면 에러
UnityInitializer.AttachToGameObject(this.gameObject);
// ID 는 코그니토에서 받음
CognitoAWSCredentials credentials;
credentials = new CognitoAWSCredentials(ID, RegionEndpoint.APNortheast2);
Dynamo DB의 경우 AWS Core.dll에서 에러가 남 -> 새걸로 교체
Amazon.AWSConfigs.HttpClient = Amazon.AWSConfigs.HttpClientOption.UnityWebRequest;
DBclient = new AmazonDynamoDBClient(credentials, RegionEndpoint.APNortheast2);
context = new DynamoDBContext(DBclient);
댓글
댓글 쓰기