Skip to content

Amazon SNS channel binding

Contains information about the channel representation in Amazon SNS.

We represent an AsyncAPI Channel with a Topic in SNS. The bindings here allow definition of a topic within SNS. We provide properties on the binding that allow creation of a topic in infrastructure-as-code scenarios.

WARNING

Be aware that although the binding offers that flexibility, it may be more maintainable to specify properties such as SNS Access Control Policy outside AsyncAPI.

SNS supports many optional properties.

To mark a channel as SNS, but use default values for the channel properties, just use an empty object {}.

Structure

copy

Examples

json
{
  "name": "my-sns-topic",
  "policy": {
    "statements": [
      {
        "effect": "Allow",
        "principal": "*",
        "action": "SNS:Publish"
      }
    ]
  }
}

Changelog

Added

policy.statements.resource

The resource(s) that this policy applies to.

json
{ 
  "resource": { 
      "description": "The resource(s) that this policy applies to.", 
      "oneOf": [ 
        { 
          "type": "string"
        }, 
        { 
          "type": "array", 
          "items": { 
              "type": "string"
          } 
        } 
      ] 
    } 
} 

policy.statements.condition

Specific circumstances under which the policy grants permission

json
{
  "condition": { 
    "description": "Specific circumstances under which the policy grants permission", 
    "type": "object", 
    "patternProperties": { 
      ".*": { 
        "type": "object", 
        "patternProperties": { 
          ".*": { 
            "oneOf": [ 
              { 
                "type": "string"
              }, 
              { 
                "type": "array", 
                "items": { 
                  "type": "string"
                } 
              } 
            ] 
          } 
        } 
      } 
    } 
  } 
}

Changed

policy.statements.principal

The AWS account(s) or resource ARN(s) that this statement applies to.

json
{
  "principal": {
    "description": "The AWS account(s) or resource ARN(s) that this statement applies to.",
    "oneOf": [
      {
        "type": "string"
      },
      { 
        "type": "object", 
        "properties": { 
          "AWS": { 
            "oneOf": [ 
              { 
                "type": "string"
              }, 
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ] 
          } 
        }, 
        "required": [ 
          "AWS"
        ], 
        "additionalProperties": false
      }, 
      { 
        "type": "object", 
        "properties": { 
          "Service": { 
            "oneOf": [ 
              { 
                "type": "string"
              }, 
              { 
                "type": "array", 
                "items": { 
                  "type": "string"
                } 
              } 
            ] 
          } 
        }, 
        "required": [ 
          "Service"
        ], 
        "additionalProperties": false
      }
    ]
  }
}