Skip to content

Commit

Permalink
Update SDK examples and docs to use session.Must (aws#1099)
Browse files Browse the repository at this point in the history
Updates the SDK's example and docs to use session.Must where possible to highlight its usage as apposed to session error checking that is most cases errors will be terminal to the application anyways.

Fix aws#928
  • Loading branch information
jasdel committed Feb 23, 2017
1 parent 0876266 commit f8f7a96
Show file tree
Hide file tree
Showing 103 changed files with 2,784 additions and 13,736 deletions.
17 changes: 10 additions & 7 deletions aws/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ type RequestRetryer interface{}
//
// // Create Session with MaxRetry configuration to be shared by multiple
// // service clients.
// sess, err := session.NewSession(&aws.Config{
// sess := session.Must(session.NewSession(&aws.Config{
// MaxRetries: aws.Int(3),
// })
// }))
//
// // Create S3 service client with a specific Region.
// svc := s3.New(sess, &aws.Config{
Expand Down Expand Up @@ -154,7 +154,8 @@ type Config struct {
// the EC2Metadata overriding the timeout for default credentials chain.
//
// Example:
// sess, err := session.NewSession(aws.NewConfig().WithEC2MetadataDiableTimeoutOverride(true))
// sess := session.Must(session.NewSession(aws.NewConfig()
// .WithEC2MetadataDiableTimeoutOverride(true)))
//
// svc := s3.New(sess)
//
Expand All @@ -174,7 +175,7 @@ type Config struct {
//
// Only supported with.
//
// sess, err := session.NewSession()
// sess := session.Must(session.NewSession())
//
// svc := s3.New(sess, &aws.Config{
// UseDualStack: aws.Bool(true),
Expand All @@ -192,7 +193,9 @@ type Config struct {
// Will default to false. This would only be used for empty directory names in s3 requests.
//
// Example:
// sess, err := session.NewSession(&aws.Config{DisableRestProtocolURICleaning: aws.Bool(true))
// sess := session.Must(session.NewSession(&aws.Config{
// DisableRestProtocolURICleaning: aws.Bool(true),
// }))
//
// svc := s3.New(sess)
// out, err := svc.GetObject(&s3.GetObjectInput {
Expand All @@ -207,9 +210,9 @@ type Config struct {
//
// // Create Session with MaxRetry configuration to be shared by multiple
// // service clients.
// sess, err := session.NewSession(aws.NewConfig().
// sess := session.Must(session.NewSession(aws.NewConfig().
// WithMaxRetries(3),
// )
// ))
//
// // Create S3 service client with a specific Region.
// svc := s3.New(sess, aws.NewConfig().
Expand Down
31 changes: 17 additions & 14 deletions aws/session/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,16 @@ region, and profile loaded from the environment and shared config automatically.
Requires the AWS_PROFILE to be set, or "default" is used.
// Create Session
sess, err := session.NewSession()
sess := session.Must(session.NewSession())
// Create a Session with a custom region
sess, err := session.NewSession(&aws.Config{Region: aws.String("us-east-1")})
sess := session.Must(session.NewSession(&aws.Config{
Region: aws.String("us-east-1"),
}))
// Create a S3 client instance from a session
sess, err := session.NewSession()
if err != nil {
// Handle Session creation error
}
sess := session.Must(session.NewSession())
svc := s3.New(sess)
Create Session With Option Overrides
Expand All @@ -67,23 +67,25 @@ Use NewSessionWithOptions when you want to provide the config profile, or
override the shared config state (AWS_SDK_LOAD_CONFIG).
// Equivalent to session.NewSession()
sess, err := session.NewSessionWithOptions(session.Options{})
sess := session.Must(session.NewSessionWithOptions(session.Options{
// Options
}))
// Specify profile to load for the session's config
sess, err := session.NewSessionWithOptions(session.Options{
sess := session.Must(session.NewSessionWithOptions(session.Options{
Profile: "profile_name",
})
}))
// Specify profile for config and region for requests
sess, err := session.NewSessionWithOptions(session.Options{
sess := session.Must(session.NewSessionWithOptions(session.Options{
Config: aws.Config{Region: aws.String("us-east-1")},
Profile: "profile_name",
})
}))
// Force enable Shared Config support
sess, err := session.NewSessionWithOptions(session.Options{
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: SharedConfigEnable,
})
}))
Adding Handlers
Expand All @@ -93,7 +95,8 @@ handler logs every request and its payload made by a service client:
// Create a session, and add additional handlers for all service
// clients created with the Session to inherit. Adds logging handler.
sess, err := session.NewSession()
sess := session.Must(session.NewSession())
sess.Handlers.Send.PushFront(func(r *request.Request) {
// Log every request made and its payload
logger.Println("Request: %s/%s, Payload: %s",
Expand Down
14 changes: 7 additions & 7 deletions aws/session/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,23 +181,23 @@ type Options struct {
// to be built with retrieving credentials with AssumeRole set in the config.
//
// // Equivalent to session.New
// sess, err := session.NewSessionWithOptions(session.Options{})
// sess := session.Must(session.NewSessionWithOptions(session.Options{}))
//
// // Specify profile to load for the session's config
// sess, err := session.NewSessionWithOptions(session.Options{
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// Profile: "profile_name",
// })
// }))
//
// // Specify profile for config and region for requests
// sess, err := session.NewSessionWithOptions(session.Options{
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// Config: aws.Config{Region: aws.String("us-east-1")},
// Profile: "profile_name",
// })
// }))
//
// // Force enable Shared Config support
// sess, err := session.NewSessionWithOptions(session.Options{
// sess := session.Must(session.NewSessionWithOptions(session.Options{
// SharedConfigState: SharedConfigEnable,
// })
// }))
func NewSessionWithOptions(opts Options) (*Session, error) {
var envCfg envConfig
if opts.SharedConfigState == SharedConfigEnable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@ func main() {
if len(os.Args) < 3 {
exitErrorf("Usage: %s <bucket> <key>", filepath.Base(os.Args[0]))
}
sess, err := session.NewSession()
if err != nil {
exitErrorf("failed to create session,", err)
}
sess := session.Must(session.NewSession())

svc := s3.New(sess)
resp, err := svc.GetObject(&s3.GetObjectInput{
Expand Down
5 changes: 1 addition & 4 deletions example/service/dynamodb/scanItems/scanItems.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,7 @@ func main() {
}

// Create the session that the DynamoDB service will use.
sess, err := session.NewSession(awscfg)
if err != nil {
exitWithError(fmt.Errorf("failed to create session, %v", err))
}
sess := session.Must(session.NewSession(awscfg))

// Create the DynamoDB service client to make the query request with.
svc := dynamodb.New(sess)
Expand Down
5 changes: 1 addition & 4 deletions example/service/ec2/filterInstances/filter_ec2_by_tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@ import (
// Usage:
// filter_ec2_by_tag <name_filter>
func main() {
sess, err := session.NewSession()
if err != nil {
log.Fatalf("failed to create session %v\n", err)
}
sess := session.Must(session.NewSession())

nameFilter := os.Args[1]
awsRegion := "us-east-1"
Expand Down
8 changes: 2 additions & 6 deletions example/service/s3/listObjects/listObjects.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,12 @@ func main() {
return
}

sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := s3.New(sess)

i := 0
err = svc.ListObjectsPages(&s3.ListObjectsInput{
err := svc.ListObjectsPages(&s3.ListObjectsInput{
Bucket: &os.Args[1],
}, func(p *s3.ListObjectsOutput, last bool) (shouldContinue bool) {
fmt.Println("Page,", i)
Expand Down
9 changes: 4 additions & 5 deletions example/service/s3/putObjectAcl/putObjectAcl.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,10 @@ func main() {
emailPtr, userPtr = nil, nil
}

sess, err := session.NewSession(
&aws.Config{
Region: regionPtr,
},
)
sess := session.Must(session.NewSession(&aws.Config{
Region: regionPtr,
}))

svc := s3.New(sess)

resp, err := svc.PutObjectAcl(&s3.PutObjectAclInput{
Expand Down
6 changes: 1 addition & 5 deletions private/model/api/operation.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,11 +209,7 @@ func (o *Operation) InterfaceSignature() string {
// tplExample defines the template for rendering an Operation example
var tplExample = template.Must(template.New("operationExample").Parse(`
func Example{{ .API.StructName }}_{{ .ExportedName }}() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())
svc := {{ .API.PackageName }}.New(sess)
Expand Down
60 changes: 10 additions & 50 deletions service/acm/examples_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,7 @@ var _ time.Duration
var _ bytes.Buffer

func ExampleACM_AddTagsToCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand Down Expand Up @@ -48,11 +44,7 @@ func ExampleACM_AddTagsToCertificate() {
}

func ExampleACM_DeleteCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand All @@ -73,11 +65,7 @@ func ExampleACM_DeleteCertificate() {
}

func ExampleACM_DescribeCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand All @@ -98,11 +86,7 @@ func ExampleACM_DescribeCertificate() {
}

func ExampleACM_GetCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand All @@ -123,11 +107,7 @@ func ExampleACM_GetCertificate() {
}

func ExampleACM_ImportCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand All @@ -151,11 +131,7 @@ func ExampleACM_ImportCertificate() {
}

func ExampleACM_ListCertificates() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand All @@ -181,11 +157,7 @@ func ExampleACM_ListCertificates() {
}

func ExampleACM_ListTagsForCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand All @@ -206,11 +178,7 @@ func ExampleACM_ListTagsForCertificate() {
}

func ExampleACM_RemoveTagsFromCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand Down Expand Up @@ -238,11 +206,7 @@ func ExampleACM_RemoveTagsFromCertificate() {
}

func ExampleACM_RequestCertificate() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand Down Expand Up @@ -275,11 +239,7 @@ func ExampleACM_RequestCertificate() {
}

func ExampleACM_ResendValidationEmail() {
sess, err := session.NewSession()
if err != nil {
fmt.Println("failed to create session,", err)
return
}
sess := session.Must(session.NewSession())

svc := acm.New(sess)

Expand Down
Loading

0 comments on commit f8f7a96

Please sign in to comment.