一、用途 awsclaw-sns 用于管理 Amazon SNS 的主题、订阅、发布、平台应用、SMS 与端点。当用户询问 SNS 主题或通知、需要向主题发布消息、查看订阅或端点、询问 SMS、平台应用或推送通知、检查数据保护策略或沙箱状态、创建或删除主题/订阅/端点,以及配置主题或订阅属性时,可以使用此技能。
二、主要能力 该技能通过 SNSTool 执行 AWS SNS 命令,调用时始终需要提供 params 对象。可用命令覆盖以下几类:
查询类命令:
- ListTopics:列出所有 SNS 主题,可选参数 NextToken 用于分页。
- GetTopicAttributes:获取主题属性,如策略、订阅数量等,必填 TopicArn。
- ListSubscriptions:列出所有主题下的订阅,可选 NextToken。
- ListSubscriptionsByTopic:列出指定主题的订阅,必填 TopicArn,可选 NextToken。
- GetSubscriptionAttributes:获取订阅属性,必填 SubscriptionArn。
- ListTagsForResource:列出 SNS 资源标签,必填 ResourceArn。
- ListPlatformApplications:列出推送通知平台应用,可选 NextToken。
- GetPlatformApplicationAttributes:获取平台应用属性,必填 PlatformApplicationArn。
- ListEndpointsByPlatformApplication:列出平台应用的端点,必填 PlatformApplicationArn。
- GetEndpointAttributes:获取端点属性,必填 EndpointArn。
- GetSMSAttributes:获取 SMS 发送属性,可选 attributes 数组,如 DefaultSMSType、MonthlySpendLimit。
- GetSMSSandboxAccountStatus:检查账户是否处于 SMS 沙箱。
- GetDataProtectionPolicy:获取主题的数据保护策略,必填 ResourceArn。
- CheckIfPhoneNumberIsOptedOut:检查号码是否已退订,必填 phoneNumber(E.164 格式)。
- ListPhoneNumbersOptedOut:列出已退订的号码。
- ListOriginationNumbers:列出发起号码。
发布命令:
- Publish:向主题发布消息,必填 TopicArn 与 Message,可选 Subject(用于邮件订阅)、TargetArn(直接发布)、phoneNumber(短信,E.164)、MessageStructure(设为 json 可实现按协议定制消息)、MessageAttributes(自定义消息属性)。
生命周期命令:
- CreateTopic:创建新主题,如名称 alerts。
- Subscribe:将端点订阅到主题,需提供 TopicArn、Protocol 与 Endpoint。
- ConfirmSubscription:确认订阅(针对基于令牌的订阅),需提供 TopicArn 与 Token。
- Unsubscribe:取消订阅,需提供 SubscriptionArn。
- SetTopicAttributes:更新主题属性,需提供 TopicArn、AttributeName 与 AttributeValue。
- SetSubscriptionAttributes:更新订阅属性,如 RawMessageDelivery。
- CreatePlatformApplication:创建平台应用,需提供 Name、Platform 与 Attributes(如 PlatformCredential)。
- CreatePlatformEndpoint:创建平台端点,需提供 PlatformApplicationArn 与 Token。
- DeleteTopic:删除主题,需提供 TopicArn。
- DeletePlatformApplication:删除平台应用,需提供 PlatformApplicationArn。
- DeleteEndpoint:删除端点,需提供 EndpointArn。
- TagResource:为 SNS 资源添加标签,需提供 ResourceArn 与 Tags。
- UntagResource:移除 SNS 资源标签,需提供 ResourceArn 与 TagKeys。
三、使用方式 通过 SNSTool 调用命令,每次调用都需提供 params 对象,例如: 列出主题:{ "command": "ListTopics", "params": {} } 获取主题属性:{ "command": "GetTopicAttributes", "params": { "TopicArn": "arn:aws:sns:us-east-1:123456789012:my-topic" } } 发布消息:{ "command": "Publish", "params": { "TopicArn": "arn:aws:sns:...", "Message": "Hello World", "Subject": "Test" } } 订阅主题:{ "command": "Subscribe", "params": { "TopicArn": "arn:aws:sns:...:alerts", "Protocol": "email", "Endpoint": "team@example.com" } } 创建主题:{ "command": "CreateTopic", "params": { "Name": "alerts" } }
四、适用场景 适用于需要运维或排查 SNS 通知、推送通知与短信发送的场景,例如查看主题与订阅状态、发布测试消息、管理平台应用与端点、检查短信退订与沙箱状态、配置数据保护策略与订阅属性等。
五、相关服务
- SNS → SQS:SNS 主题常订阅 SQS 队列以实现扇出,可用 ListSubscriptionsByTopic 查找 SQS 订阅,再用 SQSTool 查看队列。
- SNS → Lambda:SNS 可触发 Lambda 函数,可用 ListSubscriptionsByTopic 查找 Lambda 订阅。
- SNS → S3:S3 事件通知可发布到 SNS,可用 S3Tool 的 GetBucketNotificationConfiguration 查找主题。
- SNS → CloudWatch:SNS 投递指标位于 CloudWatch Metrics。
- SNS → CloudFormation:SNS 资源可由 CloudFormation 堆栈管理。
六、限制 技能文档未说明计费、价格、平台支持范围或性能限制,相关事实暂未提供。使用 AWS SNS 命令时需要有效的 ARN、E.164 号码等必需参数,错误或缺失参数可能导致调用失败。