<CF_HOME>/cfusion/bin に移動します。
概要
Amazon Simple Notification Service(SNS)は、サブスクライブしているエンドポイントやクライアントにアプリケーションからプッシュされるメッセージを管理するためのクラウドベースのサービスです。Amazon SNS を使用すると、API または AWS 管理コンソールを通じて様々なサービスやアプリケーションにメッセージをプッシュできます。メッセージは、いったんサービスに公開すれば、様々な受信者に何度でも送信できます。
Amazon SNS の使用を開始するには、まずトピックを作成します。これは、サブスクライバーが通知を受け取るためのアクセスポイントになります。サブスクライバー向けの更新情報がある場合は、トピックにメッセージを公開します。これにより、Amazon SNS がメッセージをすべてのサブスクライバーに確実に配信するようになります。
詳しくは、Amazon SNS を参照してください。
はじめに
awssns パッケージのインストール
Zip インストーラーを使用する場合に限り、Adobe ColdFusion(2021 リリース)はモジュール化されています。デフォルトでは、AWS SNS のモジュールはインストールされていません。最初の手順は、SNS パッケージを ColdFusion にインストールすることです。
注意:GUI インストーラーを使用する場合、これらのパッケージは事前にインストールされています。
SNS のパッケージは、awssns という名前です。
awssns パッケージをインストールするには、ColdFusion Administrator のパッケージマネージャーページを使用するか、以下の手順に従います。
-
-
次のコマンドを入力します。
- Windows:cfpm.bat
- Linux:cfpm.sh
-
コマンド install awssns を入力します。
AWS SNS パッケージがインストールされるのを待ちます。
詳しくは、ColdFusion パッケージマネージャーを参照してください。
AWS SNS にアクセスするための資格情報の取得
AWS を操作する場合、資格情報を検証し、リクエストしているリソースにアクセスするための権限を持っているかどうかをチェックするために、AWS セキュリティ資格情報を指定します。
AWS は、セキュリティ資格情報を使用して、リクエストを認証および承認します。
AWS アクセスキー ID および AWS シークレットアクセスキーを取得する必要があります。詳しくは、アクセスキーを参照してください。
クラウドサービス資格情報および設定の追加
Adobe ColdFusion(2021 リリース)には、様々なクラウドサービスにアクセスするためのオブジェクトを作成するためにハンドルを提供するメソッド getCloudService() があります。
サービスハンドルのシンタックスを次に示します。
service=getCloudService(cloudCred,cloudConfig)
- cloudCred:クラウドサービスの資格情報を定義します。構造体または文字列です(資格情報エイリアスとも呼ばれます)。
- cloudConfig:クラウドサービス設定の詳細を定義します。構造体または文字列です(設定エイリアスとも呼ばれます)。
AWS 資格情報を獲得したら、次のいずれかの方法でこれらの資格情報を宣言する必要があります。その後でのみ、これらの資格情報を使用して SNS オブジェクトを作成でき、それからそのオブジェクトを使用して様々な SNSメソッドを呼び出すことができます。
ColdFusion Administrator
資格情報の設定
ColdFusion Administrator で、データとサービス/クラウド資格情報をクリックします。
エイリアスは、クラウドサービスおよびその設定の詳細の名前付き表現です。ColdFusion Administrator を使用して設定エイリアスを設定できます。
詳細を入力したら、「資格情報を追加」をクリックします。
設定オプションの設定
ColdFusion Administrator で、「データとサービス/クラウド設定」をクリックします。
設定エイリアス、ベンダー、サービスの名前など、次の詳細を入力します。
設定オプションを追加した後、さらにいくつかのオプションを追加する必要がある場合があります。次に表示される画面で追加できます。場合によって追加する必要があるオプションを次に示します。
- リクエスト設定
- クライアント設定
- プロキシ設定
- 再試行ポリシー
- 再試行条件
詳しくは、クラウド設定オプションを参照してください。
オブジェクトの作成
SNS 資格情報および設定オプションのエイリアスを作成したら、cloudService API を使用してオブジェクトを作成し、次のコードを CFM に含めることができます。
snsObject= getCloudService("snsCred", "snsConf")
Application.cfc
Application.cfc で SNS 資格情報および設定オプションを指定できます。次に例を示します。
component { this.name="AWS_STD_Queue"; void function onApplicationStart(){ application.awsCred = { "alias" : "aws_std_queue", "vendorName" : "AWS", "region" : "us-east-1", "secretAccessKey" : "xxxxxxxxxxxxxxxxx", "accessKeyId" : "xxxxxxxxxxxxxxxx" } application.snsConf = { "serviceName" : "SNS" } application.sqsConf ={ "serviceName" : "SQS" } } }
オブジェクトの作成
snsObject = getCloudService(application.awsCred, application.snsConf)
CFM ページ上
CFM ページでは、以下に示す 4 つの方法のいずれかで SNS 資格情報および設定オプションを指定できます。
資格情報エイリアスおよび設定エイリアス
SNS 資格情報および設定オプション用のエイリアスを作成したら、次に示すように、getCloudService ハンドルでそれらのエイリアスを使用できます。
<cfscript> // ColdFusion Administrator で資格情報エイリアスと設定エイリアスを定義 sns=cloudService("awsCred","snsConf") // 以下にコードを記述 ...........</cfscript>
資格情報エイリアスおよび設定オプションの構造体
<cfscript> // 資格情報エイリアスとサービス設定構造体を使用 snsConf = { "alias":"snsConf", "serviceName" : "SNS", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } sns= cloudService("snsCred", snsConf) // 以下にコードを記述 .....................</cfscript>
設定エイリアスおよび資格情報の構造体
<cfscript> // 設定エイリアスとサービス資格情報構造体を使用 // SNS 資格情報 snsCreds={ "vendorName":"AWS", "alias": "snsCred", "region":"us-east-2", "accessKeyId": "access key", "secretAccessKey": "secret access" } sns= cloudService(snsCreds, "snsConf") // 以下にコードを記述 .....................................</cfscript>
資格情報と設定オプションの両方の構造体
<cfscript> // クラウドの資格情報と設定の構造体を使用 snsCred={ "vendorName":"AWS", "alias": "sns_cred_alias", "region":"us-east-2", "accessKeyId": "access key", "secretAccessKey": "secret access key" } snsConf = { "alias":"sns_conf_alias", "serviceName" : "SNS", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } sns = cloudService(snsCred, snsConf ) // 以下にコードを記述 ...................................................................</cfscript>
Admin API
また、Admin API を使用して SNS 資格情報および設定オプションを追加することもできます。資格情報および設定を追加するためのメソッドは、cloud.cfc で使用できます。
メソッド addCredential(struct credential) および addServiceConfig(struct config) の使用例を以下に示します。
資格情報の追加
<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator") adminObj.login("admin") // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject("component","cfide.adminapi.cloud") // 資格情報構造体を定義 credentialStruct={ "alias" : "CredSNS", "vendorName" : "AWS", "region" : "us-east-2", "secretAccessKey" : "secret access key", "accessKeyId" : "access key" } // 資格情報の credentialStruct を追加 try{ cloudObj.addCredential(credentialStruct) writeOutput("Credentials added successfully") } catch(any e){ writeDump(e) } </cfscript>
設定の追加
<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator") adminObj.login("admin") // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject("component","cfide.adminapi.cloud") // 設定構造体を定義 configStruct={ "alias":"ConfSNS", "serviceName":"SNS", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } // 設定の configStruct を追加 try{ cloudObj.addServiceConfig(configStruct) writeOutput("Configuration service added successfully") } catch(any e){ writeDump(e) } </cfscript>
CFSetup
CFSetup 設定ユーティリティを使用して SNS の資格情報と設定をセットアップすることもできます。
クラウド資格情報の追加
add cloudcredential credentialAlias=snscred accesskeyid=<access> secretaccesskey=<secret> region=ap-southeast-1 vendorname=AWS
資格情報の設定
set cloudcredential snscred secretaccesskey=awssecret
クラウド設定の追加
add cloudconfiguration serviceName=SNS alias=snsConfig
設定の設定
set cloudconfiguration conf1 alias=conf2
SNS API の一覧
SNSClient API |
SNSTopic API |
SNSSubscription API |
---|---|---|
|
|
|
トピックの作成
SNS では、トピックは、コミュニケーションに役立つ論理的なアクセスポイントになります。トピックでは、Amazon SQS、HTTPS、メールアドレスなどの複数のエンドポイントを組み合わせることができます。プロデューサーのメッセージを様々なコンシューマーにブロードキャストするには、通常は、そのプロデューサーのトピック作成します。
詳しくは、CreateTopic を参照してください。
シンタックス
createTopic(topicName,topicAttributes)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
topicName |
作成するトピックの名前。 |
文字列 |
はい |
topicAttributes |
構造体 |
いいえ |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピック属性を定義 createTopicMetadata = { "tags" = [ {"key" = "key1","value" = "value1"}, {"key" = "key2","value" = "value2"} ], "attributes" = { "DisplayName" = "This is a sample display name."} } try{ topicResponse = sns.createTopic("NewTopic",createTopicMetadata) writeOutput("Successfully created an SNS topic") writeDump(topicResponse) } catch(any e){ writeDump(e) } </cfscript>
サーバー側の暗号化を使用したトピックの作成
サーバー側の暗号化(SSE)では、暗号化されたトピックで機密データを送信できます。SSE は、AWS Key Management Service(AWS KMS)で管理されたキーを使用して、Amazon SNS トピック内のメッセージの内容を保護します。
SSE では、Amazon SNS でメッセージが受信されるとすぐに、メッセージを暗号化します。メッセージは暗号化された形式で格納され、送信時にのみ Amazon SNS で復号化されます。詳しくは、SSE による SNS データの保護に関する説明を参照してください。
SNS でトピックを作成する場合は、トピック作成メタデータで KmsMasterKeyId 属性を指定する必要があります。詳しくは、重要な用語を参照してください 。 例については、AWS Key Management Service API リファレンスの KeyId を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf); // トピックを作成 myTopic = sns.createTopic("TopicSSE") // SSE メタデータを設定 setTopicAttribsMetadata = { "attributeName" = "KmsMasterKeyId", "attributeValue" = "arn:aws:kms:us-east-1:xxxxxxxx:key/xxxxxxxxxxx" } // トピックに SSE 属性を設定 setTopicAttribsResponse=myTopic.setAttributes(setTopicAttribsMetadata) writeDump(setTopicAttribsResponse) </cfscript>
トピックの ARN の取得
トピックを作成したら、そのトピックの Amazon リソース名(ARN)を取得することができます。この名前は、トピックを一意に識別するためのものです。
詳しくは、Amazon リソースネーム(ARN)を参照してください。
シンタックス
getTopicArn()
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf); // トピックを作成 myTopic = sns.createTopic("TopicARN") myArn=myTopic.getTopicArn() writeOutput("The ARN of the topic is: " & myArn) </cfscript>
トピックの削除
不要になったサブスクリプションまたはトピックを削除するには、まず、トピックからサブスクライブ解除する必要があります。
詳しくは、サブスクリプションとトピックの削除に関する説明を参照してください。
シンタックス
deleteTopic(topicArn)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
topicArn |
削除するトピックの ARN。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("DeleteTopic") // トピックの ARN を取得 topicArn = topic.getTopicArn() try{ // トピックを削除 deleteTopicResponse = sns.deleteTopic(topicArn) writeOutput("Topic deleted successfully") writeDump(deleteTopicResponse) } catch(any e){ writeDump(e) } </cfscript>
トピックリストの取得
作成されたすべてのトピックの一覧を取得します。関数を呼び出すたびに、最大 100 件のトピックのリストが返されます。さらにトピックがある場合は、NextToken も返されます。ListTopics 呼び出しで NextToken パラメーターを使用すると、残りの結果を取得できます。
詳しくは、ListTopics を参照してください。
シンタックス
listTopics(nextToken)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
nextToken |
前の ListTopics 呼び出しで返されたトークン。 |
文字列 |
いいえ |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf); // すべてのトピックをリストアップ topicObj = snsObj.listTopics(); writeDump(topicObj) // nextToken を取得 nextTokenVal = topicObj.nextToken; // nextToken を使用してすべてのトピックをリストアップ listNextTopicObj = snsObj.listTopics(nextTokenVal) writeDump(listNextTopicObj) </cfscript>
トピック属性の設定
トピックの属性に新しい値を設定します。
詳しくは、SetTopicAttributes を参照してください。
シンタックス
setTopicAttributes(topicAttributes)
パラメーター
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピック属性を定義 createTopicMetadata = { "tags" = [ {"key" = "key1","value" = "value1"}, {"key" = "key2","value" = "value2"} ], "attributes" = { "DisplayName" = "This is a sample display name."} } // トピックを作成 topicObj=sns.createTopic("NewTopic",createTopicMetadata) // トピックの ARN を取得 topicArn = topicObj.getTopicArn() // 設定する属性のメタデータ setTopicAttribsMetadata = { "topicArn"= topicArn, "attributeName" = "DisplayName", "attributeValue" = "value" } try{ setTopicAttrResponse = sns.setTopicAttributes(setTopicAttribsMetadata) writeOutput("Topic attributes set successfully") writeDump(setTopicAttrResponse) } catch(any e){ writeDump(e) } </cfscript>
トピック属性の取得
トピックのすべてのプロパティを取得します。
詳しくは、GetTopicAttributes を参照してください。
シンタックス
getTopicAttributes(topicARN)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
topicArn |
取得する属性が含まれているトピックの ARN。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピック属性を定義 createTopicMetadata = { "tags" = [ {"key" = "key1","value" = "value1"}, {"key" = "key2","value" = "value2"} ], "attributes" = { "DisplayName" = "This is a sample display name."} } // トピックを作成 topicObj=sns.createTopic("TopicAttributes",createTopicMetadata) // トピックの ARN を取得 topicArn = topicObj.getTopicArn() // 設定する属性のメタデータ setTopicAttribsMetadata = { "topicArn"= topicArn, "attributeName" = "DisplayName", "attributeValue" = "value" } // トピック属性を設定 sns.setTopicAttributes(setTopicAttribsMetadata) // トピック属性を取得 getTopicAttributeResponse=sns.getTopicAttributes(topicArn) writeDump(getTopicAttributeResponse) </cfscript>
トピックへのタグ付け
Amazon SNS トピックのメタデータタグを追加、削除、リスト取得して、Amazon SNS リソースを追跡します(リソーストラッキング)。
詳しくは、Amazon SNS タグを参照してください。
シンタックス
tagTopic(topicArn,tags)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
topicArn |
タグを追加するトピックの ARN。 |
文字列 |
はい |
tags |
トピックに追加するタグのリスト。 |
構造体 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("TagTopic") // トピックの ARN を取得 topicArn= topic.getTopicArn() // タグ付けのメタデータを設定 tagTopicMetadata = { "tags" = [ {"key" = "Team","value" = "Development"}, {"key" = "Environment","value" = "Production"} ] } // トピックにタグ付け try{ tagTopicResponse = sns.tagTopic(topicArn,tagTopicMetadata) writeOutput("Topic has been tagged successfully") writeDump(tagTopicResponse) } catch (any e){ writeDump(e) } </cfscript>
トピックタグリストの取得
指定されたトピックのタグの一覧を取得します。
詳しくは、 ListTagsForResource を参照してください。
シンタックス
listTopicTags(topicArn)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
topicArn |
目的のタグが含まれているトピックの ARN。 |
文字列 |
はい |
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("UntagTopic") // トピックの ARN を取得 topicArn=topic.getTopicArn() // タグ付けのメタデータ tagTopicMetadata = { "tags" = [ {"key" = "Team","value" = "Development"}, {"key" = "Environment","value" = "Production"} ] } // トピックにタグ付け sns.tagTopic(topicArn,tagTopicMetadata) // トピックのタグをリストアップ res=sns.listTopicTags(topicArn) writeOutput("The list of tags are:") writeDump(res.tags) </cfscript>
トピックのタグ付け解除
指定された Amazon SNS トピックからタグを削除します。
詳しくは、UntagResource を参照してください。
シンタックス
untagTopic(topicArn,tags)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
topicArn |
タグを削除するトピックの ARN。 |
文字列 |
はい |
tags |
指定されたトピックから削除するタグキーのリスト。 |
配列 |
はい |
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("UntagTopic") // トピックの ARN を取得 topicArn=topic.getTopicArn() // タグ付けのメタデータ tagTopicMetadata = { "tags" = [ {"key" = "Team","value" = "Development"}, {"key" = "Environment","value" = "Production"} ] } // トピックにタグ付け sns.tagTopic(topicArn,tagTopicMetadata) // タグ付け解除のメタデータ untagTopicMetadata = { "tagKeys" = ["Team"] } try{ res = sns.untagTopic(topicArn,untagTopicMetadata) writeOutput("Topic untagged successfully" & "<br/>") writeOutput("Tags left after untagging are:") writeDump(topic.listTags().tags) } catch(any e){ writeDump(e) } </cfscript>
トピックのサブスクライブ
エンドポイントをトピックに登録し、サブスクリプションを確認すると、関連付けられたトピックに公開されたメッセージの受信をエンドポイントが開始します。トピックに公開されたメッセージを受信するには、エンドポイント(AWS Lambda、Amazon SQS、HTTP/S、メールアドレスなど)をトピックに登録する必要があります。エンドポイントをトピックに登録し、サブスクリプションを確認すると、関連付けられたトピックに公開されたメッセージの受信をエンドポイントが開始します。
詳しくは、トピックにエンドポイントをサブスクライブするを参照してください。
シンタックス
subscribe(subscription)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
subscription |
属性マップ 次の属性のキーと値のペアです。
エンドポイント 次のエンドポイントがサポートされています。
プロトコル 次のプロトコルがサポートされています。
ReturnSubscriptionArn:TRUE の場合は、サブスクリプションリクエストのサブスクリプション ARN を返します。 TopicARN:サブスクライブするトピックの ARN。
|
構造体 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例 1
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) topic = sns.createTopic("SMSSubscription"); subscribeMetadata = { "topicArn" = topic.getTopicArn(), "endpoint" = "<your phone number>", "protocol" = "sms" } try{ subscription= topic.subscribe(subscribeMetadata) writeOutput("Subscribed to the topic successfully") writeDump(subscription) } catch (any e){ writeDump(e) } </cfscript>
例 2
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) topic = sns.createTopic("EmailSubscription"); subscribeMetadata = { "topicArn" = topic.getTopicArn(), "endpoint" = "johndoe@email.com", "protocol" = "email" } try{ subscription= topic.subscribe(subscribeMetadata) writeOutput("Subscribed to the topic successfully") writeDump(subscription) } catch (any e){ writeDump(e) } </cfscript>
例 3
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) topic = sns.createTopic("EmailSubscription"); subscribeMetadata = { "topicArn" = topic.getTopicArn(), "endpoint" = "https://coldfusion.adobe.com/", "protocol" = "https" } try{ subscription= topic.subscribe(subscribeMetadata) writeOutput("Subscribed to the topic successfully") writeDump(subscription) } catch (any e){ writeDump(e) } </cfscript>
サブスクリプションの確認
この関数を使用すると、以前のサブスクライブアクションでエンドポイントに送信されたトークンを検証することで、エンドポイントの所有者がメッセージを受信できるかどうかを確認できます。トークンが有効であれば、このアクションは新しいサブスクリプションを作成し、その Amazon リソース名(ARN)を返します。
詳しくは、ConfirmSubscription を参照してください。
シンタックス
confirmSubscription(topicArn,subscription)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
AuthenticateOnUnsubscribe |
サブスクリプションの解除に認証が必要かどうかを指定します。 |
文字列 |
いいえ |
トークン |
エンドポイントに送信されるトークン。 |
文字列 |
はい |
TopicArn |
サブスクリプションの確認対象となるトピックの ARN。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf) topicObj = snsObj.createTopic("confirmSubscription"); topicARN = topicObj.getTopicArn(); subscribeMetadata = { "topicArn" = topicARN, "endpoint" = "john@example.com", "protocol" = "email" } // E メールからトークン値を手動でフェッチ tokenVal = "token value"; metadata = { "token" = tokenVal } try{ confirmationObj = snsObj.confirmSubscription(topicARN,metadata) writeOutput("Subscription confirmed successfully") writeoutput(confirmationObj.subscriptionArn) } catch(any e){ writeDump(e) } </cfscript>
トピックからのサブスクリプション解除
サブスクリプションを削除します。トピックのサブスクリプションを解除できるのは、サブスクリプションの所有者またはトピックの所有者だけです。
詳しくは、Unsubscribe を参照してください。
シンタックス
unsubscribe(subscriptionArn)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
subscriptionArn |
削除するサブスクリプションの ARN。 |
文字列 |
はい |
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("UnsubTopic") // サブスクリプションのメタデータ subscribeMetadata = { "topicArn" = topic.getTopicArn(), "endpoint" = "johndoe@email.com", "protocol" = "email" } // トピックをサブスクライブ subscription = topic.subscribe(subscribeMetadata) // サブスクリプションの ARN を取得 //subscriptionArn = subscription.getSubscriptionArn() // サブスクリプションの ARN はサブスクリプションの確認後に取得 subscriptionArn="arn:aws:sns:us-east-1:534385124010:UnsubTopic:6b35449d-90e7-4e63-aaf6-990da9cd1a51" try{ unsubResponse= sns.unsubscribe(subscriptionArn) writeOutput("Unsubscribed from topic successfully") writeDump(unsubResponse) } catch(any e){ writeDump(e) } </cfscript>
トピック別のサブスクリプションリストの取得
特定のトピックのサブスクリプションのリストを返します。
詳しくは、ListSubscriptionsByTopic を参照してください。
シンタックス
listTopicSubscriptions(topicArn) listTopicSubscriptions(String topicArn, String nextToken)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
topicArn |
サブスクリプションを解除するトピックの ARN。 |
文字列 |
はい |
nextToken |
前の 呼び出しで返されたトークン。 |
文字列 |
いいえ |
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("EmailSubscription") // トピックの ARN を取得 topicARN = topic.getTopicArn() // サブスクリプションのメタデータを設定 subscribeMetadata = { "topicArn" = topicARN, "endpoint" = "john@example.com", "protocol" = "email" } // トピックをサブスクライブ subscription= topic.subscribe(subscribeMetadata) // サブスクリプションを取得 resp=sns.listTopicSubscriptions(topicARN) writeOutput("List of subscriptions:") writeDump(resp.subscriptions) </cfscript>
サブスクリプションリストの取得
リクエスターのサブスクリプションのリストを表示します。関数を呼び出すたびに、100 件のサブスクリプションのリストが返されます。
詳しくは、ListSubscriptions を参照してください。
シンタックス
listSubscriptions(nextToken)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
nextToken |
前の ListSubscriptions 呼び出しで返されたトークン。 |
文字列 |
いいえ |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topicObj = snsObj.createTopic("ListSubs") // トピックの ARN を取得 topicARN = topicObj.getTopicArn() // サブスクリプションのメタデータを設定 subscribeMetadata = { "topicArn" = topicARN, "endpoint" = application.emailId, "protocol" = "email" } // トピックをサブスクライブ topicObj.subscribe(subscribeMetadata) // nextToken パラメーターを使用せずにサブスクリプションをリストアップ subsObj = snsObj.listSubscriptions() // nextToken を取得 nextToken=subsObj.nextToken // nextToken パラメーターを使用してサブスクリプションをリストアップ ntObj=snsObj.listSubscriptions(nextToken) writeDump(ntObj) </cfscript>
サブスクリプション属性の設定
サブスクリプションの属性に新しい値を設定します。
詳しくは、SetSubscriptionAttributes を参照してください。
シンタックス
setSubscriptionAttributes(subscriptionAttributes)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
subscriptionAttributes |
|
構造体 |
はい |
attributeValue |
属性の新しい値(JSON 形式)。 |
文字列 |
いいえ |
subscriptionArn |
変更するサブスクリプションの ARN。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) topic = sns.createTopic("SubscriptionAttrib") // トピックの ARN を取得 topicARN = topic.getTopicArn() // サブスクリプションのメタデータを設定 subscribeMetadata = { "topicArn" = topicARN, "endpoint" = "john@email.com", "protocol" = "email" } // トピックをサブスクライブ subscription= topic.subscribe(subscribeMetadata) // サブスクリプションの ARN を取得 // subsARN = subscription.getSubscriptionArn() // サブスクリプションの ARN はサブスクリプションの確認後に取得 subsARN="arn:aws:sns:us-east-1:534385124010:SubscriptionAttrib:735e692e-b085-48a6-ac01-42a1211bf86d" // フィルターポリシーを設定 filterPolicy = { "OrderType" = ["Retail"] } // サブスクリプション属性のメタデータを設定 setSubscribeMetadata = { "attributeName" = "FilterPolicy", "attributeValue" = serializeJson(filterPolicy), "subscriptionArn"=subsARN } try{ setSubsObj = sns.setSubscriptionAttributes(setSubscribeMetadata) writeOutput("Attributes have been set successfully") writeDump(setSubsObj) } catch(any e){ writeDump(e) } </cfscript>
サブスクリプション属性の取得
サブスクリプションのプロパティを取得します。
詳しくは、GetSubscriptionAttributes を参照してください。
シンタックス
getSubscriptionAttributes(subscriptionArn)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
subscriptionArn |
戻り値を取得するプロパティを含んでいるサブスクリプションの ARN。 |
文字列 |
はい |
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) topic = sns.createTopic("GetSubscriptionAttrib") // トピックの ARN を取得 topicARN = topic.getTopicArn() // サブスクリプションのメタデータを設定 subscribeMetadata = { "topicArn" = topicARN, "endpoint" = "john@example.com", "protocol" = "email" } // トピックをサブスクライブ subscription= topic.subscribe(subscribeMetadata) // サブスクリプションの ARN を取得 // subsARN = subscription.getSubscriptionArn() // サブスクリプションの ARN はサブスクリプションの確認後に取得 subsARN="arn:aws:sns:us-east-1:534385124010:GetSubscriptionAttrib:482d04e0-f5d6-4f4e-b6f9-9f721212a5c4" // フィルターポリシーを設定 filterPolicy = { "OrderType" = ["Retail"] } // サブスクリプション属性のメタデータを設定 setSubscribeMetadata = { "attributeName" = "FilterPolicy", "attributeValue" = serializeJson(filterPolicy), "subscriptionArn"=subsARN } // サブスクリプション属性を設定 sns.setSubscriptionAttributes(setSubscribeMetadata) // サブスクリプション属性を取得 getSubsObj = sns.getSubscriptionAttributes(subsARN) writeOutput("The attributes are:") writeDump(getSubsObj.attributes) </cfscript>
トピックへのメッセージの公開
メッセージが公開されると、Amazon SNS は、トピックをサブスクライブしているすべてのエンドポイント(AWS Lambda、Amazon SQS、HTTP/S、メールアドレスなど)へのメッセージの配信を試みます。
詳しくは、トピックにメッセージを発行するを参照してください。
シンタックス
publish(Struct message)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
message |
送信するメッセージ。 SMS メッセージ
JSON メッセージ
|
文字列 |
はい |
messageAttributes |
公開アクションのメッセージ属性です。詳しくは、MessageAttributeValue を参照してください。 |
構造体 |
いいえ |
messageStructure |
プロトコルごとに異なるメッセージを送信する場合は、MessageStructure を json に設定します。有効な値は json です。 |
文字列 |
いいえ |
phoneNumber |
SMS メッセージの配信先の電話番号。 |
文字列 |
いいえ |
subject |
メッセージの件名。 |
文字列 |
いいえ |
topicArn |
公開先のトピック。 |
文字列 |
いいえ |
詳しくは、リクエストパラメーターの説明を参照してください。
例 1
student.json
{ "student": [ { "id":"01", "name": "Tom", "lastname": "Price" }, { "id":"02", "name": "Nick", "lastname": "Thameson" } ], "default" : "sample default JSON message" }
publish.cfm
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("PubMessageJSON") // トピックの ARN を取得 topicARN = topic.getTopicArn() subscribeMetadata = { "topicArn" = topicARN, "endpoint" = "john@example.com", "protocol" = "email" } subscriptionObj = topic.subscribe(subscribeMetadata); studentFile = fileRead(expandPath('student.json')); // "messageStructure" = "json" が定義されている場合は、デフォルトメッセージのみ公開される publishMetadata = { "messageBody" = studentFile, "messageStructure" = "json" } try{ publishResponse = topic.publish(publishMetadata) writeOutput("Message published successfully") writeDump(publishResponse) } catch(any e){ writeOutput("Failed to publish message") writeDump(e) } </cfscript>
例 2
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("PubMessageSMS") // トピックの ARN を取得 topicARN = topic.getTopicArn() subscribeMetadata = { "topicArn" = topicARN, "endpoint" = "<your phone number>", "protocol" = "sms" } subscriptionObj = topic.subscribe(subscribeMetadata); studentFile = fileRead(expandPath('student.json')); // "messageStructure" = "json" が定義されている場合は、デフォルトメッセージのみ公開される publishMetadata = { "messageBody" = studentFile, "messageStructure" = "json" } try{ publishResponse = topic.publish(publishMetadata) writeOutput("Message published successfully") writeDump(publishResponse) } catch(any e){ writeOutput("Failed to publish message") writeDump(e) } </cfscript>
例 3
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // トピックを作成 topic = sns.createTopic("PubMessageEmail") // トピックの ARN を取得 topicARN = topic.getTopicArn() // サブスクリプションのメタデータを設定 subscribeMetadata = { "topicArn" = topicARN, "endpoint" = "john@email.com", "protocol" = "email" } subscriptionObj = topic.subscribe(subscribeMetadata) // 公開のメタデータ publishMetadata = { "messageBody" = "Publish Email message from John", "messageStructure" = "String", "Subject"= "Subscription Notification" } try{ publishResponse = topic.publish(publishMetadata) writeOutput("Message published sucessfully") writeDump(publishResponse) } catch(any e){ writeOutput("Failed to publish message") writeDump(e) } </cfscript>
SMS 属性の設定
SMS メッセージを送信し、毎日の SMS 使用状況レポートを受信するためのデフォルト設定を行います。
詳しくは、SetSMSAttributes を参照してください。
シンタックス
setSMSAttributes(smsAttributes)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
smsAttributes |
次の属性のキーと値のペアです。
|
構造体 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) smsAttributes ={ " attributes":{ "DeliveryStatusIAMRole":"", "DeliveryStatusSuccessSamplingRate":"", "DefaultSenderID":"", "DefaultSMSType":"Transactional", "UsageReportS3Bucket":"", "MonthlySpendLimit":2 } } res =sns.setSMSAttributes(smsAttributes) writeDump(res) </cfscript>
SMS 属性の取得
アカウントから SMS メッセージを送信するための設定(前のセクションで定義したもの)を取得します。
詳しくは、GetSMSAttributes を参照してください。
シンタックス
getSMSAttributes(attribute)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
属性の値です |
setSMSAttributes に設定した属性のうち、値の取得対象となるもの。 |
文字列配列 |
いいえ |
例
<cfscript> sns = getCloudService(application.awsCred, application.snsConf) // SMS 属性を取得 response=sns.getSMSAttributes() writeDump(response) writeoutput(response.attributes.DefaultSMSType) </cfscript>
権限の追加
この関数は、トピックのアクセス制御ポリシーに権限を追加して、指定の AWS アカウントに指定のアクションへのアクセスを許可します。
詳しくは、AddPermission を参照してください。
シンタックス
addPermission(String topicArn, Struct permission)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
label |
ポリシーの一意の ID。 |
文字列 |
はい |
actions |
ユーザーが実行できるアクション。 |
文字列配列 |
はい |
awsaccountIds |
指定の操作へのアクセスを許可されるユーザーの AWS アカウント ID。 |
文字列配列 |
はい |
topicArn |
アクセス制御ポリシーを変更するトピックの ARN。 |
文字列 |
はい |
例
<cfscript> snsObj = cloudService(application.awsCred, application.snsConf) // トピックを作成 topicObj = snsObj.createTopic("AddPermission") // 権限追加の構造体 addPermissionAttribute = { "label" : "NewPermission", "actions": ["Publish"], "awsaccountIds": ["xxxxxxxxxxxx"] }; res = snsObj.addPermission(topicArn,addPermissionAttribute) writeDump(res) writeoutput(res.sdkHttpResponse.statusCode) </cfscript>
権限の削除
この関数はポリシーから権限を削除します。
詳しくは、RemovePermission を参照してください。
シンタックス
removePermission(String topicArn, String permissionLabel)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
permissionLabel |
削除するステートメントの一意の ID。 |
文字列 |
はい |
topicArn |
アクセス制御ポリシーを削除するトピックの ARN。 |
文字列 |
はい |
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf) // トピックの ARN topicArn="arn:aws:sns:us-east-1:xxxxxxxxxxx:AddPermission" label = "NewPermission" try{ res = snsObj.removePermission(topicArn,label) writeOutput("Permission removed successfully") writeDump(res) } catch(any e){ writeDump(e) } </cfscript>
プラットフォームアプリケーションの作成
この関数を使用すると、Firebase Cloud Messaging などのプッシュ通知サービス用のアプリケーションを作成できます。CreatePlatformApplication アクションを使用する際は、PlatformPrincipal 属性と PlatformCredential 属性を指定する必要があります。
詳しくは、CreatePlatformApplication を参照してください。
シンタックス
createPlatformApplication(Struct platformApplication)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
attributes |
次のキーを含んだ構造体。
詳しくは、SetPlatformApplicationAttribute を参照してください。 |
構造体 |
はい |
name |
アプリケーションの名前。 |
文字列 |
はい |
platform |
サポートされているプラットフォームは次のとおりです。
|
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf) platformMetadata ={ "attributes" : { "PlatformCredential": application.GCMServerKey, "PlatformPrincipal":"" }, "name" : "CFgcmpushapp", "platform" : "GCM" } resp = snsObj.createPlatformApplication(platformMetadata); writeDump(resp) writeoutput(resp.platformApplicationArn) </cfscript>
プラットフォームアプリケーションの削除
サポートされているいずれかのプッシュ通知サービス(APNS や GCM など)のプラットフォームアプリケーションオブジェクトを削除します。
詳しくは、Amazon SNS モバイルプッシュ通知の使用に関する説明を参照してください。
シンタックス
deletePlatformApplication(platformApplicationArn)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
PlatformApplicationArn |
削除するプラットフォームアプリケーションオブジェクトの PlatformApplicationArn。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf) // プラットフォームアプリケーションを作成 platformMetadata ={ "attributes" : { "PlatformCredential": application.GCMServerKey, "PlatformPrincipal":"" }, "name" : "PushAppForCF", "platform" : "GCM" } resp = snsObj.createPlatformApplication(platformMetadata) // プラットフォームの ARN を取得 platformArn=resp.platformApplicationArn // プラットフォームアプリケーションを削除 try{ deletePltAppRes = snsObj.deletePlatformApplication(platformArn) writeOutput("Platform application deleted successfully") writeDump(deletePltAppRes) } catch(any e){ writeDump(e) } </cfscript>
プラットフォームエンドポイントの作成
GCM(Firebase Cloud Messaging)や APNS などのプッシュ通知サービス上にデバイスやモバイルアプリのエンドポイントを作成します。この関数を使用するには、CreatePlatformApplication 呼び出しから返される PlatformApplicationArn が必要です。この ARN を使用して、デバイスやアプリにメッセージを送信したり、トピックをサブスクライブしたりすることができます。同じデバイストークンおよび属性を持つエンドポイントをリクエスターが既に所有している場合は、エンドポイントを作成せずに ARN が返されます。
詳しくは、Amazon SNS モバイルプッシュ通知の使用に関する説明を参照してください。
シンタックス
createPlatformEndpoint(Struct platformEndpoint)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
attributes |
次の属性のキーと値のペアです。
詳しくは、SetEndpointAttributes を参照してください。 |
構造体 |
はい |
PlatformApplicationArn |
CreatePlatformApplication 呼び出しから取得されたプラットフォームアプリケーション ARN。 |
文字列 |
はい |
トークン |
デバイス上のアプリの通知サービスで作成された一意の識別子。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf) // プラットフォームエンドポイント構造体 platformMetadata ={ "PlatformApplicationArn" : application.PlatformApplicationArn, "Token" : application.FCMToken } createResp = snsObj.createPlatformEndpoint(platformMetadata) writeDump(createResp) </cfscript>
エンドポイントの削除
デバイスやモバイルアプリのエンドポイントを Amazon SNS から削除します。トピックを購読するエンドポイントを削除する場合は、トピックからエンドポイントを削除することもできます。
詳しくは、Amazon SNS モバイルプッシュ通知の使用に関する説明を参照してください。
詳しくは、DeleteEndpoint の公式ドキュメントを参照してください。
シンタックス
deleteEndpoint(endpointArn)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
endpointArn |
削除するエンドポイントの EndpointArn。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf) // プラットフォームエンドポイント構造体 platformMetadata ={ "PlatformApplicationArn" : application.PlatformApplicationArn, "Token" : application.FCMToken } createResp = snsObj.createPlatformEndpoint(platformMetadata) // エンドポイントの ARN を取得 endpointArn = createResp.endpointArn; try{ deleteResp= snsObj.deleteEndpoint(endpointArn) writeOutput("Endpoint deleted successfully") writeDump(deleteResp) } catch(any e){ writeDump(e) } </cfscript>
エンドポイント属性の取得
GCM(Firebase Cloud Messaging)や APNS などのプッシュ通知サービス上にあるデバイスのエンドポイントの属性を取得します。
詳しくは、GetEndpointAttributes を参照してください。
シンタックス
getEndpointAttributes(endpointArn)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
endpointArn |
属性の取得対象となるエンドポイント ARN。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf); platformMetadata ={ "PlatformApplicationArn" : application.PlatformApplicationArn, "Token" : application.FCMToken } createResp = snsObj.createPlatformEndpoint(platformMetadata); endpointArn = createResp.endpointArn; getResp = snsObj.getEndpointAttributes(endpointArn); //writedump(getResp); writeoutput(getResp.attributes.Enabled); </cfscript>
電話番号のオプトイン
この関数を使用すると、SMS メッセージの送信先の電話番号を選択できます。
詳しくは、OptInPhoneNumber を参照してください。
シンタックス
optInPhoneNumber(phoneNumber)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
phoneNumber |
オプトインする電話番号。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf); optInResp = snsObj.optInPhoneNumber(application.phoneNum); writeoutput(optInResp.sdkHttpResponse.statusCode); </cfscript>
オプトアウトした電話番号のリストの取得
SMS メッセージを送信できなくなった電話番号のリストを取得します。結果は改ページ調整され、各ページでは最大で100の電話番号が返されます。 結果の 2 ページ目以降にも電話番号がある場合は、NextToken 文字列が返されます。
詳しくは、ListPhoneNumbersOptedOut を参照してください。
シンタックス
listPhoneNumbersOptedOut(nextToken)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
nextToken |
この関数を呼び出して結果の 2 ページ目以降にある電話番号のリストを取得する場合に使用する文字列。 |
文字列 |
はい |
詳しくは、ListPhoneNumbersOptedOut を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf); phoneNumOptedOut = snsObj.listPhoneNumbersOptedOut(); writeoutput(phoneNumOptedOut.sdkHttpResponse.statusCode); </cfscript>
電話番号がオプトアウトされているかどうかの確認
所有者がメッセージの受信をオプトアウトしたので、アカウントからの SMS メッセージを電話で受信できるかどうかを確認します。
メッセージの送信を再開するには、OptInPhoneNumber メソッドを使用して電話番号をオプトインします。
詳しくは、CheckIfPhoneNumberIsOptedOu を参照してください。
シンタックス
checkIfPhoneNumberIsOptedOut(phoneNumber)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
phoneNumber |
オプトアウトステータスを確認する電話番号。 |
文字列 |
はい |
詳しくは、リクエストパラメーターの説明を参照してください。
例
<cfscript> snsObj = getCloudService(application.awsCred, application.snsConf); topicObj = snsObj.createTopic("checkIfPhoneNumberIsOptedOut"); topicARN = topicObj.getTopicArn(); subscribeMetadata = { "topicArn" = topicARN, "endpoint" = application.phoneNum, "protocol" = "sms" }; subsResp = topicObj.subscribe(subscribeMetadata); phoneNumOptedOut = snsObj.checkIfPhoneNumberIsOptedOut(application.phoneNum); writeoutput(phoneNumOptedOut.isOptedOut); </cfscript>