

# Accessing Amazon Web Services services with temporary credentials
<a name="accessing-aws-services"></a>

The result of a successful authentication with an identity pool is a set of Amazon credentials. With these credentials, your application can make requests to Amazon resources that are protected with IAM authentication. With the various Amazon SDKs that you can add to your applications to access identity pools API operations, you can make unauthenticated API requests that produce temporary credentials. Then you can add SDKs for other Amazon Web Services services to your client and sign requests with those temporary credentials. The IAM permissions granted to your temporary-credentials role must permit the operations that you request from other services.

After you configure your Amazon Cognito credentials provider and retrieve Amazon credentials, create an Amazon Web Services service client. The following are some examples from Amazon SDK documentation.

**Amazon SDK resources for creating a client**
+ [Amazon Client configuration](https://docs.amazonaws.cn/sdk-for-cpp/v1/developer-guide/client-config.html) in the Amazon SDK for C\$1\$1 Developer Guide
+ [Using the Amazon SDK for Go V2 with Amazon Web Services services](https://aws.github.io/aws-sdk-go-v2/docs/making-requests/) in the Amazon SDK for Go Developer Guide
+ [Configuring HTTP clients](https://docs.amazonaws.cn/sdk-for-java/latest/developer-guide/http-configuration.html) in the Amazon SDK for Java 2.x Developer Guide
+ [Creating and calling service objects](https://docs.amazonaws.cn/sdk-for-javascript/v3/developer-guide/creating-and-calling-service-objects.html) in the Amazon SDK for JavaScript Developer Guide
+ [Creating clients](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/clients.html#creating-clients) in the Amazon SDK for Python (Boto3) documentation
+ [Creating a service client](https://docs.amazonaws.cn/sdk-for-rust/latest/dg/client.html) in the Amazon SDK for Rust Developer Guide
+ [Using clients](https://docs.amazonaws.cn/sdk-for-swift/latest/developer-guide/using-client-services.html) in the Amazon SDK for Swift Developer Guide

The following snippet initializes an Amazon DynamoDB client: 

## Android
<a name="accessing-aws-services-1.android"></a>

To use a Amazon Cognito identity pool in an Android app, set up Amazon Amplify. For more information, see [Authentication](https://docs.amplify.aws/lib/auth/getting-started/q/platform/android/) in the *Amplify Dev Center*.

```
// Create a service client with the provider
AmazonDynamoDB client = new AmazonDynamoDBClient(credentialsProvider);
```

 The credentials provider communicates with Amazon Cognito, retrieving both the unique identifier for authenticated and unauthenticated users as well as temporary, limited privilege Amazon credentials for the Amazon Mobile SDK. The retrieved credentials are valid for one hour, and the provider refreshes them when they expire. 

## iOS - Objective-C
<a name="accessing-aws-services-1.ios-objc"></a>

To use a Amazon Cognito identity pool in an iOS app, set up Amazon Amplify. For more information, see [Swift Authentication](https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios/) and [Flutter Authentication](https://docs.amplify.aws/lib/auth/getting-started/q/platform/flutter/) in the *Amplify Dev Center*.

```
// create a configuration that uses the provider
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 provider:credentialsProvider];
// get a client with the default service configuration
AWSDynamoDB *dynamoDB = [AWSDynamoDB defaultDynamoDB];
```

 The credentials provider communicates with Amazon Cognito, retrieving both the unique identifier for authenticated and unauthenticated users as well as temporary, limited privilege Amazon credentials for the Amazon Mobile SDK. The retrieved credentials are valid for one hour, and the provider refreshes them when they expire. 

## iOS - Swift
<a name="accessing-aws-services-1.ios-swift"></a>

To use a Amazon Cognito identity pool in an iOS app, set up Amazon Amplify. For more information, see [Swift Authentication](https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios/) in the *Amplify Dev Center*.

```
// get a client with the default service configuration
let dynamoDB = AWSDynamoDB.default()

// get a client with a custom configuration
AWSDynamoDB.register(with: configuration!, forKey: "USWest2DynamoDB");
let dynamoDBCustom = AWSDynamoDB(forKey: "USWest2DynamoDB")
```

The credentials provider communicates with Amazon Cognito, retrieving both the unique identifier for authenticated and unauthenticated users as well as temporary, limited privilege Amazon credentials for the Amazon Mobile SDK. The retrieved credentials are valid for one hour, and the provider refreshes them when they expire. 

## JavaScript
<a name="accessing-aws-services-1.javascript"></a>



```
// Create a service client with the provider
var dynamodb = new AWS.DynamoDB({region: 'us-west-2'});
```

 The credentials provider communicates with Amazon Cognito, retrieving both the unique identifier for authenticated and unauthenticated users as well as temporary, limited-privilege Amazon credentials for the Amazon Mobile SDK. The retrieved credentials are valid for one hour, and the provider refreshes them when they expire. 

## Unity
<a name="accessing-aws-services-1.unity"></a>

The [Amazon SDK for Unity](https://docs.amazonaws.cn/mobile/sdkforunity/developerguide/what-is-unity-plugin.html) is now part of the [Amazon SDK for .NET](https://docs.amazonaws.cn/sdk-for-net/v3/developer-guide/welcome.html). To get started with Amazon Cognito in the Amazon SDK for .NET, see [Amazon Cognito credentials provider](https://docs.amazonaws.cn/sdk-for-net/v3/developer-guide/cognito-creds-provider.html) in the Amazon SDK for .NET Developer Guide. Or see [Amplify Dev Center](https://docs.amplify.aws/) for options for building an app with Amazon Amplify.

```
// create a service client that uses credentials provided by Cognito
AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials, REGION);
```

 The credentials provider communicates with Amazon Cognito, retrieving both the unique identifier for authenticated and unauthenticated users as well as temporary, limited-privilege Amazon credentials for the Amazon Mobile SDK. The retrieved credentials are valid for one hour, and the provider refreshes them when they expire. 

## Xamarin
<a name="accessing-aws-services-1.xamarin"></a>

The [Amazon SDK for Xamarin](https://docs.amazonaws.cn/mobile/sdkforxamarin/developerguide/Welcome.html) is now part of the [Amazon SDK for .NET](https://docs.amazonaws.cn/sdk-for-net/v3/developer-guide/welcome.html). To get started with Amazon Cognito in the Amazon SDK for .NET, see [Amazon Cognito credentials provider](https://docs.amazonaws.cn/sdk-for-net/v3/developer-guide/cognito-creds-provider.html) in the Amazon SDK for .NET Developer Guide. Or see [Amplify Dev Center](https://docs.amplify.aws/) for options for building an app with Amazon Amplify.

```
// create a service client that uses credentials provided by Cognito
var client = new AmazonDynamoDBClient(credentials, REGION)
```

 The credentials provider communicates with Amazon Cognito, retrieving both the unique identifier for authenticated and unauthenticated users as well as temporary, limited-privilege Amazon credentials for the Amazon Mobile SDK. The retrieved credentials are valid for one hour, and the provider refreshes them when they expire. 