How to get started with AWS S3 cloud storage for Unity
Let’s go over how to get started with AWS cloud storage for Unity.
First, go to https://aws.amazon.com and create an account:
Download the AWS SDK package from https://docs.aws.amazon.com/mobile/sdkforunity/developerguide/setup-unity.html:
Open up Unity and import the S3 package:
Open up your web browser again and on the AWS website navigate to Amazon Cognito. Click on Manage Identity Pools:
Enter a name for the identity pool and tick “Enable access to unauthenticated identities”
Click on allow:
Go to S3 Buckets:
Click on create bucket:
Enter a unique name for the bucket:
Scroll down and click on Create bucket:
Go to IAM and create a policy:
Set service of the policy to S3 and allow all actions:
Name the policy and then click on create policy:
On the IAM main page click on roles and then click on the unauthenticated role:
Make note of the Role ARN and attach the new policy created:
Go back to S3 and select the bucket:
Click on the permissions tab:
Click on Edit bucket policy:
Click on Policy Generator:
AWS Policy Generator:
- Set Policy to S3 Bucket Policy.
- Set Effect to Allow.
- In the principal field add the Role ARN.
- Allow All Actions
- In the ARN field enter the following text “arn:aws:s3:::BUCKETNAME/*”
i.e arn:aws:s3:::aws-insurance-app-bucket/*
Click Add Statement and then Generate Policy:
Copy the JSON text:
Add the text to the bucket policy and save:
Go back to Unity and create a script called AWSManager. Create a new game object and attach the script:
Open up the AWSManager script and copy over the using directives from the S3Example script that came with the S3 package. Turn the AWSManager class into a singelton:
Create the two properties needed RegionEndpoint and AmazonS3Client. You get the details that belongs to your app from the sample code on Amazon Cognito:
Lastly, in the Awake function initialise by calling UnityInitialiser.AttachToGameObject. Set AWSConfigs.HttpClient to UnityWebRequest and then list all the buckets for this app:
If all is correct you will get this output in the console window when you press play:
Good luck!