ColdFusion と Amazon SQS

概要

メッセージキューを使用すると、システムの様々なコンポーネントが様々なコンポーネント間で非同期通信を行うことができます。メッセージキューは、メッセージを一時的に保存するバッファーを提供します。また、コンポーネントがキューに接続してメッセージを送信するためのエンドポイントとなります。メッセージには、リクエスト、応答、エラーメッセージの 3 種類があります。

メッセージは通常、別のサービスがそのメッセージを使用して何らかの操作を実行するまでキューに格納されます。

Amazon Simple Queue Service(Amazon SQS)は、アプリケーションまたはマイクロサービスで使用されるメッセージを格納するキューサービスです。Amazon SQS は、システムコンポーネントの切り離し、依存関係の軽減、スケーラビリティの確保に役立ちます。コンポーネントを切り離す理由は、システムの 1 つのコンポーネントが何らかの理由で応答しなくなっても、その他のコンポーネントが通常どおり動作するようにシステムを構築するためです。

SQS は、クラウドにおけるメッセージキューソフトウェアの実装を可能にします。メッセージキューは、コンピューターとアプリケーションコンポーネントの間でメッセージを受け渡すための分散システムを提供します。また、システムとシステム内のコンポーネントが独立性と自律性を保つ手段にもなります。

SQS を使用する場合、システムコンポーネントはキューバッファーを使用して互いにメッセージを送信します。これらのキューにより、コンポーネントは非同期通信を行って、同時実行をサポートしたり、高い可用性を維持したり、負荷やスパイクをより適切に処理したりすることができます。 

概要

awssqs パッケージのインストール

Zip インストーラーを使用する場合に限り、Adobe ColdFusion(2021 リリース)はモジュール化されています。デフォルトでは、AWS SQS のモジュールはインストールされていません。最初の手順は、SQS パッケージを ColdFusion にインストールすることです。

注意:GUI インストーラーを使用する場合、これらのパッケージは事前にインストールされています。

SQS のパッケージは、awssqs という名前です。

awssqs パッケージをインストールするには、ColdFusion Administrator のパッケージマネージャーページを使用するか、以下の手順に従います。

  1. <CF_HOME>/cfusion/bin に移動します。

  2. 次のコマンドを入力します。

    • Windows:cfpm.bat
    • Linux:cfpm.sh
  3. コマンド install awssqs を入力します。

    AWS SQS パッケージがインストールされるのを待ちます。

詳しくは、ColdFusion パッケージマネージャーを参照してください。

AWS SQS にアクセスするための資格情報の取得

AWS を操作する場合、資格情報を検証し、リクエストしているリソースにアクセスするための権限を持っているかどうかをチェックするために、AWS セキュリティ資格情報を指定します。

AWS は、セキュリティ資格情報を使用して、リクエストを認証および承認します。

AWS アクセスキー ID および AWS シークレットアクセスキーを取得する必要があります。詳しくは、アクセスキーを参照してください。

クラウドサービス資格情報および設定の追加

Adobe ColdFusion(2021 リリース)には、様々なクラウドサービスにアクセスするためのオブジェクトを作成するためにハンドルを提供するメソッド getCloudService() があります。

サービスハンドルのシンタックスを次に示します。

service=getCloudService(cloudCred,cloudConfig)

  • cloudCred:クラウドサービスの資格情報を定義します。構造体または文字列です(資格情報エイリアスとも呼ばれます)。
  • cloudConfig:クラウドサービス設定の詳細を定義します。構造体または文字列です(設定エイリアスとも呼ばれます)。

AWS 資格情報を獲得したら、次のいずれかの方法でこれらの資格情報を宣言する必要があります。その後でのみ、これらの資格情報を使用して SQS オブジェクトを作成でき、それからそのオブジェクトを使用して様々な SQSメソッドを呼び出すことができます。

ColdFusion Administrator

資格情報の設定

ColdFusion Administrator で、データとサービス/クラウド資格情報をクリックします。

エイリアスは、クラウドサービスおよびその設定の詳細の名前付き表現です。ColdFusion Administrator を使用して設定エイリアスを設定できます。

クラウド資格情報の追加
クラウド資格情報の追加

詳細を入力したら、「資格情報を追加」をクリックします。

設定オプションの設定

ColdFusion Administrator で、「データとサービス/クラウド設定」をクリックします。

設定エイリアス、ベンダー、サービスの名前など、次の詳細を入力します。

クラウド設定の追加
クラウド設定オプションの追加

設定オプションを追加した後、さらにいくつかのオプションを追加する必要がある場合があります。次に表示される画面で追加できます。場合によって追加する必要があるオプションを次に示します。

  • リクエスト設定
  • クライアント設定
  • プロキシ設定
  • 再試行ポリシー
  • 再試行条件

詳しくは、クラウド設定オプションを参照してください。

オブジェクトの作成

SQS 資格情報および設定オプションのエイリアスを作成したら、getCloudService API を使用してオブジェクトを作成し、次のコードを CFM に含めることができます。

sqsObject= getCloudService("sqsCred", "sqsConf")

Application.cfc

Application.cfc で SQS 資格情報および設定オプションを指定できます。次に例を示します。

component { this.name=&quot;AWS_STD_Queue&quot;; void function onApplicationStart(){ application.awsCred = { &quot;alias&quot; : &quot;aws_std_queue&quot;, &quot;vendorName&quot; : &quot;AWS&quot;, &quot;region&quot; : &quot;us-east-1&quot;, &quot;secretAccessKey&quot; : &quot;xxxxxxxxxxxxxxxxx&quot;, &quot;accessKeyId&quot; : &quot;xxxxxxxxxxxxxxxx&quot; } application.snsConf = { &quot;serviceName&quot; : &quot;SNS&quot; } application.sqsConf ={ &quot;serviceName&quot; : &quot;SQS&quot; 
                             }         
 
    } 
}

オブジェクトの作成

sqsObject = getCloudService(application.awsCred, application.sqsConf)

CFM ページ上

CFM ページでは、以下に示す 4 つの方法のいずれかで SQS 資格情報および設定オプションを指定できます。

資格情報エイリアスおよび設定エイリアス

SQS 資格情報および設定オプション用のエイリアスを作成したら、次に示すように、getCloudService
ハンドルでそれらのエイリアスを使用できます。

<cfscript> // ColdFusion Administrator で資格情報エイリアスと設定エイリアスを定義 sqs=getCloudService(&quot;awsCred&quot;,&quot;sqsConf&quot;) // 以下にコードを記述 ...........</cfscript>

資格情報エイリアスおよび設定オプションの構造体

<cfscript> // 資格情報エイリアスとサービス設定構造体を使用 sqsConf = { &quot;alias&quot;:&quot;sqsConf&quot;, &quot;serviceName&quot; : &quot;SQS&quot;, &quot;clientOverrideConfig&quot;:{ &quot;retryPolicy&quot;:{ &quot;numRetries&quot;:4 } }, &quot;httpClientConfig&quot;:{ &quot;maxConnections&quot;:50 } } sqs= getCloudService(&quot;sqsCred&quot;, sqsConf) // 以下にコードを記述 .....................</cfscript>

設定エイリアスおよび資格情報の構造体

<cfscript> // 設定エイリアスとサービス資格情報構造体を使用 // SQS 資格情報 sqsCreds={ &quot;vendorName&quot;:&quot;AWS&quot;, &quot;alias&quot;: &quot;sqsCred&quot;, &quot;region&quot;:&quot;us-east-2&quot;, &quot;accessKeyId&quot;: &quot;access key&quot;, &quot;secretAccessKey&quot;: &quot;secret access&quot; } sqs= getCloudService(sqsCreds, &quot;sqsConf&quot;) // 以下にコードを記述 .....................................</cfscript>

