# Example This example demonstrates how you can use the AWS SDK for Go V2's Amazon S3 client to use AWS PrivateLink for Amazon S3. # Usage ## How to build vpc endpoint url To access S3 bucket data using the s3 interface endpoints, prefix the vpc endpoint with `bucket`. For eg, use endpoint url as `https://bucket.vpce-0xxxxxxx-xxx8xxg.s3.us-west-2.vpce.amazonaws.com` to access S3 bucket data via the associated vpc endpoint. To access S3 access point data using the s3 interface endpoints, prefix the vpc endpoint with `accesspoint`. For eg, use endpoint url as `https://accesspoint.vpce-0xxxxxxx-xxxx8xxg.s3.us-west-2.vpce.amazonaws.com` to access S3 access point data via the associated vpc endpoint. To work with S3 control using the s3 interface endpoints, prefix the vpc endpoint with `control`. For eg, use endpoint url as `https://control.vpce-0xxxxxxx-xxx8xxg.s3.us-west-2.vpce.amazonaws.com` to use S3 Control operations with the associated vpc endpoint. ## How to use the built vpc endpoint url Provide the vpc endpoint url (built as per instructions above) to the SDK by providing a custom endpoint resolver on client config or as a part of request options. The VPC endpoint url should be provided as a custom endpoint, which means the Endpoint source should be set as EndpointSourceCustom. You can use client's `EndpointResolverFromURL` utility which by default sets the Endpoint source as Custom source. Note that the SDK may mutate the vpc endpoint as per the input provided to work with ARNs, unless you explicitly set HostNameImmutable property for the endpoint. The example will create s3 client's that use appropriate vpc endpoint url. The example will then create a bucket of the name provided in code. Replace the value of the `accountID` const with the account ID for your AWS account. The `vpcBucketEndpointUrl`, `vpcAccesspointEndpoint`, `vpcControlEndpoint`, `bucket`, `keyName`, and `accessPoint` const variables need to be updated to match the name of the appropriate vpc endpoint, Bucket, Object Key, and Access Point that will be created by the example. ```sh AWS_REGION= go run usingPrivateLink.go ```