Status pengiriman SNS pesan Amazon - Amazon Simple Notification Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Status pengiriman SNS pesan Amazon

Amazon SNS menyediakan dukungan untuk mencatat status pengiriman pesan notifikasi yang dikirim ke topik dengan SNS titik akhir Amazon berikut:

  • HTTP

  • Amazon Data Firehose

  • AWS Lambda

  • Titik akhir aplikasi platform

  • Amazon Simple Queue Service

Setelah Anda mengonfigurasi atribut status pengiriman pesan, entri log dikirim ke CloudWatch Log untuk pesan yang dikirim ke pelanggan topik. Mencatat status pengiriman pesan membantu memberikan wawasan operasional yang lebih baik, seperti berikut ini:

  • Mengetahui apakah pesan dikirim ke SNS titik akhir Amazon.

  • Mengidentifikasi respons yang dikirim dari SNS titik akhir Amazon ke AmazonSNS.

  • Menentukan waktu tinggal pesan (waktu antara stempel waktu publikasi dan sebelum menyerahkan ke titik akhir Amazon). SNS

Untuk mengonfigurasi atribut topik untuk status pengiriman pesan, Anda dapat menggunakan AWS Management Console, kit pengembangan AWS perangkat lunak (SDKs), kueriAPI, atau AWS CloudFormation.

Mengkonfigurasi pencatatan status pengiriman menggunakan AWS Management Console

  1. Masuk ke SNSkonsol Amazon.

  2. Di panel navigasi, pilih Topics (Topik).

  3. Di halaman Topics (Topik), pilih topik dan kemudian pilih Edit (Edit).

  4. Pada Edit MyTopichalaman, perluas bagian Pencatatan status pengiriman.

  5. Pilih protokol yang ingin Anda catat status pengiriman; misalnya AWS Lambda.

  6. Masukkan sample rate Sukses (persentase pesan sukses yang ingin Anda terima CloudWatch Log).

  7. Di bagian IAMperan, lakukan salah satu hal berikut:

    • Untuk memilih peran layanan yang ada dari akun Anda, pilih Gunakan peran layanan yang ada, lalu tentukan IAM peran untuk pengiriman yang berhasil dan gagal.

    • Untuk membuat peran layanan baru di akun Anda, pilih Buat peran layanan baru, pilih Buat peran baru untuk menentukan IAM peran untuk pengiriman yang berhasil dan gagal di IAM konsol.

      Untuk memberi Amazon akses SNS tulis untuk menggunakan CloudWatch Log atas nama Anda, pilih Izinkan.

  8. Pilih Simpan perubahan.

    Sekarang Anda dapat melihat dan mengurai CloudWatch Log yang berisi status pengiriman pesan. Untuk informasi selengkapnya tentang penggunaan CloudWatch, lihat CloudWatchDokumentasi.

Mengkonfigurasi pencatatan status pengiriman menggunakan AWS SDKs

AWS SDKsMenyediakan APIs dalam beberapa bahasa untuk menggunakan atribut status pengiriman pesan dengan AmazonSNS.

Atribut topik

Anda dapat menggunakan nilai nama atribut topik berikut untuk status pengiriman pesan:

HTTP

  • HTTPSuccessFeedbackRoleArn— Menunjukkan status pengiriman pesan yang berhasil untuk SNS topik Amazon yang berlangganan titik HTTP akhir.

  • HTTPSuccessFeedbackSampleRate— Menunjukkan persentase pesan yang berhasil untuk sampel untuk SNS topik Amazon yang berlangganan titik HTTP akhir.

  • HTTPFailureFeedbackRoleArn— Menunjukkan status pengiriman pesan gagal untuk SNS topik Amazon yang berlangganan titik HTTP akhir.

Amazon Data Firehose

  • FirehoseSuccessFeedbackRoleArn— Menunjukkan status pengiriman pesan yang berhasil untuk SNS topik Amazon yang berlangganan titik akhir Amazon Kinesis Data Firehose.

  • FirehoseSuccessFeedbackSampleRate— Menunjukkan persentase pesan yang berhasil untuk diambil sampel untuk SNS topik Amazon yang berlangganan titik akhir Amazon Kinesis Data Firehose.

  • FirehoseFailureFeedbackRoleArn— Menunjukkan status pengiriman pesan gagal untuk SNS topik Amazon yang berlangganan titik akhir Amazon Kinesis Data Firehose.

AWS Lambda

  • LambdaSuccessFeedbackRoleArn— Menunjukkan status pengiriman pesan yang berhasil untuk SNS topik Amazon yang berlangganan titik akhir Lambda.

  • LambdaSuccessFeedbackSampleRate— Menunjukkan persentase pesan yang berhasil untuk sampel untuk SNS topik Amazon yang berlangganan titik akhir Lambda.

  • LambdaFailureFeedbackRoleArn— Menunjukkan status pengiriman pesan gagal untuk SNS topik Amazon yang berlangganan titik akhir Lambda.

