Abonner une fonction Lambda pour recevoir des notifications d’une rubrique Amazon SNS à l’aide d’un AWS kit SDK
Les exemples de code suivants montrent comment s’abonner à une fonction Lambda afin qu’elle reçoive des notifications d’une rubrique Amazon SNS.
Les exemples d'actions sont des extraits de code de programmes de plus grande envergure et doivent être exécutés en contexte. Vous pouvez voir cette action dans son contexte dans les exemples de code suivants :
- C++
-
- Kit SDK pour C++
-
//! Subscribe to an Amazon Simple Notification Service (Amazon SNS) topic with delivery to an AWS Lambda function.
/*!
\param topicARN: The Amazon Resource Name (ARN) for an Amazon SNS topic.
\param lambdaFunctionARN: The ARN for an AWS Lambda function.
\param clientConfiguration: AWS client configuration.
\return bool: Function succeeded.
*/
bool AwsDoc::SNS::subscribeLambda(const Aws::String &topicARN,
const Aws::String &lambdaFunctionARN,
const Aws::Client::ClientConfiguration &clientConfiguration) {
Aws::SNS::SNSClient snsClient(clientConfiguration);
Aws::SNS::Model::SubscribeRequest request;
request.SetTopicArn(topicARN);
request.SetProtocol("lambda");
request.SetEndpoint(lambdaFunctionARN);
const Aws::SNS::Model::SubscribeOutcome outcome = snsClient.Subscribe(request);
if (outcome.IsSuccess()) {
std::cout << "Subscribed successfully." << std::endl;
std::cout << "Subscription ARN '" << outcome.GetResult().GetSubscriptionArn()
<< "'." << std::endl;
}
else {
std::cerr << "Error while subscribing " << outcome.GetError().GetMessage()
<< std::endl;
}
return outcome.IsSuccess();
}
- Java
-
- Kit SDK pour Java 2.x
-
public static String subLambda(SnsClient snsClient, String topicArn, String lambdaArn) {
try {
SubscribeRequest request = SubscribeRequest.builder()
.protocol("lambda")
.endpoint(lambdaArn)
.returnSubscriptionArn(true)
.topicArn(topicArn)
.build();
SubscribeResponse result = snsClient.subscribe(request);
return result.subscriptionArn();
} catch (SnsException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
return "";
}
- JavaScript
-
- SDK pour JavaScript (v3)
-
Créez le client dans un module séparé et exportez-le.
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({});
Importez le kit SDK et les modules client et appelez l’API.
import { SubscribeCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";
/**
* @param {string} topicArn - The ARN of the topic the subscriber is subscribing to.
* @param {string} endpoint - The Endpoint ARN of and AWS Lambda function.
*/
export const subscribeLambda = async (
topicArn = "TOPIC_ARN",
endpoint = "ENDPOINT"
) => {
const response = await snsClient.send(
new SubscribeCommand({
Protocol: "lambda",
TopicArn: topicArn,
Endpoint: endpoint,
})
);
console.log(response);
// {
// '$metadata': {
// httpStatusCode: 200,
// requestId: 'c8e35bcd-b3c0-5940-9f66-06f6fcc108f0',
// extendedRequestId: undefined,
// cfId: undefined,
// attempts: 1,
// totalRetryDelay: 0
// },
// SubscriptionArn: 'pending confirmation'
// }
return response;
};
- Kotlin
-
- Kit SDK pour Kotlin
-
Ceci est une documentation préliminaire pour une fonctionnalité en version de prévisualisation. Elle est susceptible d'être modifiée.
suspend fun subLambda(topicArnVal: String?, lambdaArn: String?) {
val request = SubscribeRequest {
protocol = "lambda"
endpoint = lambdaArn
returnSubscriptionArn = true
topicArn = topicArnVal
}
SnsClient { region = "us-east-1" }.use { snsClient ->
val result = snsClient.subscribe(request)
println(" The subscription Arn is ${result.subscriptionArn}")
}
}
Pour obtenir la liste complète des guides de développement AWS SDK et des exemples de code, consultez Utilisation d'Amazon SNS avec un kit SDK AWS. Cette rubrique comprend également des informations sur le démarrage et sur les versions précédentes du kit de développement logiciel (SDK).