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.
AWS_REGION=<region> go run usingPrivateLink.go