registerResource method
Registers the resource as managed by the Data Catalog.
To add or update data, Lake Formation needs read/write access to the chosen Amazon S3 path. Choose a role that you know has permission to do this, or choose the AWSServiceRoleForLakeFormationDataAccess service-linked role. When you register the first Amazon S3 path, the service-linked role and a new inline policy are created on your behalf. Lake Formation adds the first path to the inline policy and attaches it to the service-linked role. When you register subsequent paths, Lake Formation adds the path to the existing policy.
The following request registers a new location and gives AWS Lake Formation permission to use the service-linked role to access that location.
ResourceArn = arn:aws:s3:::my-bucket UseServiceLinkedRole =
true
If UseServiceLinkedRole
is not set to true, you must provide
or set the RoleArn
:
arn:aws:iam::12345:role/my-data-access-role
May throw InvalidInputException. May throw InternalServiceException. May throw OperationTimeoutException. May throw AlreadyExistsException.
Parameter resourceArn
:
The Amazon Resource Name (ARN) of the resource that you want to register.
Parameter roleArn
:
The identifier for the role that registers the resource.
Parameter useServiceLinkedRole
:
Designates an AWS Identity and Access Management (IAM) service-linked role
by registering this role with the Data Catalog. A service-linked role is a
unique type of IAM role that is linked directly to Lake Formation.
For more information, see Using Service-Linked Roles for Lake Formation.
Implementation
Future<void> registerResource({
required String resourceArn,
String? roleArn,
bool? useServiceLinkedRole,
}) async {
ArgumentError.checkNotNull(resourceArn, 'resourceArn');
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSLakeFormation.RegisterResource'
};
await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'ResourceArn': resourceArn,
if (roleArn != null) 'RoleArn': roleArn,
if (useServiceLinkedRole != null)
'UseServiceLinkedRole': useServiceLinkedRole,
},
);
}