資格情報と設定オプションの両方の構造体

<cfscript> // クラウドの資格情報と設定の構造体を使用 sqsCred={ &quot;vendorName&quot;:&quot;AWS&quot;, &quot;alias&quot;: &quot;sqs_cred_alias&quot;, &quot;region&quot;:&quot;us-east-2&quot;, &quot;accessKeyId&quot;: &quot;access key&quot;, &quot;secretAccessKey&quot;: &quot;secret access key&quot; } sqsConf = { &quot;alias&quot;:&quot;sqs_conf_alias&quot;, &quot;serviceName&quot; : &quot;SQS&quot;, &quot;clientOverrideConfig&quot;:{ &quot;retryPolicy&quot;:{ &quot;numRetries&quot;:4 } }, &quot;httpClientConfig&quot;:{ &quot;maxConnections&quot;:50 } } sqs = getCloudService(sqsCred, sqsConf ) // 以下にコードを記述 ...................................................................</cfscript>

Admin API

また、Admin API を使用して SQS 資格情報および設定オプションを追加することもできます。資格情報および設定を追加するためのメソッドは、cloud.cfc で使用できます。

メソッド addCredential(struct credential) および addServiceConfig(struct config) の使用例を以下に示します。

資格情報の追加

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;) adminObj.login(&quot;admin&quot;) // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.cloud&quot;) // 資格情報構造体を定義 credentialStruct={ &quot;alias&quot; : &quot;CredSQS&quot;, &quot;vendorName&quot; : &quot;AWS&quot;, &quot;region&quot; : &quot;us-east-2&quot;, &quot;secretAccessKey&quot; : &quot;secret access key&quot;, &quot;accessKeyId&quot; : &quot;access key&quot; } // 資格情報の credentialStruct を追加 try{ cloudObj.addCredential(credentialStruct) writeOutput(&quot;Credentials added successfully&quot;) } catch(any e){ writeDump(e) } </cfscript>

設定の追加

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;) adminObj.login(&quot;admin&quot;) // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.cloud&quot;) // 設定構造体を定義 configStruct={ &quot;alias&quot;:&quot;ConfSQS&quot;, &quot;serviceName&quot;:&quot;SQS&quot;, &quot;clientOverrideConfig&quot;:{ &quot;retryPolicy&quot;:{ &quot;numRetries&quot;:4 } }, &quot;httpClientConfig&quot;:{ &quot;maxConnections&quot;:50 } } // 設定の configStruct を追加 try{ cloudObj.addServiceConfig(configStruct) writeOutput(&quot;Configuration service added successfully&quot;) } catch(any e){ writeDump(e) } </cfscript>

CFSetup

CFSetup 設定ユーティリティを使用して SQS の資格情報と設定をセットアップすることもできます。

クラウド資格情報の追加

  • add cloudcredential credentialAlias=sqscred accesskeyid=<access> secretaccesskey=<secret> region=ap-southeast-1 vendorname=AWS

資格情報の設定

  • set cloudcredential sqscred secretaccesskey=awssecret

クラウド設定の追加

  • add cloudconfiguration serviceName=SQS alias=sqsConfig

設定の設定

  • set cloudconfiguration conf1 alias=conf2

SQSClient API

  1. SQSQueue createQueue(String queueName);
  2. SQSQueue createQueue(String queueName, Map queueAttributes);
  3. String getQueueUrl(String queueName);
  4. Struct listQueues();
  5. Struct listQueueTags(String queueUrl);
  6. Struct purgeQueue(String queueUrl);
  7. Struct deleteQueue(String queueUrl);
  8. Struct sendMessage(String queueUrl, Map message);
  9. Struct receiveMessage(String queueUrl, Map receiveMessageOptions);
  10. Struct deleteMessage(String queueUrl, Map message);
  11. Struct tagQueue(String queueUrl, Map tags);
  12. Struct untagQueue(String queueUrl, Map tags);
  13. Struct changeMessageVisibility(String queueUrl, Map message);
  14. Struct setQueueAttributes(String queueUrl, Map queueAttributes);
  15. Struct getQueueAttributes(String queueUrl, Map queueAttributes);
  16. Struct changeMessageVisibilityBatch(String queueUrl, List<Map> messages);
  17. Struct deleteMessageBatch(String queueUrl, List<Map> messages);
  18. Struct sendMessageBatch(String queueUrl, List<Map> messages);
  19. Struct listDeadLetterSourceQueues(String queueUrl);
  20. Struct editTags(String queueUrl, Map tags);
  21. Struct addPermission(String queueUrl, Map permission);
  22. Struct removePermission(String queueUrl, String permissionLabel);
  23. Struct listQueues(String queueNamePrefix);
  24. String getQueueArn(String queueUrl);

SQSQueue API

  1. public Struct listQueueTags();
  2. public Struct purge();
  3. Struct sendMessage(Map message);
  4. Struct receiveMessage(Map receiveMessageOptions);
  5. Struct deleteMessage(Map message);
  6. Struct tag(Map tags);
  7. Struct untag(Map tags);
  8. Struct getAttributes(Map attributes);
  9. Struct setAttributes(Map attributes);
  10. Struct sendMessageBatch(List<Map> messages);
  11. Struct deleteMessageBatch(List<Map> messages);
  12. Struct changeMessageVisibilityBatch(List<Map> messages);
  13. String getQueueUrl();
  14. Struct listDeadLetterSourceQueues();
  15. Struct editTags(Map tags);
  16. Struct changeMessageVisibility(Map message);
  17. Struct addPermission(Map permission);
  18. Struct removePermission(String permissionLabel);
  19. String getQueueArn();

キューの作成

この関数は、標準キューまたは FIFO キューを作成します。キューの作成時には、次のことに注意する必要があります。

  • 属性 FifoQueue を指定しない場合、Amazon SQS では標準キューが作成されます。
  • FIFO キューを作成する場合は、<QueueName>.fifo の命名規則を使用する必要があります。
  • キューの作成時に属性の値を指定しない場合は、属性のデフォルト値がキューの作成に使用されます。

詳しくは、CreateQueue を参照してください。

シンタックス

createQueue(String queueName, Struct queueAttributes)

パラメーター

パラメーター

説明

必須

queueName

キューの名前。FIFO キューを作成する場合は、キュー名の末尾に .fifo 接尾辞を付ける必要があります。

キュー名は、大文字と小文字が区別されます。

文字列

はい

queueAttributes

文字列の構造体で、次の属性を含んでいます。
  • DelaySeconds:キュー内のすべてのメッセージの配信が遅延される時間(秒単位)。有効な範囲は 0~900 です。デフォルトは 0 です。
  • MaximumMessageSize:Amazon SQS に拒否されずにメッセージに格納できるデータの最大バイトサイズ。有効な値は 1024 バイト(1 KB)~262144 バイト(256 KB)です。デフォルトは 262144(256 KB)です。
  • MessageRetentionPeriod:メッセージがキューに保持される時間(秒単位)。有効な値は 60~1209600 です。デフォルトは 345600 です。
  • Policy:キューに関連付けられているポリシー。詳しくは、AWS のポリシーを参照してください。
  • ReceiveMessageWaitTimeSeconds:ReceiveMessage API がメッセージの着信を待機する時間(秒単位)。有効な値は 0~20 です。デフォルトは 0 です。
  • RedrivePolicy:配信不能メッセージキューのパラメーターを含んだ文字列。Redrive policy および dead メッセージキューについて詳しくは、 Amazon SQS 配信不能メッセージキューの使用を参照してください 。 有効な値は次のとおりです。
    • deadLetterTargetArn
    • maxReceiveCount
  • VisibilityTimeout:キューの可視性タイムアウト(秒単位)。有効な値は 0~43200 です。デフォルトは 30 です。可視性タイムアウトについて詳しくは、可視性タイムアウトを参照してください。

サーバー側の暗号化に関連する属性:

  • KmsMasterKeyId:AWS で管理される顧客マスターキー(CMK)の ID。
  • KmsDataKeyReusePeriodSeconds:AWS KMS の再呼び出しまでに Amazon SQS がデータキーを再利用してメッセージを暗号化または復号化できる時間(秒単位)。

FIFO 関連の属性:

  • FifoQueue:true の場合、FIFO キューが作成されます。詳しくは、SQS の FIFO キューを参照してください。
  • ContentBasedDeduplication:true の場合、コンテンツに基づく重複排除が有効になります。

注意:キューを標準から FIFO キューに変更することはできません。また、その逆も同様です。

構造体

いいえ

詳しくは、CreateQueue のパラメーターを参照してください。

標準キュー

<cfscript> cred={ &quot;credentialAlias&quot; : &quot;alias&quot;, &quot;vendorName&quot; : &quot;AWS&quot;, &quot;region&quot; : &quot;us-east-2&quot;, &quot;secretAccessKey&quot; : &quot;secret access&quot;, &quot;accessKeyId&quot; : &quot;access key&quot; } conf={ &quot;serviceName&quot;=&quot;SQS&quot; } sqs=getCloudService(cred, conf) queueName=&quot;QueueOne&quot; // 標準キュー myQueue=sqs.createQueue(queueName) try{ myQueue=sqs.createQueue(queueName) writeOutput(&quot;Standard queue created&quot;) } catch (any e){ writeDump(e) } </cfscript>

属性付きの標準キュー

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) queueName=&quot;MyQueue&quot; // 新しい標準キューを作成 setQueueAttributesMetadata = { &quot;attributes&quot;={ &quot;VisibilityTimeout&quot;=&quot;10&quot;, &quot;MessageRetentionPeriod&quot;=&quot;100&quot;, &quot;MaximumMessageSize&quot;=&quot;1024&quot;, &quot;DelaySeconds&quot;=&quot;10&quot;, &quot;ReceiveMessageWaitTimeSeconds&quot;=&quot;20&quot; } } // 標準キュー try{ myQueue=sqs.createQueue(queueName,setQueueAttributesMetadata) writeOutput(&quot;Queue with attributes created&quot;) } catch (any e){ writeDump(e) } </cfscript>

FIFO キュー

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) queueName=&quot;MyQueue.fifo&quot; // FIFO キュー名の末尾には .fifo 接尾辞を付ける // FIFO キューを作成 setQueueAttributesMetadata = { &quot;attributes&quot;={ &quot;FifoQueue&quot;:&quot;true&quot;, // FIFO キューの場合、この属性は true &quot;VisibilityTimeout&quot;=&quot;10&quot;, &quot;MessageRetentionPeriod&quot;=&quot;100&quot;, &quot;MaximumMessageSize&quot;=&quot;1024&quot;, &quot;DelaySeconds&quot;=&quot;10&quot;, &quot;ReceiveMessageWaitTimeSeconds&quot;=&quot;20&quot; } } // FIFO キュー try{ myQueue=sqs.createQueue(queueName,setQueueAttributesMetadata) writeOutput(&quot;FIFO queue with attributes created&quot;) } catch (any e){ writeDump(e) } </cfscript>

SSE が有効なキューの作成

キューを作成し、サーバー側の暗号化(SSE)を有効にします。SSE は、標準キューにも FIFO キューにも使用できます。

暗号化を強化するには、以下を使用できます。

  • 顧客マスターキー(CMK)ID:SQS でメッセージのコンテンツを暗号化するためのキー。詳しくは、SQS のデータキーを参照してください。
  • 顧客データキー再利用期間:SQS がデータキーを再利用してメッセージを暗号化または復号化できる期間(秒単位)。60~86400 の範囲の値が使用可能です。詳しくは、データキー再利用期間についてを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。このメソッドはキューオブジェクトを返す。myQueue = sqs.createQueue(&quot;QueueWithSSE&quot;); setQueueAttributesMetadata = { &quot;attributes&quot;={ &quot;KmsMasterKeyId&quot;=&quot;arn:aws:kms:us-east-2:xxxxxxxxxxx:key/xxxxxxxxxxxx&quot;, &quot;KmsDataKeyReusePeriodSeconds&quot;=&quot;120&quot; } }; setQueueAttributesResponse = myQueue.setAttributes(setQueueAttributesMetadata); KmsMasterKeyIdVal = myQueue.getAttributes({ &quot;attributeNames&quot;=[&quot;KmsMasterKeyId&quot;] }) val = KmsMasterKeyIdVal[&quot;attributes&quot;]; writeoutput(val[&quot;KmsMasterKeyId&quot;]); </cfscript>

すべてのキューの一覧取得

この関数は、AWS アカウントのキューの一覧を取得します。

詳しくは、ListQueues を参照してください。

シンタックス

listQueues(queueNamePrefix)

パラメーター

パラメーター

必須

queueNamePrefix

文字列

いいえ

詳細については、リクエストパラメーターを参照してください。

注意:

現時点では、ListQueues メソッドでパラメーター maxResults および nextToken がサポートされていません。

<cfscript> // SQS でキューを作成 // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf); // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。 // このメソッドはキューオブジェクトを返す。writeoutput(&quot;Create queue in AWS</br>&quot;); myQueue = sqs.createQueue(&quot;MyQueueWithAttrib&quot;) writeoutput(&quot;Listing all the queues in AWS<br>&quot;) writeDump(sqs.listQueues().queueUrls) writeOutput(&quot;The number of queues in the region is:&quot;) queueCount= ArrayLen(sqs.listQueues().queueUrls) writeOutput(queueCount) </cfscript> 

キューの URL の取得

Amazon SQS キューの URL を取得します。

シンタックス

getQueueUrl(queueName)

パラメーター

パラメーター

説明

必須

queueName

URL を取得するキューの名前。

文字列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) qURL=sqs.GetQueueUrl(&quot;BatchQueue&quot;) writeDump(qURL) </cfscript>

キューの ARN の取得

SQS キューの Amazonリソース名(ARN)を取得します。

シンタックス

getQueueArn(String queueUrl)

パラメーター

パラメーター

説明

必須

queueURL

キューの URL。

文字列

はい

<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) stdQueueObj = sqs.createQueue(&quot;stdQueueARN&quot;); queueARN = stdQueueObj.getQueueArn(); writeoutput(queueARN) </cfscript>

キューのタグ付け

この関数は、指定された標準キューまたは FIFO キューにタグ(例:コスト配分)を追加します。タグの作成時には、次のことに注意する必要があります。

  • 追加するタグは、大文字と小文字が区別されます。
  • 新しいタグが既存のタグと同じキーを持つ場合は、既存のタグを上書きします。

詳しくは、TagQueue を参照してください。

シンタックス

tagQueue(String queueUrl, Struct tags)

パラメーター

パラメーター

説明

必須

queueURL

タグ付けするキューの URL。

文字列

はい

map

キューに追加するタグ。

構造体

はい

詳しくは、TagQueue のパラメーターを参照してください。

