使用AWS CLI的 Amazon SNS 示例
以下代码示例演示了如何通过将 AWS Command Line Interface与 Amazon SNS 结合使用,来执行操作和实现常见场景。
操作是大型程序的代码摘录,必须在上下文中运行。您可以通过操作了解如何调用单个服务函数,还可以通过函数相关场景的上下文查看操作。
场景是向您演示如何通过在一个服务中调用多个函数或与其他 AWS 服务 结合来完成特定任务的代码示例。
每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。
操作
以下代码示例演示了如何使用 add-permission。
- AWS CLI
- 
             
                    向主题添加权限 以下 add-permission示例为 AWS 账户987654321098添加在 AWS 账户123456789012下使用指定主题的Publish操作的权限。aws sns add-permission \ --topic-arnarn:aws:sns:us-west-2:123456789012:MyTopic\ --labelPublish-Permission\ --aws-account-id987654321098\ --action-namePublish此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 AddPermission 。 
 
- 
                    
以下代码示例演示了如何使用 check-if-phone-number-is-opted-out。
- AWS CLI
- 
             
                    检查电话号码的 SMS 消息退出 以下 check-if-phone-number-is-opted-out示例将检查指定电话号码是否退出了当前 AWS 账户的 SMS 消息接收。aws sns check-if-phone-number-is-opted-out \ --phone-number+1555550100输出: { "isOptedOut": false }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 CheckIfPhoneNumberIsOptedOut 。 
 
- 
                    
以下代码示例演示了如何使用 confirm-subscription。
- AWS CLI
- 
             
                    确认订阅 以下 confirm-subscription命令将完成订阅名为my-topic的 SNS 主题时启动的确认过程。--token 参数来自发送到订阅调用中指定的通知端点的确认消息。aws sns confirm-subscription \ --topic-arnarn:aws:sns:us-west-2:123456789012:my-topic\ --token2336412f37fb687f5d51e6e241d7700ae02f7124d8268910b858cb4db727ceeb2474bb937929d3bdd7ce5d0cce19325d036bc858d3c217426bcafa9c501a2cace93b83f1dd3797627467553dc438a8c974119496fc3eff026eaa5d14472ded6f9a5c43aec62d83ef5f49109da7176391输出: { "SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f" }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 ConfirmSubscription 。 
 
- 
                    
以下代码示例演示了如何使用 create-platform-application。
- AWS CLI
- 
             
                    创建平台应用程序 以下 create-platform-application示例使用指定的平台凭证创建一个 Google Firebase 平台应用程序。aws sns create-platform-application \ --nameMyApplication\ --platformGCM\ --attributesPlatformCredential=EXAMPLEabcd12345jklm67890stuv12345bcdef输出: { "PlatformApplicationArn": "arn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication" }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CreatePlatformApplication 。 
 
- 
                    
以下代码示例演示了如何使用 create-topic。
- AWS CLI
- 
             
                    创建 SNS 主题 以下 create-topic示例将创建名为my-topic的 SNS 主题。aws sns create-topic \ --namemy-topic输出: { "ResponseMetadata": { "RequestId": "1469e8d7-1642-564e-b85d-a19b4b341f83" }, "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic" }有关更多信息,请参阅《AWS Command Line Interface 用户指南》中的将 AWS Command Line Interface与 Amazon SQS 和 Amazon SNS 结合使用。 - 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 CreateTopic 。 
 
- 
                    
以下代码示例演示了如何使用 delete-endpoint。
- AWS CLI
- 
             
                    删除平台应用程序端点 以下 delete-endpoint示例删除指定的平台应用程序端点。aws sns delete-endpoint \ --endpoint-arnarn:aws:sns:us-west-2:123456789012:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeleteEndpoint 。 
 
- 
                    
以下代码示例演示了如何使用 delete-platform-application。
- AWS CLI
- 
             
                    删除平台应用程序 以下 delete-platform-application示例删除指定的平台应用程序。aws sns delete-platform-application \ --platform-application-arnarn:aws:sns:us-west-2:123456789012:app/ADM/MyApplication此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 DeletePlatformApplication 。 
 
- 
                    
以下代码示例演示了如何使用 delete-topic。
- AWS CLI
- 
             
                    删除 SNS 主题 以下 delete-topic示例将删除指定的 SNS 主题。aws sns delete-topic \ --topic-arn"arn:aws:sns:us-west-2:123456789012:my-topic"此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 DeleteTopic 。 
 
- 
                    
