I am new to user pools and used federated identities in the past. Do we still use the Unauth and Auth Roles of IAM? How does this work? I want a user to be able to just signUp and pass in some attributes (like username and email that are unique) and then signIn with them and get access to various AWS resources? Say a user signs in and then can upload a file to S3. Thanks.
That should be possible. To get credentials to access AWS resources for your user pool user, first associate your user pool with an identity pool through the AWS Console, and then provide AWSCognitoIdentityUserPool to your AWSCognitoCredentialsProvider (in iOS).
After you configure the identity pool association, get AWS credentials into your app by providing AWSCognitoIdentityUserPool to your AWSCognitoCredentialsProvider.
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"IDENTITY_POOL_ID" identityProviderManager:pool];
AWSServiceConfiguration *defaultServiceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = defaultServiceConfiguration;