<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue=sqs.createQueue(&quot;QueueTags&quot;) // キューの URL を取得 queueUrl=sqs.getQueueUrl(&quot;QueueTags&quot;) writeOutput(&quot;The queue url is: &quot; & queueUrl) // タグを作成 queueTags={ &quot;tags&quot;={ &quot;Product&quot;:&quot;ColdFusion&quot;, &quot;Version&quot;:&quot;2021&quot;, &quot;Build&quot;:&quot;338001&quot;, &quot;Date&quot;:&quot;2020/10/28&quot;, &quot;Location&quot;:&quot;Adobe&quot;, &quot;Place&quot;:&quot;Bangalore&quot; } } try{ queueTagResponse=sqs.tagQueue(queueUrl,queueTags) writeOutput(&quot;&quot;&&quot;Queue successfully tagged&quot;) writeDump(queueTagResponse) } catch(any e){ writeDump(e) } </cfscript>

キューオブジェクトの使用

<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue=sqs.createQueue(&quot;QueueTags&quot;) // キューの URL を取得 queueUrl=sqs.getQueueUrl(&quot;QueueTags&quot;) writeOutput(&quot;The queue url is: &quot; & queueUrl) // タグを作成 queueTags={ &quot;tags&quot;={ &quot;Product&quot;:&quot;ColdFusion&quot;, &quot;Version&quot;:&quot;2021&quot;, &quot;Build&quot;:&quot;338001&quot;, &quot;Date&quot;:&quot;2020/10/28&quot;, &quot;Location&quot;:&quot;Adobe&quot;, &quot;Place&quot;:&quot;Bangalore&quot; } } try{ queueTagResponse=myQueue.tag(queueTags) writeOutput(&quot;&quot;&&quot;Queue successfully tagged&quot;) writeDump(queueTagResponse) } catch(any e){ writeDump(e) } </cfscript>

キューのタグの一覧取得

指定されたキューのタグの一覧を取得します。

詳しくは、ListQueueTags を参照してください。

シンタックス

listQueueTags(queueURL)

パラメーター

パラメーター

説明

必須

queueURL

キューの URL。

文字列

はい

詳細については、リクエストパラメーターを参照してください。

<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューをリストアップ queueList=sqs.listQueues() // 前の例で作成したキューの URL を取得 queueUrl=queueList.queueUrls[16] tagList=sqs.listQueueTags(queueUrl) writeOutput(&quot;List of tags in the queue:&quot;) writeDump(tagList.tags) </cfscript>

次の例では、キューオブジェクトを使用して、キュー内のタグのリストを表示します。ここでは、作成したキューにタグをいくつか追加しています。

<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue=sqs.createQueue(&quot;QueueTags&quot;) // キューにタグを追加 queueTags={ &quot;tags&quot;={ &quot;Product&quot;:&quot;ColdFusion&quot;, &quot;Version&quot;:&quot;2021&quot;, &quot;Build&quot;:&quot;338001&quot;, &quot;Date&quot;:&quot;2020/10/28&quot;, &quot;Location&quot;:&quot;Adobe&quot; } } myQueue.tag(queueTags) // タグをリストアップ listTagResponse=myQueue.listQueueTags() writeDump(listTagResponse) </cfscript>

キューのタグ付け解除

タグのキーを使用して、キューからタグを削除できます。

詳しくは、UntagQueue を参照してください。

シンタックス

untagQueue(String queueUrl, Struct tags)

パラメーター

パラメーター

説明

必須

queueURL

キューの URL。

文字列

はい

map

指定のキューから削除するタグの配列。

配列

はい

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); //writeoutput(&quot;Create queue in AWS<br>&quot;); myQueue = sqs.createQueue(&quot;Tagging_Queue&quot;); //writeoutput(&quot;set Tag queue attributes response&quot;); tagQueueMetadata = {&quot;tags&quot;= { &quot;Product&quot;=&quot;ColdFusion&quot;, &quot;Environment&quot;=&quot;Production&quot; } }; // キューにタグ付け setQueueAttributesResponse = myQueue.tag(tagQueueMetadata); writeoutput(#myQueue.ListQueueTags().tags[&quot;Product&quot;]#); writeoutput(#myQueue.ListQueueTags().tags[&quot;Environment&quot;]#&&quot;<br>&quot;); untagQueueMetadata = {&quot;tagKeys&quot;=[&quot;Product&quot;,&quot;Environment&quot;]}; // キューのタグ付け解除 untagQueueResponse = myQueue.untag(untagQueueMetadata); try{ writeoutput(#myQueue.ListQueueTags().tags[&quot;Environment&quot;]#); } catch(any e){ writeoutput(e.Message); } </cfscript>

キューの削除

SQS のキューを削除します。詳しくは、DeleteQueue を参照してください。

キューが空でない場合でも、キューを削除できます。キュー内のメッセージを削除し、キューそのものは削除しない場合は、キューを破棄できます。

キューを削除すると、キュー内のすべてのメッセージが使用できなくなります。

シンタックス

deleteQueue(queueURL)

パラメーター

パラメーター

説明

必須

queueURL

キューの URL。

文字列

はい

<cfscript> // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf) // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。このメソッドはキューオブジェクトを返す。myQueue=sqs.createQueue(&quot;QueueForDeletion&quot;); // キューの URL を取得 queueUrl=sqs.getQueueUrl(&quot;QueueForDeletion&quot;) try{ sqs.deleteQueue(queueUrl) writeOutput(&quot;Queue deleted successfully.&quot;) 
    } 
    catch(any e) 
{ 
    writeDump(e) 
} 
</cfscript>

キューの破棄

キューを削除せずにキューからすべてのメッセージを削除する場合は、キューを破棄できます。

詳しくは、PurgeQueue を参照してください。

シンタックス

purgeQueue(queueURL)

パラメーター

パラメーター

説明

必須

queueURL

キューの URL。

文字列

はい

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); stdQueue = sqs.createQueue(&quot;PurgeMessageQueue&quot;); stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sample message&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=dateTimeFormat(now()), &quot;geospatial_data&quot;=&quot;San Francisco&quot;, &quot;signatures&quot;=&quot;ADBE&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } } // キューにメッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata) try{ sqs.purgeQueue(stdQueueUrl) writeOutput(&quot;Queue purged successfully.&quot;)} 
        catch(any e) 
{ 
    writeDump(e) 
} 
</cfscript>

キューへのメッセージの送信

AWS 資格情報を指定して、既存のキューにメッセージを送信できます。詳しくは、SendMessage を参照してください。

シンタックス

sendMessage(String queueUrl, Struct message)

パラメーター

パラメーター

説明

必須

queueUrl

メッセージの送信先となるキューの URL。

文字列

はい

messageAttributes

SQS メッセージ属性のキーと値のペア。詳しくは、SQS メッセージ属性を参照してください。

構造体

いいえ

messageBody

キューに送信するメッセージ。

文字列

はい

messageDeduplicationId

FIFO キューにのみ適用されます。これは、メッセージの重複排除用のトークンです。

文字列

いいえ

messageGroupId

FIFO キューにのみ適用されます。これは、特定のメッセージグループのタグです。

文字列

いいえ

messageSystemAttribute

メッセージシステム属性のキーと値のペア。詳しくは、SQS メッセージシステム属性を参照してください。

構造体

いいえ

詳しくは、SendMessage のリクエストパラメーターを参照してください。

例 1 - 標準キューへのメッセージの送信

<cfscript> // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf); // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。 // このメソッドはキューオブジェクトを返す。myQueue = sqs.createQueue(&quot;SimpleMessageQueue&quot;); // キューオブジェクトを使用してキューにメッセージを送信message = {&quot;messageBody&quot;=&quot;This is a sample message.&quot;}; 
    sendMessageResponse = myQueue.sendMessage(message); writedump(sendMessageResponse) // ステータスコードを表示 writeoutput(sendMessageResponse.sdkHttpResponse[&quot;statusCode&quot;]); // 200 </cfscript>

