Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Ein SNS Amazon-Thema erstellen
Ein SNS Amazon-Thema ist ein logischer Zugangspunkt, der als Kommunikationskanal fungiert. Mit einem Thema können Sie mehrere Endpunkte gruppieren (z. B. Amazon AWS Lambda SQS, HTTP /S oder eine E-Mail-Adresse).
Zum Senden der Nachrichten eines Nachrichtenproduktionssystems (etwa einer e-Commerce-Website), die mit mehreren anderen Services zusammenarbeiten, die dessen Nachrichten benötigen (beispielsweise Checkout- und Erfüllungssysteme) können Sie ein Thema für Ihr Produktionssystem erstellen.
Die erste und häufigste SNS Amazon-Aufgabe ist das Erstellen eines Themas. Diese Seite zeigt, wie Sie die AWS Management Console, und die verwenden können AWS SDK for Java, AWS SDK for .NET um ein Thema zu erstellen.
Bei der Erstellung wählen Sie einen Thementyp (Standard oderFIFO) und geben dem Thema einen Namen. Der Thementyp oder -name kann nach dem Erstellen eines Themas nicht geändert werden. Alle anderen Konfigurationsoptionen sind während der Themenerstellung optional und Sie können sie später bearbeiten.
Fügen Sie den Themennamen keine personenbezogenen Daten (PII) oder andere vertrauliche oder sensible Informationen hinzu. Themennamen sind für andere Amazon Web Services zugänglich, einschließlich CloudWatch Logs. Themennamen sind nicht für private oder sensible Daten gedacht.
Um ein Thema mit dem zu erstellen AWS Management Console
Durch das Erstellen eines Themas SNS in Amazon wird die Grundlage für die Nachrichtenverteilung geschaffen, sodass Sie Nachrichten veröffentlichen können, die an mehrere Abonnenten verteilt werden können. Dieser Schritt ist wichtig, um den Typ, die Verschlüsselungseinstellungen und die Zugriffsrichtlinien des Themas zu konfigurieren und sicherzustellen, dass das Thema den Sicherheits-, Compliance- und Betriebsanforderungen des Unternehmens entspricht.
Melden Sie sich bei der SNSAmazon-Konsole an.
-
Führen Sie eine der folgenden Aktionen aus:
-
Klicken Sie auf der Seite Themen auf Create New Topic.
-
Führen Sie auf der Seite Create subscription (Abonnement erstellen) im Abschnitt Details die folgenden Schritte aus:
-
Wählen Sie unter Typ einen Thementyp aus (Standard oder FIFO).
-
Geben Sie den Namen des neuen Themas ein. Fügen Sie für ein FIFOThema .fifo am Ende des Namens hinzu.
-
(Optional) Geben Sie einen Anzeigenamen für Ihr Thema ein.
Wenn Sie einen E-Mail-Endpunkt abonnieren, darf die kombinierte Zeichenanzahl für den Anzeigenamen des SNS Amazon-Themas und die E-Mail-Adresse des Absenders (z. B. no-reply@sns.amazonaws.com) 320 bis UTF 8 Zeichen nicht überschreiten. Sie können ein Verschlüsselungstool eines Drittanbieters verwenden, um die Länge der Absenderadresse zu überprüfen, bevor Sie einen Anzeigenamen für Ihr SNS Amazon-Thema konfigurieren.
-
(Optional) Für ein FIFO Thema können Sie die inhaltsbasierte Nachrichtendeduplizierung wählen, um die standardmäßige Nachrichtendeduplizierung zu aktivieren. Weitere Informationen finden Sie unter SNSAmazon-Nachrichtendeduplizierung für Themen FIFO.
-
(Optional) Erweitern Sie den Abschnitt Encryption (Verschlüsselung) und gehen Sie wie folgt vor. Weitere Informationen finden Sie unter Sicherung von SNS Amazon-Daten mit serverseitiger Verschlüsselung.
-
Wählen Sie Enable encryption (Verschlüsselung aktivieren) aus.
-
Geben Sie den Schlüssel an. AWS KMS Weitere Informationen finden Sie unter Wichtige Begriffe.
Für jeden KMS Typ KMSARNwerden Beschreibung, Konto und angezeigt.
Wenn Sie nicht der Besitzer von sind oder wenn Sie sich mit einem Konto anmelden, das nicht über die kms:DescribeKey
Berechtigungen kms:ListAliases
und verfügt, können Sie KMS auf der SNS Amazon-Konsole keine Informationen über anzeigen. KMS
Bitten Sie den Besitzer von, Ihnen diese Berechtigungen KMS zu gewähren. Weitere Informationen finden Sie in der Referenz „AWS KMS APIBerechtigungen: Aktionen und Ressourcen“ im AWS Key Management Service Entwicklerhandbuch.
-
Standardmäßig alias/aws/sns ist „KMSFür Amazon AWS verwaltet“ SNS (Standard) ausgewählt.
Beachten Sie Folgendes:
-
Wenn Sie das erste Mal verwenden AWS Management Console , um das KMS für Amazon AWS verwaltete Objekt SNS für ein Thema anzugeben, AWS KMS wird das KMS für Amazon AWS verwaltete Objekt erstelltSNS.
-
Alternativ können Sie, wenn Sie die Publish
Aktion zum ersten Mal für ein Thema verwenden, für das SSE aktiviert ist, die Aktion „ AWS Verwaltet KMS für Amazon“ AWS KMS erstelltSNS.
-
Um ein benutzerdefiniertes Feld KMS aus Ihrem AWS Konto zu verwenden, wählen Sie das KMSSchlüsselfeld und dann das benutzerdefinierte Feld KMS aus der Liste aus.
Anweisungen zum Erstellen benutzerdefinierter KMSs Schlüssel finden Sie unter Creating Keys im AWS Key Management Service Developer Guide
-
Wenn Sie einen benutzerdefinierten Code KMS ARN aus Ihrem AWS Konto oder einem anderen AWS Konto verwenden möchten, geben Sie ihn in das KMSSchlüsselfeld ein.
-
(Optional) Standardmäßig kann nur der Eigentümer des Themas das Thema abonnieren oder Veröffentlichungen dazu vornehmen. Um zusätzliche Zugriffsberechtigungen zu konfigurieren, erweitern Sie den Abschnitt Access policy (Zugriffsrichtlinie). Weitere Informationen erhalten Sie unter Identitäts- und Zugriffsmanagement in Amazon SNS und Beispielfälle für Amazon SNS Access Control.
Wenn Sie ein Thema mit der Konsole erstellen, verwendet die Standardrichtlinie den Bedingungsschlüssel aws:SourceOwner
. Dieser Schlüssel ist ähnlich wie aws:SourceAccount
.
-
(Optional) Um zu konfigurieren, wie Amazon SNS fehlgeschlagene Nachrichtenzustellungsversuche wiederholt, erweitern Sie den Abschnitt Richtlinie für wiederholte Zustellungen (HTTP/S). Weitere Informationen finden Sie unter Wiederholte Versuche mit der SNS Amazon-Nachrichtenzustellung.
-
(Optional) Um zu konfigurieren, wie Amazon die Zustellung von Nachrichten SNS protokolliert CloudWatch, erweitern Sie den Abschnitt Versandstatusprotokollierung. Weitere Informationen finden Sie unter Status der SNS Amazon-Nachrichtenzustellung.
-
(Optional) Wenn Sie Metadaten-Tags zum Thema hinzufügen, erweitern Sie den Tag-Abschnitt, geben Sie einen Schlüssel und einen Wert ein (optional), und wählen Sie Tag hinzufügen aus. Weitere Informationen finden Sie unter SNSAmazon-Themen-Tagging.
-
Wählen Sie Thema erstellen aus.
Das Thema wird erstellt und MyTopic
Die Seite wird angezeigt.
Der Name des Themas ARN, (optional) der Anzeigename und die AWS Konto-ID des Themenbesitzers werden im Abschnitt Details angezeigt.
-
Kopieren Sie das Thema ARN in die Zwischenablage, zum Beispiel:
arn:aws:sns:us-east-2:123456789012:MyTopic
Um ein Thema mit einem zu erstellen AWS SDK
Um eine zu verwenden AWS SDK, müssen Sie sie mit Ihren Anmeldeinformationen konfigurieren. Weitere Informationen finden Sie unter Die Dateien für die gemeinsame Konfiguration und die Anmeldeinformationen im AWS SDKsReferenzhandbuch zu Tools.
In den folgenden Codebeispielen wird die Verwendung veranschaulichtCreateTopic
.
- .NET
-
- AWS SDK for .NET
-
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
Erstellen Sie ein Thema mit einem bestimmten Namen.
using System;
using System.Threading.Tasks;
using Amazon.SimpleNotificationService;
using Amazon.SimpleNotificationService.Model;
/// <summary>
/// This example shows how to use Amazon Simple Notification Service
/// (Amazon SNS) to add a new Amazon SNS topic.
/// </summary>
public class CreateSNSTopic
{
public static async Task Main()
{
string topicName = "ExampleSNSTopic";
IAmazonSimpleNotificationService client = new AmazonSimpleNotificationServiceClient();
var topicArn = await CreateSNSTopicAsync(client, topicName);
Console.WriteLine($"New topic ARN: {topicArn}");
}
/// <summary>
/// Creates a new SNS topic using the supplied topic name.
/// </summary>
/// <param name="client">The initialized SNS client object used to
/// create the new topic.</param>
/// <param name="topicName">A string representing the topic name.</param>
/// <returns>The Amazon Resource Name (ARN) of the created topic.</returns>
public static async Task<string> CreateSNSTopicAsync(IAmazonSimpleNotificationService client, string topicName)
{
var request = new CreateTopicRequest
{
Name = topicName,
};
var response = await client.CreateTopicAsync(request);
return response.TopicArn;
}
}
Erstellen Sie ein neues Thema mit einem Namen und spezifischen Attributen FIFO sowie Deduplizierungsattributen.
/// <summary>
/// Create a new topic with a name and specific FIFO and de-duplication attributes.
/// </summary>
/// <param name="topicName">The name for the topic.</param>
/// <param name="useFifoTopic">True to use a FIFO topic.</param>
/// <param name="useContentBasedDeduplication">True to use content-based de-duplication.</param>
/// <returns>The ARN of the new topic.</returns>
public async Task<string> CreateTopicWithName(string topicName, bool useFifoTopic, bool useContentBasedDeduplication)
{
var createTopicRequest = new CreateTopicRequest()
{
Name = topicName,
};
if (useFifoTopic)
{
// Update the name if it is not correct for a FIFO topic.
if (!topicName.EndsWith(".fifo"))
{
createTopicRequest.Name = topicName + ".fifo";
}
// Add the attributes from the method parameters.
createTopicRequest.Attributes = new Dictionary<string, string>
{
{ "FifoTopic", "true" }
};
if (useContentBasedDeduplication)
{
createTopicRequest.Attributes.Add("ContentBasedDeduplication", "true");
}
}
var createResponse = await _amazonSNSClient.CreateTopicAsync(createTopicRequest);
return createResponse.TopicArn;
}
- C++
-
- SDKfür C++
-
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
//! Create an Amazon Simple Notification Service (Amazon SNS) topic.
/*!
\param topicName: An Amazon SNS topic name.
\param topicARNResult: String to return the Amazon Resource Name (ARN) for the topic.
\param clientConfiguration: AWS client configuration.
\return bool: Function succeeded.
*/
bool AwsDoc::SNS::createTopic(const Aws::String &topicName,
Aws::String &topicARNResult,
const Aws::Client::ClientConfiguration &clientConfiguration) {
Aws::SNS::SNSClient snsClient(clientConfiguration);
Aws::SNS::Model::CreateTopicRequest request;
request.SetName(topicName);
const Aws::SNS::Model::CreateTopicOutcome outcome = snsClient.CreateTopic(request);
if (outcome.IsSuccess()) {
topicARNResult = outcome.GetResult().GetTopicArn();
std::cout << "Successfully created an Amazon SNS topic " << topicName
<< " with topic ARN '" << topicARNResult
<< "'." << std::endl;
}
else {
std::cerr << "Error creating topic " << topicName << ":" <<
outcome.GetError().GetMessage() << std::endl;
topicARNResult.clear();
}
return outcome.IsSuccess();
}
- CLI
-
- AWS CLI
-
So erstellen Sie ein SNS-Thema
Im folgenden create-topic
Beispiel wird ein SNS Thema mit dem Namen erstelltmy-topic
.
aws sns create-topic \
--name my-topic
Ausgabe:
{
"ResponseMetadata": {
"RequestId": "1469e8d7-1642-564e-b85d-a19b4b341f83"
},
"TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic"
}
Weitere Informationen finden Sie unter Using the AWS Command Line Interface with Amazon SQS and Amazon SNS im AWS Command Line Interface User Guide.
- Go
-
- SDKfür Go V2
-
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
// SnsActions encapsulates the Amazon Simple Notification Service (Amazon SNS) actions
// used in the examples.
type SnsActions struct {
SnsClient *sns.Client
}
// CreateTopic creates an Amazon SNS topic with the specified name. You can optionally
// specify that the topic is created as a FIFO topic and whether it uses content-based
// deduplication instead of ID-based deduplication.
func (actor SnsActions) CreateTopic(ctx context.Context, topicName string, isFifoTopic bool, contentBasedDeduplication bool) (string, error) {
var topicArn string
topicAttributes := map[string]string{}
if isFifoTopic {
topicAttributes["FifoTopic"] = "true"
}
if contentBasedDeduplication {
topicAttributes["ContentBasedDeduplication"] = "true"
}
topic, err := actor.SnsClient.CreateTopic(ctx, &sns.CreateTopicInput{
Name: aws.String(topicName),
Attributes: topicAttributes,
})
if err != nil {
log.Printf("Couldn't create topic %v. Here's why: %v\n", topicName, err)
} else {
topicArn = *topic.TopicArn
}
return topicArn, err
}
- Java
-
- SDKfür Java 2.x
-
Es gibt noch mehr dazu. GitHub Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.CreateTopicRequest;
import software.amazon.awssdk.services.sns.model.CreateTopicResponse;
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 CreateTopic {
public static void main(String[] args) {
final String usage = """
Usage: <topicName>
Where:
topicName - The name of the topic to create (for example, mytopic).
""";
if (args.length != 1) {
System.out.println(usage);
System.exit(1);
}
String topicName = args[0];
System.out.println("Creating a topic with name: " + topicName);
SnsClient snsClient = SnsClient.builder()
.region(Region.US_EAST_1)
.build();
String arnVal = createSNSTopic(snsClient, topicName);
System.out.println("The topic ARN is" + arnVal);
snsClient.close();
}
public static String createSNSTopic(SnsClient snsClient, String topicName) {
CreateTopicResponse result;
try {
CreateTopicRequest request = CreateTopicRequest.builder()
.name(topicName)
.build();
result = snsClient.createTopic(request);
return result.topicArn();
} catch (SnsException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
return "";
}
}
- JavaScript
-
- SDKfür JavaScript (v3)
-
Es gibt noch mehr dazu GitHub. Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel- einrichten und ausführen.
Erstellen Sie den Client in einem separaten Modul und exportieren Sie ihn.
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({});
Importieren Sie die Module SDK und den Client und rufen Sie die aufAPI.
import { CreateTopicCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";
/**
* @param {string} topicName - The name of the topic to create.
*/
export const createTopic = async (topicName = "TOPIC_NAME") => {
const response = await snsClient.send(
new CreateTopicCommand({ Name: topicName }),
);
console.log(response);
// {
// '$metadata': {
// httpStatusCode: 200,
// requestId: '087b8ad2-4593-50c4-a496-d7e90b82cf3e',
// extendedRequestId: undefined,
// cfId: undefined,
// attempts: 1,
// totalRetryDelay: 0
// },
// TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME'
// }
return response;
};
- Kotlin
-
- SDKfür Kotlin
-
Es gibt noch mehr dazu. GitHub Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
suspend fun createSNSTopic(topicName: String): String {
val request =
CreateTopicRequest {
name = topicName
}
SnsClient { region = "us-east-1" }.use { snsClient ->
val result = snsClient.createTopic(request)
return result.topicArn.toString()
}
}
- PHP
-
- SDK für PHP
-
Es gibt noch mehr dazu. GitHub Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel- einrichten und ausführen.
require 'vendor/autoload.php';
use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
/**
* Create a Simple Notification Service topics in your AWS account at the requested region.
*
* 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'
]);
$topicname = 'myTopic';
try {
$result = $SnSclient->createTopic([
'Name' => $topicname,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
- Python
-
- SDKfür Python (Boto3)
-
Es gibt noch mehr dazu. GitHub Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def create_topic(self, name):
"""
Creates a notification topic.
:param name: The name of the topic to create.
:return: The newly created topic.
"""
try:
topic = self.sns_resource.create_topic(Name=name)
logger.info("Created topic %s with ARN %s.", name, topic.arn)
except ClientError:
logger.exception("Couldn't create topic %s.", name)
raise
else:
return topic
- Ruby
-
- SDKfür Ruby
-
Es gibt noch mehr dazu GitHub. Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel- einrichten und ausführen.
# This class demonstrates how to create an Amazon Simple Notification Service (SNS) topic.
class SNSTopicCreator
# Initializes an SNS client.
#
# Utilizes the default AWS configuration for region and credentials.
def initialize
@sns_client = Aws::SNS::Client.new
end
# Attempts to create an SNS topic with the specified name.
#
# @param topic_name [String] The name of the SNS topic to create.
# @return [Boolean] true if the topic was successfully created, false otherwise.
def create_topic(topic_name)
@sns_client.create_topic(name: topic_name)
puts "The topic '#{topic_name}' was successfully created."
true
rescue Aws::SNS::Errors::ServiceError => e
# Handles SNS service errors gracefully.
puts "Error while creating the topic named '#{topic_name}': #{e.message}"
false
end
end
# Example usage:
if $PROGRAM_NAME == __FILE__
topic_name = 'YourTopicName' # Replace with your topic name
sns_topic_creator = SNSTopicCreator.new
puts "Creating the topic '#{topic_name}'..."
unless sns_topic_creator.create_topic(topic_name)
puts 'The topic was not created. Stopping program.'
exit 1
end
end
- Rust
-
- SDKfür Rust
-
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
async fn make_topic(client: &Client, topic_name: &str) -> Result<(), Error> {
let resp = client.create_topic().name(topic_name).send().await?;
println!(
"Created topic with ARN: {}",
resp.topic_arn().unwrap_or_default()
);
Ok(())
}
- SAP ABAP
-
- SDKfür SAP ABAP
-
Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.
TRY.
oo_result = lo_sns->createtopic( iv_name = iv_topic_name ). " oo_result is returned for testing purposes. "
MESSAGE 'SNS topic created' TYPE 'I'.
CATCH /aws1/cx_snstopiclimitexcdex.
MESSAGE 'Unable to create more topics. You have reached the maximum number of topics allowed.' TYPE 'E'.
ENDTRY.