Ci sono altri AWS SDK esempi disponibili nel repository AWS Doc SDK Examples GitHub .
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempi di codice per l'SNSutilizzo di Amazon AWS SDKs
I seguenti esempi di codice mostrano come usare Amazon Simple Notification Service (AmazonSNS) con un kit di sviluppo AWS software (SDK).
Le operazioni sono estratti di codice da programmi più grandi e devono essere eseguite nel contesto. Sebbene le operazioni mostrino come richiamare le singole funzioni del servizio, è possibile visualizzarle contestualizzate negli scenari correlati e negli esempi tra servizi.
Scenari: esempi di codice che mostrano come eseguire un'attività specifica richiamando più funzioni all'interno dello stesso servizio.
Esempi cross-service: applicazioni di esempio che funzionano su più servizi AWS servizi.
Nozioni di base
I seguenti esempi di codice mostrano come iniziare a usare AmazonSNS.
- .NET
-
- AWS SDK for .NET
-
using Amazon.SimpleNotificationService;
using Amazon.SimpleNotificationService.Model;
namespace SNSActions;
public static class HelloSNS
{
static async Task Main(string[] args)
{
var snsClient = new AmazonSimpleNotificationServiceClient();
Console.WriteLine($"Hello Amazon SNS! Following are some of your topics:");
Console.WriteLine();
// You can use await and any of the async methods to get a response.
// Let's get a list of topics.
var response = await snsClient.ListTopicsAsync(
new ListTopicsRequest());
foreach (var topic in response.Topics)
{
Console.WriteLine($"\tTopic ARN: {topic.TopicArn}");
Console.WriteLine();
}
}
}
- C++
-
- SDKper C++
-
Codice per il CMakeLists file.txtCMake.
# Set the minimum required version of CMake for this project.
cmake_minimum_required(VERSION 3.13)
# Set the AWS service components used by this project.
set(SERVICE_COMPONENTS sns)
# Set this project's name.
project("hello_sns")
# Set the C++ standard to use to build this target.
# At least C++ 11 is required for the AWS SDK for C++.
set(CMAKE_CXX_STANDARD 11)
# Use the MSVC variable to determine if this is a Windows build.
set(WINDOWS_BUILD ${MSVC})
if (WINDOWS_BUILD) # Set the location where CMake can find the installed libraries for the AWS SDK.
string(REPLACE ";" "/aws-cpp-sdk-all;" SYSTEM_MODULE_PATH "${CMAKE_SYSTEM_PREFIX_PATH}/aws-cpp-sdk-all")
list(APPEND CMAKE_PREFIX_PATH ${SYSTEM_MODULE_PATH})
endif ()
# Find the AWS SDK for C++ package.
find_package(AWSSDK REQUIRED COMPONENTS ${SERVICE_COMPONENTS})
if (WINDOWS_BUILD AND AWSSDK_INSTALL_AS_SHARED_LIBS)
# Copy relevant AWS SDK for C++ libraries into the current binary directory for running and debugging.
# set(BIN_SUB_DIR "/Debug") # If you are building from the command line you may need to uncomment this
# and set the proper subdirectory to the executables' location.
AWSSDK_CPY_DYN_LIBS(SERVICE_COMPONENTS "" ${CMAKE_CURRENT_BINARY_DIR}${BIN_SUB_DIR})
endif ()
add_executable(${PROJECT_NAME}
hello_sns.cpp)
target_link_libraries(${PROJECT_NAME}
${AWSSDK_LINK_LIBRARIES})
Codice per il file origine hello_sns.cpp.
#include <aws/core/Aws.h>
#include <aws/sns/SNSClient.h>
#include <aws/sns/model/ListTopicsRequest.h>
#include <iostream>
/*
* A "Hello SNS" starter application which initializes an Amazon Simple Notification
* Service (Amazon SNS) client and lists the SNS topics in the current account.
*
* main function
*
* Usage: 'hello_sns'
*
*/
int main(int argc, char **argv) {
Aws::SDKOptions options;
// Optionally change the log level for debugging.
// options.loggingOptions.logLevel = Utils::Logging::LogLevel::Debug;
Aws::InitAPI(options); // Should only be called once.
{
Aws::Client::ClientConfiguration clientConfig;
// Optional: Set to the AWS Region (overrides config file).
// clientConfig.region = "us-east-1";
Aws::SNS::SNSClient snsClient(clientConfig);
Aws::Vector<Aws::SNS::Model::Topic> allTopics;
Aws::String nextToken; // Next token is used to handle a paginated response.
do {
Aws::SNS::Model::ListTopicsRequest request;
if (!nextToken.empty()) {
request.SetNextToken(nextToken);
}
const Aws::SNS::Model::ListTopicsOutcome outcome = snsClient.ListTopics(
request);
if (outcome.IsSuccess()) {
const Aws::Vector<Aws::SNS::Model::Topic> &paginatedTopics =
outcome.GetResult().GetTopics();
if (!paginatedTopics.empty()) {
allTopics.insert(allTopics.cend(), paginatedTopics.cbegin(),
paginatedTopics.cend());
}
}
else {
std::cerr << "Error listing topics " << outcome.GetError().GetMessage()
<< std::endl;
return 1;
}
nextToken = outcome.GetResult().GetNextToken();
} while (!nextToken.empty());
std::cout << "Hello Amazon SNS! You have " << allTopics.size() << " topic"
<< (allTopics.size() == 1 ? "" : "s") << " in your account."
<< std::endl;
if (!allTopics.empty()) {
std::cout << "Here are your topic ARNs." << std::endl;
for (const Aws::SNS::Model::Topic &topic: allTopics) {
std::cout << " * " << topic.GetTopicArn() << std::endl;
}
}
}
Aws::ShutdownAPI(options); // Should only be called once.
return 0;
}
- Go
-
- SDKper Go V2
-
package main
import (
"context"
"fmt"
"log"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/sns"
"github.com/aws/aws-sdk-go-v2/service/sns/types"
)
// main uses the AWS SDK for Go V2 to create an Amazon Simple Notification Service
// (Amazon SNS) client and list the topics in your account.
// This example uses the default settings specified in your shared credentials
// and config files.
func main() {
sdkConfig, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
fmt.Println("Couldn't load default configuration. Have you set up your AWS account?")
fmt.Println(err)
return
}
snsClient := sns.NewFromConfig(sdkConfig)
fmt.Println("Let's list the topics for your account.")
var topics []types.Topic
paginator := sns.NewListTopicsPaginator(snsClient, &sns.ListTopicsInput{})
for paginator.HasMorePages() {
output, err := paginator.NextPage(context.TODO())
if err != nil {
log.Printf("Couldn't get topics. Here's why: %v\n", err)
break
} else {
topics = append(topics, output.Topics...)
}
}
if len(topics) == 0 {
fmt.Println("You don't have any topics!")
} else {
for _, topic := range topics {
fmt.Printf("\t%v\n", *topic.TopicArn)
}
}
}
- Java
-
- SDKper Java 2.x
-
package com.example.sns;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SnsException;
import software.amazon.awssdk.services.sns.paginators.ListTopicsIterable;
public class HelloSNS {
public static void main(String[] args) {
SnsClient snsClient = SnsClient.builder()
.region(Region.US_EAST_1)
.build();
listSNSTopics(snsClient);
snsClient.close();
}
public static void listSNSTopics(SnsClient snsClient) {
try {
ListTopicsIterable listTopics = snsClient.listTopicsPaginator();
listTopics.stream()
.flatMap(r -> r.topics().stream())
.forEach(content -> System.out.println(" Topic ARN: " + content.topicArn()));
} catch (SnsException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}
}
- JavaScript
-
- SDKper JavaScript (v3)
-
Inizializza un SNS client ed elenca gli argomenti nel tuo account.
import { SNSClient, paginateListTopics } from "@aws-sdk/client-sns";
export const helloSns = async () => {
// The configuration object (`{}`) is required. If the region and credentials
// are omitted, the SDK uses your local configuration if it exists.
const client = new SNSClient({});
// You can also use `ListTopicsCommand`, but to use that command you must
// handle the pagination yourself. You can do that by sending the `ListTopicsCommand`
// with the `NextToken` parameter from the previous request.
const paginatedTopics = paginateListTopics({ client }, {});
const topics = [];
for await (const page of paginatedTopics) {
if (page.Topics?.length) {
topics.push(...page.Topics);
}
}
const suffix = topics.length === 1 ? "" : "s";
console.log(
`Hello, Amazon SNS! You have ${topics.length} topic${suffix} in your account.`,
);
console.log(topics.map((t) => ` * ${t.TopicArn}`).join("\n"));
};
- Kotlin
-
- SDKper Kotlin
-
import aws.sdk.kotlin.services.sns.SnsClient
import aws.sdk.kotlin.services.sns.model.ListTopicsRequest
import aws.sdk.kotlin.services.sns.paginators.listTopicsPaginated
import kotlinx.coroutines.flow.transform
/**
Before running this Kotlin 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-kotlin/latest/developer-guide/setup.html
*/
suspend fun main() {
listTopicsPag()
}
suspend fun listTopicsPag() {
SnsClient { region = "us-east-1" }.use { snsClient ->
snsClient
.listTopicsPaginated(ListTopicsRequest { })
.transform { it.topics?.forEach { topic -> emit(topic) } }
.collect { topic ->
println("The topic ARN is ${topic.topicArn}")
}
}
}