Titik akhir aplikasi platform

  • ApplicationSuccessFeedbackRoleArn— Menunjukkan status pengiriman pesan yang berhasil untuk SNS topik Amazon yang berlangganan titik akhir AWS aplikasi.

  • ApplicationSuccessFeedbackSampleRate— Menunjukkan persentase pesan yang berhasil untuk sampel untuk SNS topik Amazon yang berlangganan titik akhir AWS aplikasi.

  • ApplicationFailureFeedbackRoleArn— Menunjukkan status pengiriman pesan gagal untuk SNS topik Amazon yang berlangganan titik akhir AWS aplikasi.

    catatan

    Selain dapat mengonfigurasi atribut topik untuk status pengiriman pesan pesan notifikasi yang dikirim ke titik akhir SNS aplikasi Amazon, Anda juga dapat mengonfigurasi atribut aplikasi untuk status pengiriman pesan pemberitahuan push yang dikirim ke layanan pemberitahuan push. Untuk informasi selengkapnya, lihat Menggunakan Atribut SNS Aplikasi Amazon untuk Status Pengiriman Pesan.

Amazon SQS

  • SQSSuccessFeedbackRoleArn— Menunjukkan status pengiriman pesan yang berhasil untuk SNS topik Amazon yang berlangganan titik SQS akhir Amazon.

  • SQSSuccessFeedbackSampleRate— Menunjukkan persentase pesan yang berhasil untuk sampel untuk SNS topik Amazon yang berlangganan titik SQS akhir Amazon.

  • SQSFailureFeedbackRoleArn— Menunjukkan status pengiriman pesan gagal untuk SNS topik Amazon yang berlangganan titik SQS akhir Amazon.

catatan

<ENDPOINT>FailureFeedbackRoleArnAtribut <ENDPOINT>SuccessFeedbackRoleArn dan digunakan untuk memberi Amazon akses SNS tulis untuk menggunakan CloudWatch Log atas nama Anda. Atribut <ENDPOINT>SuccessFeedbackSampleRate adalah untuk menentukan persentase tingkat sampel (0-100) dari pesan yang berhasil terkirim. Setelah Anda mengonfigurasi <ENDPOINT>FailureFeedbackRoleArn atribut, maka semua pengiriman pesan yang gagal menghasilkan CloudWatch Log.

AWS SDKcontoh untuk mengkonfigurasi atribut topik

Contoh kode berikut menunjukkan cara menggunakanSetTopicAttributes.

CLI
AWS CLI

Untuk menetapkan atribut untuk topik

set-topic-attributesContoh berikut menetapkan DisplayName atribut untuk topik tertentu.

aws sns set-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789012:MyTopic \ --attribute-name DisplayName \ --attribute-value MyTopicDisplayName

Perintah ini tidak menghasilkan output.

