(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);

댓글

이 블로그의 인기 게시물

Google Play Service와 Admob 충돌 해결 방법