How it works#
Edge Storage is S3-compatible. Use the aws-sdk-go-v2 S3 client with Edge’s endpoint and static credentials. For Compute, CDN, and DNS, call the REST API at https://api.edge.network using the standard library net/http.
Storage: installing and configuring#
Add the AWS SDK for Go v2:
go get github.com/aws/aws-sdk-go-v2
go get github.com/aws/aws-sdk-go-v2/config
go get github.com/aws/aws-sdk-go-v2/service/s3
go get github.com/aws/aws-sdk-go-v2/credentialsConfigure the S3 client with Edge’s endpoint (region us-east-1, path-style access):
package main
import (
"context"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/credentials"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
func newEdgeS3Client(accessKey, secretKey string) *s3.Client {
return s3.NewFromConfig(aws.Config{
Region: "us-east-1",
Credentials: credentials.NewStaticCredentialsProvider(
accessKey, secretKey, "",
),
}, func(o *s3.Options) {
o.BaseEndpoint = aws.String("https://storage.edge.network")
o.UsePathStyle = true
})
}Storage operations#
Create a bucket#
_, err := client.CreateBucket(ctx, &s3.CreateBucketInput{
Bucket: aws.String("my-bucket"),
})Upload a file#
_, err := client.PutObject(ctx, &s3.PutObjectInput{
Bucket: aws.String("my-bucket"),
Key: aws.String("deployments/app.tar.gz"),
Body: bytes.NewReader(data),
ContentType: aws.String("application/gzip"),
})List objects#
out, err := client.ListObjectsV2(ctx, &s3.ListObjectsV2Input{
Bucket: aws.String("my-bucket"),
Prefix: aws.String("deployments/"),
})
for _, obj := range out.Contents {
fmt.Println(*obj.Key)
}Compute, CDN, DNS: REST API with net/http#
For non-Storage products, use net/http:
req, _ := http.NewRequest("GET", "https://api.edge.network/api/compute/vms", nil)
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
// decode resp.Body to structUse the same pattern for CDN deployments, DNS zones and records, and VM power operations. See the API reference for endpoints.
Practical example: deployment script#
A simple script that builds a tarball and uploads it to Edge Storage:
func deploy(ctx context.Context, dir, bucket string) error {
var buf bytes.Buffer
gw := gzip.NewWriter(&buf)
tw := tar.NewWriter(gw)
// add files from dir to tar...
tw.Close()
gw.Close()
key := fmt.Sprintf("deployments/%s.tar.gz", time.Now().Format("20060102-150405"))
_, err := s3Client.PutObject(ctx, &s3.PutObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
Body: bytes.NewReader(buf.Bytes()),
ContentType: aws.String("application/gzip"),
})
return err
}Extend this with API calls to trigger VM restarts or CDN purges after upload. Combine Storage and REST API usage for full automation.
Keep learning
API & SDKs3 min read
JavaScript SDK
Edge does not provide its own JavaScript SDK. For Storage, use the standard AWS S3 SDK. For Compute, CDN, and DNS, use the REST API with fetch().
API & SDKs3 min read
Python SDK
Edge does not provide its own Python SDK. For Storage, use boto3. For Compute, CDN, and DNS, use the REST API with requests.
API & SDKs3 min read
API reference
Edge exposes a REST API for Compute, CDN, DNS, Storage and Shield. Use it to automate deployments, manage resources and integrate with your tooling.