Java
SDKuntuk Java 2.x
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di AWS Repositori Contoh Kode.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SetTopicAttributesRequest; import software.amazon.awssdk.services.sns.model.SetTopicAttributesResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class SetTopicAttributes { public static void main(String[] args) { final String usage = """ Usage: <attribute> <topicArn> <value> Where: attribute - The attribute action to use. Valid parameters are: Policy | DisplayName | DeliveryPolicy . topicArn - The ARN of the topic.\s value - The value for the attribute. """; if (args.length < 3) { System.out.println(usage); System.exit(1); } String attribute = args[0]; String topicArn = args[1]; String value = args[2]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); setTopAttr(snsClient, attribute, topicArn, value); snsClient.close(); } public static void setTopAttr(SnsClient snsClient, String attribute, String topicArn, String value) { try { SetTopicAttributesRequest request = SetTopicAttributesRequest.builder() .attributeName(attribute) .attributeValue(value) .topicArn(topicArn) .build(); SetTopicAttributesResponse result = snsClient.setTopicAttributes(request); System.out.println( "\n\nStatus was " + result.sdkHttpResponse().statusCode() + "\n\nTopic " + request.topicArn() + " updated " + request.attributeName() + " to " + request.attributeValue()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
JavaScript
SDKuntuk JavaScript (v3)
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di AWS Repositori Contoh Kode.

Buat klien dalam modul terpisah dan ekspor klien tersebut.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

Impor modul SDK dan klien dan panggil fileAPI.

import { SetTopicAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; export const setTopicAttributes = async ( topicArn = "TOPIC_ARN", attributeName = "DisplayName", attributeValue = "Test Topic", ) => { const response = await snsClient.send( new SetTopicAttributesCommand({ AttributeName: attributeName, AttributeValue: attributeValue, TopicArn: topicArn, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'd1b08d0e-e9a4-54c3-b8b1-d03238d2b935', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };
Kotlin
SDKuntuk Kotlin
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di AWS Repositori Contoh Kode.

suspend fun setTopAttr( attribute: String?, topicArnVal: String?, value: String?, ) { val request = SetTopicAttributesRequest { attributeName = attribute attributeValue = value topicArn = topicArnVal } SnsClient { region = "us-east-1" }.use { snsClient -> snsClient.setTopicAttributes(request) println("Topic ${request.topicArn} was updated.") } }
PHP
SDKuntuk PHP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di AWS Repositori Contoh Kode.

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient; /** * Configure the message delivery status attributes for an Amazon SNS Topic. * * This code expects that you have AWS credentials set up per: * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html */ $SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $attribute = 'Policy | DisplayName | DeliveryPolicy'; $value = 'First Topic'; $topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic'; try { $result = $SnSclient->setTopicAttributes([ 'AttributeName' => $attribute, 'AttributeValue' => $value, 'TopicArn' => $topic, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }
Ruby
SDKuntuk Ruby
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

# Service class to enable an SNS resource with a specified policy class SnsResourceEnabler # Initializes the SnsResourceEnabler with an SNS resource client # # @param sns_resource [Aws::SNS::Resource] The SNS resource client def initialize(sns_resource) @sns_resource = sns_resource @logger = Logger.new($stdout) end # Sets a policy on a specified SNS topic # # @param topic_arn [String] The ARN of the SNS topic # @param resource_arn [String] The ARN of the resource to include in the policy # @param policy_name [String] The name of the policy attribute to set def enable_resource(topic_arn, resource_arn, policy_name) policy = generate_policy(topic_arn, resource_arn) topic = @sns_resource.topic(topic_arn) topic.set_attributes({ attribute_name: policy_name, attribute_value: policy }) @logger.info("Policy #{policy_name} set successfully for topic #{topic_arn}.") rescue Aws::SNS::Errors::ServiceError => e @logger.error("Failed to set policy: #{e.message}") end private # Generates a policy string with dynamic resource ARNs # # @param topic_arn [String] The ARN of the SNS topic # @param resource_arn [String] The ARN of the resource # @return [String] The policy as a JSON string def generate_policy(topic_arn, resource_arn) { Version: "2008-10-17", Id: "__default_policy_ID", Statement: [{ Sid: "__default_statement_ID", Effect: "Allow", Principal: { "AWS": "*" }, Action: ["SNS:Publish"], Resource: topic_arn, Condition: { ArnEquals: { "AWS:SourceArn": resource_arn } } }] }.to_json end end # Example usage: if $PROGRAM_NAME == __FILE__ topic_arn = "MY_TOPIC_ARN" # Should be replaced with a real topic ARN resource_arn = "MY_RESOURCE_ARN" # Should be replaced with a real resource ARN policy_name = "POLICY_NAME" # Typically, this is "Policy" sns_resource = Aws::SNS::Resource.new enabler = SnsResourceEnabler.new(sns_resource) enabler.enable_resource(topic_arn, resource_arn, policy_name) end
SAP ABAP
SDKuntuk SAP ABAP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di AWS Repositori Contoh Kode.

TRY. lo_sns->settopicattributes( iv_topicarn = iv_topic_arn iv_attributename = iv_attribute_name iv_attributevalue = iv_attribute_value ). MESSAGE 'Set/updated SNS topic attributes.' TYPE 'I'. CATCH /aws1/cx_snsnotfoundexception. MESSAGE 'Topic does not exist.' TYPE 'E'. ENDTRY.

Mengkonfigurasi pencatatan status pengiriman menggunakan AWS CloudFormation

Untuk mengonfigurasi DeliveryStatusLogging penggunaan AWS CloudFormation, gunakan YAML templat JSON atau untuk membuat AWS CloudFormation tumpukan. Untuk informasi selengkapnya, lihat DeliveryStatusLogging properti AWS::SNS::Topic sumber daya di Panduan AWS CloudFormation Pengguna. Di bawah ini adalah contoh AWS CloudFormation template dalam JSON dan YAML untuk membuat topik baru atau memperbarui topik yang ada dengan semua DeliveryStatusLogging atribut untuk SQS protokol Amazon.

JSON
"Resources": { "MySNSTopic" : { "Type" : "AWS::SNS::Topic", "Properties" : { "TopicName" : "TestTopic", "DisplayName" : "TEST", "SignatureVersion" : "2", "DeliveryStatusLogging" : [{ "Protocol": "sqs", "SuccessFeedbackSampleRate": "45", "SuccessFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSSuccessFeedback_test1", "FailureFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSFailureFeedback_test2" }] } } }
YAML
Resources: MySNSTopic: Type: AWS::SNS::Topic Properties: TopicName:TestTopic DisplayName:TEST SignatureVersion:2 DeliveryStatusLogging: - Protocol: sqs SuccessFeedbackSampleRate: 45 SuccessFeedbackRoleArn: arn:aws:iam::123456789012:role/SNSSuccessFeedback_test1 FailureFeedbackRoleArn: arn:aws:iam::123456789012:role/SNSFailureFeedback_test2