tagResource method
Creates a new user-defined tag or updates an existing tag. Each tag is a label consisting of a key and value that is applied to your resource. Tags can help you organize, track costs for, and control access to your resources. You can add up to 50 Amazon Web Services resource tags for each S3 resource.
- General purpose buckets
- Access Points for directory buckets
- Access Points for general purpose buckets
- Directory buckets
- S3 Storage Lens groups
- S3 Access Grants instances, registered locations, or grants.
- Permissions
-
For general purpose buckets, access points for general purpose buckets,
Storage Lens groups, and S3 Access Grants, you must have the
s3:TagResourcepermission to use this operation. - Directory bucket permissions
-
For directory buckets, you must have the
s3express:TagResourcepermission to use this operation. For more information about directory buckets policies and permissions, see Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide. - HTTP Host header syntax
-
Directory buckets - The HTTP Host header syntax is
s3express-control.region.amazonaws.com.
Parameter accountId :
The Amazon Web Services account ID that created the S3 resource that
you're trying to add tags to or the requester's account ID.
Parameter resourceArn :
The Amazon Resource Name (ARN) of the S3 resource that you're applying
tags to. The tagged resource can be a directory bucket, S3 Storage Lens
group or S3 Access Grants instance, registered location, or grant.
Parameter tags :
The Amazon Web Services resource tags that you want to add to the
specified S3 resource.
Implementation
Future<void> tagResource({
required String accountId,
required String resourceArn,
required List<Tag> tags,
}) async {
final headers = <String, String>{
'x-amz-account-id': accountId.toString(),
};
await _protocol.send(
method: 'POST',
requestUri:
'/v20180820/tags/${resourceArn.split('/').map(Uri.encodeComponent).join('/')}',
headers: headers,
payload: TagResourceRequest(
accountId: accountId, resourceArn: resourceArn, tags: tags)
.toXml('TagResourceRequest'),
endpoint: _resolveEndpoint(
requiresAccountId: true,
accountId: accountId,
resourceArn: resourceArn,
),
hostPrefix: '{AccountId}.',
exceptionFnMap: _exceptionFns,
);
}