getDataAccess method
Returns a temporary access credential from S3 Access Grants to the grantee or client application. The temporary credential is an Amazon Web Services STS token that grants them access to the S3 data.
- Permissions
-
You must have the
s3:GetDataAccesspermission to use this operation. - Additional Permissions
-
The IAM role that S3 Access Grants assumes must have the following
permissions specified in the trust policy when registering the location:
sts:AssumeRole, for directory users or groupssts:SetContext, and for IAM users or rolessts:SetSourceIdentity.
Parameter accountId :
The Amazon Web Services account ID of the S3 Access Grants instance.
Parameter permission :
The type of permission granted to your S3 data, which can be set to one of
the following values:
-
READ– Grant read-only access to the S3 data. -
WRITE– Grant write-only access to the S3 data. -
READWRITE– Grant both read and write access to the S3 data.
Parameter target :
The S3 URI path of the data to which you are requesting temporary access
credentials. If the requesting account has an access grant for this data,
S3 Access Grants vends temporary access credentials in the response.
Parameter auditContext :
The context to identify the job or query associated with the credential
request. This information will be displayed in CloudTrail log in your
account.
Parameter durationSeconds :
The session duration, in seconds, of the temporary access credential that
S3 Access Grants vends to the grantee or client application. The default
value is 1 hour, but the grantee can specify a range from 900 seconds (15
minutes) up to 43200 seconds (12 hours). If the grantee requests a value
higher than this maximum, the operation fails.
Parameter privilege :
The scope of the temporary access credential that S3 Access Grants vends
to the grantee or client application.
-
Default– The scope of the returned temporary access token is the scope of the grant that is closest to the target scope. -
Minimal– The scope of the returned temporary access token is the same as the requested target scope as long as the requested scope is the same as or a subset of the grant scope.
Parameter targetType :
The type of Target. The only possible value is
Object. Pass this value if the target data that you would
like to access is a path to an object. Do not pass this value if the
target data is a bucket or a bucket and a prefix.
Implementation
Future<GetDataAccessResult> getDataAccess({
required String accountId,
required Permission permission,
required String target,
String? auditContext,
int? durationSeconds,
Privilege? privilege,
S3PrefixType? targetType,
}) async {
_s.validateNumRange(
'durationSeconds',
durationSeconds,
900,
43200,
);
final headers = <String, String>{
'x-amz-account-id': accountId.toString(),
};
final $query = <String, List<String>>{
'permission': [permission.value],
'target': [target],
if (auditContext != null) 'auditContext': [auditContext],
if (durationSeconds != null)
'durationSeconds': [durationSeconds.toString()],
if (privilege != null) 'privilege': [privilege.value],
if (targetType != null) 'targetType': [targetType.value],
};
final $result = await _protocol.send(
method: 'GET',
requestUri: '/v20180820/accessgrantsinstance/dataaccess',
queryParams: $query,
headers: headers,
exceptionFnMap: _exceptionFns,
);
return GetDataAccessResult.fromXml($result.body);
}