以下代码示例演示了如何使用 get-endpoint-attributes。
- AWS CLI
- 
             
                    列出平台应用程序端点的属性 以下 get-endpoint-attributes示例列出指定平台应用程序端点的属性。aws sns get-endpoint-attributes \ --endpoint-arnarn:aws:sns:us-west-2:123456789012:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234输出: { "Attributes": { "Enabled": "true", "Token": "EXAMPLE12345..." } }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetEndpointAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 get-platform-application-attributes。
- AWS CLI
- 
             
                    列出平台应用程序的属性 以下 get-platform-application-attributes示例列出指定平台应用程序的属性。aws sns get-platform-application-attributes \ --platform-application-arnarn:aws:sns:us-west-2:123456789012:app/MPNS/MyApplication输出: { "Attributes": { "Enabled": "true", "SuccessFeedbackSampleRate": "100" } }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetPlatformApplicationAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 get-sms-attributes。
- AWS CLI
- 
             
                    列出默认 SMS 消息属性 以下 get-sms-attributes示例将列出发送 SMS 消息的默认属性。aws sns get-sms-attributes输出: { "attributes": { "DefaultSenderID": "MyName" } }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 GetSMSAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 get-subscription-attributes。
- AWS CLI
- 
             
                    检索主题的订阅属性 以下 get-subscription-attributes将显示指定订阅的属性。您可以从list-subscriptions命令输出中获取subscription-arn。aws sns get-subscription-attributes \ --subscription-arn"arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f"输出: { "Attributes": { "Endpoint": "my-email@example.com", "Protocol": "email", "RawMessageDelivery": "false", "ConfirmationWasAuthenticated": "false", "Owner": "123456789012", "SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f", "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic" } }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 GetSubscriptionAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 get-topic-attributes。
- AWS CLI
- 
             
                    检索主题的属性 以下 get-topic-attributes示例将显示指定主题的属性。aws sns get-topic-attributes \ --topic-arn"arn:aws:sns:us-west-2:123456789012:my-topic"输出: { "Attributes": { "SubscriptionsConfirmed": "1", "DisplayName": "my-topic", "SubscriptionsDeleted": "0", "EffectiveDeliveryPolicy": "{\"http\":{\"defaultHealthyRetryPolicy\":{\"minDelayTarget\":20,\"maxDelayTarget\":20,\"numRetries\":3,\"numMaxDelayRetries\":0,\"numNoDelayRetries\":0,\"numMinDelayRetries\":0,\"backoffFunction\":\"linear\"},\"disableSubscriptionOverrides\":false}}", "Owner": "123456789012", "Policy": "{\"Version\":\"2008-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:DeleteTopic\",\"SNS:GetTopicAttributes\",\"SNS:Publish\",\"SNS:RemovePermission\",\"SNS:AddPermission\",\"SNS:SetTopicAttributes\"],\"Resource\":\"arn:aws:sns:us-west-2:123456789012:my-topic\",\"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"0123456789012\"}}}]}", "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic", "SubscriptionsPending": "0" } }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 GetTopicAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 list-endpoints-by-platform-application。
- AWS CLI
- 
             
                    列出平台应用程序的端点 以下 list-endpoints-by-platform-application示例列出指定平台应用程序的端点和端点属性。aws sns list-endpoints-by-platform-application \ --platform-application-arnarn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication输出: { "Endpoints": [ { "Attributes": { "Token": "EXAMPLE12345..., "Enabled": "true" }, "EndpointArn": "arn:aws:sns:us-west-2:123456789012:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234" } ] }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListEndpointsByPlatformApplication 。 
 
- 
                    
以下代码示例演示了如何使用 list-phone-numbers-opted-out。
- AWS CLI
- 
             
                    列出 SMS 消息退出 以下 list-phone-numbers-opted-out示例将列出退出 SMS 消息接收的电话号码。aws sns list-phone-numbers-opted-out输出: { "phoneNumbers": [ "+15555550100" ] }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 ListPhoneNumbersOptedOut 。 
 
- 
                    
以下代码示例演示了如何使用 list-platform-applications。
- AWS CLI
- 
             
                    列出平台应用程序 以下 list-platform-applications示例列出 ADM 和 MPNS 的平台应用程序。aws sns list-platform-applications输出: { "PlatformApplications": [ { "PlatformApplicationArn": "arn:aws:sns:us-west-2:123456789012:app/ADM/MyApplication", "Attributes": { "SuccessFeedbackSampleRate": "100", "Enabled": "true" } }, { "PlatformApplicationArn": "arn:aws:sns:us-west-2:123456789012:app/MPNS/MyOtherApplication", "Attributes": { "SuccessFeedbackSampleRate": "100", "Enabled": "true" } } ] }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListPlatformApplications 。 
 
- 
                    
以下代码示例演示了如何使用 list-subscriptions-by-topic。
- AWS CLI
- 
             
                    列出与主题关联的订阅 以下 list-subscriptions-by-topic将检索与指定主题关联的 SNS 订阅列表。aws sns list-subscriptions-by-topic \ --topic-arn"arn:aws:sns:us-west-2:123456789012:my-topic"输出: { "Subscriptions": [ { "Owner": "123456789012", "Endpoint": "my-email@example.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic", "SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f" } ] }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListSubscriptionsByTopic 。 
 
- 
                    
以下代码示例演示了如何使用 list-subscriptions。
- AWS CLI
- 
             
                    列出 SNS 订阅 以下 list-subscriptions示例将显示 AWS 账户中的 SNS 订阅的列表。aws sns list-subscriptions输出: { "Subscriptions": [ { "Owner": "123456789012", "Endpoint": "my-email@example.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic", "SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f" } ] }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 ListSubscriptions 。 
 
- 
                    
以下代码示例演示了如何使用 list-tags-for-resource。
- AWS CLI
- 
             
                    列出主题的标签 以下 list-tags-for-resource示例列出指定 Amazon SNS 主题的标签。aws sns list-tags-for-resource \ --resource-arnarn:aws:sns:us-west-2:123456789012:MyTopic输出: { "Tags": [ { "Key": "Team", "Value": "Alpha" } ] }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 ListTagsForResource 。 
 
- 
                    
以下代码示例演示了如何使用 list-topics。
- AWS CLI
- 
             
                    列出 SNS 主题 以下 list-topics示例将列出 AWS 账户中的所有 SNS 主题。aws sns list-topics输出: { "Topics": [ { "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic" } ] }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 ListTopics 。 
 
- 
                    
以下代码示例演示了如何使用 opt-in-phone-number。
- AWS CLI
- 
             
                    选择接收 SMS 消息 以下 opt-in-phone-number示例选择指定的电话号码接收 SMS 消息。aws sns opt-in-phone-number \ --phone-number+15555550100此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 OptInPhoneNumber 。 
 
- 
                    
以下代码示例演示了如何使用 publish。
- AWS CLI
- 
             
                    示例 1:向主题发布消息 以下 publish示例将指定消息发布到指定 SNS 主题。该消息来自一个文本文件,您可以在该文件中包含换行符。aws sns publish \ --topic-arn"arn:aws:sns:us-west-2:123456789012:my-topic"\ --messagefile://message.txtmessage.txt的内容:Hello World Second Line输出: { "MessageId": "123a45b6-7890-12c3-45d6-111122223333" }示例 2:向电话号码发布 SMS 消息 以下 publish示例将消息Hello world!发布到电话号码+1-555-555-0100。aws sns publish \ --message"Hello world!"\ --phone-number+1-555-555-0100输出: { "MessageId": "123a45b6-7890-12c3-45d6-333322221111" }- 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 Publish 。 
 
- 
                    
以下代码示例演示了如何使用 put-data-protection-policy。
- AWS CLI
- 
             
                    设置数据保护策略 示例 1:拒绝发布者发布带有 CreditCardNumber 的消息 以下 put-data-protection-policy示例拒绝发布者发布带有 CreditCardNumber 的消息。aws sns put-data-protection-policy \ --resource-arnarn:aws:sns:us-east-1:123456789012:mytopic\ --data-protection-policy "{\"Name\":\"data_protection_policy\",\"Description\":\"Example data protection policy\",\"Version\":\"2021-06-01\",\"Statement\":[{\"DataDirection\":\"Inbound\",\"Principal\":[\"*\"],\"DataIdentifier\":[\"arn:aws:dataprotection::aws:data-identifier/CreditCardNumber\"],\"Operation\":{\"Deny\":{}}}]}"此命令不生成任何输出。 示例 2:从文件加载参数 以下 put-data-protection-policy将从文件加载参数。aws sns put-data-protection-policy \ --resource-arnarn:aws:sns:us-west-2:123456789012:MyTopic\ --data-protection-policyfile://policy.json此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 PutDataProtectionPolicy 。 
 
- 
                    
以下代码示例演示了如何使用 remove-permission。
- AWS CLI
- 
             
                    从主题中移除权限 以下 remove-permission示例从指定主题中移除权限Publish-Permission。aws sns remove-permission \ --topic-arnarn:aws:sns:us-west-2:123456789012:MyTopic\ --labelPublish-Permission此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 RemovePermission 。 
 
- 
                    
以下代码示例演示了如何使用 set-endpoint-attributes。
- AWS CLI
- 
             
                    设置端点属性 以下 set-endpoint-attributes示例禁用指定的平台应用程序端点。aws sns set-endpoint-attributes \ --endpoint-arnarn:aws:sns:us-west-2:123456789012:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234\ --attributesEnabled=false输出: { "Attributes": { "Enabled": "false", "Token": "EXAMPLE12345..." } }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 SetEndpointAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 set-platform-application-attributes。
- AWS CLI
- 
             
                    设置平台应用程序属性 以下 set-platform-application-attributes示例会将指定平台应用程序的EventDeliveryFailure属性设置为指定 Amazon SNS 主题的 ARN。aws sns set-platform-application-attributes \ --platform-application-arnarn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication\ --attributesEventDeliveryFailure=arn:aws:sns:us-west-2:123456789012:AnotherTopic此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 SetPlatformApplicationAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 set-sms-attributes。
- AWS CLI
- 
             
                    设置 SMS 消息属性 以下 set-sms-attributes示例将 SMS 消息的默认发件人 ID 设置为MyName。aws sns set-sms-attributes \ --attributesDefaultSenderID=MyName此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 SetSMSAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 set-subscription-attributes。
- AWS CLI
- 
             
                    设置订阅属性 以下 set-subscription-attributes示例将RawMessageDelivery属性设置为 SQS 订阅。aws sns set-subscription-attributes \ --subscription-arnarn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc\ --attribute-nameRawMessageDelivery\ --attribute-valuetrue此命令不生成任何输出。 以下 set-subscription-attributes示例将FilterPolicy属性设置为 SQS 订阅。aws sns set-subscription-attributes \ --subscription-arnarn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc\ --attribute-nameFilterPolicy\ --attribute-value "{ \"anyMandatoryKey\": [\"any\", \"of\", \"these\"] }"此命令不生成任何输出。 以下 set-subscription-attributes示例从 SQS 订阅中移除FilterPolicy属性。aws sns set-subscription-attributes \ --subscription-arnarn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc\ --attribute-nameFilterPolicy\ --attribute-value"{}"此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 SetSubscriptionAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 set-topic-attributes。
- AWS CLI
- 
             
                    为主题设置属性 以下 set-topic-attributes示例为指定主题设置DisplayName属性。aws sns set-topic-attributes \ --topic-arnarn:aws:sns:us-west-2:123456789012:MyTopic\ --attribute-nameDisplayName\ --attribute-valueMyTopicDisplayName此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI Command Reference》中的 SetTopicAttributes 。 
 
- 
                    
以下代码示例演示了如何使用 subscribe。
- AWS CLI
- 
             
                    订阅主题 以下 subscribe命令将电子邮件地址订阅到指定主题。aws sns subscribe \ --topic-arnarn:aws:sns:us-west-2:123456789012:my-topic\ --protocolemail\ --notification-endpointmy-email@example.com输出: { "SubscriptionArn": "pending confirmation" }- 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 Subscribe 。 
 
- 
                    
以下代码示例演示了如何使用 tag-resource。
- AWS CLI
- 
             
                    为主题添加标签 以下 tag-resource示例将元数据标签添加到指定 Amazon SNS 主题。aws sns tag-resource \ --resource-arnarn:aws:sns:us-west-2:123456789012:MyTopic\ --tagsKey=Team,Value=Alpha此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 TagResource 。 
 
- 
                    
以下代码示例演示了如何使用 unsubscribe。
- AWS CLI
- 
             
                    从主题取消订阅 以下 unsubscribe示例将从主题删除指定的订阅。aws sns unsubscribe \ --subscription-arnarn:aws:sns:us-west-2:0123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 Unsubscribe 。 
 
- 
                    
以下代码示例演示了如何使用 untag-resource。
- AWS CLI
- 
             
                    从主题中移除标签 以下 untag-resource示例从指定的 Amazon SNS 主题中移除任何带有指定键的标签。aws sns untag-resource \ --resource-arnarn:aws:sns:us-west-2:123456789012:MyTopic\ --tag-keysTeam此命令不生成任何输出。 - 
                    有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 UntagResource 。 
 
- 
                    
场景
以下代码示例演示如何为 Amazon SNS 推送通知创建平台端点。
- AWS CLI
- 
             
                    创建平台应用程序端点 以下 create-platform-endpoint示例使用指定令牌为指定平台应用程序创建端点。aws sns create-platform-endpoint \ --platform-application-arnarn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication\ --tokenEXAMPLE12345...输出: { "EndpointArn": "arn:aws:sns:us-west-2:1234567890:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234" }