例 2 - 追加パラメーターを指定した、標準キューへのメッセージの送信

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); stdQueue = sqs.createQueue(&quot;sendMessage&quot;); stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sample message&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=&quot;#dateTimeFormat(now())#&quot;, &quot;geospatial_data&quot;=&quot;San Francisco&quot;, &quot;signatures&quot;=&quot;ADBE&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } } sendMessageResp = sqs.sendMessage(stdQueueUrl,sendMessageMetadata); writeoutput(sendMessageResp.sdkHttpResponse.statusCode); // 200 </cfscript>

例 3 - FIFO キューへのメッセージの送信

<cfscript> try{ sqs = getCloudService(application.awsCred, application.sqsConf); queueAttributes = { &quot;attributes&quot; : {&quot;FifoQueue&quot; : &quot;true&quot;} } fifoQueue = sqs.createQueue(&quot;sendMessage.fifo&quot;, queueAttributes); fifoQueueUrl = fifoQueue.getQueueUrl(); sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sampe message&quot;, &quot;messageGroupId&quot; =&quot;12345&quot;, &quot;messageDeduplicationId&quot; =&quot;123456&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=&quot;#dateTimeFormat(now())#&quot;, &quot;geospatial_data&quot;=&quot;San Jose&quot;, &quot;signatures&quot;=&quot;ADBE&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } }; // メッセージを送信 sendMessageResp = sqs.sendMessage(fifoQueueUrl,sendMessageMetadata); writeoutput(sendMessageResp.sdkHttpResponse.statusCode); // 200 } catch(any e){ writeDump(e); } </cfscript>

属性付きメッセージの送信

メッセージ属性を使用して、構造化メタデータ(タイムスタンプ、地理空間データ、署名、識別子など)をメッセージに含めることができます。

詳しくは、Amazon SQS メッセージ属性を参照してください。

<cfscript> // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf) // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。This method returns a queue object. //writeoutput(&quot;Create queue in AWS<br>&quot;); myQueue = sqs.createQueue(&quot;MessageQueueWithAttribute&quot;); // キューオブジェクトを使用してキューにメッセージを送信sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sample message&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=datetimeformat(now()), &quot;geospatial_data&quot;=&quot;Bangalore&quot;, &quot;signatures&quot;=&quot;ADBE&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } }; sendMessageResponse = myQueue.sendMessage(sendMessageMetadata); writeoutput(&quot;message successfully sent with attribute&quot;); writeDump(sendMessageResponse) </cfscript>

メッセージの受信

キューにメッセージを送信した後で、キューからメッセージを取得することができます。キューにメッセージを要求する場合、どのメッセージを取得するかは指定できません。その代わり、取得するメッセージの最大数(最大 10 個まで)を指定する必要があります。

詳しくは、メッセージの受信および削除を参照してください。

シンタックス

receiveMessage(String queueUrl, Map receiveMessageOptions)

パラメーター

パラメーター

説明

必須

queueUrl

メッセージの受信先となるキューの URL。

文字列

はい

messageAttributeNames

次のいずれかです。

  • ALL
  • ApproximateFirstReceiveTimestamp 
  • ApproximateReceiveCount 
  • AWSTraceHeader 
  • SenderId
  • SentTimestamp 
  • MessageDeduplicationId 
  • MessageGroupId 
  • SequenceNumber 

構造体

いいえ

maxNumberOfMessages

返されるメッセージの最大数。有効な値は 1~10 です。

Integer

いいえ

receiveRequestAttemptId

FIFO キューにのみ適用

文字列

いいえ

vVisibilityTimeout

取得リクエストでメッセージが非表示になっている時間。

Integer

いいえ

waitTime

キューに届くまでメッセージが待機する期間。

Integer

いいえ

詳しくは、リクエストパラメーターを参照してください。

例 1 - FIFO キュー内のメッセージの受信

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // FIFO キューの属性を定義 queueAttributes = { &quot;attributes&quot; : { &quot;FifoQueue&quot; : &quot;true&quot; } } fifoQueue = sqs.createQueue(&quot;sendMessage.fifo&quot;, queueAttributes); fifoQueueUrl = fifoQueue.getQueueUrl(); sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sample message&quot;, &quot;messageGroupId&quot; =&quot;12345&quot;, &quot;messageDeduplicationId&quot; =&quot;123456&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=&quot;#dateTimeFormat(now())#&quot;, &quot;geospatial_data&quot;=&quot;Bangalore&quot;, &quot;signatures&quot;=&quot;SG&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } } // メッセージを送信 sqs.sendMessage(fifoQueueUrl,sendMessageMetadata) // メッセージ受信のメタデータを定義 receiveMessageMetadata = { &quot;messageAttributeNames&quot;=&quot;All&quot; } try{ receiveMessageResp = sqs.receiveMessage(fifoQueueUrl,receiveMessageMetadata) writeOutput(&quot;Message received successfully&quot;) writeDump(receiveMessageResp) } catch (any e){ writeDump(e) } </cfscript>

例 2 - 標準キューへのメッセージの送信

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 stdQueue = sqs.createQueue(&quot;ReceiveMessageQueueNew&quot;); // キューの URL を取得 stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sample message&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=&quot;#dateTimeFormat(now())#&quot;, &quot;geospatial_data&quot;=&quot;San Jose&quot;, &quot;signatures&quot;=&quot;SG&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } } // メッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata); // メッセージ受信のメタデータを定義 receiveMessageMetadata = { &quot;messageAttributeNames&quot;=&quot;All&quot; } try{ receiveMessageResp = sqs.receiveMessage(stdQueueUrl,receiveMessageMetadata) writeOutput(&quot;Message received successfully&quot;) writeDump(receiveMessageResp) writeoutput(ArrayLen(receiveMessageResp.messages)>0) // TRUE } catch(any e){ writeDump(e) } </cfscript>

メッセージの削除

キューからメッセージを削除します。削除するメッセージを選択するには、 メッセージの ReceiptHandle を使用し ます。

詳しくは、DeleteMessage を参照してください。

シンタックス

deleteMessage(String queueUrl, Struct message)

パラメーター

パラメーター

説明

必須

queueURL

キューの URL。

文字列

はい

receiptHandle

削除するメッセージに関連付けられているレシートハンドル。

文字列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 stdQueue = sqs.createQueue(&quot;ReceiveMessageQueueNew&quot;); // キューの URL を取得 stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sample message&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=&quot;#dateTimeFormat(now())#&quot;, &quot;geospatial_data&quot;=&quot;San Jose&quot;, &quot;signatures&quot;=&quot;SG&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } } // メッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata) // メッセージを受信 // メッセージ受信のメタデータを定義 receiveMessageMetadata = { &quot;messageAttributeNames&quot;=&quot;All&quot; } receiveMessageResp=sqs.receiveMessage(stdQueueUrl,receiveMessageMetadata) // レシートハンドルを取得 receiptHandle={ &quot;receiptHandle&quot;:receiveMessageResp.messages[1].receiptHandle } // メッセージを削除 try{ deleteMessageResponse=sqs.deleteMessage(stdQueueUrl,receiptHandle) writeOutput(&quot;Message deleted successfully&quot;) writeDump(deleteMessageResponse) } catch(any e){ writeDump(e) } </cfscript>

キューの属性の設定

1 つ以上のキュー属性の値を設定します。

詳しくは、SetQueueAttributes を参照してください。

シンタックス

setQueueAttributes(String queueUrl, Struct queueAttributes)

パラメーター

パラメーター

説明

必須

queueURL

属性の設定先となるキューの URL。

文字列

はい

属性の値です

次の属性のキーと値のペアです。

  • DelaySeconds
  • MaximumMessageSize 
  • MessageRetentionPeriod 
  • Policy 
  • ReceiveMessageWaitTimeSeconds 
  • RedrivePolicy 
  • VisibilityTimeout 

FIFO の属性:

  • ContentBasedDeduplication 

サーバーサイド暗号化の属性:

  • KmsMasterKeyId
  • KmsDataKeyReusePeriodSeconds

構造体

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // キューを作成 sqs.createQueue(&quot;QueueAttributeDemo&quot;) // キューの URL を取得 qURL=sqs.getQueueUrl(&quot;QueueAttributeDemo&quot;) // キュー属性のメタデータを定義 setQueueAttributes = { &quot;attributes&quot;={ &quot;VisibilityTimeout&quot;=&quot;10&quot;, &quot;MessageRetentionPeriod&quot;=&quot;100&quot;, &quot;MaximumMessageSize&quot;=&quot;1024&quot;, &quot;DelaySeconds&quot;=&quot;10&quot;, &quot;ReceiveMessageWaitTimeSeconds&quot;=&quot;20&quot; } } // キュー属性を設定 try{ queueAttributeResponse=sqs.setQueueAttributes(qURL,setQueueAttributes writeOutput(&quot;Queue attributes set successfully&quot;) writeDump(queueAttributeResponse) } catch(any e){ writeOutput(&quot;Unable to set queue attribute&quot;) writeDump(e) } </cfscript>

キューの属性の取得

指定されたキューの属性を取得します。

詳しくは、GetQueueAttributes を参照してください。

シンタックス

getQueueAttributes(String queueUrl, Struct queueAttributes)

パラメーター

パラメーター

説明

必須

queueURL

属性の取得先となるキューの URL。

文字列

はい

attributeNames

次のいずれかです。

  • All
  • ApproximateNumberOfMessages 
  • ApproximateNumberOfMessagesDelayed 
  • ApproximateNumberOfMessagesNotVisible 
  • CreatedTimestamp 
  • DelaySeconds 
  • LastModifiedTimestamp 
  • MaximumMessageSize 
  • MessageRetentionPeriod 
  • Policy 
  • QueueArn 
  • ReceiveMessageWaitTimeSeconds 
  • RedrivePolicy 
  • VisibilityTimeout 

SSE の属性:

  • KmsMasterKeyId 
  • KmsDataKeyReusePeriodSeconds 

FIFO の属性:

  • FifoQueue 
  • ContentBasedDeduplication 

配列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // キューを作成 sqs.createQueue(&quot;QueueGetAttributeDemo&quot;) // キューの URL を取得 qURL=sqs.getQueueUrl(&quot;QueueGetAttributeDemo&quot;) // キュー属性のメタデータを定義 setQueueAttributes = { &quot;attributes&quot;={ &quot;VisibilityTimeout&quot;=&quot;10&quot;, &quot;MessageRetentionPeriod&quot;=&quot;100&quot;, &quot;MaximumMessageSize&quot;=&quot;1024&quot;, &quot;DelaySeconds&quot;=&quot;10&quot;, &quot;ReceiveMessageWaitTimeSeconds&quot;=&quot;20&quot; } } // キュー属性を設定 sqs.setQueueAttributes(qURL,setQueueAttributes) // 属性取得のメタデータを定義 getQueueAttributesMetadata={ &quot;attributeNames&quot;=[&quot;All&quot;] } try{ getAttributeResponse=sqs.getQueueAttributes(qURL,getQueueAttributesMetadata) writeOutput(&quot;Queue attributes are:&quot;) writeDump(getAttributeResponse.attributes) } catch(any e){ writeDump(e) } </cfscript>

メッセージの表示/非表示の変更

キュー内のメッセージの可視性タイムアウトを変更します。メッセージの可視性タイムアウトのデフォルト値は 30 秒です。指定できる値は 0 秒~12 時間です。

詳しくは、ChangeMessageVisibility を参照してください。

シンタックス

changeMessageVisibility(String queueUrl, Struct message)

パラメーター

パラメーター

説明

必須

queueURL

メッセージの可視性タイムアウトの変更先となるキューの URL。

文字列

はい

receiptHandle

可視性タイムアウトの変更対象となるメッセージのレシートハンドル。

文字列

はい

visibilityTimeout

新しいタイムアウト値(0~43200)

Integer

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); stdQueue = sqs.createQueue(&quot;ChangeVisibilityDemo&quot;); stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { &quot;messageBody&quot;=&quot;This is a sample message&quot;, &quot;messageAttributes&quot;={ &quot;timestamps&quot;=&quot;#dateTimeFormat(now())#&quot;, &quot;geospatial_data&quot;=&quot;London&quot;, &quot;signatures&quot;=&quot;CF&quot;, &quot;identifiers&quot;=&quot;ColdFusion&quot; } } // キューにメッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata); // メッセージ受信のメタデータを定義 receiveMessageMetadata = { &quot;messageAttributeNames&quot;=&quot;All&quot; }; // メッセージを受信 receiveMessageResp=sqs.receiveMessage(stdQueueUrl,receiveMessageMetadata); msgReceiptHandle= receiveMessageResp.messages[1].receiptHandle; // 可視性タイムアウト変更のメタデータを定義 changeVisibilityMetadata= { &quot;visibilityTimeout&quot;:&quot;100&quot;, // 100 秒 &quot;receiptHandle&quot;:msgReceiptHandle } try{ changeVisibiltyResponse= sqs.changeMessageVisibility(stdQueueUrl,changeVisibilityMetadata) writeOutput(&quot;Message visibility timeout changed successfully&quot;) writeDump(changeVisibiltyResponse) writeoutput(changeVisibiltyResponse.sdkHttpResponse.statusCode) } catch(any e){ writeDump(e) } </cfscript>

メッセージの表示/非表示の一括変更

複数のメッセージの可視性タイムアウトを変更します。

詳しくは、ChangeMessageVisibilityBatch を参照してください。

シンタックス

changeMessageVisibilityBatch(String queueUrl, List<Map> messages)

パラメーター

パラメーター

説明

必須

queueURL

メッセージの表示/非表示の変更先となるキューの URL。

文字列

はい

changeMessageVisibilityBatchMetadata

可視性タイムアウトの変更対象となるメッセージのレシートハンドル。詳しくは、ChangeMessageVisibilityBatchRequestEntry を参照してください。

配列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqsObj = getCloudService(application.awsCred, application.sqsConf); stdQueueName = &quot;stdBatchQueue&quot; // キューを作成 stdQueueObj = sqsObj.createQueue(stdQueueName); // キューの URL を取得 stdQueueUrl = stdQueueObj.getQueueUrl() // メッセージ一括送信のメタデータを定義 sendMessageBatchMetadata = [ { &quot;id&quot;:&quot;1&quot;, &quot;messageAttributes&quot;:{ &quot;name&quot;:&quot;name1&quot;, &quot;type&quot;:&quot;string&quot;, &quot;value&quot;:&quot;value1&quot; }, &quot;messageBody&quot;:&quot;This is the body of batch 1&quot; }, { &quot;id&quot;:&quot;2&quot;, &quot;messageAttributes&quot;:{ &quot;name&quot;:&quot;name2&quot;, &quot;type&quot;:&quot;number&quot;, &quot;value&quot;:24 }, &quot;messageBody&quot;:&quot;This is the body of batch 2&quot; }, { &quot;id&quot;:&quot;3&quot;, &quot;messageAttributes&quot;:{ &quot;name&quot;:&quot;name3&quot;, &quot;type&quot;:&quot;string&quot;, &quot;value&quot;:&quot;value2&quot; }, &quot;messageBody&quot;:&quot;This is the body of batch 3&quot; } ] // メッセージを一括送信 sendMessageBatchResponse = sqsObj.sendMessageBatch(stdQueueUrl, sendMessageBatchMetadata); // キュー内のメッセージを受信 receiveMessageMetadata = { &quot;messageAttributeNames&quot;=&quot;All&quot;, &quot;maxNumberOfMessages&quot;=5 } receiveMessageResp = sqsObj.receiveMessage(stdQueueUrl,receiveMessageMetadata); writeDump(receiveMessageResp) //break; // 可視性タイムアウト変更のメタデータを定義 changeMessageVisibilityBatchMetadata=[ { &quot;id&quot;:receiveMessageResp.messages[1].messageId, &quot;receiptHandle&quot;:receiveMessageResp.messages[1].receiptHandle, &quot;visibilityTimeout&quot;:&quot;20&quot; } // { // &quot;id&quot;:receiveMessageResp.messages[2].messageId, // &quot;receiptHandle&quot;:receiveMessageResp.messages[2].receiptHandle, // &quot;visibilityTimeout&quot;:&quot;10&quot; // } ] // 可視性タイムアウトを一括変更 changeMessageVisibilityBatchResponse=sqsObj.changeMessageVisibilityBatch(stdQueueUrl,changeMessageVisibilityBatchMetadata) writeDump(changeMessageVisibilityBatchResponse) </cfscript>

メッセージの一括送信

最大 10 個までのメッセージを指定のキューに一括送信します。これは、sendMessage API の一括処理バージョンです。

詳しくは、SendMessageBatch を参照してください。

シンタックス

sendMessageBatch(String queueUrl, List<Map> messages)

パラメーター

パラメーター

説明

必須

queueURL

メッセージの一括送信先となるキューの URL。

文字列

はい

sendMessageBatchMetadata

SendMessageBatchRequestEntry オブジェクトの配列。

配列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // メッセージの一括送信先となるキューの URL を取得myQueueUrl=sqs.listQueues().queueUrls[1] sendMessageBatchMetadata = [ { &quot;id&quot;:&quot;1&quot;, &quot;messageAttributes&quot;:{ &quot;name&quot;:&quot;name1&quot;, &quot;type&quot;:&quot;string&quot;, &quot;value&quot;:&quot;value1&quot; }, &quot;messageBody&quot;:&quot;This is the body of batch 1&quot; }, { &quot;id&quot;:&quot;2&quot;, &quot;messageAttributes&quot;:{ &quot;name&quot;:&quot;name2&quot;, &quot;type&quot;:&quot;number&quot;, &quot;value&quot;:24 }, &quot;messageBody&quot;:&quot;This is the body of batch 2&quot; } ] try{ sendMessageBatchResponse = sqs.sendMessageBatch(myQueueUrl, sendMessageBatchMetadata) writeOutput(&quot;Message batch sent successfully&quot;) writeDump(sendMessageBatchResponse) writeDump(sendMessageBatchResponse.successful) } catch (any e){ writeDump(e) } </cfscript>

メッセージの一括削除

キュー内の最大 10 個のメッセージを削除します。この関数は deleteMessage API の一括処理バージョンです。

詳しくは、DeleteMessageBatch を参照してください。

シンタックス

deleteMessageBatch(String queueUrl, List<Map> messages)

パラメーター

パラメーター

説明

必須

queueURL

メッセージの一括削除先となるキューの URL。

文字列

はい

deleteMessageBatchMetadata

削除するメッセージのレシートハンドルのリストです。DeleteMessageBatchRequestEntry オブジェクトの配列 です。

配列

はい

詳しくは、リクエストパラメーターを参照してください。

例 1 - 標準キューの場合

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue = sqs.createQueue(&quot;SendDeleteBatchMessage&quot;) // キューの URL を取得 qURL=myQueue.getQueueUrl() // ファイルをアップロード myImage = &quot;image.PNG&quot; sendMessageBatchMetadata = [ {&quot;id&quot;=&quot;1&quot;, &quot;messageBody&quot;=&quot;Delete Batch Message 1&quot;, &quot;messageAttributes&quot;={&quot;date&quot;=datetimeformat(now()), &quot;myAtt12&quot;=&quot;#toBinary(toBase64(myImage))#&quot;}}, {&quot;id&quot;=&quot;2&quot;, &quot;messageBody&quot;=&quot;Delete Batch Message 2&quot;, &quot;messageAttributes&quot;={&quot;send_date&quot;=datetimeformat(now())}} ]; sendMessageResponse = sqs.sendMessageBatch(qURL, sendMessageBatchMetadata) // writeDump(sendMessageResponse) // break; // キュー内のメッセージを受信 receiveMessageMetadata = {&quot;messageAttributeNames&quot;=&quot;All&quot;,&quot;maxNumberOfMessages&quot;=2} receiveMessageResponse = sqs.receiveMessage(qURL,receiveMessageMetadata); writeDump(receiveMessageResponse) //break; writeoutput(&quot;Delete message batch response&quot;); msgReceiptHandle1= receiveMessageResponse.messages[1].receiptHandle; msgReceiptHandle2= receiveMessageResponse.messages[2].receiptHandle; deleteMessageBatchMetadata = [ {&quot;id&quot;=&quot;1&quot;, &quot;receiptHandle&quot;=&quot;#msgReceiptHandle1#&quot;}, {&quot;id&quot;=&quot;2&quot;, &quot;receiptHandle&quot;=&quot;#msgReceiptHandle2#&quot;} ]; deleteMessageResponse = sqs.deleteMessageBatch(qURL,deleteMessageBatchMetadata); writeDump(deleteMessageResponse) </cfscript>

例 2 - FIFO キューの場合

<cfscript> try{ sqs = getCloudService(application.awsCred, application.sqsConf); queueAttributes = { &quot;attributes&quot; : {&quot;FifoQueue&quot; : &quot;true&quot;} } fifoQueue = sqs.createQueue(&quot;sendBatchMessage.fifo&quot;, queueAttributes); fifoQueueUrl = fifoQueue.getQueueUrl(); sendMessageBatchMetadata = [ {&quot;id&quot;=&quot;1&quot;, &quot;messageBody&quot;=&quot;First Batch message&quot;,&quot;messageGroupId&quot; =&quot;720&quot;,&quot;messageDeduplicationId&quot; =&quot;23&quot;, &quot;messageAttributes&quot;={&quot;myAtt1&quot;=&quot;First&quot;}}, {&quot;id&quot;=&quot;2&quot;, &quot;messageBody&quot;=&quot;Second Batch Message&quot;,&quot;messageGroupId&quot; =&quot;008&quot;,&quot;messageDeduplicationId&quot; =&quot;45&quot;, &quot;messageAttributes&quot;={&quot;myAtt21&quot;=&quot;Second&quot;}} ]; sendMessageResp = sqs.sendMessageBatch(fifoQueueUrl,sendMessageBatchMetadata); writeoutput(sendMessageResp.sdkHttpResponse.statusCode); receiveMessageMetadata = {&quot;messageAttributeNames&quot;=&quot;All&quot;,&quot;maxNumberOfMessages&quot;=2}; receiveMessageResp = sqs.receiveMessage(fifoQueueUrl,receiveMessageMetadata); msgReceiptHandle1= receiveMessageResp.messages[1].receiptHandle; msgReceiptHandle2= receiveMessageResp.messages[2].receiptHandle; deleteMessageBatchMetadata = [ {&quot;id&quot;=&quot;1&quot;, &quot;receiptHandle&quot;=&quot;#msgReceiptHandle1#&quot;}, {&quot;id&quot;=&quot;2&quot;, &quot;receiptHandle&quot;=&quot;#msgReceiptHandle2#&quot;} ]; deleteMsgReps= sqs.deleteMessageBatch(fifoQueueUrl,deleteMessageBatchMetadata); writeoutput(deleteMsgReps.sdkHttpResponse.statusCode); } catch(any e){ writeDump(e); 
        } 

権限の追加

権限がポリシーで定義されているユーザー、サービス、アカウントのキューに権限を追加します。

キューを作成すると、そのキューのフルコントロール権限を持ちます。その後、そのキューに対する権限を付与または拒否することができます。

詳しくは、AddPermission を参照してください。

シンタックス

addPermission(String queueUrl, Struct permission)

パラメーター

パラメーター

説明

必須

actions

指定されたプリンシパルに対してクライアントが許可するアクション。有効な値は次のとおりです。

  • SendMessage
  • DeleteMessage
  • ChangeMessageVisibility

配列

はい

awsAccountIds

権限を付与されるプリンシパルの AWS アカウント番号。

配列

はい

label

設定する権限の一意の ID。

文字列

はい

queueUrl

キューの URL。

文字列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 sqs.createQueue(&quot;AddPermission&quot;); // キューの URL を取得 queueUrl=sqs.getQueueUrl(&quot;AddPermission&quot;) // 権限構造体を定義 addPermissionStruct={ &quot;actions&quot; = [&quot;SendMessage&quot;], // メッセージ送信アクションを許可 &quot;awsAccountIds&quot; = [&quot;xxxxxxxxxxxxx&quot;], &quot;label&quot; = &quot;label-cf-sqs&quot; } try{ addPermissionResp = sqs.addPermission(queueUrl,addPermissionStruct) writeOutput(&quot;Permission added successfully&quot;) writeDump(addPermissionResp) } catch (any e){ writeDump(e) } </cfscript>

権限の削除

最初に権限の追加に使用されたラベルと一致するキューのポリシーで定義されているすべての権限を無効にします。

詳しくは、RemovePermission を参照してください。

シンタックス

removePermission(String queueUrl, String permissionLabel)

パラメータ

パラメータ

説明

必須

queueURL

権限の削除先となるキューの URL。

文字列

はい

permissionLabel

削除する権限の一意の ID。

文字列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 sqs.createQueue(&quot;RemovePermission&quot;); // キューの URL を取得 queueUrl=sqs.getQueueUrl(&quot;AddPermission&quot;) // 権限構造体を定義 addPermissionStruct={ &quot;actions&quot; = [&quot;SendMessage&quot;], // メッセージ送信アクションを許可 &quot;awsAccountIds&quot; = [&quot;xxxxxxxxxxxxx&quot;], &quot;label&quot; = &quot;label-cf-sqs&quot; } sqs.addPermission(queueUrl,addPermissionStruct) // 権限削除の構造体 labelToRemove=&quot;label-cf-sqs&quot; try{ removePermissionResp = sqs.removePermission(queueUrl,labelToRemove) writeOutput(&quot;Permission removed successfully&quot;) writeDump(removePermissionResp) } catch(any e){ writeDump(e) } </cfscript>

配信不能メッセージソースキューの一覧表示

SQS では、配信不能メッセージキューを使用すると、受信メッセージの最大数を超えたメッセージを配信不能メッセージキューに自動的に転送できます。

また、キューが存在しない場合や、キューやメッセージの長さが設定値を超えた場合にも、配信不能メッセージキューにメッセージが格納されます。

一言で言えば、配信不能メッセージキューは、失敗したメッセージを後でデバッグできるように処理します。

指定した回数以内にメッセージがコンシューマーで正常に処理されない場合、そのメッセージが SQS により配信不能メッセージキューに送信されるように、キューに再ドライブポリシーを設定できます。

詳しくは、Amazon SQS デッドレターキューを参照してください。

listDeadLetterSourceQueues API は、配信不能メッセージキューで RedrivePolicy 属性が設定されているキューのリストを返します。

詳しくは、ListDeadLetterSourceQueues を参照してください。

シンタックス

listDeadLetterSourceQueues(queueUrl)

パラメーター

パラメーター

説明

必須

queueURL

配信不能メッセージキューの URL。

文字列

はい

詳しくは、リクエストパラメーターを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); setQueueAttributesMetadata = { &quot;attributes&quot;={ &quot;FifoQueue&quot; : &quot;true&quot; } } // FIFO キューを作成 myQueue = sqs.createQueue(&quot;FIFOQueue4DL.fifo&quot;,setQueueAttributesMetadata); deadLetterQueue = sqs.createQueue(&quot;dead_Letter_Queue.fifo&quot;,setQueueAttributesMetadata); queueUrl = myQueue.getQueueUrl(); getQueueAttributesMetadata = {&quot;attributeNames&quot;:[&quot;All&quot;]}; deadLetterQueueARN = deadLetterQueue.getAttributes(#getQueueAttributesMetadata#).attributes[&quot;QueueArn&quot;]; redrivePolicy = { &quot;maxReceiveCount&quot; = 2, &quot;deadLetterTargetArn&quot; = &quot;#deadLetterQueueARN#&quot; } setQueueAttributesMetadata = { &quot;attributes&quot;={ &quot;RedrivePolicy&quot; = &quot;#serializeJson(redrivePolicy)#&quot; } }; setQueueAttributesResponse = myQueue.setAttributes(setQueueAttributesMetadata); getQueueAttributesMetadata = {&quot;attributeNames&quot;=[&quot;All&quot;]}; getQueueAttributesResponse = myQueue.getAttributes(getQueueAttributesMetadata); redrivePolicyVal= #deserializeJson(getQueueAttributesResponse.attributes[&quot;RedrivePolicy&quot;])#; writeoutput(#redrivePolicyVal.deadLetterTargetArn#); </cfscript>

キューでのロングポーリングの設定

SQS はポーリングベースのサービスで、アプリケーションは SQS キューからメッセージをポーリングします。SQS キューをポーリングし、空の応答が返された場合でも、課金されます。SQS のデフォルトのポーリングはショートポーリングで、キューが空か新しいメッセージで更新されている場合でも、待機時間なしで応答が送信されます。

ロングポーリングでは、空の応答と偽の空応答(使用可能なメッセージが応答に含まれていない場合)の数を除外します。

詳しくは、Amazon SQS ショートポーリングとロングポーリングを参照してください。

<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); myQueue = sqs.createQueue(&quot;longPolling&quot;); writeoutput(myQueue.getQueueUrl()); queueUrl = myQueue.getQueueUrl(); setQueueAttributesMetadata = { &quot;attributes&quot;={ &quot;ReceiveMessageWaitTimeSeconds&quot;=&quot;20&quot; } }; setQueueAttributesResponse = myQueue.setAttributes(setQueueAttributesMetadata); longPollingVal=myQueue.getAttributes({&quot;attributeNames&quot;=[&quot;ReceiveMessageWaitTimeSeconds&quot;]}); writeoutput(longPollingVal.attributes[&quot;ReceiveMessageWaitTimeSeconds&quot;]); </cfscript>

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2025

Adobe MAX Japan
クリエイターの祭典

2025 年 2 月 13 日
東京ビッグサイト