ACS-MNS-PublishMessage

更新时间:
复制 MD 格式

Publishes a message to an MNS topic, which then pushes the message to subscription endpoints.

Template name

ACS-MNS-PublishMessage publishes a message to an MNS topic.

Execute Now

Template description

Publishes a message to a specified MNS topic. The topic then pushes the message to a subscription endpoint.

Template type

Automated

Owner

Alibaba Cloud

Input parameters

Parameter

Description

Data type

Required

Default value

Limit

topicName

The MNS topic name.

String

Yes

message

The message body to publish.

String

Yes

regionId

The region ID.

String

No

{{ ACS::RegionId }}

messageType

The message type: default, sms, or mail.

String

No

default

messageAttributes

Message attributes. Required when messageType is sms or mail.

Json

No

{}

OOSAssumeRole

The RAM role assumed by OOS.

String

No

""

Output parameters

Parameter

Description

Data type

message

Json

Required permissions

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "mns:PublishMessage"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Details

ACS-MNS-PublishMessage

Template content

FormatVersion: OOS-2019-06-01
Description:
  en: Publishes a message to a specified MNS topic. After the message is published, the topic pushes the message to an endpoint for consumption.
  name-en: ACS-MNS-PublishMessage
  categories:
    - security
Parameters:
  regionId:
    Type: String
    Label:
      en: Region ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  topicName:
    Label:
      en: Topic Name
    Type: String
  message:
    Label:
      en: Message
    Type: String
  messageType:
    Label:
      en: Message Type
    Description:
      en: "Specifies the message type. 'default': publishes a message to the MNS topic. 'sms': pushes the message to an SMS endpoint. 'mail': pushes the message to a mail endpoint."
    Type: String
    Default: default
    AllowedValues:
      - default
      - sms
      - mail
  messageAttributes:
    Label:
      en: Message Attributes
    Description:
      en: 'Required when messageType is ''sms'' or ''mail''. The content format for mail and SMS messages is different. For more information, see https://help.aliyun.com/document_detail/27497.html.'
    Type: Json
    Default: {}
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: publishMessage
    When:
      'Fn::Equals':
        - '{{ messageType }}'
        - default
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Publishes a message to the specified topic.
    Properties:
      Service: MNS
      API: PublishMessage
      Method: POST
      URI: '/topics/{{ topicName }}/messages'
      Headers: {}
      Parameters:
        RegionId: '{{ regionId }}'
        AccountId: '{{ ACS::AccountId }}'
      Body: '<?xml version="1.0" encoding="utf-8"?><Message xmlns="http://mns.aliyuncs.com/doc/v1/"><MessageBody>{{ message }}</MessageBody></Message>'
    Outputs:
      message:
        Type: Json
        ValueSelector: .
  - Name: publishSmsMessage
    When:
      'Fn::Equals':
        - '{{ messageType }}'
        - sms
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Publishes an SMS message to the specified topic and pushes it to an SMS endpoint.
    Properties:
      Service: MNS
      API: PublishMessage
      Method: POST
      URI: '/topics/{{ topicName }}/messages'
      Headers: {}
      Parameters:
        RegionId: '{{ regionId }}'
        AccountId: '{{ ACS::AccountId }}'
      Body: '<?xml version="1.0" encoding="utf-8"?><Message xmlns="http://mns.aliyuncs.com/doc/v1/"><MessageBody>{{ message }}</MessageBody><MessageAttributes><DirectSMS>{{ messageAttributes }}</DirectSMS></MessageAttributes></Message>'
    Outputs:
      message:
        Type: Json
        ValueSelector: .
  - Name: publishMailMessage
    When:
      'Fn::Equals':
        - '{{ messageType }}'
        - mail
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Publishes a mail message to the specified topic and pushes it to a mail endpoint.
    Properties:
      Service: MNS
      API: PublishMessage
      Method: POST
      URI: '/topics/{{ topicName }}/messages'
      Headers: {}
      Parameters:
        RegionId: '{{ regionId }}'
        AccountId: '{{ ACS::AccountId }}'
      Body: '<?xml version="1.0" encoding="utf-8"?><Message xmlns="http://mns.aliyuncs.com/doc/v1/"><MessageBody>{{ message }}</MessageBody><MessageAttributes><DirectMail>{{ messageAttributes }}</DirectMail></MessageAttributes></Message>'
    Outputs:
      message:
        Type: Json
        ValueSelector: .
Outputs:
  message:
    Type: Json
    Value:
      'Fn::If':
        - 'Fn::Equals':
            - default
            - '{{ messageType }}'
        - '{{ publishMessage.message }}'
        - 'Fn::If':
            - 'Fn::Equals':
                - sms
                - '{{ messageType }}'
            - '{{ publishSmsMessage.message }}'
            - '{{ publishMailMessage.message }}'