AWSS3 Region / plist configuration issue 'The service configuration is `nil`

Your info.plist needs to have S3TransferManager in it.

So, **AWS -> S3TransferManager -> Default -> Region -> ...**

You can find an example of one here


I had the same issue instead of S3TransferManager you should put DynamoDBObjectMapper

e.g..

<key>DynamoDBObjectMapper</key>
    <dict>
        <key>Default</key>
        <dict>
            <key>Region</key>
            <string>us-east-1</string>
        </dict>
    </dict>

Swift 3 - Xcode 8.3.3

For people still having this issue, I just spent 3h fighting against this annoying setup issue.

I added both these chunks in my Info.plist (replace the variables between ** ** in the second bloc) and now it's working again.

Amazon's documentation isn't updated properly I think. I hope this can save some people some time.

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>amazonaws.com</key>
            <dict>
                <key>NSThirdPartyExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
            <key>amazonaws.com.cn</key>
            <dict>
                <key>NSThirdPartyExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
        </dict>
    </dict>

and:

<key>AWS</key>
    <dict>
        <key>CredentialsProvider</key>
        <dict>
            <key>CognitoIdentity</key>
            <dict>
                <key>Default</key>
                <dict>
                    <key>PoolId</key>
                    <string>**YourCognitoIdentityPoolId**</string>
                    <key>Region</key>
                    <string>**AWSRegionUnknown**</string>
                </dict>
            </dict>
        </dict>
        <key>S3TransferManager</key>
        <dict>
            <key>Default</key>
            <dict>
                <key>Region</key>
                <string>**AWSRegionUnknown**</string>
            </dict>
        </dict>
    </dict>

For me, I had to configure the credentials with the following code, before uploading:

let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,identityPoolId:PoolID)
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)

AWSServiceManager.default().defaultServiceConfiguration = configuration

Where PoolID is my Cognito identity. I hope this helps others.