Skip to content

AppStream DescribeImages paginated response fails with unexpected value type *cbor.Nil in v1.64.0 #3501

Description

@St3ffn

Acknowledgements

Describe the bug

AppStream.DescribeImages fails while reading the second page of images after updating github.com/aws/aws-sdk-go-v2/service/appstream from v1.63.0 to v1.64.0.

The first page is returned successfully, including a NextToken. The second request using that token fails during SDK deserialization even though the HTTP response status is 200.

The error is:

unexpected value type *cbor.Nil

This happens both with manual pagination and with appstream.NewDescribeImagesPaginator.

This appears to be a regression introduced by the AppStream SDK service module update from v1.63.0 to v1.64.0. In v1.63.0, the same code successfully reads both pages.

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

DescribeImages should successfully deserialize all pages returned by AppStream.

Manual pagination and NewDescribeImagesPaginator should both return page 0 and page 1 without error, as they do with github.com/aws/aws-sdk-go-v2/service/appstream v1.63.0.

Current Behavior

With github.com/aws/aws-sdk-go-v2/service/appstream v1.64.0, the first page succeeds and the second page fails during deserialization.

Output:

2026/07/30 14:01:16 got page 0 with 25 images
2026/07/30 14:01:16 DescribeImages call WITHOUT pagination failed: operation error AppStream: DescribeImages, https response error StatusCode: 200, RequestID: ....., unexpected value type *cbor.Nil
2026/07/30 14:01:17 got page 0 with 25 images
2026/07/30 14:01:17 DescribeImages call with pagination failed: operation error AppStream: DescribeImages, https response error StatusCode: 200, RequestID: ...., unexpected value type *cbor.Nil

With github.com/aws/aws-sdk-go-v2/service/appstream v1.63.0, the same code succeeds:

2026/07/30 14:04:26 got page 0 with 25 images
2026/07/30 14:04:26 got page 1 with 24 images
2026/07/30 14:04:26 got page 0 with 25 images
2026/07/30 14:04:26 got page 1 with 24 images

Reproduction Steps

Reproduction Steps:

The account/region must contain enough private AppStream images to require pagination from DescribeImages.

package main

import (
	"context"
	"log"

	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/appstream"
	"github.com/aws/aws-sdk-go-v2/service/appstream/types"
)

func main() {
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		log.Fatal(err)
	}
	client := appstream.NewFromConfig(cfg)

	err = noPaginator(client)
	if err != nil {
		log.Printf("DescribeImages call WITHOUT pagination failed: %v\n", err)
	}

	err = withPaginator(client)
	if err != nil {
		log.Printf("DescribeImages call with pagination failed: %v\n", err)
	}
}

func noPaginator(client *appstream.Client) error {
	var nextToken *string

	var i int
	for {
		input := &appstream.DescribeImagesInput{
			Type:      types.VisibilityTypePrivate,
			NextToken: nextToken,
		}

		resp, err := client.DescribeImages(context.TODO(), input)
		if err != nil {
			return err
		}

		log.Printf("got page %d with %d images", i, len(resp.Images))

		if resp.NextToken == nil {
			break
		}
		nextToken = resp.NextToken
		i++
	}

	return nil
}

func withPaginator(client *appstream.Client) error {
	input := &appstream.DescribeImagesInput{
		Type: types.VisibilityTypePrivate,
	}
	paginator := appstream.NewDescribeImagesPaginator(client, input)

	var i int
	for paginator.HasMorePages() {
		page, err := paginator.NextPage(context.TODO())
		if err != nil {
			return err
		}
		log.Printf("got page %d with %d images", i, len(page.Images))
		i++
	}

	return nil
}

Possible Solution

This may be related to the AppStream service module switching protocol/deserialization behavior in v1.64.0.

Observed locally:

  • service/appstream v1.63.0 uses awsAwsjson11_deserializeOpDescribeImages
  • service/appstream v1.64.0 uses smithyRpcv2cbor_deserializeOpDescribeImages

The generated CBOR deserializer may need to tolerate explicit CBOR null values for one or more optional Image fields returned by AppStream.

Additional Information/Context

No response

AWS Go SDK V2 Module Versions Used

AWS Go SDK V2 Module Versions Used:

Failing version:

github.com/aws/aws-sdk-go-v2/service/appstream v1.64.0

Known working version:

github.com/aws/aws-sdk-go-v2/service/appstream v1.63.0

Current updated module set in my project:

github.com/aws/aws-sdk-go-v2 v1.43.2
github.com/aws/aws-sdk-go-v2/config v1.32.33
github.com/aws/aws-sdk-go-v2/credentials v1.19.32
github.com/aws/aws-sdk-go-v2/service/appstream v1.64.3
github.com/aws/smithy-go v1.27.5

Compiler and Version used

go version go1.26.5 darwin/arm64

Operating System and version

macOS / darwin arm64

Metadata

Metadata

Assignees

Labels

bugThis issue is a bug.p0This issue is the highest priority

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions