使用 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-arn
arn: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 命令参考》中的 CheckIfPhoneNumberIsOptedOut
。
-
以下代码示例演示了如何使用 confirm-subscription
。
- AWS CLI
-
确认订阅
以下
confirm-subscription
命令将完成订阅名为my-topic
的 SNS 主题时启动的确认过程。--token 参数来自发送到订阅调用中指定的通知端点的确认消息。aws sns confirm-subscription \ --topic-arn
arn: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 命令参考》中的 ConfirmSubscription
。
-
以下代码示例演示了如何使用 create-platform-application
。
- AWS CLI
-
创建平台应用程序
以下
create-platform-application
示例使用指定的平台凭证创建一个 Google Firebase 平台应用程序。aws sns create-platform-application \ --name
MyApplication
\ --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 \ --name
my-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 命令参考》中的 CreateTopic
。
-
以下代码示例演示了如何使用 delete-endpoint
。
- AWS CLI
-
删除平台应用程序端点
以下
delete-endpoint
示例删除指定的平台应用程序端点。aws sns delete-endpoint \ --endpoint-arn
arn: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-arn
arn: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 命令参考》中的 DeleteTopic
。
-
以下代码示例演示了如何使用 get-endpoint-attributes
。
- AWS CLI
-
列出平台应用程序端点的属性
以下
get-endpoint-attributes
示例列出指定平台应用程序端点的属性。aws sns get-endpoint-attributes \ --endpoint-arn
arn: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-arn
arn: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 命令参考》中的 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 命令参考》中的 GetTopicAttributes
。
-
以下代码示例演示了如何使用 list-endpoints-by-platform-application
。
- AWS CLI
-
列出平台应用程序的端点
以下
list-endpoints-by-platform-application
示例列出指定平台应用程序的端点和端点属性。aws sns list-endpoints-by-platform-application \ --platform-application-arn
arn: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 命令参考》中的 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 命令参考》中的 ListSubscriptions
。
-
以下代码示例演示了如何使用 list-tags-for-resource
。
- AWS CLI
-
列出主题的标签
以下
list-tags-for-resource
示例列出指定 Amazon SNS 主题的标签。aws sns list-tags-for-resource \ --resource-arn
arn: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 命令参考》中的 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.txt
message.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 命令参考》中的 Publish
。
-
以下代码示例演示了如何使用 put-data-protection-policy
。
- AWS CLI
-
设置数据保护策略
示例 1:拒绝发布者发布带有 CreditCardNumber 的消息
以下
put-data-protection-policy
示例拒绝发布者发布带有 CreditCardNumber 的消息。aws sns put-data-protection-policy \ --resource-arn
arn: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-arn
arn: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-arn
arn: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-arn
arn: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-arn
arn: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 \ --attributes
DefaultSenderID=MyName
此命令不生成任何输出。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 SetSMSAttributes
。
-
以下代码示例演示了如何使用 set-subscription-attributes
。
- AWS CLI
-
设置订阅属性
以下
set-subscription-attributes
示例会将RawMessageDelivery
属性设置为 SQS 订阅。aws sns set-subscription-attributes \ --subscription-arn
arn: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-arn
arn: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-arn
arn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc
\ --attribute-nameFilterPolicy
\ --attribute-value"{}"
此命令不生成任何输出。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 SetSubscriptionAttributes
。
-
以下代码示例演示了如何使用 set-topic-attributes
。
- AWS CLI
-
为主题设置属性
以下
set-topic-attributes
示例为指定主题设置DisplayName
属性。aws sns set-topic-attributes \ --topic-arn
arn:aws:sns:us-west-2:123456789012:MyTopic
\ --attribute-nameDisplayName
\ --attribute-valueMyTopicDisplayName
此命令不生成任何输出。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 SetTopicAttributes
。
-
以下代码示例演示了如何使用 subscribe
。
- AWS CLI
-
订阅主题
以下
subscribe
命令会将电子邮件地址订阅到指定主题。aws sns subscribe \ --topic-arn
arn: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-arn
arn:aws:sns:us-west-2:123456789012:MyTopic
\ --tagsKey=Team,Value=Alpha
此命令不生成任何输出。
-
有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 TagResource
。
-
以下代码示例演示了如何使用 unsubscribe
。
- AWS CLI
-
从主题取消订阅
以下
unsubscribe
示例从主题删除指定的订阅。aws sns unsubscribe \ --subscription-arn
arn: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-arn
arn: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-arn
arn: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" }