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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue is a bug.p1This is a high priority issueservice-apiThis issue is due to a problem in a service API, not the SDK implementation.upstreamedThis issue has been upstreamed to an internal team, check the issue comments for a ticket ID.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions