Skip to content

Instantly share code, notes, and snippets.

@neilkuan
Created November 18, 2021 12:48
Show Gist options
  • Save neilkuan/c735d33bbd4d9796e4600688da6ecdf8 to your computer and use it in GitHub Desktop.
Save neilkuan/c735d33bbd4d9796e4600688da6ecdf8 to your computer and use it in GitHub Desktop.
aws-go-sdk-v2-list-s3-object-up-over-1000.go
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
)
func ListS3Object(cfg aws.Config) []*string {
bucket := os.Getenv("BUCKET")
client := s3.NewFromConfig(cfg)
olist := []*string{}
truncatedListing := true
var resp *s3.ListObjectsV2Output
var err error
params := &s3.ListObjectsV2Input{
Bucket: aws.String(bucket),
Prefix: aws.String("temp"),
}
for truncatedListing {
resp, err = client.ListObjectsV2(context.TODO(), params)
checkError(err)
for _, object := range resp.Contents {
olist = append(olist, object.Key)
}
params.StartAfter = resp.Contents[len(resp.Contents)-1].Key
truncatedListing = resp.IsTruncated
}
return olist
}
func checkError(err error) {
if err != nil {
log.Fatalf("have something wrong...: %v", err)
}
}
func GetS3Configure() aws.Config {
cfg, err := config.LoadDefaultConfig(context.TODO())
checkError(err)
return cfg
}
func main() {
defConfg := GetS3Configure()
newPolicyList := ListS3Object(defConfg)
fmt.Println("the key count", len(aws.ToStringSlice(newPolicyList)))
fmt.Println(aws.ToStringSlice(newPolicyList))
}
module example
go 1.16
require (
github.com/aws/aws-sdk-go-v2 v1.11.0
github.com/aws/aws-sdk-go-v2/config v1.10.0
github.com/aws/aws-sdk-go-v2/service/s3 v1.19.0
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment