S3 / Client / create_session
create_session#
- S3.Client.create_session(**kwargs)#
Creates a session that establishes temporary security credentials to support fast authentication and authorization for the Zonal endpoint APIs on directory buckets. For more information about Zonal endpoint APIs that include the Availability Zone in the request endpoint, see S3 Express One Zone APIs in the Amazon S3 User Guide.
To make Zonal endpoint API requests on a directory bucket, use the
CreateSessionAPI operation. Specifically, you grants3express:CreateSessionpermission to a bucket in a bucket policy or an IAM identity-based policy. Then, you use IAM credentials to make theCreateSessionAPI request on the bucket, which returns temporary security credentials that include the access key ID, secret access key, session token, and expiration. These credentials have associated permissions to access the Zonal endpoint APIs. After the session is created, you don’t need to use other policies to grant permissions to each Zonal endpoint API individually. Instead, in your Zonal endpoint API requests, you sign your requests by applying the temporary security credentials of the session to the request headers and following the SigV4 protocol for authentication. You also apply the session token to thex-amz-s3session-tokenrequest header for authorization. Temporary security credentials are scoped to the bucket and expire after 5 minutes. After the expiration time, any calls that you make with those credentials will fail. You must use IAM credentials again to make aCreateSessionAPI request that generates a new set of temporary credentials for use. Temporary credentials cannot be extended or refreshed beyond the original specified interval.If you use Amazon Web Services SDKs, SDKs handle the session token refreshes automatically to avoid service interruptions when a session expires. We recommend that you use the Amazon Web Services SDKs to initiate and manage requests to the CreateSession API. For more information, see Performance guidelines and design patterns in the Amazon S3 User Guide.
Note
You must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format
https://bucket_name.s3express-az_id.region.amazonaws.com. Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.CopyObjectAPI operation - Unlike other Zonal endpoint APIs, theCopyObjectAPI operation doesn’t use the temporary security credentials returned from theCreateSessionAPI operation for authentication and authorization. For information about authentication and authorization of theCopyObjectAPI operation on directory buckets, see CopyObject.HeadBucketAPI operation - Unlike other Zonal endpoint APIs, theHeadBucketAPI operation doesn’t use the temporary security credentials returned from theCreateSessionAPI operation for authentication and authorization. For information about authentication and authorization of theHeadBucketAPI operation on directory buckets, see HeadBucket.
Permissions
To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that grants
s3express:CreateSessionpermission to the bucket. In a policy, you can have thes3express:SessionModecondition key to control who can create aReadWriteorReadOnlysession. For more information aboutReadWriteorReadOnlysessions, see x-amz-create-session-mode. For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.To grant cross-account access to Zonal endpoint APIs, the bucket policy should also grant both accounts the
s3express:CreateSessionpermission.HTTP Host header syntax
Directory buckets - The HTTP Host header syntax is
Bucket_name.s3express-az_id.region.amazonaws.com.See also: AWS API Documentation
Request Syntax
response = client.create_session( SessionMode='ReadOnly'|'ReadWrite', Bucket='string' )
- Parameters:
SessionMode (string) – Specifies the mode of the session that will be created, either
ReadWriteorReadOnly. By default, aReadWritesession is created. AReadWritesession is capable of executing all the Zonal endpoint APIs on a directory bucket. AReadOnlysession is constrained to execute the following Zonal endpoint APIs:GetObject,HeadObject,ListObjectsV2,GetObjectAttributes,ListParts, andListMultipartUploads.Bucket (string) –
[REQUIRED]
The name of the bucket that you create a session for.
- Return type:
dict
- Returns:
Response Syntax
{ 'Credentials': { 'AccessKeyId': 'string', 'SecretAccessKey': 'string', 'SessionToken': 'string', 'Expiration': datetime(2015, 1, 1) } }
Response Structure
(dict) –
Credentials (dict) –
The established temporary security credentials for the created session..
AccessKeyId (string) –
A unique identifier that’s associated with a secret access key. The access key ID and the secret access key are used together to sign programmatic Amazon Web Services requests cryptographically.
SecretAccessKey (string) –
A key that’s used with the access key ID to cryptographically sign programmatic Amazon Web Services requests. Signing a request identifies the sender and prevents the request from being altered.
SessionToken (string) –
A part of the temporary security credentials. The session token is used to validate the temporary security credentials.
Expiration (datetime) –
Temporary security credentials expire after a specified interval. After temporary credentials expire, any calls that you make with those credentials will fail. So you must generate a new set of temporary credentials. Temporary credentials cannot be extended or refreshed beyond the original specified interval.
Exceptions
S3.Client.exceptions.NoSuchBucket