Amazon SNS 示例使用 AWS CLI - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon SNS 示例使用 AWS CLI

下列程式碼範例說明如何透過 AWS Command Line Interface 搭配 Amazon SNS 使用來執行動作和實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境和跨服務範例中查看內容中的動作。

Scenarios (案例) 是向您展示如何呼叫相同服務中的多個函數來完成特定任務的程式碼範例。

每個範例都包含一個連結 GitHub,您可以在其中找到如何在內容中設定和執行程式碼的指示。

動作

下列程式碼範例會示範如何使用add-permission

AWS CLI

若要將權限新增至主題

下列add-permission範例會新增 AWS 帳戶使987654321098Publish動作與 AWS 帳戶底下指定主題的權限123456789012

aws sns add-permission \ --topic-arn arn:aws:sns:us-west-2:123456789012:MyTopic \ --label Publish-Permission \ --aws-account-id 987654321098 \ --action-name Publish

此命令不會產生輸出。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考AddPermission中的。

下列程式碼範例會示範如何使用check-if-phone-number-is-opted-out

AWS CLI

檢查電話號碼是否停止接收簡訊

下列check-if-phone-number-is-opted-out範例會檢查指定的電話號碼是否已選擇不接收來自目前 AWS 帳戶的 SMS 訊息。

aws sns check-if-phone-number-is-opted-out \ --phone-number +1555550100

輸出:

{ "isOptedOut": false }

下列程式碼範例會示範如何使用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 \ --token 2336412f37fb687f5d51e6e241d7700ae02f7124d8268910b858cb4db727ceeb2474bb937929d3bdd7ce5d0cce19325d036bc858d3c217426bcafa9c501a2cace93b83f1dd3797627467553dc438a8c974119496fc3eff026eaa5d14472ded6f9a5c43aec62d83ef5f49109da7176391

輸出:

{ "SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f" }

下列程式碼範例會示範如何使用create-platform-application

AWS CLI

若要建立平台應用程式

以下create-platform-application示例使用指定的平台憑據創建 Google Firebase 平台應用程序。

aws sns create-platform-application \ --name MyApplication \ --platform GCM \ --attributes PlatformCredential=EXAMPLEabcd12345jklm67890stuv12345bcdef

輸出:

{ "PlatformApplicationArn": "arn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication" }

下列程式碼範例會示範如何使用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 令列介面使用者指南中的 Amazon SQS 和 Amazon SNS 使用AWS 命令列界面

  • 如需 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

此命令不會產生輸出。

下列程式碼範例會示範如何使用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..." } }

下列程式碼範例會示範如何使用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" } }

下列程式碼範例會示範如何使用get-sms-attributes

AWS CLI

列出預設簡訊屬性

下列 get-sms-attributes 範例會列出傳送簡訊的預設屬性。

aws sns get-sms-attributes

輸出:

{ "attributes": { "DefaultSenderID": "MyName" } }
  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 GetSMSAttributes

下列程式碼範例會示範如何使用get-subscription-attributes

AWS CLI

若要擷取主題的訂閱屬性

下列項目get-subscription-attributes顯示指定之訂閱的屬性。您可以subscription-arn從命list-subscriptions令的輸出中獲取。

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" } }

下列程式碼範例會示範如何使用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" } }

下列程式碼範例會示範如何使用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" } ] }

下列程式碼範例會示範如何使用list-phone-numbers-opted-out

AWS CLI

列出停止接收簡訊

下列 list-phone-numbers-opted-out 範例會列出選擇停止接收簡訊的電話號碼。

aws sns list-phone-numbers-opted-out

輸出:

{ "phoneNumbers": [ "+15555550100" ] }

下列程式碼範例會示範如何使用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" } } ] }

下列程式碼範例會示範如何使用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" } ] }

下列程式碼範例會示範如何使用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" } ] }

下列程式碼範例會示範如何使用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" } ] }

下列程式碼範例會示範如何使用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" \ --message file://message.txt

message.txt 的內容:

Hello World Second Line

輸出:

{ "MessageId": "123a45b6-7890-12c3-45d6-111122223333" }

範例 2:將簡訊發布至電話號碼

下列 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-policy file://policy.json

此命令不會產生輸出。

下列程式碼範例會示範如何使用remove-permission

AWS CLI

若要移除主題的權限

下列remove-permission範例會移除指定主題的權限Publish-Permission

aws sns remove-permission \ --topic-arn arn:aws:sns:us-west-2:123456789012:MyTopic \ --label Publish-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 \ --attributes Enabled=false

輸出:

{ "Attributes": { "Enabled": "false", "Token": "EXAMPLE12345..." } }

下列程式碼範例會示範如何使用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 \ --attributes EventDeliveryFailure=arn:aws:sns:us-west-2:123456789012:AnotherTopic

此命令不會產生輸出。

下列程式碼範例會示範如何使用set-sms-attributes

AWS CLI

若要設定簡訊屬性

下列 set-sms-attributes 範例會將簡訊的預設寄件者 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-name RawMessageDelivery \ --attribute-value true

此命令不會產生輸出。

下列 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-name FilterPolicy \ --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-name FilterPolicy \ --attribute-value "{}"

此命令不會產生輸出。

下列程式碼範例會示範如何使用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-name DisplayName \ --attribute-value MyTopicDisplayName

此命令不會產生輸出。

下列程式碼範例會示範如何使用subscribe

AWS CLI

訂閱主題

下列 subscribe 命令會將電子郵件地址訂閱至指定的主題。

aws sns subscribe \ --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic \ --protocol email \ --notification-endpoint my-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 \ --tags Key=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-keys Team

此命令不會產生輸出。

  • 如需 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 \ --token EXAMPLE12345...

輸出:

{ "EndpointArn": "arn:aws:sns:us-west-2:1234567890:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234" }