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:
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
Masuk ke SNSkonsol Amazon.
-
Di panel navigasi, pilih Topics (Topik).
-
Di halaman Topics (Topik), pilih topik dan kemudian pilih Edit (Edit).
-
Pada Edit MyTopic
halaman, perluas bagian Pencatatan status pengiriman.
-
Pilih protokol yang ingin Anda catat status pengiriman; misalnya AWS Lambda.
-
Masukkan sample rate Sukses (persentase pesan sukses yang ingin Anda terima CloudWatch Log).
-
Di bagian IAMperan, lakukan salah satu hal berikut:
-
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.
-
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.
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.
<ENDPOINT>FailureFeedbackRoleArn
Atribut <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-attributes
Contoh 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
-
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)
-
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
-
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
-
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
-
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
-
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.
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