Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
@aws-cdk/aws-sns
Advanced tools
@aws-cdk/aws-sns is an AWS Cloud Development Kit (CDK) library that allows you to define Amazon Simple Notification Service (SNS) topics and subscriptions in your AWS infrastructure as code. This package provides a high-level, object-oriented abstraction to create and manage SNS resources programmatically.
Create an SNS Topic
This code sample demonstrates how to create an SNS topic with a display name using the AWS CDK.
const sns = require('@aws-cdk/aws-sns');
const cdk = require('@aws-cdk/core');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const topic = new sns.Topic(this, 'MyTopic', {
displayName: 'My Cool Topic'
});
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
Add an Email Subscription to an SNS Topic
This code sample shows how to add an email subscription to an SNS topic using the AWS CDK.
const sns = require('@aws-cdk/aws-sns');
const subs = require('@aws-cdk/aws-sns-subscriptions');
const cdk = require('@aws-cdk/core');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const topic = new sns.Topic(this, 'MyTopic');
topic.addSubscription(new subs.EmailSubscription('example@example.com'));
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
Add a Lambda Subscription to an SNS Topic
This code sample demonstrates how to add a Lambda function as a subscription to an SNS topic using the AWS CDK.
const sns = require('@aws-cdk/aws-sns');
const subs = require('@aws-cdk/aws-sns-subscriptions');
const lambda = require('@aws-cdk/aws-lambda');
const cdk = require('@aws-cdk/core');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const topic = new sns.Topic(this, 'MyTopic');
const myFunction = new lambda.Function(this, 'MyFunction', {
runtime: lambda.Runtime.NODEJS_14_X,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda')
});
topic.addSubscription(new subs.LambdaSubscription(myFunction));
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
The aws-sdk package is the official AWS SDK for JavaScript, which provides low-level APIs for interacting with AWS services, including SNS. Unlike @aws-cdk/aws-sns, which is used for defining infrastructure as code, aws-sdk is used for making API calls to AWS services at runtime.
The serverless framework is a toolkit for deploying and operating serverless architectures, including AWS Lambda and SNS. It provides a higher-level abstraction compared to @aws-cdk/aws-sns and is focused on deploying serverless applications rather than defining infrastructure as code.
Pulumi is an infrastructure as code tool that supports multiple cloud providers, including AWS. It allows you to define and manage cloud resources using familiar programming languages. Pulumi provides similar functionalities to @aws-cdk/aws-sns but offers a different approach and supports multiple clouds.
Add an SNS Topic to your stack:
import sns = require('@aws-cdk/aws-sns');
const topic = new sns.Topic(stack, 'Topic', {
displayName: 'Customer subscription topic'
});
Various subscriptions can be added to the topic by calling the .subscribeXxx()
methods on the
topic.
Add an HTTPS Subscription to your topic:
const myTopic = new sns.Topic(stack, 'MyTopic');
myTopic.subscribeUrl('MyHttpsSubscription', 'https://foobar.com/');
Subscribe a queue to the topic:
Example of subscribing a queue to a topic
Note that subscriptions of queues in different accounts need to be manually confirmed by reading the initial message from the queue and visiting the link found in it.
SNS topics can be used as targets for CloudWatch event rules:
Example of CloudWatch Event rules
This will result in adding a target to the event rule and will also modify the topic resource policy to allow CloudWatch events to publish to the topic.
0.11.0 (2018-10-11)
IMPORTANT NOTE: This release includes a breaking change in the toolkit <=> app protocol. This means that in order to synthesize CDK apps that use this version, the globally installed CDK toolkit must also be updated:
$ npm i -g aws-cdk
$ cdk --version
0.11.0 (build ...)
Like always, you will also need to update your project's library versions:
Language | Update?
--------------------------- | ------------------------------------------------------------------------------------------------------------------
JavaScript/TypeScript (npm) | npx npm-check-updates -u
Java (maven) | mvn versions:use-latest-versions
.NET (NuGet) | nuget update
framework: The cdk.App
constructor doesn't accept any arguments, and app.run()
does not return a string
anymore. All AWS CDK apps in all languages would need to be modified to adhere to the new API of the cdk.App
construct.
Instead of:
const app = new App(process.argv); // ERROR
// add stacks
process.stdout.write(app.run()); // ERROR
The new usage is:
const app = new App();
// add stacks
app.run();
framework: The CDK is no longer shipped with built-in support for JSX. You can still use JSX but you will have to manually configure it.
aws-iam: PolicyDocument
, PolicyStatement
and all PolicyPrincipal
classes moved from the @aws-cdk/cdk module and into the @aws-cdk/aws-iam module.
aws-codepipeline-api: Artifact.subartifact
method of the CodePipeline API was renamed to Artifact.atPath
.
constructor signature of TagManager
has changed. initialTags
is now passed inside a props object.
util: @aws-cdk/util is no longer available
aws-elasticloadbalancingv2: Adds classes for modeling Application and Network Load Balancers. AutoScalingGroups now implement the interface that makes constructs a load balancing target. The breaking change is that Security Group rule identifiers have been changed in order to make adding rules more reliable. No code changes are necessary but existing deployments may experience unexpected changes.
aws-cloudformation: this renames all CloudFormation Actions for CodePipeline to bring them in line with Actions defined in other service packages.
aws-codepipeline, aws-codecommit, aws-s3: change the names of the source Actions from XxxSource to XxxSourceAction. This is to align them with the other Actions, like Build. Also, CodeBuild has the concept of Sources, so it makes sense to strongly differentiate between the two.
FAQs
The CDK Construct Library for AWS::SNS
The npm package @aws-cdk/aws-sns receives a total of 100,531 weekly downloads. As such, @aws-cdk/aws-sns popularity was classified as popular.
We found that @aws-cdk/aws-sns demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.