21 October 2022
GraphQLMessages/SubscriptionsExtensibility
We have added support for IAM-based authentication for SNS and SQS Destinations. The new field 
authenticationMode is available on SQSDestination and SNSDestination and defines the mode of authentication. IAM-based authentication allows the Subscriptions API to send messages to a queue or publish to a topic, without explicitly providing credentials in the form of an accessKey and accessSecret. This simplifies key management for customers who maintain hundreds of queues and rotate credentials regularly. By providing permissions to an IAM user instead, the access needs to be set up once per topic and requires no additional key management. For backwards compatibility, the authenticationMode field is set to Credentials by default.Changes:
- [API] Added fields 
authenticationModeto SQSDestination and SNSDestination. - [API] Added AwsAuthenticationMode.
 - [GraphQL API] Added the following types to the GraphQL schema: 
AwsAuthenticationMode. - [GraphQL API] Changed the 
SQSDestinationInputtype:SQSDestinationInput.accessSecretinput field type changed fromString!toStringSQSDestinationInput.accessKeyinput field type changed fromString!toString- Input field 
authenticationModewas added toSQSDestinationInputtype 
 - [GraphQL API] Changed the 
SNSDestinationInputtype:SNSDestinationInput.accessSecretinput field type changed fromString!toStringSNSDestinationInput.accessKeyinput field type changed fromString!toString- Input field 
authenticationModewas added toSNSDestinationInputtype 
 - [GraphQL API] Changed the 
SQSDestinationtype:SQSDestination.accessSecretfield type changed fromString!toString- Added the 
authenticationModefield to theSQSDestinationtype. SQSDestination.accessKeyfield type changed fromString!toString
 - [GraphQL API] Changed the 
SNSDestinationtype:SNSDestination.accessSecretfield type changed fromString!toStringSNSDestination.accessKeyfield type changed fromString!toString- Added the 
authenticationModefield to theSNSDestinationtype. 
 
The following changes were introduced in terms of GraphQL SDL:
extend type SQSDestination {
  authenticationMode: AwsAuthenticationMode!
}
extend type SNSDestination {
  authenticationMode: AwsAuthenticationMode!
}
extend input SQSDestinationInput {
  authenticationMode: AwsAuthenticationMode = Credentials
}
extend input SNSDestinationInput {
  authenticationMode: AwsAuthenticationMode = Credentials
}
enum AwsAuthenticationMode {
  IAM
  Credentials
}