From 9f8ff8f1eb564cc4a2d8f77f6a02e8855c314b6d Mon Sep 17 00:00:00 2001 From: Rowena Date: Tue, 1 Apr 2025 14:34:06 +0200 Subject: [PATCH 01/15] fix(mnq): start product split --- pages/{messaging => nats}/api-cli/index.mdx | 0 .../{messaging => nats}/api-cli/nats-cli.mdx | 0 .../assets/scaleway-nats-create-account.webp | Bin .../assets/scaleway-nats-creds.webp | Bin .../assets/scaleway-nats-overview.webp | Bin pages/{messaging => nats}/concepts.mdx | 0 pages/nats/faq.mdx | 46 +++ .../assets/scaleway-nats-create-account.webp | Bin .../how-to/assets/scaleway-nats-creds.webp | Bin .../how-to/assets/scaleway-nats-overview.webp | Bin .../how-to/create-credentials.mdx | 0 .../how-to/deactivate-delete-messaging.mdx | 0 .../how-to/get-started.mdx | 0 pages/{messaging => nats}/how-to/index.mdx | 0 .../how-to/manage-credentials.mdx | 0 .../how-to/monitor-mnq-cockpit.mdx | 0 pages/{messaging => nats}/index.mdx | 0 pages/{messaging => nats}/quickstart.mdx | 0 .../reference-content/index.mdx | 0 .../reference-content/limitations.mdx | 0 .../reference-content/nats-overview.mdx | 0 .../api-cli/connect-aws-cli.mdx | 0 pages/queues/api-cli/index.mdx | 8 + .../api-cli/python-node-sqs.mdx | 0 .../api-cli/sqs-sns-aws-cli.mdx | 0 .../assets/scaleway-queues-create-queue.webp | Bin .../assets/scaleway-queues-gen-creds.webp | Bin pages/queues/concepts.mdx | 183 +++++++++++ pages/queues/faq.mdx | 46 +++ .../assets/scaleway-queues-create-queue.webp | Bin .../assets/scaleway-queues-gen-creds.webp | Bin .../scaleway-queues-queue-settings.webp | Bin .../assets/scaleway-queues-update-creds.webp | Bin pages/queues/how-to/create-credentials.mdx | 116 +++++++ .../how-to/create-manage-queues.mdx | 0 .../how-to/deactivate-delete-messaging.mdx | 45 +++ pages/queues/how-to/get-started.mdx | 54 ++++ pages/queues/how-to/index.mdx | 8 + pages/queues/how-to/manage-credentials.mdx | 76 +++++ pages/queues/how-to/monitor-mnq-cockpit.mdx | 49 +++ pages/queues/index.mdx | 83 +++++ pages/queues/quickstart.mdx | 298 ++++++++++++++++++ pages/queues/reference-content/index.mdx | 8 + .../queues/reference-content/limitations.mdx | 23 ++ .../reference-content/sqs-overview.mdx | 0 .../reference-content/sqs-support.mdx | 0 .../api-cli/connect-aws-cli.mdx | 137 ++++++++ pages/topics-and-events/api-cli/index.mdx | 8 + .../api-cli/python-node-sns.mdx | 0 .../api-cli/sqs-sns-aws-cli.mdx | 191 +++++++++++ .../assets/scaleway-topics-create-subs.webp | Bin .../assets/scaleway-topics-create-topic.webp | Bin .../assets/scaleway-topics-gen-creds.webp | Bin pages/topics-and-events/concepts.mdx | 183 +++++++++++ .../{messaging => topics-and-events}/faq.mdx | 0 .../assets/scaleway-topics-create-subs.webp | Bin .../assets/scaleway-topics-create-topic.webp | Bin .../assets/scaleway-topics-gen-creds.webp | Bin .../how-to/create-credentials.mdx | 116 +++++++ .../how-to/create-manage-subscriptions.mdx | 0 .../how-to/create-manage-topics.mdx | 0 .../how-to/deactivate-delete-messaging.mdx | 45 +++ .../topics-and-events/how-to/get-started.mdx | 54 ++++ pages/topics-and-events/how-to/index.mdx | 8 + .../how-to/manage-credentials.mdx | 76 +++++ .../how-to/monitor-mnq-cockpit.mdx | 49 +++ pages/topics-and-events/index.mdx | 83 +++++ pages/topics-and-events/quickstart.mdx | 298 ++++++++++++++++++ .../reference-content/index.mdx | 8 + .../reference-content/limitations.mdx | 23 ++ .../reference-content/sns-overview.mdx | 0 .../reference-content/sns-support.mdx | 0 72 files changed, 2322 insertions(+) rename pages/{messaging => nats}/api-cli/index.mdx (100%) rename pages/{messaging => nats}/api-cli/nats-cli.mdx (100%) rename pages/{messaging => nats}/assets/scaleway-nats-create-account.webp (100%) rename pages/{messaging => nats}/assets/scaleway-nats-creds.webp (100%) rename pages/{messaging => nats}/assets/scaleway-nats-overview.webp (100%) rename pages/{messaging => nats}/concepts.mdx (100%) create mode 100644 pages/nats/faq.mdx rename pages/{messaging => nats}/how-to/assets/scaleway-nats-create-account.webp (100%) rename pages/{messaging => nats}/how-to/assets/scaleway-nats-creds.webp (100%) rename pages/{messaging => nats}/how-to/assets/scaleway-nats-overview.webp (100%) rename pages/{messaging => nats}/how-to/create-credentials.mdx (100%) rename pages/{messaging => nats}/how-to/deactivate-delete-messaging.mdx (100%) rename pages/{messaging => nats}/how-to/get-started.mdx (100%) rename pages/{messaging => nats}/how-to/index.mdx (100%) rename pages/{messaging => nats}/how-to/manage-credentials.mdx (100%) rename pages/{messaging => nats}/how-to/monitor-mnq-cockpit.mdx (100%) rename pages/{messaging => nats}/index.mdx (100%) rename pages/{messaging => nats}/quickstart.mdx (100%) rename pages/{messaging => nats}/reference-content/index.mdx (100%) rename pages/{messaging => nats}/reference-content/limitations.mdx (100%) rename pages/{messaging => nats}/reference-content/nats-overview.mdx (100%) rename pages/{messaging => queues}/api-cli/connect-aws-cli.mdx (100%) create mode 100644 pages/queues/api-cli/index.mdx rename pages/{messaging => queues}/api-cli/python-node-sqs.mdx (100%) rename pages/{messaging => queues}/api-cli/sqs-sns-aws-cli.mdx (100%) rename pages/{messaging => queues}/assets/scaleway-queues-create-queue.webp (100%) rename pages/{messaging => queues}/assets/scaleway-queues-gen-creds.webp (100%) create mode 100644 pages/queues/concepts.mdx create mode 100644 pages/queues/faq.mdx rename pages/{messaging => queues}/how-to/assets/scaleway-queues-create-queue.webp (100%) rename pages/{messaging => queues}/how-to/assets/scaleway-queues-gen-creds.webp (100%) rename pages/{messaging => queues}/how-to/assets/scaleway-queues-queue-settings.webp (100%) rename pages/{messaging => queues}/how-to/assets/scaleway-queues-update-creds.webp (100%) create mode 100644 pages/queues/how-to/create-credentials.mdx rename pages/{messaging => queues}/how-to/create-manage-queues.mdx (100%) create mode 100644 pages/queues/how-to/deactivate-delete-messaging.mdx create mode 100644 pages/queues/how-to/get-started.mdx create mode 100644 pages/queues/how-to/index.mdx create mode 100644 pages/queues/how-to/manage-credentials.mdx create mode 100644 pages/queues/how-to/monitor-mnq-cockpit.mdx create mode 100644 pages/queues/index.mdx create mode 100644 pages/queues/quickstart.mdx create mode 100644 pages/queues/reference-content/index.mdx create mode 100644 pages/queues/reference-content/limitations.mdx rename pages/{messaging => queues}/reference-content/sqs-overview.mdx (100%) rename pages/{messaging => queues}/reference-content/sqs-support.mdx (100%) create mode 100644 pages/topics-and-events/api-cli/connect-aws-cli.mdx create mode 100644 pages/topics-and-events/api-cli/index.mdx rename pages/{messaging => topics-and-events}/api-cli/python-node-sns.mdx (100%) create mode 100644 pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx rename pages/{messaging => topics-and-events}/assets/scaleway-topics-create-subs.webp (100%) rename pages/{messaging => topics-and-events}/assets/scaleway-topics-create-topic.webp (100%) rename pages/{messaging => topics-and-events}/assets/scaleway-topics-gen-creds.webp (100%) create mode 100644 pages/topics-and-events/concepts.mdx rename pages/{messaging => topics-and-events}/faq.mdx (100%) rename pages/{messaging => topics-and-events}/how-to/assets/scaleway-topics-create-subs.webp (100%) rename pages/{messaging => topics-and-events}/how-to/assets/scaleway-topics-create-topic.webp (100%) rename pages/{messaging => topics-and-events}/how-to/assets/scaleway-topics-gen-creds.webp (100%) create mode 100644 pages/topics-and-events/how-to/create-credentials.mdx rename pages/{messaging => topics-and-events}/how-to/create-manage-subscriptions.mdx (100%) rename pages/{messaging => topics-and-events}/how-to/create-manage-topics.mdx (100%) create mode 100644 pages/topics-and-events/how-to/deactivate-delete-messaging.mdx create mode 100644 pages/topics-and-events/how-to/get-started.mdx create mode 100644 pages/topics-and-events/how-to/index.mdx create mode 100644 pages/topics-and-events/how-to/manage-credentials.mdx create mode 100644 pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx create mode 100644 pages/topics-and-events/index.mdx create mode 100644 pages/topics-and-events/quickstart.mdx create mode 100644 pages/topics-and-events/reference-content/index.mdx create mode 100644 pages/topics-and-events/reference-content/limitations.mdx rename pages/{messaging => topics-and-events}/reference-content/sns-overview.mdx (100%) rename pages/{messaging => topics-and-events}/reference-content/sns-support.mdx (100%) diff --git a/pages/messaging/api-cli/index.mdx b/pages/nats/api-cli/index.mdx similarity index 100% rename from pages/messaging/api-cli/index.mdx rename to pages/nats/api-cli/index.mdx diff --git a/pages/messaging/api-cli/nats-cli.mdx b/pages/nats/api-cli/nats-cli.mdx similarity index 100% rename from pages/messaging/api-cli/nats-cli.mdx rename to pages/nats/api-cli/nats-cli.mdx diff --git a/pages/messaging/assets/scaleway-nats-create-account.webp b/pages/nats/assets/scaleway-nats-create-account.webp similarity index 100% rename from pages/messaging/assets/scaleway-nats-create-account.webp rename to pages/nats/assets/scaleway-nats-create-account.webp diff --git a/pages/messaging/assets/scaleway-nats-creds.webp b/pages/nats/assets/scaleway-nats-creds.webp similarity index 100% rename from pages/messaging/assets/scaleway-nats-creds.webp rename to pages/nats/assets/scaleway-nats-creds.webp diff --git a/pages/messaging/assets/scaleway-nats-overview.webp b/pages/nats/assets/scaleway-nats-overview.webp similarity index 100% rename from pages/messaging/assets/scaleway-nats-overview.webp rename to pages/nats/assets/scaleway-nats-overview.webp diff --git a/pages/messaging/concepts.mdx b/pages/nats/concepts.mdx similarity index 100% rename from pages/messaging/concepts.mdx rename to pages/nats/concepts.mdx diff --git a/pages/nats/faq.mdx b/pages/nats/faq.mdx new file mode 100644 index 0000000000..29fdf41f40 --- /dev/null +++ b/pages/nats/faq.mdx @@ -0,0 +1,46 @@ +--- +meta: + title: NATS, Queues, and Topics and Events FAQ + description: Discover Scaleway NATS, Queues, and Topics and Events, and get answers to common questions about the different protocols available, compatibility with various services, and billing. +content: + h1: Messaging and Queuing FAQ +dates: + validation: 2024-12-04 +category: serverless +productIcon: NatsProductIcon +--- + +## What is NATS, Queues, and Topics and Events? + +These are three distinct managed message broker tools offered by Scaleway, based on the NATS, SQS and SNS protocols respectively. Previously, these products were grouped together as 'Messaging and Queuing', but have now become three separate products in their own right. + +## What are NATS, SNS and SQS? + +NATS, SNS and SQS are all messaging protocols used by the Scaleway NATS, Queues, and Topics and Events products. You can find out more about these protocols, and other essential concepts, on our dedicated [concepts page](/messaging/concepts/). + +## Is the Scaleway Queues gateway compatible with my application, framework or tool? + +We currently implement the API endpoints listed [here](/messaging/reference-content/sqs-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including KEDA and Symfony. Note that you need to specify both Regions and URL to ensure compatibility. + +## Does Scaleway Topics and Events support all SNS features? + +The following subscriber types are supported: +- HTTP/S clients +- Serverless Functions and Containers +- Scaleway Queues queues + +For more details on supported and unsupported Topics and Events features, see our [dedicated page](/messaging/reference-content/sns-support/). + +## Can I configure Scaleway NATS via Terraform/OpenTofu? + +Yes, check out our [tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) on how to configure Scaleway NATS with the Terraform/OpenTofu [NATS Jetstream provider](https://registry.terraform.io/providers/nats-io/jetstream/latest/docs). + +## How are NATS, Queues, and Topics and Events billed? + +Billing is based on: + +- For NATS: [Stream volume](/messaging/concepts/#stream-volume) (the total sum of each message's size going through the stream) and [stream persistence](/messaging/concepts/#stream-persistence) (the total amount of data stored * duration) +- For Queues: [Queue volume](/messaging/concepts/#queue-volume) (the total sum of each message's size going through the queue) +- For Topics and Events : [Topic Volume](/messaging/concepts/#queue-volume)(the total sum of each message's size going out from the topic to the subscriptions) + +For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/messaging/how-to/assets/scaleway-nats-create-account.webp b/pages/nats/how-to/assets/scaleway-nats-create-account.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-nats-create-account.webp rename to pages/nats/how-to/assets/scaleway-nats-create-account.webp diff --git a/pages/messaging/how-to/assets/scaleway-nats-creds.webp b/pages/nats/how-to/assets/scaleway-nats-creds.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-nats-creds.webp rename to pages/nats/how-to/assets/scaleway-nats-creds.webp diff --git a/pages/messaging/how-to/assets/scaleway-nats-overview.webp b/pages/nats/how-to/assets/scaleway-nats-overview.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-nats-overview.webp rename to pages/nats/how-to/assets/scaleway-nats-overview.webp diff --git a/pages/messaging/how-to/create-credentials.mdx b/pages/nats/how-to/create-credentials.mdx similarity index 100% rename from pages/messaging/how-to/create-credentials.mdx rename to pages/nats/how-to/create-credentials.mdx diff --git a/pages/messaging/how-to/deactivate-delete-messaging.mdx b/pages/nats/how-to/deactivate-delete-messaging.mdx similarity index 100% rename from pages/messaging/how-to/deactivate-delete-messaging.mdx rename to pages/nats/how-to/deactivate-delete-messaging.mdx diff --git a/pages/messaging/how-to/get-started.mdx b/pages/nats/how-to/get-started.mdx similarity index 100% rename from pages/messaging/how-to/get-started.mdx rename to pages/nats/how-to/get-started.mdx diff --git a/pages/messaging/how-to/index.mdx b/pages/nats/how-to/index.mdx similarity index 100% rename from pages/messaging/how-to/index.mdx rename to pages/nats/how-to/index.mdx diff --git a/pages/messaging/how-to/manage-credentials.mdx b/pages/nats/how-to/manage-credentials.mdx similarity index 100% rename from pages/messaging/how-to/manage-credentials.mdx rename to pages/nats/how-to/manage-credentials.mdx diff --git a/pages/messaging/how-to/monitor-mnq-cockpit.mdx b/pages/nats/how-to/monitor-mnq-cockpit.mdx similarity index 100% rename from pages/messaging/how-to/monitor-mnq-cockpit.mdx rename to pages/nats/how-to/monitor-mnq-cockpit.mdx diff --git a/pages/messaging/index.mdx b/pages/nats/index.mdx similarity index 100% rename from pages/messaging/index.mdx rename to pages/nats/index.mdx diff --git a/pages/messaging/quickstart.mdx b/pages/nats/quickstart.mdx similarity index 100% rename from pages/messaging/quickstart.mdx rename to pages/nats/quickstart.mdx diff --git a/pages/messaging/reference-content/index.mdx b/pages/nats/reference-content/index.mdx similarity index 100% rename from pages/messaging/reference-content/index.mdx rename to pages/nats/reference-content/index.mdx diff --git a/pages/messaging/reference-content/limitations.mdx b/pages/nats/reference-content/limitations.mdx similarity index 100% rename from pages/messaging/reference-content/limitations.mdx rename to pages/nats/reference-content/limitations.mdx diff --git a/pages/messaging/reference-content/nats-overview.mdx b/pages/nats/reference-content/nats-overview.mdx similarity index 100% rename from pages/messaging/reference-content/nats-overview.mdx rename to pages/nats/reference-content/nats-overview.mdx diff --git a/pages/messaging/api-cli/connect-aws-cli.mdx b/pages/queues/api-cli/connect-aws-cli.mdx similarity index 100% rename from pages/messaging/api-cli/connect-aws-cli.mdx rename to pages/queues/api-cli/connect-aws-cli.mdx diff --git a/pages/queues/api-cli/index.mdx b/pages/queues/api-cli/index.mdx new file mode 100644 index 0000000000..aef6e7ef1f --- /dev/null +++ b/pages/queues/api-cli/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - API/CLI Documentation + description: NATS, Queues, and Topics and Events API/CLI Documentation +content: + h1: NATS, Queues, and Topics and Events - API/CLI Documentation + paragraph: NATS, Queues, and Topics and Events API/CLI Documentation +--- diff --git a/pages/messaging/api-cli/python-node-sqs.mdx b/pages/queues/api-cli/python-node-sqs.mdx similarity index 100% rename from pages/messaging/api-cli/python-node-sqs.mdx rename to pages/queues/api-cli/python-node-sqs.mdx diff --git a/pages/messaging/api-cli/sqs-sns-aws-cli.mdx b/pages/queues/api-cli/sqs-sns-aws-cli.mdx similarity index 100% rename from pages/messaging/api-cli/sqs-sns-aws-cli.mdx rename to pages/queues/api-cli/sqs-sns-aws-cli.mdx diff --git a/pages/messaging/assets/scaleway-queues-create-queue.webp b/pages/queues/assets/scaleway-queues-create-queue.webp similarity index 100% rename from pages/messaging/assets/scaleway-queues-create-queue.webp rename to pages/queues/assets/scaleway-queues-create-queue.webp diff --git a/pages/messaging/assets/scaleway-queues-gen-creds.webp b/pages/queues/assets/scaleway-queues-gen-creds.webp similarity index 100% rename from pages/messaging/assets/scaleway-queues-gen-creds.webp rename to pages/queues/assets/scaleway-queues-gen-creds.webp diff --git a/pages/queues/concepts.mdx b/pages/queues/concepts.mdx new file mode 100644 index 0000000000..4cbee27ce6 --- /dev/null +++ b/pages/queues/concepts.mdx @@ -0,0 +1,183 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - Concepts + description: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. +content: + h1: NATS, Queues, and Topics and Events - Concepts + paragraph: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. +categories: + - +tags: messaging queuing concepts nats queues topics events +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +## Content-based + +Content-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [topic-based](#topic-based) systems in terms of the way messages are [filtered](#filtering)/routed. In a content-based messaging system, the subscriber specifies the properties of the messages they want to receive, based on the message's attributes or content. Message delivery is therefore selective, and messages are only delivered to a subscriber if the attributes or content match the constraints they set. + +## Content-based deduplication + +Content-based deduplication is a setting available for [FIFO](#fifo) queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). + +## Credentials + +Credentials give services and platforms access to Scaleway NATS, Queues, and Topics and Events, enabling them to connect to the host system. Credentials are product-specific: for **Queues** and **Topics ad Events**, different levels of permissions can be defined to write, read, or manage queues/topics. NATS credentials give full read-write-manage access. Refer to our [additional content](/messaging/reference-content/) for more information. + +## Dead-letter queue + +A **D**ead-**l**etter **q**ueue (DLQ), or **undelivered-message queue**, receives and holds messages that cannot be delivered to their destination queues. A DLQ must be of the same type (FIFO or Standard), in the same Project and in the same region as the queue(s) it serves. Each DLQ also has an associated parameter: [maximum receive count](#maximum-receive-count). A single queue can serve as dead-letter queue to multiple source queues. + +If you designate a queue as a DLQ and its [storage quota](/organizations-and-projects/additional-content/organization-quotas/#queues) is reached, messages won't be redriven to the DLQ until enough free space is available again. If your DLQ is at its full quota, free up space by receiving and deleting messages from any queue in your Project. + +## Fanout + +Fanout is a type of messaging pattern. A fanout exchange broadcasts messages to all queues/consumers it is aware of. This allows the same published message to be consumed by different consumers, who will process it in different ways. Each message is processed in the order in which it arrives. + +## FIFO + +FIFO stands for **F**irst **I**n **F**irst **O**ut, and represents a type of queue or topic where the exact order of messages is preserved, and duplicate messages are not tolerated. As well as these specificities, FIFO queues and topics support all the same features as the [Standard](#standard) type. Consider using FIFO queues and topics for any use cases where the order of messages is critical, such as e-commerce order management systems, systems where one action should not happen until another has been completed, or first-come-first-served ticketing systems. + +## Filtering + +In a [topic-based](#topic-based) system, where topics handle the logic, filtering is similar to routing. Messages are sent to defined topics, which can be thought of as filters in so far as subscribers can subscribe only to the topics they are interested in. In a [content-based](#content-based) system, filtering is carried out more directly by subscribers, who define filters for messages based on the content/attributes they want to receive. + +## Long Polling + +Long polling is a technology where the client requests information from the server without expecting an immediate response. For [Queues](#queues), this enables clients to wait for the system to get messages that are not immediately available. + +## Message broker + +A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. All communication with producers and consumers uses a [protocol](#messaging-protocol). There are two basic models of communication for message brokers: [publish/subscribe](#publishsubscribe) and [queuing](#queuing). + +## Maximum receive count + +The maximum receive count is a setting that can be configured for a [dead-letter queue](#dead-letter-queue). It defines how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. This value must be between 1 and 1,000. + +## Message retention period + +The message retention period is a setting that can be configured for a queue. It represents the length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). + +## Messaging and Queuing + +Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#nats), [Queues](#queues), and [Topics and Events](#topics-and-events). + +## Messaging protocol + +A messaging protocol defines a structured way for users / platforms / services / applications to exchange data and messages, even if normally they do not "speak the same language". Protocols also describe how messages should be processed, prioritized, managed and routed. Scaleway NATS is based on the [NATS](#nats) protocol, Queues on the [SQS](#sqs) protocol, and Topics and Events on the [SNS](#sns) protocol. + +## NATS + +The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is an open-source messaging system written in Go. It is part of the Cloud Native Computing Foundation (CNCF) and has more than 40 client language implementations. The application has been designed with performance, scalability, and ease of use in mind. + +Check our our [NATS quickstart](/messaging/quickstart/#quickstart-for-nats) to get started with Scaleway NATS, or our [tutorial](/tutorials/large-messages/) on creating a serverless architecture to process large messages with NATS, to get an idea of how to go further. + +## NATS account + +A NATS account sets a scope for any NATS credentials, messages, queues and streams held within it. You can create one or multiple NATS accounts with Scaleway NATS. + +## Protocol + +See [messaging protocol](#messaging-protocol). + +## Publish/Subscribe + +Also known as "pub/sub", the publish/subscribe model provides a pattern or framework for the exchange of messages between publishers and subscribers. It contrasts with the [queuing](#queuing) model. The key feature of publish/subscribe is that messages are not sent to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. The process of selecting which messages to receive is called [filtering](#filtering), which can be [topic-based](#topic-based) or [content-based](#content-based). The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. + +## Queue + +Creating a queue with [Scaleway Queues](#queue) facilitates asynchronous communication between different microservices, applications, and platforms. You can create a queue, configure its delivery and message parameters, and then start sending messages to it. Messages are stored in the queue until they are processed and delivered, and deleted once consumed. [Read more about creating and configuring queues](/messaging/how-to/create-manage-queues/), or check our [tutorial on creating a serverless scraping architecture using a queue](/tutorials/create-serverless-scraping/) to get an idea of what you can do with message queues. + +## Queues + +Scaleway Queues is a product for creating managed messaging queues based on the [SQS](#sqs) protocol. Previously, it was part of the Messaging and Queuing product. + +## Queue types + +When creating queues with Scaleway Queues, two queue types are available. [Standard](#standard) queues provide at-least-once delivery, while [FIFO](#fifo) queues offer first-in-first-out delivery, and (unlike Standard queues) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO queue types. Find out more about creating queues with our [dedicated documentation](/messaging/how-to/create-manage-queues/). + +## Queuing + +The message queuing model provides a pattern or framework for sending messages, which contrasts with the [publish/subscribe](#publishsubscribe) model. Queuing is a form of asynchronous service-to-service communication. Whereas with the publish/subscribe model multiple subscribers can receive each message, with the queuing model, messages have just one destination. Messages are stored in the queue until they are processed and delivered, and they are deleted once consumed. This model is used in serverless and microservices architectures. + +## Queue volume + +Queue volume is one of the factors affecting the billing of Scaleway Queues. Queue volume is calculated as the number of messages in a queue, multiplied by the message size. Or, the sum of the size of all messages in a queue. + +## Region + +NATS, Queues, and Topics and Events are available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS, Queues, and Topics and Events. + +When [creating a NATS account](/messaging/how-to/get-started/#how-to-create-a-nats-account) or creating queues or topics, you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. + +## Routing + +In [topic-based](#topic-based) messaging, topics allow messages to be routed to the correct subscribers. Topics act as labels for each message, and the broker routes messages to subscribers who match the topic. + +## SNS + +The Scaleway **Topics and Events** product is based on the SNS protocol. **S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. + +## SQS + +The Scaleway **Queues** product is based on the SNS protocol. **S**imple **Q**ueue **S**ervice, or SQS, is a distributed message [queuing](#queuing) service that supports programmatic sending of messages via web service applications. + +## Standard + +Standard-type queues and topics represent the default queue/topic type, and offer an at-least-once message delivery system. Unlike [FIFO](#fifo) queues and topics, standard queues provide only best-effort attempts to deliver messages in order. At-least-once delivery means that it is possible under rare circumstances that the same message may be received more than once. + +## Stream + +Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Each message can be delivered to one or more consumers. + +## Stream volume + +Stream volume is one of the factors affecting the billing of Scaleway NATS. Stream volume is calculated as the number of messages in a stream, multiplied by the message size. Or, the sum of the size of all messages in a stream. + +## Stream persistence + +Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. + +## Subscriber + +In [publish/subscribe](#publishsubscribe) systems such as [Topics and Events](#topics-and-events), a subscriber is the entity (e.g. a queue, function, or URL) that messages from topics are pushed to. Subscribers can filter messages based on their topic or content. + +## Subscription + +A subscription is a connection between a client or endpoint, and a topic. By creating a subscription, the subscribed endpoint receives messages and notifications published to the topic. You can [create subscriptions](/messaging/how-to/create-manage-subscriptions/) for HTTP/S endpoints, Scaleway queues, and Scaleway Serverless [Functions](/serverless-functions/quickstart/) and [Containers](/serverless-containers/quickstart/). + +## Subscription protocols and endpoints + +A subscription protocol refers to the communication method used to deliver messages to a subscriber. Different types of subscriber require different protocols. When you create a new subscription to a topic with Scaleway Topics and Events, the following options are available: + +| Protocol | Endpoint / Client | Note | +|-------------------------------------|--------------------------------------------------|-----------------------------------| +| HTTP | The URL of a service or web server that can receive notifications (HTTP POST requests) from Topics and Events, e.g. `http://example.fr` | - For security reasons, we recommend using the HTTPS protocol rather than HTTP.
- HTTP subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | +| HTTPS | The URL of a service or web server that can receive notifications (HTTPS POST requests) from Topics and Events, e.g. `https://example.fr` | - HTTPS subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | +| Serverless Functions and Containers | A Scaleway Serverless [Function](/serverless-functions/quickstart/) or [Container](/serverless-containers/quickstart/)
| - It must have a [public](/serverless-functions/concepts/#privacy-policy) privacy policy
- It must be in a [namespace](/serverless-functions/concepts/#namespace) from the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | +| Queues | A Scaleway [queue](#queue)
| - It must be in the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | + +## Topic + +A topic is a communication channel used to send messages and notifications to subscribed endpoints or clients. Publishers send messages to topics, and those messages are received by subscribers. Subscribers can include Serverless Functions, Scaleway queues and HTTP/HTTPS endpoints. As such, topics decouple the publishing and the receiving of messages, allowing for flexibility and scalabilty in building loosely-coupled systems. + +## Topic types + +When creating topics with Scaleway Topics and Events, two topic types are available. [Standard](#standard) topics provide at-least-once delivery, while [FIFO](#fifo) topics offer first-in-first-out delivery, and (unlike Standard topics) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO topic types. Find out more about creating topics with our [dedicated documentation](/messaging/how-to/create-manage-topics/). + +## Topic-based + +Topic-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [content-based](#content-based) systems. In a topic-based system, messages are published to "topics" or named logical channels. See [topic](#topic) for more information. + +## Topic volume + +Topic volume is one of the factors affecting the billing of Scaleway Topics and Events. Topic volume is calculated as the total sum of the sizes of all messages sent from a topic to its subscriptions. + +## Topics and Events + +Scaleway Topics and Events is a product for creating managed messaging topics based on the [SNS](#sns) protocol. Previously, it was part of the Messaging and Queuing product. + +## Visibility timeout + +Visibility timeout is a setting that can be configured for a Scaleway queue. It represents the length of time (in seconds) during which, after a message is received, the queue hides it, so it cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). diff --git a/pages/queues/faq.mdx b/pages/queues/faq.mdx new file mode 100644 index 0000000000..29fdf41f40 --- /dev/null +++ b/pages/queues/faq.mdx @@ -0,0 +1,46 @@ +--- +meta: + title: NATS, Queues, and Topics and Events FAQ + description: Discover Scaleway NATS, Queues, and Topics and Events, and get answers to common questions about the different protocols available, compatibility with various services, and billing. +content: + h1: Messaging and Queuing FAQ +dates: + validation: 2024-12-04 +category: serverless +productIcon: NatsProductIcon +--- + +## What is NATS, Queues, and Topics and Events? + +These are three distinct managed message broker tools offered by Scaleway, based on the NATS, SQS and SNS protocols respectively. Previously, these products were grouped together as 'Messaging and Queuing', but have now become three separate products in their own right. + +## What are NATS, SNS and SQS? + +NATS, SNS and SQS are all messaging protocols used by the Scaleway NATS, Queues, and Topics and Events products. You can find out more about these protocols, and other essential concepts, on our dedicated [concepts page](/messaging/concepts/). + +## Is the Scaleway Queues gateway compatible with my application, framework or tool? + +We currently implement the API endpoints listed [here](/messaging/reference-content/sqs-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including KEDA and Symfony. Note that you need to specify both Regions and URL to ensure compatibility. + +## Does Scaleway Topics and Events support all SNS features? + +The following subscriber types are supported: +- HTTP/S clients +- Serverless Functions and Containers +- Scaleway Queues queues + +For more details on supported and unsupported Topics and Events features, see our [dedicated page](/messaging/reference-content/sns-support/). + +## Can I configure Scaleway NATS via Terraform/OpenTofu? + +Yes, check out our [tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) on how to configure Scaleway NATS with the Terraform/OpenTofu [NATS Jetstream provider](https://registry.terraform.io/providers/nats-io/jetstream/latest/docs). + +## How are NATS, Queues, and Topics and Events billed? + +Billing is based on: + +- For NATS: [Stream volume](/messaging/concepts/#stream-volume) (the total sum of each message's size going through the stream) and [stream persistence](/messaging/concepts/#stream-persistence) (the total amount of data stored * duration) +- For Queues: [Queue volume](/messaging/concepts/#queue-volume) (the total sum of each message's size going through the queue) +- For Topics and Events : [Topic Volume](/messaging/concepts/#queue-volume)(the total sum of each message's size going out from the topic to the subscriptions) + +For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/messaging/how-to/assets/scaleway-queues-create-queue.webp b/pages/queues/how-to/assets/scaleway-queues-create-queue.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-queues-create-queue.webp rename to pages/queues/how-to/assets/scaleway-queues-create-queue.webp diff --git a/pages/messaging/how-to/assets/scaleway-queues-gen-creds.webp b/pages/queues/how-to/assets/scaleway-queues-gen-creds.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-queues-gen-creds.webp rename to pages/queues/how-to/assets/scaleway-queues-gen-creds.webp diff --git a/pages/messaging/how-to/assets/scaleway-queues-queue-settings.webp b/pages/queues/how-to/assets/scaleway-queues-queue-settings.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-queues-queue-settings.webp rename to pages/queues/how-to/assets/scaleway-queues-queue-settings.webp diff --git a/pages/messaging/how-to/assets/scaleway-queues-update-creds.webp b/pages/queues/how-to/assets/scaleway-queues-update-creds.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-queues-update-creds.webp rename to pages/queues/how-to/assets/scaleway-queues-update-creds.webp diff --git a/pages/queues/how-to/create-credentials.mdx b/pages/queues/how-to/create-credentials.mdx new file mode 100644 index 0000000000..16ee57b0c8 --- /dev/null +++ b/pages/queues/how-to/create-credentials.mdx @@ -0,0 +1,116 @@ +--- +meta: + title: How to create credentials for NATS, Queues, or Topics and Events + description: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. +content: + h1: How to create credentials for NATS, Queues, or Topics and Events + paragraph: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. +tags: credentials messaging queuing key token +categories: + - serverless +dates: + validation: 2024-10-18 + posted: 2022-08-11 +--- + +This page shows how to create [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). Credentials give their bearer (e.g. services and platforms) access to your service. + +You can create multiple sets of credentials for each of your NATS accounts, and for your Queues and Topics and Events services. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create credentials for a NATS account + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +5. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +7. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. + +## How to create credentials for Queues + +Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +## How to create credentials for Topics and Events + +Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + + + + + diff --git a/pages/messaging/how-to/create-manage-queues.mdx b/pages/queues/how-to/create-manage-queues.mdx similarity index 100% rename from pages/messaging/how-to/create-manage-queues.mdx rename to pages/queues/how-to/create-manage-queues.mdx diff --git a/pages/queues/how-to/deactivate-delete-messaging.mdx b/pages/queues/how-to/deactivate-delete-messaging.mdx new file mode 100644 index 0000000000..f8ef3f4fbe --- /dev/null +++ b/pages/queues/how-to/deactivate-delete-messaging.mdx @@ -0,0 +1,45 @@ +--- +meta: + title: How to delete a NATS, Queues, or Topics and Events service + description: Delete Scaleway NATS, Queues, or Topics and Events effectively. Safely remove resources with this straightforward guide. +content: + h1: How to delete a NATS, Queues, or Topics and Events service + paragraph: Delete Scaleway NATS, Queues, or Topics and Events services effectively. Safely remove resources with this straightforward guide. +dates: + validation: 2024-10-17 + posted: 2023-10-03 +tags: delete messaging queuing queueing messaging-and-queuing service disable deactivate nats-account stop +categories: + - serverless +--- + +This page shows how to delete a Scaleway **NATS**, account. + +Note that it is no longer necessary to deactivate services for **Queues** or **Topics and Events**: simply delete the queues, topics, subscriptions or other associated resources for the product directly. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) + +## How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. + + +Repeat the process above for each NATS account you want to delete. Remember to use the region drop-down as appropriate to access the different NATS accounts you hold in different regions. + + + + diff --git a/pages/queues/how-to/get-started.mdx b/pages/queues/how-to/get-started.mdx new file mode 100644 index 0000000000..639996edfa --- /dev/null +++ b/pages/queues/how-to/get-started.mdx @@ -0,0 +1,54 @@ +--- +meta: + title: How to get started with NATS, Queues, or Topics and Events + description: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events services effortlessly. +content: + h1: How to get started with NATS, Queues, or Topics and Events + paragraph: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events effortlessly. +tags: messaging queuing enable disable nats sqs sns nats-account account create +categories: + - serverless +dates: + validation: 2024-10-17 + posted: 2023-10-03 +--- + +This page shows how to get started with Scaleway **NATS**, **Queues** or **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). + +The process differs depending on the [messaging protocol](/messaging/concepts/#messaging-protocol) you want to use: + +- For NATS, you need to **create a NATS account**. +- For **Queues** and **Topics and Events**, you no longer need to activate the protocol, but can proceed directly to [creating queues](/messaging/how-to/create-manage-queues) and/or [topics](/messaging/how-to/create-manage-topics). + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a NATS account + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + + + You can create more NATS accounts in your pre-selected region if you wish, by clicking on the `+ Create NATS account` button. To create NATS accounts in other regions, repeat the steps above starting from step 2 and selecting the required region. + + + +## How to activate Queues or Topics and Events + +For **Queues** and **Topics and Events**, you no longer need to activate the individual protocols. Proceed directly to [creating queues](/messaging/how-to/create-manage-queues) or [topics](/messaging/how-to/create-manage-topics) directly. \ No newline at end of file diff --git a/pages/queues/how-to/index.mdx b/pages/queues/how-to/index.mdx new file mode 100644 index 0000000000..e54fd91319 --- /dev/null +++ b/pages/queues/how-to/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - How Tos + description: NATS, Queues, and Topics and Events How Tos +content: + h1: NATS, Queues, and Topics and Events - How Tos + paragraph: NATS, Queues, and Topics and Events How Tos +--- diff --git a/pages/queues/how-to/manage-credentials.mdx b/pages/queues/how-to/manage-credentials.mdx new file mode 100644 index 0000000000..4ea9a79652 --- /dev/null +++ b/pages/queues/how-to/manage-credentials.mdx @@ -0,0 +1,76 @@ +--- +meta: + title: How to manage credentials for NATS, Queues, or Topics and Events + description: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. +content: + h1: How to manage credentials for NATS, Queues, or Topics and Events + paragraph: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. +dates: + validation: 2024-10-17 + posted: 2022-08-11 +tags: manage credentials messaging queuing permissions update revoke +categories: + - serverless +--- + +Credentials give their bearer (e.g. services and platforms) access to your service. + +This page shows how to manage [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). + +Credentials for **Queues** and **Topics and Events** can be updated to change their permissions, or revoked. **NATS** credentials can only be revoked, not updated. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/messaging/how-to/create-credentials/) + +## How to update Queues or Topics and Events credentials + +1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to update. + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to update. + +4. Click the button next to the credentials you want to update, and select **Update credentials**. A pop-up displays, such as the one below for Queues: + + + +5. Make the required updates to your credentials. You can modify the name, and the permissions. + +6. Click **Update credentials**. + + The credentials are updated and you are returned to the product's **Credentials** listing. + +## How to revoke Queues or Topics and Events credentials + +1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to revoke. + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to revoke. + +4. Click the button next to the credentials you want to revoke and select **Revoke**. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +5. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the product's **Credentials** listing. + +## How to revoke NATS credentials + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Select the NATS account you want to revoke credentials for. + +3. In the **Credentials** panel, click the button next to the credentials you want to revoke. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +5. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the NATS account's **Overview** page. + + diff --git a/pages/queues/how-to/monitor-mnq-cockpit.mdx b/pages/queues/how-to/monitor-mnq-cockpit.mdx new file mode 100644 index 0000000000..c957711a74 --- /dev/null +++ b/pages/queues/how-to/monitor-mnq-cockpit.mdx @@ -0,0 +1,49 @@ +--- +meta: + title: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit + description: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +content: + h1: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit + paragraph: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +tags: messaging queuing queueing cockpit metrics observability +categories: + - serverless +dates: + validation: 2024-10-17 + posted: 2023-09-07 +--- + +You can view metrics for your NATS, Queues, and Topics and Events services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues/streams and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: + +1. Generate your Grafana credentials +2. Access the product's metrics dashboard + +These steps are described below. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) + +## How to activate your Cockpit + +Scaleway Cockpit is activated by default if you have created [Scaleway resources integrated with Cockpit](/cockpit/reference-content/cockpit-limitations/#product-integration-into-cockpit). + +## How to generate Grafana credentials + +To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). + +## How to access your NATS, Queues, or Topics and Events dashboard and view your metrics + +1. Click **NATS**, **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **protocol** you want to view metrics for, and navigate to the **Metrics** tab. + +3. Click **Open Grafana metrics dashboard**. + +4. Enter your Grafana username and password to log in. + + You are directed to the dashboard for the product in question, where you can view all your metrics. + + diff --git a/pages/queues/index.mdx b/pages/queues/index.mdx new file mode 100644 index 0000000000..89f6a6c8a3 --- /dev/null +++ b/pages/queues/index.mdx @@ -0,0 +1,83 @@ +--- +meta: + title: NATS, Queues, and Topics and Events Documentation + description: Explore Scaleway NATS, Queues, and Topics and Events. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. +--- + + + +## Getting Started + + + + + + + + + +## Tutorials + + + + + + + + + + +## Changelog + + \ No newline at end of file diff --git a/pages/queues/quickstart.mdx b/pages/queues/quickstart.mdx new file mode 100644 index 0000000000..441abf33e0 --- /dev/null +++ b/pages/queues/quickstart.mdx @@ -0,0 +1,298 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - Quickstart + description: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +content: + h1: NATS, Queues, and Topics and Events - Quickstart + paragraph: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +dates: + validation: 2024-10-18 + posted: 2022-08-29 +tags: messaging queuing queueing quickstart messaging-and-queuing nats sqs sls message-broker queues topics messages streams +categories: + - serverless +--- + +Scaleway NATS, Queues, and Topics and Events are [message broker](/messaging/concepts/#messaging-and-queuing) tools that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. These brokers enable and simplify microservices application development and allows you to build highly scalable, reliable, distributed applications. + +NATS, Queues, and Topics and Events were previously grouped together as the Messaging and Queuing product, and have now become three separate products in their own right. Read on to learn how to get started with your product of choice + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## Quickstart for NATS + +### How to create a NATS account + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + +### How to create NATS credentials + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +6. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +7. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. + +### How to create and manage queues, messages and streams + +All further actions related to publishing, processing and managing messages, subjects, queues and streams can be done via a supported CLI or SDK. See our documentation on [NATS CLI and SDKs](/messaging/reference-content/nats-overview/#further-actions-nats-cli-and-nats-sdk) for more information. You can also check out our tutorial on [creating a serverless architecture for handling large messages](/tutorials/large-messages/) with Scaleway Messaging and Queuing NATS. + +### How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. + + +## Quickstart for Queues + +### How to create credentials for Queues + +Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +### How to create queues + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create queue**. The queue creation wizard displays. + + + +3. Select the [region](/messaging/concepts/#region) in which you want to create the queue. + +4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose your **Queue type**, from one of the following: + - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. + - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. + +6. Configure your queue's **parameters**. The following parameters can be defined: + - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). + - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 209 600 seconds (14 days). + - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. + - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. + - **Dead-letter queue**: Designate another queue to receive undelivered messages from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count** (how many times a message can be received from the source queue before being moved to the dead-letter queue). + +7. Click **Create queue** to finish. + +You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. + +### How to send and receive messages + +All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/messaging/reference-content/sqs-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. + +### How to delete a queue + +When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to configure. + +3. Either: + - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. + - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. + +4. Type **DELETE** and click **Delete queue**. + +## Quickstart for Topics and Events + +### How to create Topics and Events credentials + +Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +### How to create topics + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create topic**. The topic creation wizard displays. + + + +3. Choose a region in which to create your topic. + +4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose a **topic type**. The following topic types are available: + - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. + - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/messaging/concepts/#content-based-deduplication) is only available for FIFO topics. + +6. Click **Create topic** to finish. + +You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. + +### How to create a subscription + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Use the dropdown menu to select the [region](/messaging/concepts/#region) of the topic you want to create a subscription for. + +3. Click the name of the topic you want to create a subscription for. + +4. Click **Create Subscription**. The subscription creation wizard displays. + + +5. Verify the parameters of the topic that you are creating a subscription for (name and type). + +6. Choose a protocol, based on the type of endpoint or client you want to subscribe. Click the tab below for further details and full instructions on each protocol: + + + +
+ Select **HTTP** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via standard HTTP protocol. + + Note that for security reasons, we recommend using the HTTPS protocol, rather than HTTP. + + You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. + + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). + +
+ +
+ Select **HTTPS** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via secure HTTP protocol. + + You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. + + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +
+ +
+ Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. + + You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. + + You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. +
+ +
+ + Choose **Queues** to create a subscription for a Scaleway queue that you have created. + + You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. +
+
+ +7. Click **Create subscription** to finish. + + The subscription is created. If you created an HTTP or HTTPS subscription, you will now need to [confirm it](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). + +### How to publish messages + +All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/messaging/reference-content/sns-overview#further-actions)for more information. + +### How to delete a topic + +When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the topic you want to delete. + +3. Either: + - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or + - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. + +4. Type **DELETE** and click **Delete topic**. diff --git a/pages/queues/reference-content/index.mdx b/pages/queues/reference-content/index.mdx new file mode 100644 index 0000000000..b74fe93663 --- /dev/null +++ b/pages/queues/reference-content/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - Additional content + description: NATS, Queues, and Topics and Events additional content +content: + h1: NATS, Queues, and Topics and Events - Additional content + paragraph: NATS, Queues, and Topics and Events additional content +--- diff --git a/pages/queues/reference-content/limitations.mdx b/pages/queues/reference-content/limitations.mdx new file mode 100644 index 0000000000..ed7ab269ea --- /dev/null +++ b/pages/queues/reference-content/limitations.mdx @@ -0,0 +1,23 @@ +--- +meta: + title: NATS, Queues, and Topics and Events Limitations + description: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events +content: + h1: Limitations + paragraph: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events +tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics max-queues visibility-timeout +dates: + validation: 2024-10-18 + posted: 2023-01-04 +validation_frequency: 8 +categories: + - serverless +--- + +## Usage limits + +For the usage limits that apply when using Scaleway NATS, Queues, and Topics and Events, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues, streams, topics and consumers/subscribers, as well as to message retention duration and storage. + +## VPC + +NATS, Queues, and Topics and Events are not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/messaging/reference-content/sqs-overview.mdx b/pages/queues/reference-content/sqs-overview.mdx similarity index 100% rename from pages/messaging/reference-content/sqs-overview.mdx rename to pages/queues/reference-content/sqs-overview.mdx diff --git a/pages/messaging/reference-content/sqs-support.mdx b/pages/queues/reference-content/sqs-support.mdx similarity index 100% rename from pages/messaging/reference-content/sqs-support.mdx rename to pages/queues/reference-content/sqs-support.mdx diff --git a/pages/topics-and-events/api-cli/connect-aws-cli.mdx b/pages/topics-and-events/api-cli/connect-aws-cli.mdx new file mode 100644 index 0000000000..34f61a55d2 --- /dev/null +++ b/pages/topics-and-events/api-cli/connect-aws-cli.mdx @@ -0,0 +1,137 @@ +--- +meta: + title: Connecting Queues or Topics and Events to the AWS-CLI + description: This page explains how to connect Scaleway Queues and/or Topics and Events to the AWS-CLI +content: + h1: Connecting Queues or Topics and Events to the AWS-CLI + paragraph: This page explains how to connect Scaleway Queues and/or Topics and Events to the AWS-CLI +tags: messaging sns sqs aws-cli cli aws sdk python boto +categories: + - messaging +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. With minimal configuration, you can start using the AWS-CLI with Scaleway Queues or Scaleway Topics and Events. This allows you to create, list and manage your queues and topics, send messages and much more, all from your command line. + +This guide shows you how to install the AWS-CLI and configure it to connect to Scaleway Queues or Scaleway Topics and Events. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/messaging/how-to/create-credentials/) for Queues and/or Topics and Events + + + This page assumes you will use the AWS-CLI v1. + + +## How to install the AWS-CLI + +To interact with Scaleway Queues and Scaleway Topics and Events, both `aws-cli` and `awscli-plugin-endpoint` need to be installed. The `awscli-plugin-endpoint` is a useful plugin to help people more easily access third-party providers such as Scaleway. + +Install both `aws-cli` and `awscli-plugin` using `pip`. + +``` +pip3 install awscli +pip3 install awscli-plugin-endpoint +``` + +## How to configure the AWS-CLI + +Now you have installed the AWS-CLI, you need to configure it for use with Scaleway Queues / Topics and Events. + +1. Create a file named `~/.aws/config` by running the following command: + ``` + aws configure set plugins.endpoint awscli_plugin_endpoint + ``` + + + With the most recent versions of awscli (1.29.0 or 2.13.0), the use of a plugin is not necessary. If you are using one of those versions and wish to skip this step, you can do so. Note that this will also affect your configuration file in the next step. + + +2. Open the `~/.aws/config` file you just created in a text editor and edit it as follows (the Queues (SQS) or Topics and Events (SNS) endpoint URLs can be found in the console on the **Settings** page for the relevant product) + ``` + [plugins] + endpoint = awscli_plugin_endpoint + [profile sns] + region = fr-par + sns = + endpoint_url = https://sns.mnq.fr-par.scaleway.com + [profile sqs] + region = fr-par + sqs = + endpoint_url = https://sqs.mnq.fr-par.scaleway.com + ``` + + Optionally, you can also configure additional profiles by adding new blocks under `[sqs]` and `[sns]`. For example, you can add a third profile, `[profile aws]`, to connect to the AWS SQS/SNS service if you want: + + ``` + [plugins] + endpoint = awscli_plugin_endpoint + [profile sns] + region = fr-par + sns = + endpoint_url = https://sns.mnq.fr-par.scaleway.com + [profile sqs] + region = fr-par + sqs = + endpoint_url = https://sqs.mnq.fr-par.scaleway.com + [profile aws] + region=eu-west-3 + output=json + ``` + + + If you are using the AWS-CLI v2, you must include the path to the plugin in your configuration file. Add `cli_legacy_plugin_path = ` to the `[plugins]` section, replacing `` with the corresponding path. + + + + If you are using aws 1.29.0 or 2.13.0 without the plugin, your configuration file should be as follows: + ``` + [profile sns] + region = fr-par + endpoint_url = https://sns.mnq.fr-par.scaleway.com + [profile sqs] + region = fr-par + endpoint_url = https://sqs.mnq.fr-par.scaleway.com + ``` + + + +3. Generate a credentials file using the following command: + ``` + aws configure + ``` +** +4. Open the `~/.aws/credentials` file you just created, and for each product (out of **Queues** and **Topics and Events**) you want to use, add the access key and secret key you saved when you generated your [credentials](/messaging/how-to/create-credentials/): + ``` + [topics_events] + aws_access_key_id= + aws_secret_access_key= + + [queues] + aws_access_key_id= + aws_secret_access_key= + ``` + + If you have other profiles, you can add a block to indicate their credentials too: + ``` + [aws] + aws_access_key_id= + aws_secret_access_key= + ``` + +6. Test that everything is set up correctly with the following command: + ``` + aws queues list-queues + ``` + + Use the `--profile` option if you want to test it using a different profile. + + + Check out our dedicated documentation to find more common commands for getting started with the AWS CLI: + - The [Queues guide](/messaging/api-cli/sqs-sns-aws-cli/#getting-started-with-scaleway-queues) walks you through creating and listing queues, sending messages to queues, and more. + - The [Topics and Events guide](/messaging/api-cli/sqs-sns-aws-cli/#getting-started-with-topics-and-events) shows you how to create and list topics and subscriptions, send messages to topics, and more. + diff --git a/pages/topics-and-events/api-cli/index.mdx b/pages/topics-and-events/api-cli/index.mdx new file mode 100644 index 0000000000..aef6e7ef1f --- /dev/null +++ b/pages/topics-and-events/api-cli/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - API/CLI Documentation + description: NATS, Queues, and Topics and Events API/CLI Documentation +content: + h1: NATS, Queues, and Topics and Events - API/CLI Documentation + paragraph: NATS, Queues, and Topics and Events API/CLI Documentation +--- diff --git a/pages/messaging/api-cli/python-node-sns.mdx b/pages/topics-and-events/api-cli/python-node-sns.mdx similarity index 100% rename from pages/messaging/api-cli/python-node-sns.mdx rename to pages/topics-and-events/api-cli/python-node-sns.mdx diff --git a/pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx b/pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx new file mode 100644 index 0000000000..ac152c9f78 --- /dev/null +++ b/pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx @@ -0,0 +1,191 @@ +--- +meta: + title: Using Scaleway Queues and Scaleway Topics and Events with the AWS-CLI + description: This page explains how to use Scaleway Queues and Scaleway Topics and Events for creating queues and sending and receiving messages with the AWS CLI +content: + h1: Using Scaleway Queues and Scaleway Topics and Events with the AWS-CLI + paragraph: This page explains how to use Scaleway Queues and Scaleway Topics and Events for creating queues and sending and receiving messages with the AWS CLI +tags: messaging sns sqs aws-cli cli aws queues messages subscribe publish +categories: + - messaging +dates: + validation: 2024-10-18 + posted: 2023-04-04 +validation_frequency: 8 +--- + +The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. Once you have [connected Scaleway Queues and/or Topics and Events to the AWS-CLI](/messaging/api-cli/connect-aws-cli/), you can start creating, listing and managing your queues and topics, sending messages and much more, all from your command line. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/messaging/how-to/create-credentials/) for Queues and/or Topics and Events +- [Connected Queues and/or Topics and Events to the AWS-CLI](/messaging/api-cli/connect-aws-cli/) +- [jq](https://stedolan.github.io/jq/download/) installed on your machine + +## Getting started with Scaleway Queues + +1. Use the following command to create a queue: + + ```sh + aws sqs create-queue --queue-name MyQueue | tee my-queue.json + ``` + +2. Use the following command to list existing queues: + + ```sh + aws sqs list-queues + ``` + +3. Use the following command to send messages to a queue: + + ```sh + aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Hello world!" + + aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Second Message." + ``` + +4. Use the following command to receive messages: + + ```sh + aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json + + aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message2.json + ``` + +5. Use the following command to delete messages. This is necessary as once a message has been processed on your consumer side (typically by a worker), it will be re-queued unless it is explicitly deleted. + + ```sh + aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) + + aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message2.json) + ``` + +6. Use the following command to delete the queue itself: + + ```sh + aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) + ``` + +## Getting started with Topics and Events + +1. Use the following command to create a topic: + + ```sh + aws sns create-topic --name MyTopic | tee my-topic.json + ``` + +2. Use the following command to list existing topics: + + ```sh + aws sns list-topics + ``` + +### Preparing and subscribing to an HTTP/HTTPS target for Topics and Events messages + +1. Get the public endpoint of the HTTP server you want to forward your messages to. + +2. Use the following command to configure a subscription to push each new message sent on the topic to the HTTP server: + + ```sh + aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol http --notification-endpoint | tee my-subscription.json + ``` + +3. Find the HTTP request received by the HTTP server. It should have a body in json matching the following format. It contains information necessary to complete the subscription process: + + ```json + { + "Type": "SubscriptionConfirmation", + "Token": "", + "MessageId": "", + "TopicArn": "arn:scw:sns:fr-par::MyTopic", + "Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", + "Timestamp": "2022-06-29T10:03:34Z", + "SignatureVersion": "1", + "Signature": "", + "SigningCertURL": "http:///SNStest.crt", + "SubscribeURL": "" // Get the confirmation link located here + } + ``` + +4. Use the following command to confirm the subscription: + + ```sh + curl "" + ``` + +### Preparing and subscribing to a lambda (Scaleway Serverless Functions) target for Topics and Events messages + +1. Create the function following the steps detailed in the [Scaleway Functions Quickstart](/serverless-functions/quickstart/). + +2. Get the function endpoint from the [Scaleway console](https://console.scaleway.com/functions) under "Functions" -> "[YOUR-FUNCTION-NAMESPACE]" -> "[YOUR-FUNCTION-NAME]" -> "Function Settings" tab -> "Function Endpoint" + + + Only the main generated endpoint of the function will work, not the aliases. The endpoint should match the following format: + + ```sh + https://-.functions.fnc.fr-par.scw.cloud + example: "https://mynamespacexxxxxxxx-myfunction.functions.fnc.fr-par.scw.cloud)" + ``` + + +3. Use the following command to configure a subscription to push each new message sent on this topic to the function: + + ```sh + aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol lambda --notification-endpoint | tee my-subscription.json + + ``` + +## Continuing with Topics and Events + +1. Use the following command to list subscriptions: + + ```sh + aws sns list-subscriptions + ``` + +2. Use the following command to publish a message on the topic: + + ```sh + aws sns publish --topic-arn $(jq -r .TopicArn my-topic.json) --message "Hello world!" --message-deduplication-id $(date +%s) + ``` + +3. Use the following command to read the message received on a **Scaleway Queues** target: + + + - For **HTTP**/**HTTPS** targets, you should have received the message on your server + - For **lambda** targets, your function should have been called with the message as argument + + + ```sh + aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json + ``` + +4. Use the following command to delete the message received on a **Scaleway Queues** target. This is necessary to prevent it from being re-queued: + + ```sh + aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) + ``` + +5. Use the following command to delete the subscription: + + ```sh + aws sns unsubscribe --subscription-arn $(jq -r .SubscriptionArn my-subscription.json) + ``` + +6. Use the following command to delete the Scaleway queue (if you had a Scaleway Queues target): + + ```sh + aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) + ``` + + + For **lambda**, delete the function (if necessary), using the [Scaleway console](https://console.scaleway.com/functions) + + +7. Use the following command to delete the topic: + + ```sh + aws sns delete-topic --topic-arn $(jq -r .TopicArn my-topic.json) + ``` diff --git a/pages/messaging/assets/scaleway-topics-create-subs.webp b/pages/topics-and-events/assets/scaleway-topics-create-subs.webp similarity index 100% rename from pages/messaging/assets/scaleway-topics-create-subs.webp rename to pages/topics-and-events/assets/scaleway-topics-create-subs.webp diff --git a/pages/messaging/assets/scaleway-topics-create-topic.webp b/pages/topics-and-events/assets/scaleway-topics-create-topic.webp similarity index 100% rename from pages/messaging/assets/scaleway-topics-create-topic.webp rename to pages/topics-and-events/assets/scaleway-topics-create-topic.webp diff --git a/pages/messaging/assets/scaleway-topics-gen-creds.webp b/pages/topics-and-events/assets/scaleway-topics-gen-creds.webp similarity index 100% rename from pages/messaging/assets/scaleway-topics-gen-creds.webp rename to pages/topics-and-events/assets/scaleway-topics-gen-creds.webp diff --git a/pages/topics-and-events/concepts.mdx b/pages/topics-and-events/concepts.mdx new file mode 100644 index 0000000000..4cbee27ce6 --- /dev/null +++ b/pages/topics-and-events/concepts.mdx @@ -0,0 +1,183 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - Concepts + description: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. +content: + h1: NATS, Queues, and Topics and Events - Concepts + paragraph: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. +categories: + - +tags: messaging queuing concepts nats queues topics events +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +## Content-based + +Content-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [topic-based](#topic-based) systems in terms of the way messages are [filtered](#filtering)/routed. In a content-based messaging system, the subscriber specifies the properties of the messages they want to receive, based on the message's attributes or content. Message delivery is therefore selective, and messages are only delivered to a subscriber if the attributes or content match the constraints they set. + +## Content-based deduplication + +Content-based deduplication is a setting available for [FIFO](#fifo) queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). + +## Credentials + +Credentials give services and platforms access to Scaleway NATS, Queues, and Topics and Events, enabling them to connect to the host system. Credentials are product-specific: for **Queues** and **Topics ad Events**, different levels of permissions can be defined to write, read, or manage queues/topics. NATS credentials give full read-write-manage access. Refer to our [additional content](/messaging/reference-content/) for more information. + +## Dead-letter queue + +A **D**ead-**l**etter **q**ueue (DLQ), or **undelivered-message queue**, receives and holds messages that cannot be delivered to their destination queues. A DLQ must be of the same type (FIFO or Standard), in the same Project and in the same region as the queue(s) it serves. Each DLQ also has an associated parameter: [maximum receive count](#maximum-receive-count). A single queue can serve as dead-letter queue to multiple source queues. + +If you designate a queue as a DLQ and its [storage quota](/organizations-and-projects/additional-content/organization-quotas/#queues) is reached, messages won't be redriven to the DLQ until enough free space is available again. If your DLQ is at its full quota, free up space by receiving and deleting messages from any queue in your Project. + +## Fanout + +Fanout is a type of messaging pattern. A fanout exchange broadcasts messages to all queues/consumers it is aware of. This allows the same published message to be consumed by different consumers, who will process it in different ways. Each message is processed in the order in which it arrives. + +## FIFO + +FIFO stands for **F**irst **I**n **F**irst **O**ut, and represents a type of queue or topic where the exact order of messages is preserved, and duplicate messages are not tolerated. As well as these specificities, FIFO queues and topics support all the same features as the [Standard](#standard) type. Consider using FIFO queues and topics for any use cases where the order of messages is critical, such as e-commerce order management systems, systems where one action should not happen until another has been completed, or first-come-first-served ticketing systems. + +## Filtering + +In a [topic-based](#topic-based) system, where topics handle the logic, filtering is similar to routing. Messages are sent to defined topics, which can be thought of as filters in so far as subscribers can subscribe only to the topics they are interested in. In a [content-based](#content-based) system, filtering is carried out more directly by subscribers, who define filters for messages based on the content/attributes they want to receive. + +## Long Polling + +Long polling is a technology where the client requests information from the server without expecting an immediate response. For [Queues](#queues), this enables clients to wait for the system to get messages that are not immediately available. + +## Message broker + +A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. All communication with producers and consumers uses a [protocol](#messaging-protocol). There are two basic models of communication for message brokers: [publish/subscribe](#publishsubscribe) and [queuing](#queuing). + +## Maximum receive count + +The maximum receive count is a setting that can be configured for a [dead-letter queue](#dead-letter-queue). It defines how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. This value must be between 1 and 1,000. + +## Message retention period + +The message retention period is a setting that can be configured for a queue. It represents the length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). + +## Messaging and Queuing + +Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#nats), [Queues](#queues), and [Topics and Events](#topics-and-events). + +## Messaging protocol + +A messaging protocol defines a structured way for users / platforms / services / applications to exchange data and messages, even if normally they do not "speak the same language". Protocols also describe how messages should be processed, prioritized, managed and routed. Scaleway NATS is based on the [NATS](#nats) protocol, Queues on the [SQS](#sqs) protocol, and Topics and Events on the [SNS](#sns) protocol. + +## NATS + +The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is an open-source messaging system written in Go. It is part of the Cloud Native Computing Foundation (CNCF) and has more than 40 client language implementations. The application has been designed with performance, scalability, and ease of use in mind. + +Check our our [NATS quickstart](/messaging/quickstart/#quickstart-for-nats) to get started with Scaleway NATS, or our [tutorial](/tutorials/large-messages/) on creating a serverless architecture to process large messages with NATS, to get an idea of how to go further. + +## NATS account + +A NATS account sets a scope for any NATS credentials, messages, queues and streams held within it. You can create one or multiple NATS accounts with Scaleway NATS. + +## Protocol + +See [messaging protocol](#messaging-protocol). + +## Publish/Subscribe + +Also known as "pub/sub", the publish/subscribe model provides a pattern or framework for the exchange of messages between publishers and subscribers. It contrasts with the [queuing](#queuing) model. The key feature of publish/subscribe is that messages are not sent to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. The process of selecting which messages to receive is called [filtering](#filtering), which can be [topic-based](#topic-based) or [content-based](#content-based). The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. + +## Queue + +Creating a queue with [Scaleway Queues](#queue) facilitates asynchronous communication between different microservices, applications, and platforms. You can create a queue, configure its delivery and message parameters, and then start sending messages to it. Messages are stored in the queue until they are processed and delivered, and deleted once consumed. [Read more about creating and configuring queues](/messaging/how-to/create-manage-queues/), or check our [tutorial on creating a serverless scraping architecture using a queue](/tutorials/create-serverless-scraping/) to get an idea of what you can do with message queues. + +## Queues + +Scaleway Queues is a product for creating managed messaging queues based on the [SQS](#sqs) protocol. Previously, it was part of the Messaging and Queuing product. + +## Queue types + +When creating queues with Scaleway Queues, two queue types are available. [Standard](#standard) queues provide at-least-once delivery, while [FIFO](#fifo) queues offer first-in-first-out delivery, and (unlike Standard queues) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO queue types. Find out more about creating queues with our [dedicated documentation](/messaging/how-to/create-manage-queues/). + +## Queuing + +The message queuing model provides a pattern or framework for sending messages, which contrasts with the [publish/subscribe](#publishsubscribe) model. Queuing is a form of asynchronous service-to-service communication. Whereas with the publish/subscribe model multiple subscribers can receive each message, with the queuing model, messages have just one destination. Messages are stored in the queue until they are processed and delivered, and they are deleted once consumed. This model is used in serverless and microservices architectures. + +## Queue volume + +Queue volume is one of the factors affecting the billing of Scaleway Queues. Queue volume is calculated as the number of messages in a queue, multiplied by the message size. Or, the sum of the size of all messages in a queue. + +## Region + +NATS, Queues, and Topics and Events are available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS, Queues, and Topics and Events. + +When [creating a NATS account](/messaging/how-to/get-started/#how-to-create-a-nats-account) or creating queues or topics, you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. + +## Routing + +In [topic-based](#topic-based) messaging, topics allow messages to be routed to the correct subscribers. Topics act as labels for each message, and the broker routes messages to subscribers who match the topic. + +## SNS + +The Scaleway **Topics and Events** product is based on the SNS protocol. **S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. + +## SQS + +The Scaleway **Queues** product is based on the SNS protocol. **S**imple **Q**ueue **S**ervice, or SQS, is a distributed message [queuing](#queuing) service that supports programmatic sending of messages via web service applications. + +## Standard + +Standard-type queues and topics represent the default queue/topic type, and offer an at-least-once message delivery system. Unlike [FIFO](#fifo) queues and topics, standard queues provide only best-effort attempts to deliver messages in order. At-least-once delivery means that it is possible under rare circumstances that the same message may be received more than once. + +## Stream + +Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Each message can be delivered to one or more consumers. + +## Stream volume + +Stream volume is one of the factors affecting the billing of Scaleway NATS. Stream volume is calculated as the number of messages in a stream, multiplied by the message size. Or, the sum of the size of all messages in a stream. + +## Stream persistence + +Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. + +## Subscriber + +In [publish/subscribe](#publishsubscribe) systems such as [Topics and Events](#topics-and-events), a subscriber is the entity (e.g. a queue, function, or URL) that messages from topics are pushed to. Subscribers can filter messages based on their topic or content. + +## Subscription + +A subscription is a connection between a client or endpoint, and a topic. By creating a subscription, the subscribed endpoint receives messages and notifications published to the topic. You can [create subscriptions](/messaging/how-to/create-manage-subscriptions/) for HTTP/S endpoints, Scaleway queues, and Scaleway Serverless [Functions](/serverless-functions/quickstart/) and [Containers](/serverless-containers/quickstart/). + +## Subscription protocols and endpoints + +A subscription protocol refers to the communication method used to deliver messages to a subscriber. Different types of subscriber require different protocols. When you create a new subscription to a topic with Scaleway Topics and Events, the following options are available: + +| Protocol | Endpoint / Client | Note | +|-------------------------------------|--------------------------------------------------|-----------------------------------| +| HTTP | The URL of a service or web server that can receive notifications (HTTP POST requests) from Topics and Events, e.g. `http://example.fr` | - For security reasons, we recommend using the HTTPS protocol rather than HTTP.
- HTTP subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | +| HTTPS | The URL of a service or web server that can receive notifications (HTTPS POST requests) from Topics and Events, e.g. `https://example.fr` | - HTTPS subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | +| Serverless Functions and Containers | A Scaleway Serverless [Function](/serverless-functions/quickstart/) or [Container](/serverless-containers/quickstart/)
| - It must have a [public](/serverless-functions/concepts/#privacy-policy) privacy policy
- It must be in a [namespace](/serverless-functions/concepts/#namespace) from the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | +| Queues | A Scaleway [queue](#queue)
| - It must be in the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | + +## Topic + +A topic is a communication channel used to send messages and notifications to subscribed endpoints or clients. Publishers send messages to topics, and those messages are received by subscribers. Subscribers can include Serverless Functions, Scaleway queues and HTTP/HTTPS endpoints. As such, topics decouple the publishing and the receiving of messages, allowing for flexibility and scalabilty in building loosely-coupled systems. + +## Topic types + +When creating topics with Scaleway Topics and Events, two topic types are available. [Standard](#standard) topics provide at-least-once delivery, while [FIFO](#fifo) topics offer first-in-first-out delivery, and (unlike Standard topics) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO topic types. Find out more about creating topics with our [dedicated documentation](/messaging/how-to/create-manage-topics/). + +## Topic-based + +Topic-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [content-based](#content-based) systems. In a topic-based system, messages are published to "topics" or named logical channels. See [topic](#topic) for more information. + +## Topic volume + +Topic volume is one of the factors affecting the billing of Scaleway Topics and Events. Topic volume is calculated as the total sum of the sizes of all messages sent from a topic to its subscriptions. + +## Topics and Events + +Scaleway Topics and Events is a product for creating managed messaging topics based on the [SNS](#sns) protocol. Previously, it was part of the Messaging and Queuing product. + +## Visibility timeout + +Visibility timeout is a setting that can be configured for a Scaleway queue. It represents the length of time (in seconds) during which, after a message is received, the queue hides it, so it cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). diff --git a/pages/messaging/faq.mdx b/pages/topics-and-events/faq.mdx similarity index 100% rename from pages/messaging/faq.mdx rename to pages/topics-and-events/faq.mdx diff --git a/pages/messaging/how-to/assets/scaleway-topics-create-subs.webp b/pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-topics-create-subs.webp rename to pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp diff --git a/pages/messaging/how-to/assets/scaleway-topics-create-topic.webp b/pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-topics-create-topic.webp rename to pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp diff --git a/pages/messaging/how-to/assets/scaleway-topics-gen-creds.webp b/pages/topics-and-events/how-to/assets/scaleway-topics-gen-creds.webp similarity index 100% rename from pages/messaging/how-to/assets/scaleway-topics-gen-creds.webp rename to pages/topics-and-events/how-to/assets/scaleway-topics-gen-creds.webp diff --git a/pages/topics-and-events/how-to/create-credentials.mdx b/pages/topics-and-events/how-to/create-credentials.mdx new file mode 100644 index 0000000000..16ee57b0c8 --- /dev/null +++ b/pages/topics-and-events/how-to/create-credentials.mdx @@ -0,0 +1,116 @@ +--- +meta: + title: How to create credentials for NATS, Queues, or Topics and Events + description: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. +content: + h1: How to create credentials for NATS, Queues, or Topics and Events + paragraph: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. +tags: credentials messaging queuing key token +categories: + - serverless +dates: + validation: 2024-10-18 + posted: 2022-08-11 +--- + +This page shows how to create [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). Credentials give their bearer (e.g. services and platforms) access to your service. + +You can create multiple sets of credentials for each of your NATS accounts, and for your Queues and Topics and Events services. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create credentials for a NATS account + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +5. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +7. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. + +## How to create credentials for Queues + +Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +## How to create credentials for Topics and Events + +Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + + + + + diff --git a/pages/messaging/how-to/create-manage-subscriptions.mdx b/pages/topics-and-events/how-to/create-manage-subscriptions.mdx similarity index 100% rename from pages/messaging/how-to/create-manage-subscriptions.mdx rename to pages/topics-and-events/how-to/create-manage-subscriptions.mdx diff --git a/pages/messaging/how-to/create-manage-topics.mdx b/pages/topics-and-events/how-to/create-manage-topics.mdx similarity index 100% rename from pages/messaging/how-to/create-manage-topics.mdx rename to pages/topics-and-events/how-to/create-manage-topics.mdx diff --git a/pages/topics-and-events/how-to/deactivate-delete-messaging.mdx b/pages/topics-and-events/how-to/deactivate-delete-messaging.mdx new file mode 100644 index 0000000000..f8ef3f4fbe --- /dev/null +++ b/pages/topics-and-events/how-to/deactivate-delete-messaging.mdx @@ -0,0 +1,45 @@ +--- +meta: + title: How to delete a NATS, Queues, or Topics and Events service + description: Delete Scaleway NATS, Queues, or Topics and Events effectively. Safely remove resources with this straightforward guide. +content: + h1: How to delete a NATS, Queues, or Topics and Events service + paragraph: Delete Scaleway NATS, Queues, or Topics and Events services effectively. Safely remove resources with this straightforward guide. +dates: + validation: 2024-10-17 + posted: 2023-10-03 +tags: delete messaging queuing queueing messaging-and-queuing service disable deactivate nats-account stop +categories: + - serverless +--- + +This page shows how to delete a Scaleway **NATS**, account. + +Note that it is no longer necessary to deactivate services for **Queues** or **Topics and Events**: simply delete the queues, topics, subscriptions or other associated resources for the product directly. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) + +## How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. + + +Repeat the process above for each NATS account you want to delete. Remember to use the region drop-down as appropriate to access the different NATS accounts you hold in different regions. + + + + diff --git a/pages/topics-and-events/how-to/get-started.mdx b/pages/topics-and-events/how-to/get-started.mdx new file mode 100644 index 0000000000..639996edfa --- /dev/null +++ b/pages/topics-and-events/how-to/get-started.mdx @@ -0,0 +1,54 @@ +--- +meta: + title: How to get started with NATS, Queues, or Topics and Events + description: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events services effortlessly. +content: + h1: How to get started with NATS, Queues, or Topics and Events + paragraph: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events effortlessly. +tags: messaging queuing enable disable nats sqs sns nats-account account create +categories: + - serverless +dates: + validation: 2024-10-17 + posted: 2023-10-03 +--- + +This page shows how to get started with Scaleway **NATS**, **Queues** or **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). + +The process differs depending on the [messaging protocol](/messaging/concepts/#messaging-protocol) you want to use: + +- For NATS, you need to **create a NATS account**. +- For **Queues** and **Topics and Events**, you no longer need to activate the protocol, but can proceed directly to [creating queues](/messaging/how-to/create-manage-queues) and/or [topics](/messaging/how-to/create-manage-topics). + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a NATS account + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + + + You can create more NATS accounts in your pre-selected region if you wish, by clicking on the `+ Create NATS account` button. To create NATS accounts in other regions, repeat the steps above starting from step 2 and selecting the required region. + + + +## How to activate Queues or Topics and Events + +For **Queues** and **Topics and Events**, you no longer need to activate the individual protocols. Proceed directly to [creating queues](/messaging/how-to/create-manage-queues) or [topics](/messaging/how-to/create-manage-topics) directly. \ No newline at end of file diff --git a/pages/topics-and-events/how-to/index.mdx b/pages/topics-and-events/how-to/index.mdx new file mode 100644 index 0000000000..e54fd91319 --- /dev/null +++ b/pages/topics-and-events/how-to/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - How Tos + description: NATS, Queues, and Topics and Events How Tos +content: + h1: NATS, Queues, and Topics and Events - How Tos + paragraph: NATS, Queues, and Topics and Events How Tos +--- diff --git a/pages/topics-and-events/how-to/manage-credentials.mdx b/pages/topics-and-events/how-to/manage-credentials.mdx new file mode 100644 index 0000000000..4ea9a79652 --- /dev/null +++ b/pages/topics-and-events/how-to/manage-credentials.mdx @@ -0,0 +1,76 @@ +--- +meta: + title: How to manage credentials for NATS, Queues, or Topics and Events + description: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. +content: + h1: How to manage credentials for NATS, Queues, or Topics and Events + paragraph: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. +dates: + validation: 2024-10-17 + posted: 2022-08-11 +tags: manage credentials messaging queuing permissions update revoke +categories: + - serverless +--- + +Credentials give their bearer (e.g. services and platforms) access to your service. + +This page shows how to manage [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). + +Credentials for **Queues** and **Topics and Events** can be updated to change their permissions, or revoked. **NATS** credentials can only be revoked, not updated. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/messaging/how-to/create-credentials/) + +## How to update Queues or Topics and Events credentials + +1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to update. + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to update. + +4. Click the button next to the credentials you want to update, and select **Update credentials**. A pop-up displays, such as the one below for Queues: + + + +5. Make the required updates to your credentials. You can modify the name, and the permissions. + +6. Click **Update credentials**. + + The credentials are updated and you are returned to the product's **Credentials** listing. + +## How to revoke Queues or Topics and Events credentials + +1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to revoke. + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to revoke. + +4. Click the button next to the credentials you want to revoke and select **Revoke**. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +5. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the product's **Credentials** listing. + +## How to revoke NATS credentials + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Select the NATS account you want to revoke credentials for. + +3. In the **Credentials** panel, click the button next to the credentials you want to revoke. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +5. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the NATS account's **Overview** page. + + diff --git a/pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx b/pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx new file mode 100644 index 0000000000..c957711a74 --- /dev/null +++ b/pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx @@ -0,0 +1,49 @@ +--- +meta: + title: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit + description: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +content: + h1: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit + paragraph: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +tags: messaging queuing queueing cockpit metrics observability +categories: + - serverless +dates: + validation: 2024-10-17 + posted: 2023-09-07 +--- + +You can view metrics for your NATS, Queues, and Topics and Events services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues/streams and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: + +1. Generate your Grafana credentials +2. Access the product's metrics dashboard + +These steps are described below. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) + +## How to activate your Cockpit + +Scaleway Cockpit is activated by default if you have created [Scaleway resources integrated with Cockpit](/cockpit/reference-content/cockpit-limitations/#product-integration-into-cockpit). + +## How to generate Grafana credentials + +To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). + +## How to access your NATS, Queues, or Topics and Events dashboard and view your metrics + +1. Click **NATS**, **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **protocol** you want to view metrics for, and navigate to the **Metrics** tab. + +3. Click **Open Grafana metrics dashboard**. + +4. Enter your Grafana username and password to log in. + + You are directed to the dashboard for the product in question, where you can view all your metrics. + + diff --git a/pages/topics-and-events/index.mdx b/pages/topics-and-events/index.mdx new file mode 100644 index 0000000000..89f6a6c8a3 --- /dev/null +++ b/pages/topics-and-events/index.mdx @@ -0,0 +1,83 @@ +--- +meta: + title: NATS, Queues, and Topics and Events Documentation + description: Explore Scaleway NATS, Queues, and Topics and Events. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. +--- + + + +## Getting Started + + + + + + + + + +## Tutorials + + + + + + + + + + +## Changelog + + \ No newline at end of file diff --git a/pages/topics-and-events/quickstart.mdx b/pages/topics-and-events/quickstart.mdx new file mode 100644 index 0000000000..441abf33e0 --- /dev/null +++ b/pages/topics-and-events/quickstart.mdx @@ -0,0 +1,298 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - Quickstart + description: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +content: + h1: NATS, Queues, and Topics and Events - Quickstart + paragraph: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +dates: + validation: 2024-10-18 + posted: 2022-08-29 +tags: messaging queuing queueing quickstart messaging-and-queuing nats sqs sls message-broker queues topics messages streams +categories: + - serverless +--- + +Scaleway NATS, Queues, and Topics and Events are [message broker](/messaging/concepts/#messaging-and-queuing) tools that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. These brokers enable and simplify microservices application development and allows you to build highly scalable, reliable, distributed applications. + +NATS, Queues, and Topics and Events were previously grouped together as the Messaging and Queuing product, and have now become three separate products in their own right. Read on to learn how to get started with your product of choice + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## Quickstart for NATS + +### How to create a NATS account + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + +### How to create NATS credentials + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +6. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +7. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. + +### How to create and manage queues, messages and streams + +All further actions related to publishing, processing and managing messages, subjects, queues and streams can be done via a supported CLI or SDK. See our documentation on [NATS CLI and SDKs](/messaging/reference-content/nats-overview/#further-actions-nats-cli-and-nats-sdk) for more information. You can also check out our tutorial on [creating a serverless architecture for handling large messages](/tutorials/large-messages/) with Scaleway Messaging and Queuing NATS. + +### How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. + + +## Quickstart for Queues + +### How to create credentials for Queues + +Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +### How to create queues + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create queue**. The queue creation wizard displays. + + + +3. Select the [region](/messaging/concepts/#region) in which you want to create the queue. + +4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose your **Queue type**, from one of the following: + - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. + - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. + +6. Configure your queue's **parameters**. The following parameters can be defined: + - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). + - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 209 600 seconds (14 days). + - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. + - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. + - **Dead-letter queue**: Designate another queue to receive undelivered messages from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count** (how many times a message can be received from the source queue before being moved to the dead-letter queue). + +7. Click **Create queue** to finish. + +You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. + +### How to send and receive messages + +All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/messaging/reference-content/sqs-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. + +### How to delete a queue + +When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to configure. + +3. Either: + - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. + - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. + +4. Type **DELETE** and click **Delete queue**. + +## Quickstart for Topics and Events + +### How to create Topics and Events credentials + +Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +### How to create topics + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create topic**. The topic creation wizard displays. + + + +3. Choose a region in which to create your topic. + +4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose a **topic type**. The following topic types are available: + - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. + - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/messaging/concepts/#content-based-deduplication) is only available for FIFO topics. + +6. Click **Create topic** to finish. + +You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. + +### How to create a subscription + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Use the dropdown menu to select the [region](/messaging/concepts/#region) of the topic you want to create a subscription for. + +3. Click the name of the topic you want to create a subscription for. + +4. Click **Create Subscription**. The subscription creation wizard displays. + + +5. Verify the parameters of the topic that you are creating a subscription for (name and type). + +6. Choose a protocol, based on the type of endpoint or client you want to subscribe. Click the tab below for further details and full instructions on each protocol: + + + +
+ Select **HTTP** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via standard HTTP protocol. + + Note that for security reasons, we recommend using the HTTPS protocol, rather than HTTP. + + You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. + + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). + +
+ +
+ Select **HTTPS** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via secure HTTP protocol. + + You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. + + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +
+ +
+ Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. + + You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. + + You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. +
+ +
+ + Choose **Queues** to create a subscription for a Scaleway queue that you have created. + + You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. +
+
+ +7. Click **Create subscription** to finish. + + The subscription is created. If you created an HTTP or HTTPS subscription, you will now need to [confirm it](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). + +### How to publish messages + +All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/messaging/reference-content/sns-overview#further-actions)for more information. + +### How to delete a topic + +When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the topic you want to delete. + +3. Either: + - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or + - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. + +4. Type **DELETE** and click **Delete topic**. diff --git a/pages/topics-and-events/reference-content/index.mdx b/pages/topics-and-events/reference-content/index.mdx new file mode 100644 index 0000000000..b74fe93663 --- /dev/null +++ b/pages/topics-and-events/reference-content/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS, Queues, and Topics and Events - Additional content + description: NATS, Queues, and Topics and Events additional content +content: + h1: NATS, Queues, and Topics and Events - Additional content + paragraph: NATS, Queues, and Topics and Events additional content +--- diff --git a/pages/topics-and-events/reference-content/limitations.mdx b/pages/topics-and-events/reference-content/limitations.mdx new file mode 100644 index 0000000000..ed7ab269ea --- /dev/null +++ b/pages/topics-and-events/reference-content/limitations.mdx @@ -0,0 +1,23 @@ +--- +meta: + title: NATS, Queues, and Topics and Events Limitations + description: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events +content: + h1: Limitations + paragraph: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events +tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics max-queues visibility-timeout +dates: + validation: 2024-10-18 + posted: 2023-01-04 +validation_frequency: 8 +categories: + - serverless +--- + +## Usage limits + +For the usage limits that apply when using Scaleway NATS, Queues, and Topics and Events, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues, streams, topics and consumers/subscribers, as well as to message retention duration and storage. + +## VPC + +NATS, Queues, and Topics and Events are not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/messaging/reference-content/sns-overview.mdx b/pages/topics-and-events/reference-content/sns-overview.mdx similarity index 100% rename from pages/messaging/reference-content/sns-overview.mdx rename to pages/topics-and-events/reference-content/sns-overview.mdx diff --git a/pages/messaging/reference-content/sns-support.mdx b/pages/topics-and-events/reference-content/sns-support.mdx similarity index 100% rename from pages/messaging/reference-content/sns-support.mdx rename to pages/topics-and-events/reference-content/sns-support.mdx From 9dbb411b2d5e82d0a800f0506bd5538f00d82e86 Mon Sep 17 00:00:00 2001 From: Rowena Date: Tue, 1 Apr 2025 17:54:34 +0200 Subject: [PATCH 02/15] fix(mnq): remove mnq --- menu/navigation.json | 128 ------ pages/nats/api-cli/index.mdx | 8 - pages/nats/api-cli/nats-cli.mdx | 114 ----- .../assets/scaleway-nats-create-account.webp | Bin 19190 -> 0 bytes pages/nats/assets/scaleway-nats-creds.webp | Bin 23498 -> 0 bytes pages/nats/assets/scaleway-nats-overview.webp | Bin 38086 -> 0 bytes pages/nats/concepts.mdx | 183 -------- pages/nats/faq.mdx | 46 -- .../assets/scaleway-nats-create-account.webp | Bin 19190 -> 0 bytes .../how-to/assets/scaleway-nats-creds.webp | Bin 23498 -> 0 bytes .../how-to/assets/scaleway-nats-overview.webp | Bin 38086 -> 0 bytes pages/nats/how-to/create-credentials.mdx | 116 ----- .../how-to/deactivate-delete-messaging.mdx | 45 -- pages/nats/how-to/get-started.mdx | 54 --- pages/nats/how-to/index.mdx | 8 - pages/nats/how-to/manage-credentials.mdx | 76 ---- pages/nats/how-to/monitor-mnq-cockpit.mdx | 49 -- pages/nats/index.mdx | 83 ---- pages/nats/quickstart.mdx | 298 ------------- pages/nats/reference-content/index.mdx | 8 - pages/nats/reference-content/limitations.mdx | 23 - .../nats/reference-content/nats-overview.mdx | 81 ---- pages/queues/api-cli/connect-aws-cli.mdx | 137 ------ pages/queues/api-cli/index.mdx | 8 - pages/queues/api-cli/python-node-sqs.mdx | 231 ---------- pages/queues/api-cli/sqs-sns-aws-cli.mdx | 191 -------- .../assets/scaleway-queues-create-queue.webp | Bin 26120 -> 0 bytes .../assets/scaleway-queues-gen-creds.webp | Bin 38432 -> 0 bytes pages/queues/concepts.mdx | 183 -------- pages/queues/faq.mdx | 46 -- .../assets/scaleway-queues-create-queue.webp | Bin 26120 -> 0 bytes .../assets/scaleway-queues-gen-creds.webp | Bin 38432 -> 0 bytes .../scaleway-queues-queue-settings.webp | Bin 21672 -> 0 bytes .../assets/scaleway-queues-update-creds.webp | Bin 25684 -> 0 bytes pages/queues/how-to/create-credentials.mdx | 116 ----- pages/queues/how-to/create-manage-queues.mdx | 102 ----- .../how-to/deactivate-delete-messaging.mdx | 45 -- pages/queues/how-to/get-started.mdx | 54 --- pages/queues/how-to/index.mdx | 8 - pages/queues/how-to/manage-credentials.mdx | 76 ---- pages/queues/how-to/monitor-mnq-cockpit.mdx | 49 -- pages/queues/index.mdx | 83 ---- pages/queues/quickstart.mdx | 298 ------------- pages/queues/reference-content/index.mdx | 8 - .../queues/reference-content/limitations.mdx | 23 - .../queues/reference-content/sqs-overview.mdx | 57 --- .../queues/reference-content/sqs-support.mdx | 291 ------------ .../api-cli/connect-aws-cli.mdx | 137 ------ pages/topics-and-events/api-cli/index.mdx | 8 - .../api-cli/python-node-sns.mdx | 422 ------------------ .../api-cli/sqs-sns-aws-cli.mdx | 191 -------- .../assets/scaleway-topics-create-subs.webp | Bin 24710 -> 0 bytes .../assets/scaleway-topics-create-topic.webp | Bin 44744 -> 0 bytes .../assets/scaleway-topics-gen-creds.webp | Bin 38064 -> 0 bytes pages/topics-and-events/concepts.mdx | 183 -------- .../assets/scaleway-topics-create-subs.webp | Bin 24710 -> 0 bytes .../assets/scaleway-topics-create-topic.webp | Bin 44744 -> 0 bytes .../assets/scaleway-topics-gen-creds.webp | Bin 38064 -> 0 bytes .../how-to/create-credentials.mdx | 116 ----- .../how-to/create-manage-topics.mdx | 61 --- .../how-to/deactivate-delete-messaging.mdx | 45 -- .../topics-and-events/how-to/get-started.mdx | 54 --- pages/topics-and-events/how-to/index.mdx | 8 - .../how-to/manage-credentials.mdx | 76 ---- .../how-to/monitor-mnq-cockpit.mdx | 49 -- pages/topics-and-events/index.mdx | 83 ---- pages/topics-and-events/quickstart.mdx | 298 ------------- .../reference-content/index.mdx | 8 - .../reference-content/limitations.mdx | 23 - .../reference-content/sns-overview.mdx | 62 --- .../reference-content/sns-support.mdx | 279 ------------ 71 files changed, 5429 deletions(-) delete mode 100644 pages/nats/api-cli/index.mdx delete mode 100644 pages/nats/api-cli/nats-cli.mdx delete mode 100644 pages/nats/assets/scaleway-nats-create-account.webp delete mode 100644 pages/nats/assets/scaleway-nats-creds.webp delete mode 100644 pages/nats/assets/scaleway-nats-overview.webp delete mode 100644 pages/nats/concepts.mdx delete mode 100644 pages/nats/faq.mdx delete mode 100644 pages/nats/how-to/assets/scaleway-nats-create-account.webp delete mode 100644 pages/nats/how-to/assets/scaleway-nats-creds.webp delete mode 100644 pages/nats/how-to/assets/scaleway-nats-overview.webp delete mode 100644 pages/nats/how-to/create-credentials.mdx delete mode 100644 pages/nats/how-to/deactivate-delete-messaging.mdx delete mode 100644 pages/nats/how-to/get-started.mdx delete mode 100644 pages/nats/how-to/index.mdx delete mode 100644 pages/nats/how-to/manage-credentials.mdx delete mode 100644 pages/nats/how-to/monitor-mnq-cockpit.mdx delete mode 100644 pages/nats/index.mdx delete mode 100644 pages/nats/quickstart.mdx delete mode 100644 pages/nats/reference-content/index.mdx delete mode 100644 pages/nats/reference-content/limitations.mdx delete mode 100644 pages/nats/reference-content/nats-overview.mdx delete mode 100644 pages/queues/api-cli/connect-aws-cli.mdx delete mode 100644 pages/queues/api-cli/index.mdx delete mode 100644 pages/queues/api-cli/python-node-sqs.mdx delete mode 100644 pages/queues/api-cli/sqs-sns-aws-cli.mdx delete mode 100644 pages/queues/assets/scaleway-queues-create-queue.webp delete mode 100644 pages/queues/assets/scaleway-queues-gen-creds.webp delete mode 100644 pages/queues/concepts.mdx delete mode 100644 pages/queues/faq.mdx delete mode 100644 pages/queues/how-to/assets/scaleway-queues-create-queue.webp delete mode 100644 pages/queues/how-to/assets/scaleway-queues-gen-creds.webp delete mode 100644 pages/queues/how-to/assets/scaleway-queues-queue-settings.webp delete mode 100644 pages/queues/how-to/assets/scaleway-queues-update-creds.webp delete mode 100644 pages/queues/how-to/create-credentials.mdx delete mode 100644 pages/queues/how-to/create-manage-queues.mdx delete mode 100644 pages/queues/how-to/deactivate-delete-messaging.mdx delete mode 100644 pages/queues/how-to/get-started.mdx delete mode 100644 pages/queues/how-to/index.mdx delete mode 100644 pages/queues/how-to/manage-credentials.mdx delete mode 100644 pages/queues/how-to/monitor-mnq-cockpit.mdx delete mode 100644 pages/queues/index.mdx delete mode 100644 pages/queues/quickstart.mdx delete mode 100644 pages/queues/reference-content/index.mdx delete mode 100644 pages/queues/reference-content/limitations.mdx delete mode 100644 pages/queues/reference-content/sqs-overview.mdx delete mode 100644 pages/queues/reference-content/sqs-support.mdx delete mode 100644 pages/topics-and-events/api-cli/connect-aws-cli.mdx delete mode 100644 pages/topics-and-events/api-cli/index.mdx delete mode 100644 pages/topics-and-events/api-cli/python-node-sns.mdx delete mode 100644 pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx delete mode 100644 pages/topics-and-events/assets/scaleway-topics-create-subs.webp delete mode 100644 pages/topics-and-events/assets/scaleway-topics-create-topic.webp delete mode 100644 pages/topics-and-events/assets/scaleway-topics-gen-creds.webp delete mode 100644 pages/topics-and-events/concepts.mdx delete mode 100644 pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp delete mode 100644 pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp delete mode 100644 pages/topics-and-events/how-to/assets/scaleway-topics-gen-creds.webp delete mode 100644 pages/topics-and-events/how-to/create-credentials.mdx delete mode 100644 pages/topics-and-events/how-to/create-manage-topics.mdx delete mode 100644 pages/topics-and-events/how-to/deactivate-delete-messaging.mdx delete mode 100644 pages/topics-and-events/how-to/get-started.mdx delete mode 100644 pages/topics-and-events/how-to/index.mdx delete mode 100644 pages/topics-and-events/how-to/manage-credentials.mdx delete mode 100644 pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx delete mode 100644 pages/topics-and-events/index.mdx delete mode 100644 pages/topics-and-events/quickstart.mdx delete mode 100644 pages/topics-and-events/reference-content/index.mdx delete mode 100644 pages/topics-and-events/reference-content/limitations.mdx delete mode 100644 pages/topics-and-events/reference-content/sns-overview.mdx delete mode 100644 pages/topics-and-events/reference-content/sns-support.mdx diff --git a/menu/navigation.json b/menu/navigation.json index 5440dec029..3c195705e6 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4225,134 +4225,6 @@ "label": "Jobs", "slug": "serverless-jobs" }, - { - "items": [ - { - "label": "Overview", - "slug": "../messaging" - }, - { - "label": "Concepts", - "slug": "concepts" - }, - { - "label": "Quickstart", - "slug": "quickstart" - }, - { - "label": "FAQ", - "slug": "faq" - }, - { - "items": [ - { - "label": "Get started with NATS, Queues, or Topics and Events", - "slug": "get-started" - }, - { - "label": "Create credentials", - "slug": "create-credentials" - }, - { - "label": "Manage credentials", - "slug": "manage-credentials" - }, - { - "label": "Create and manage queues", - "slug": "create-manage-queues" - }, - { - "label": "Create and manage topics", - "slug": "create-manage-topics" - }, - { - "label": "Create and manage subscriptions", - "slug": "create-manage-subscriptions" - }, - { - "label": "Monitor NATS, Queues, and Topics and Events with Cockpit", - "slug": "monitor-mnq-cockpit" - }, - { - "label": "Delete a NATS, Queues, or Topics and Events service", - "slug": "deactivate-delete-messaging" - } - ], - "label": "How to", - "slug": "how-to" - }, - { - "items": [ - { - "label": "NATS API Reference", - "slug": "https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/" - }, - { - "label": "Queues API Reference", - "slug": "https://www.scaleway.com/en/developers/api/messaging-and-queuing/sqs-api/" - }, - { - "label": "Topics and Events API Reference", - "slug": "https://www.scaleway.com/en/developers/api/messaging-and-queuing/sns-api/" - }, - { - "label": "Connecting Queues or Topics and Events to the AWS-CLI", - "slug": "connect-aws-cli" - }, - { - "label": "Using Queues or Topics and Events with the AWS-CLI", - "slug": "sqs-sns-aws-cli" - }, - { - "label": "Using Go, Python or Node.js with Topics and Events", - "slug": "python-node-sns" - }, - { - "label": "Using Go, Python or Node.js with Queues", - "slug": "python-node-sqs" - }, - { - "label": "Using the NATS CLI", - "slug": "nats-cli" - } - ], - "label": "API/CLI", - "slug": "api-cli" - }, - { - "items": [ - { - "label": "Queues overview", - "slug": "sqs-overview" - }, - { - "label": "Topics and Events overview", - "slug": "sns-overview" - }, - { - "label": "NATS overview", - "slug": "nats-overview" - }, - { - "label": "Topics and Events - supported actions", - "slug": "sns-support" - }, - { - "label": "Queues - supported actions", - "slug": "sqs-support" - }, - { - "label": "Limitations", - "slug": "limitations" - } - ], - "label": "Additional Content", - "slug": "reference-content" - } - ], - "label": "NATS, Queues, Topics and Events", - "slug": "messaging" - }, { "items": [ { diff --git a/pages/nats/api-cli/index.mdx b/pages/nats/api-cli/index.mdx deleted file mode 100644 index aef6e7ef1f..0000000000 --- a/pages/nats/api-cli/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - API/CLI Documentation - description: NATS, Queues, and Topics and Events API/CLI Documentation -content: - h1: NATS, Queues, and Topics and Events - API/CLI Documentation - paragraph: NATS, Queues, and Topics and Events API/CLI Documentation ---- diff --git a/pages/nats/api-cli/nats-cli.mdx b/pages/nats/api-cli/nats-cli.mdx deleted file mode 100644 index e3f00adb9d..0000000000 --- a/pages/nats/api-cli/nats-cli.mdx +++ /dev/null @@ -1,114 +0,0 @@ ---- -meta: - title: Using the NATS CLI - description: This page explains how to use the NATS CLI with Scaleway NATS -content: - h1: Using the NATS CLI - paragraph: This page explains how to use the NATS CLI with Scaleway NATS -tags: messaging nats cli -categories: - - messaging -dates: - validation: 2024-10-18 - posted: 2023-01-20 ---- - -The NATS CLI (`nats`) is the official NATS tool for managing your NATS resources. It allows you to simply create and manage your streams, consumers and more. - -Check out the official [NATS CLI documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli/) for installation instructions, examples and more. - - - You can also configure Scaleway NATS with the Terraform/OpenTofu NATS Jetstream provider using our [dedicated tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider). - - -This page shows you how to get started with some basic actions via the NATS CLI. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- A Scaleway [NATS account](/messaging/how-to/get-started/#how-to-create-a-nats-account) -- NATS [credentials](/messaging/how-to/create-credentials/) downloaded to your machine - -## Installing the NATS CLI - -Follow instructions from the [official NATS documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli#installing-nats). The installation process may differ depending on your OS. - -## Define a context - -To simplify your interactions with NATS hosted on Scaleway, we recommend that you use [contexts](https://docs.nats.io/using-nats/nats-tools/nats_cli#nats-contexts). A context is a named configuration that stores the settings (such as credentials, URLs and certificates) required to connect to NATS. By creating a context, you won't need to specify your server and credentials with each new request. - -### Create a context - -The example below creates a context named `scaleway`. -- Replace `{Scaleway NATS URL}` with the URL of your NATS account (find this in the console on your NATS account **Overview** tab). -- Replace `{path to your creds file}` with the path to the location where you [downloaded your `.creds` file](/messaging/how-to/create-credentials/#how-to-create-credentials-for-a-nats-account). - -```bash -nats context save scaleway --server={Scaleway NATS URL} --creds={path to your creds file} -``` - -### Use the saved context - -Enter the following command to select the `scaleway` context for use: - -``` -nats context select scaleway -``` - -## Create a stream - -To create a [stream](/messaging/concepts/#stream), use the command `nats stream add` and follow the CLI guidelines. - - - Bear in mind that: - - Scaleway NATS does not support in-memory streams: choose `File` as storage backend. - - Some [system limits](/messaging/reference-content/limitations/) may apply by default. - - If you choose a `Retention Policy` other than `Work Queue` you will be billed for the messages stored and retained. - - Choosing three replicas has an impact on: - - The stream storage limit (as data is replicated 3 times) - - The volume of billed messages - - -You can connect to your stream using code, developer tools or the NATS CLI (for testing purposes only). - -## NATS cheat sheet - -Use the `nats cheat` command to get a list of all possible commands. - -Below we provide a summary of some useful commands. - -### General - -| Action | Command | -| ------------ | ------------------- | -| Show a specific section of cheats | `nats cheat pub` | -| List available sections | `nats cheat --sections` | - - -### Messaging - -| Action | Command | -| ------------ | ------------------- | -| Publish message from STDIN | `echo "hello world" \| nats pub destination.subject` | -| Publish 100 messages with a random body of 100 - 1000 characters | `nats cheat --sections``nats pub destination.subject "{{ Random 100 1000 }}" -H Count:{{ Count }} --count 100` | -| Publish message from STDINReceive new messages received with the subject ORDERS.new | `nats sub ORDERS.new` | -| Subscribe to messages, on subject source.subject | `nats sub source.subject` | - - -### Queuing/Streaming - -| Action | Command | -| ------------ | ------------------- | -| Adding a stream | `nats stream add` | -| Viewing a stream | `nats stream info STREAMNAME` | -| Removing a stream | `nats stream rm STREAMNAME` | -| Show a list of streams | `nats stream list` | -| Get message `12345` in stream `ORDERS` | `nats stream get ORDERS 12345` | -| Delete message `12345` in stream `ORDERS` | `nats stream rmm ORDERS 12345` | -| Purge messages from stream `ORDERS` | `nats stream purge ORDERS` | -| Mark a stream `ORDERS` as read only | `nats stream seal ORDERS` | -| Add a consumer | `nats consumer add` | -| View a consumer `NEW` of stream `ORDERS` | `nats consumer info ORDERS NEW` | -| Remove consumer `NEW` from stream `ORDERS`| `nats consumer rm ORDERS NEW` | -| Get messages from consumer `NEW` of stream `ORDERS` | `nats consumer next ORDERS NEW --ack --count=10 `, `nats consumer next ORDERS NEW --no-ack`, `nats consumer sub ORDERS NEW --ack` | diff --git a/pages/nats/assets/scaleway-nats-create-account.webp b/pages/nats/assets/scaleway-nats-create-account.webp deleted file mode 100644 index 12653712c9cbc9bd0feebd3cb7dd5c6f6303756b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19190 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

KiG)VMT`< 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 z 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 J_umRG0svKfuu1>` diff --git a/pages/nats/assets/scaleway-nats-overview.webp b/pages/nats/assets/scaleway-nats-overview.webp deleted file mode 100644 index c2240019b0f6f86d600f1628707c08c0e62e2d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38086 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 diff --git a/pages/nats/concepts.mdx b/pages/nats/concepts.mdx deleted file mode 100644 index 4cbee27ce6..0000000000 --- a/pages/nats/concepts.mdx +++ /dev/null @@ -1,183 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Concepts - description: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. -content: - h1: NATS, Queues, and Topics and Events - Concepts - paragraph: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. -categories: - - -tags: messaging queuing concepts nats queues topics events -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -## Content-based - -Content-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [topic-based](#topic-based) systems in terms of the way messages are [filtered](#filtering)/routed. In a content-based messaging system, the subscriber specifies the properties of the messages they want to receive, based on the message's attributes or content. Message delivery is therefore selective, and messages are only delivered to a subscriber if the attributes or content match the constraints they set. - -## Content-based deduplication - -Content-based deduplication is a setting available for [FIFO](#fifo) queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). - -## Credentials - -Credentials give services and platforms access to Scaleway NATS, Queues, and Topics and Events, enabling them to connect to the host system. Credentials are product-specific: for **Queues** and **Topics ad Events**, different levels of permissions can be defined to write, read, or manage queues/topics. NATS credentials give full read-write-manage access. Refer to our [additional content](/messaging/reference-content/) for more information. - -## Dead-letter queue - -A **D**ead-**l**etter **q**ueue (DLQ), or **undelivered-message queue**, receives and holds messages that cannot be delivered to their destination queues. A DLQ must be of the same type (FIFO or Standard), in the same Project and in the same region as the queue(s) it serves. Each DLQ also has an associated parameter: [maximum receive count](#maximum-receive-count). A single queue can serve as dead-letter queue to multiple source queues. - -If you designate a queue as a DLQ and its [storage quota](/organizations-and-projects/additional-content/organization-quotas/#queues) is reached, messages won't be redriven to the DLQ until enough free space is available again. If your DLQ is at its full quota, free up space by receiving and deleting messages from any queue in your Project. - -## Fanout - -Fanout is a type of messaging pattern. A fanout exchange broadcasts messages to all queues/consumers it is aware of. This allows the same published message to be consumed by different consumers, who will process it in different ways. Each message is processed in the order in which it arrives. - -## FIFO - -FIFO stands for **F**irst **I**n **F**irst **O**ut, and represents a type of queue or topic where the exact order of messages is preserved, and duplicate messages are not tolerated. As well as these specificities, FIFO queues and topics support all the same features as the [Standard](#standard) type. Consider using FIFO queues and topics for any use cases where the order of messages is critical, such as e-commerce order management systems, systems where one action should not happen until another has been completed, or first-come-first-served ticketing systems. - -## Filtering - -In a [topic-based](#topic-based) system, where topics handle the logic, filtering is similar to routing. Messages are sent to defined topics, which can be thought of as filters in so far as subscribers can subscribe only to the topics they are interested in. In a [content-based](#content-based) system, filtering is carried out more directly by subscribers, who define filters for messages based on the content/attributes they want to receive. - -## Long Polling - -Long polling is a technology where the client requests information from the server without expecting an immediate response. For [Queues](#queues), this enables clients to wait for the system to get messages that are not immediately available. - -## Message broker - -A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. All communication with producers and consumers uses a [protocol](#messaging-protocol). There are two basic models of communication for message brokers: [publish/subscribe](#publishsubscribe) and [queuing](#queuing). - -## Maximum receive count - -The maximum receive count is a setting that can be configured for a [dead-letter queue](#dead-letter-queue). It defines how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. This value must be between 1 and 1,000. - -## Message retention period - -The message retention period is a setting that can be configured for a queue. It represents the length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). - -## Messaging and Queuing - -Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#nats), [Queues](#queues), and [Topics and Events](#topics-and-events). - -## Messaging protocol - -A messaging protocol defines a structured way for users / platforms / services / applications to exchange data and messages, even if normally they do not "speak the same language". Protocols also describe how messages should be processed, prioritized, managed and routed. Scaleway NATS is based on the [NATS](#nats) protocol, Queues on the [SQS](#sqs) protocol, and Topics and Events on the [SNS](#sns) protocol. - -## NATS - -The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is an open-source messaging system written in Go. It is part of the Cloud Native Computing Foundation (CNCF) and has more than 40 client language implementations. The application has been designed with performance, scalability, and ease of use in mind. - -Check our our [NATS quickstart](/messaging/quickstart/#quickstart-for-nats) to get started with Scaleway NATS, or our [tutorial](/tutorials/large-messages/) on creating a serverless architecture to process large messages with NATS, to get an idea of how to go further. - -## NATS account - -A NATS account sets a scope for any NATS credentials, messages, queues and streams held within it. You can create one or multiple NATS accounts with Scaleway NATS. - -## Protocol - -See [messaging protocol](#messaging-protocol). - -## Publish/Subscribe - -Also known as "pub/sub", the publish/subscribe model provides a pattern or framework for the exchange of messages between publishers and subscribers. It contrasts with the [queuing](#queuing) model. The key feature of publish/subscribe is that messages are not sent to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. The process of selecting which messages to receive is called [filtering](#filtering), which can be [topic-based](#topic-based) or [content-based](#content-based). The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. - -## Queue - -Creating a queue with [Scaleway Queues](#queue) facilitates asynchronous communication between different microservices, applications, and platforms. You can create a queue, configure its delivery and message parameters, and then start sending messages to it. Messages are stored in the queue until they are processed and delivered, and deleted once consumed. [Read more about creating and configuring queues](/messaging/how-to/create-manage-queues/), or check our [tutorial on creating a serverless scraping architecture using a queue](/tutorials/create-serverless-scraping/) to get an idea of what you can do with message queues. - -## Queues - -Scaleway Queues is a product for creating managed messaging queues based on the [SQS](#sqs) protocol. Previously, it was part of the Messaging and Queuing product. - -## Queue types - -When creating queues with Scaleway Queues, two queue types are available. [Standard](#standard) queues provide at-least-once delivery, while [FIFO](#fifo) queues offer first-in-first-out delivery, and (unlike Standard queues) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO queue types. Find out more about creating queues with our [dedicated documentation](/messaging/how-to/create-manage-queues/). - -## Queuing - -The message queuing model provides a pattern or framework for sending messages, which contrasts with the [publish/subscribe](#publishsubscribe) model. Queuing is a form of asynchronous service-to-service communication. Whereas with the publish/subscribe model multiple subscribers can receive each message, with the queuing model, messages have just one destination. Messages are stored in the queue until they are processed and delivered, and they are deleted once consumed. This model is used in serverless and microservices architectures. - -## Queue volume - -Queue volume is one of the factors affecting the billing of Scaleway Queues. Queue volume is calculated as the number of messages in a queue, multiplied by the message size. Or, the sum of the size of all messages in a queue. - -## Region - -NATS, Queues, and Topics and Events are available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS, Queues, and Topics and Events. - -When [creating a NATS account](/messaging/how-to/get-started/#how-to-create-a-nats-account) or creating queues or topics, you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. - -## Routing - -In [topic-based](#topic-based) messaging, topics allow messages to be routed to the correct subscribers. Topics act as labels for each message, and the broker routes messages to subscribers who match the topic. - -## SNS - -The Scaleway **Topics and Events** product is based on the SNS protocol. **S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. - -## SQS - -The Scaleway **Queues** product is based on the SNS protocol. **S**imple **Q**ueue **S**ervice, or SQS, is a distributed message [queuing](#queuing) service that supports programmatic sending of messages via web service applications. - -## Standard - -Standard-type queues and topics represent the default queue/topic type, and offer an at-least-once message delivery system. Unlike [FIFO](#fifo) queues and topics, standard queues provide only best-effort attempts to deliver messages in order. At-least-once delivery means that it is possible under rare circumstances that the same message may be received more than once. - -## Stream - -Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Each message can be delivered to one or more consumers. - -## Stream volume - -Stream volume is one of the factors affecting the billing of Scaleway NATS. Stream volume is calculated as the number of messages in a stream, multiplied by the message size. Or, the sum of the size of all messages in a stream. - -## Stream persistence - -Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. - -## Subscriber - -In [publish/subscribe](#publishsubscribe) systems such as [Topics and Events](#topics-and-events), a subscriber is the entity (e.g. a queue, function, or URL) that messages from topics are pushed to. Subscribers can filter messages based on their topic or content. - -## Subscription - -A subscription is a connection between a client or endpoint, and a topic. By creating a subscription, the subscribed endpoint receives messages and notifications published to the topic. You can [create subscriptions](/messaging/how-to/create-manage-subscriptions/) for HTTP/S endpoints, Scaleway queues, and Scaleway Serverless [Functions](/serverless-functions/quickstart/) and [Containers](/serverless-containers/quickstart/). - -## Subscription protocols and endpoints - -A subscription protocol refers to the communication method used to deliver messages to a subscriber. Different types of subscriber require different protocols. When you create a new subscription to a topic with Scaleway Topics and Events, the following options are available: - -| Protocol | Endpoint / Client | Note | -|-------------------------------------|--------------------------------------------------|-----------------------------------| -| HTTP | The URL of a service or web server that can receive notifications (HTTP POST requests) from Topics and Events, e.g. `http://example.fr` | - For security reasons, we recommend using the HTTPS protocol rather than HTTP.
- HTTP subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | -| HTTPS | The URL of a service or web server that can receive notifications (HTTPS POST requests) from Topics and Events, e.g. `https://example.fr` | - HTTPS subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | -| Serverless Functions and Containers | A Scaleway Serverless [Function](/serverless-functions/quickstart/) or [Container](/serverless-containers/quickstart/)
| - It must have a [public](/serverless-functions/concepts/#privacy-policy) privacy policy
- It must be in a [namespace](/serverless-functions/concepts/#namespace) from the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | -| Queues | A Scaleway [queue](#queue)
| - It must be in the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | - -## Topic - -A topic is a communication channel used to send messages and notifications to subscribed endpoints or clients. Publishers send messages to topics, and those messages are received by subscribers. Subscribers can include Serverless Functions, Scaleway queues and HTTP/HTTPS endpoints. As such, topics decouple the publishing and the receiving of messages, allowing for flexibility and scalabilty in building loosely-coupled systems. - -## Topic types - -When creating topics with Scaleway Topics and Events, two topic types are available. [Standard](#standard) topics provide at-least-once delivery, while [FIFO](#fifo) topics offer first-in-first-out delivery, and (unlike Standard topics) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO topic types. Find out more about creating topics with our [dedicated documentation](/messaging/how-to/create-manage-topics/). - -## Topic-based - -Topic-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [content-based](#content-based) systems. In a topic-based system, messages are published to "topics" or named logical channels. See [topic](#topic) for more information. - -## Topic volume - -Topic volume is one of the factors affecting the billing of Scaleway Topics and Events. Topic volume is calculated as the total sum of the sizes of all messages sent from a topic to its subscriptions. - -## Topics and Events - -Scaleway Topics and Events is a product for creating managed messaging topics based on the [SNS](#sns) protocol. Previously, it was part of the Messaging and Queuing product. - -## Visibility timeout - -Visibility timeout is a setting that can be configured for a Scaleway queue. It represents the length of time (in seconds) during which, after a message is received, the queue hides it, so it cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). diff --git a/pages/nats/faq.mdx b/pages/nats/faq.mdx deleted file mode 100644 index 29fdf41f40..0000000000 --- a/pages/nats/faq.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events FAQ - description: Discover Scaleway NATS, Queues, and Topics and Events, and get answers to common questions about the different protocols available, compatibility with various services, and billing. -content: - h1: Messaging and Queuing FAQ -dates: - validation: 2024-12-04 -category: serverless -productIcon: NatsProductIcon ---- - -## What is NATS, Queues, and Topics and Events? - -These are three distinct managed message broker tools offered by Scaleway, based on the NATS, SQS and SNS protocols respectively. Previously, these products were grouped together as 'Messaging and Queuing', but have now become three separate products in their own right. - -## What are NATS, SNS and SQS? - -NATS, SNS and SQS are all messaging protocols used by the Scaleway NATS, Queues, and Topics and Events products. You can find out more about these protocols, and other essential concepts, on our dedicated [concepts page](/messaging/concepts/). - -## Is the Scaleway Queues gateway compatible with my application, framework or tool? - -We currently implement the API endpoints listed [here](/messaging/reference-content/sqs-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including KEDA and Symfony. Note that you need to specify both Regions and URL to ensure compatibility. - -## Does Scaleway Topics and Events support all SNS features? - -The following subscriber types are supported: -- HTTP/S clients -- Serverless Functions and Containers -- Scaleway Queues queues - -For more details on supported and unsupported Topics and Events features, see our [dedicated page](/messaging/reference-content/sns-support/). - -## Can I configure Scaleway NATS via Terraform/OpenTofu? - -Yes, check out our [tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) on how to configure Scaleway NATS with the Terraform/OpenTofu [NATS Jetstream provider](https://registry.terraform.io/providers/nats-io/jetstream/latest/docs). - -## How are NATS, Queues, and Topics and Events billed? - -Billing is based on: - -- For NATS: [Stream volume](/messaging/concepts/#stream-volume) (the total sum of each message's size going through the stream) and [stream persistence](/messaging/concepts/#stream-persistence) (the total amount of data stored * duration) -- For Queues: [Queue volume](/messaging/concepts/#queue-volume) (the total sum of each message's size going through the queue) -- For Topics and Events : [Topic Volume](/messaging/concepts/#queue-volume)(the total sum of each message's size going out from the topic to the subscriptions) - -For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/nats/how-to/assets/scaleway-nats-create-account.webp b/pages/nats/how-to/assets/scaleway-nats-create-account.webp deleted file mode 100644 index 12653712c9cbc9bd0feebd3cb7dd5c6f6303756b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19190 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

KiG)VMT`< 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 z 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 J_umRG0svKfuu1>` diff --git a/pages/nats/how-to/assets/scaleway-nats-overview.webp b/pages/nats/how-to/assets/scaleway-nats-overview.webp deleted file mode 100644 index c2240019b0f6f86d600f1628707c08c0e62e2d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38086 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 diff --git a/pages/nats/how-to/create-credentials.mdx b/pages/nats/how-to/create-credentials.mdx deleted file mode 100644 index 16ee57b0c8..0000000000 --- a/pages/nats/how-to/create-credentials.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -meta: - title: How to create credentials for NATS, Queues, or Topics and Events - description: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. -content: - h1: How to create credentials for NATS, Queues, or Topics and Events - paragraph: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. -tags: credentials messaging queuing key token -categories: - - serverless -dates: - validation: 2024-10-18 - posted: 2022-08-11 ---- - -This page shows how to create [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). Credentials give their bearer (e.g. services and platforms) access to your service. - -You can create multiple sets of credentials for each of your NATS accounts, and for your Queues and Topics and Events services. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create credentials for a NATS account - -Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. - -3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. - - - -4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. - -5. Enter a name for these credentials, and click **Generate credentials**. - - The credentials are created and a button displays prompting you to download them in a `.creds` file. - - - - - The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. - - -7. Click **Download** and save the file, before closing the window. - - You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. - -## How to create credentials for Queues - -Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -## How to create credentials for Topics and Events - -Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - - - - - diff --git a/pages/nats/how-to/deactivate-delete-messaging.mdx b/pages/nats/how-to/deactivate-delete-messaging.mdx deleted file mode 100644 index f8ef3f4fbe..0000000000 --- a/pages/nats/how-to/deactivate-delete-messaging.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -meta: - title: How to delete a NATS, Queues, or Topics and Events service - description: Delete Scaleway NATS, Queues, or Topics and Events effectively. Safely remove resources with this straightforward guide. -content: - h1: How to delete a NATS, Queues, or Topics and Events service - paragraph: Delete Scaleway NATS, Queues, or Topics and Events services effectively. Safely remove resources with this straightforward guide. -dates: - validation: 2024-10-17 - posted: 2023-10-03 -tags: delete messaging queuing queueing messaging-and-queuing service disable deactivate nats-account stop -categories: - - serverless ---- - -This page shows how to delete a Scaleway **NATS**, account. - -Note that it is no longer necessary to deactivate services for **Queues** or **Topics and Events**: simply delete the queues, topics, subscriptions or other associated resources for the product directly. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) - -## How to delete a NATS account - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. - -3. Click the NATS account you want to delete. - -4. In the bottom panel, click the **Delete NATS account** button. - - A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. - -5. Type `DELETE` and click **Delete NATS account** to confirm. - - -Repeat the process above for each NATS account you want to delete. Remember to use the region drop-down as appropriate to access the different NATS accounts you hold in different regions. - - - - diff --git a/pages/nats/how-to/get-started.mdx b/pages/nats/how-to/get-started.mdx deleted file mode 100644 index 639996edfa..0000000000 --- a/pages/nats/how-to/get-started.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -meta: - title: How to get started with NATS, Queues, or Topics and Events - description: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events services effortlessly. -content: - h1: How to get started with NATS, Queues, or Topics and Events - paragraph: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events effortlessly. -tags: messaging queuing enable disable nats sqs sns nats-account account create -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2023-10-03 ---- - -This page shows how to get started with Scaleway **NATS**, **Queues** or **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). - -The process differs depending on the [messaging protocol](/messaging/concepts/#messaging-protocol) you want to use: - -- For NATS, you need to **create a NATS account**. -- For **Queues** and **Topics and Events**, you no longer need to activate the protocol, but can proceed directly to [creating queues](/messaging/how-to/create-manage-queues) and/or [topics](/messaging/how-to/create-manage-topics). - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create a NATS account - -To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create a NATS account**. The creation wizard displays. - - - -3. Complete the following steps in the wizard: - - - Choose a **region**, which is the geographical location in which your NATS account will be created. - - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. - - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). - - Click **Create NATS account** to finish. - - You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. - - - You can create more NATS accounts in your pre-selected region if you wish, by clicking on the `+ Create NATS account` button. To create NATS accounts in other regions, repeat the steps above starting from step 2 and selecting the required region. - - - -## How to activate Queues or Topics and Events - -For **Queues** and **Topics and Events**, you no longer need to activate the individual protocols. Proceed directly to [creating queues](/messaging/how-to/create-manage-queues) or [topics](/messaging/how-to/create-manage-topics) directly. \ No newline at end of file diff --git a/pages/nats/how-to/index.mdx b/pages/nats/how-to/index.mdx deleted file mode 100644 index e54fd91319..0000000000 --- a/pages/nats/how-to/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - How Tos - description: NATS, Queues, and Topics and Events How Tos -content: - h1: NATS, Queues, and Topics and Events - How Tos - paragraph: NATS, Queues, and Topics and Events How Tos ---- diff --git a/pages/nats/how-to/manage-credentials.mdx b/pages/nats/how-to/manage-credentials.mdx deleted file mode 100644 index 4ea9a79652..0000000000 --- a/pages/nats/how-to/manage-credentials.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -meta: - title: How to manage credentials for NATS, Queues, or Topics and Events - description: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. -content: - h1: How to manage credentials for NATS, Queues, or Topics and Events - paragraph: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. -dates: - validation: 2024-10-17 - posted: 2022-08-11 -tags: manage credentials messaging queuing permissions update revoke -categories: - - serverless ---- - -Credentials give their bearer (e.g. services and platforms) access to your service. - -This page shows how to manage [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). - -Credentials for **Queues** and **Topics and Events** can be updated to change their permissions, or revoked. **NATS** credentials can only be revoked, not updated. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) - -## How to update Queues or Topics and Events credentials - -1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to update. - -2. Click the **Credentials** tab. - -3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to update. - -4. Click the button next to the credentials you want to update, and select **Update credentials**. A pop-up displays, such as the one below for Queues: - - - -5. Make the required updates to your credentials. You can modify the name, and the permissions. - -6. Click **Update credentials**. - - The credentials are updated and you are returned to the product's **Credentials** listing. - -## How to revoke Queues or Topics and Events credentials - -1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to revoke. - -2. Click the **Credentials** tab. - -3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to revoke. - -4. Click the button next to the credentials you want to revoke and select **Revoke**. - - A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. - -5. Click **Revoke credentials**. - - The credentials are revoked and you are returned to the product's **Credentials** listing. - -## How to revoke NATS credentials - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Select the NATS account you want to revoke credentials for. - -3. In the **Credentials** panel, click the button next to the credentials you want to revoke. - - A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. - -5. Click **Revoke credentials**. - - The credentials are revoked and you are returned to the NATS account's **Overview** page. - - diff --git a/pages/nats/how-to/monitor-mnq-cockpit.mdx b/pages/nats/how-to/monitor-mnq-cockpit.mdx deleted file mode 100644 index c957711a74..0000000000 --- a/pages/nats/how-to/monitor-mnq-cockpit.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -meta: - title: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit - description: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. -content: - h1: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit - paragraph: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. -tags: messaging queuing queueing cockpit metrics observability -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2023-09-07 ---- - -You can view metrics for your NATS, Queues, and Topics and Events services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues/streams and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: - -1. Generate your Grafana credentials -2. Access the product's metrics dashboard - -These steps are described below. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) - -## How to activate your Cockpit - -Scaleway Cockpit is activated by default if you have created [Scaleway resources integrated with Cockpit](/cockpit/reference-content/cockpit-limitations/#product-integration-into-cockpit). - -## How to generate Grafana credentials - -To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). - -## How to access your NATS, Queues, or Topics and Events dashboard and view your metrics - -1. Click **NATS**, **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Click the **protocol** you want to view metrics for, and navigate to the **Metrics** tab. - -3. Click **Open Grafana metrics dashboard**. - -4. Enter your Grafana username and password to log in. - - You are directed to the dashboard for the product in question, where you can view all your metrics. - - diff --git a/pages/nats/index.mdx b/pages/nats/index.mdx deleted file mode 100644 index 89f6a6c8a3..0000000000 --- a/pages/nats/index.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events Documentation - description: Explore Scaleway NATS, Queues, and Topics and Events. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. ---- - - - -## Getting Started - - - - - - - - - -## Tutorials - - - - - - - - - - -## Changelog - - \ No newline at end of file diff --git a/pages/nats/quickstart.mdx b/pages/nats/quickstart.mdx deleted file mode 100644 index 441abf33e0..0000000000 --- a/pages/nats/quickstart.mdx +++ /dev/null @@ -1,298 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Quickstart - description: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. -content: - h1: NATS, Queues, and Topics and Events - Quickstart - paragraph: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. -dates: - validation: 2024-10-18 - posted: 2022-08-29 -tags: messaging queuing queueing quickstart messaging-and-queuing nats sqs sls message-broker queues topics messages streams -categories: - - serverless ---- - -Scaleway NATS, Queues, and Topics and Events are [message broker](/messaging/concepts/#messaging-and-queuing) tools that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. These brokers enable and simplify microservices application development and allows you to build highly scalable, reliable, distributed applications. - -NATS, Queues, and Topics and Events were previously grouped together as the Messaging and Queuing product, and have now become three separate products in their own right. Read on to learn how to get started with your product of choice - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## Quickstart for NATS - -### How to create a NATS account - -To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create a NATS account**. The creation wizard displays. - - - -3. Complete the following steps in the wizard: - - - Choose a **region**, which is the geographical location in which your NATS account will be created. - - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. - - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). - - Click **Create NATS account** to finish. - - You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. - -### How to create NATS credentials - -Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. - -3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. - - - -4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. - -6. Enter a name for these credentials, and click **Generate credentials**. - - The credentials are created and a button displays prompting you to download them in a `.creds` file. - - - - - The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. - - -7. Click **Download** and save the file, before closing the window. - - You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. - -### How to create and manage queues, messages and streams - -All further actions related to publishing, processing and managing messages, subjects, queues and streams can be done via a supported CLI or SDK. See our documentation on [NATS CLI and SDKs](/messaging/reference-content/nats-overview/#further-actions-nats-cli-and-nats-sdk) for more information. You can also check out our tutorial on [creating a serverless architecture for handling large messages](/tutorials/large-messages/) with Scaleway Messaging and Queuing NATS. - -### How to delete a NATS account - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. - -3. Click the NATS account you want to delete. - -4. In the bottom panel, click the **Delete NATS account** button. - - A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. - -5. Type `DELETE` and click **Delete NATS account** to confirm. - - -## Quickstart for Queues - -### How to create credentials for Queues - -Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -### How to create queues - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create queue**. The queue creation wizard displays. - - - -3. Select the [region](/messaging/concepts/#region) in which you want to create the queue. - -4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose your **Queue type**, from one of the following: - - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. - - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. - -6. Configure your queue's **parameters**. The following parameters can be defined: - - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). - - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 209 600 seconds (14 days). - - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. - - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. - - **Dead-letter queue**: Designate another queue to receive undelivered messages from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count** (how many times a message can be received from the source queue before being moved to the dead-letter queue). - -7. Click **Create queue** to finish. - -You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. - -### How to send and receive messages - -All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/messaging/reference-content/sqs-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. - -### How to delete a queue - -When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to configure. - -3. Either: - - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. - - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. - -4. Type **DELETE** and click **Delete queue**. - -## Quickstart for Topics and Events - -### How to create Topics and Events credentials - -Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -### How to create topics - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create topic**. The topic creation wizard displays. - - - -3. Choose a region in which to create your topic. - -4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose a **topic type**. The following topic types are available: - - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. - - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/messaging/concepts/#content-based-deduplication) is only available for FIFO topics. - -6. Click **Create topic** to finish. - -You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. - -### How to create a subscription - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Use the dropdown menu to select the [region](/messaging/concepts/#region) of the topic you want to create a subscription for. - -3. Click the name of the topic you want to create a subscription for. - -4. Click **Create Subscription**. The subscription creation wizard displays. - - -5. Verify the parameters of the topic that you are creating a subscription for (name and type). - -6. Choose a protocol, based on the type of endpoint or client you want to subscribe. Click the tab below for further details and full instructions on each protocol: - - - -
- Select **HTTP** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via standard HTTP protocol. - - Note that for security reasons, we recommend using the HTTPS protocol, rather than HTTP. - - You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. - - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). - -
- -
- Select **HTTPS** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via secure HTTP protocol. - - You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. - - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). -
- -
- Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. - - You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. - - You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. -
- -
- - Choose **Queues** to create a subscription for a Scaleway queue that you have created. - - You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. -
-
- -7. Click **Create subscription** to finish. - - The subscription is created. If you created an HTTP or HTTPS subscription, you will now need to [confirm it](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). - -### How to publish messages - -All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/messaging/reference-content/sns-overview#further-actions)for more information. - -### How to delete a topic - -When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the topic you want to delete. - -3. Either: - - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or - - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. - -4. Type **DELETE** and click **Delete topic**. diff --git a/pages/nats/reference-content/index.mdx b/pages/nats/reference-content/index.mdx deleted file mode 100644 index b74fe93663..0000000000 --- a/pages/nats/reference-content/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Additional content - description: NATS, Queues, and Topics and Events additional content -content: - h1: NATS, Queues, and Topics and Events - Additional content - paragraph: NATS, Queues, and Topics and Events additional content ---- diff --git a/pages/nats/reference-content/limitations.mdx b/pages/nats/reference-content/limitations.mdx deleted file mode 100644 index ed7ab269ea..0000000000 --- a/pages/nats/reference-content/limitations.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events Limitations - description: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events -content: - h1: Limitations - paragraph: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events -tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics max-queues visibility-timeout -dates: - validation: 2024-10-18 - posted: 2023-01-04 -validation_frequency: 8 -categories: - - serverless ---- - -## Usage limits - -For the usage limits that apply when using Scaleway NATS, Queues, and Topics and Events, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues, streams, topics and consumers/subscribers, as well as to message retention duration and storage. - -## VPC - -NATS, Queues, and Topics and Events are not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/nats/reference-content/nats-overview.mdx b/pages/nats/reference-content/nats-overview.mdx deleted file mode 100644 index 17747cf0e8..0000000000 --- a/pages/nats/reference-content/nats-overview.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -meta: - title: NATS Overview - description: Learn about the NATS messaging system -content: - h1: NATS Overview - paragraph: Learn about the NATS messaging system -tags: nats overview neural-autonomic-transport-system publish-subscribe jetstream streaming messaging deno -categories: - - serverless -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -## What is NATS? - -NATS (**N**eural **A**utonomic **T**ransport **S**ystem) is a messaging system that aims to be simple to use, scalable and provide high performance. It implements a [publish/subscribe](/messaging/concepts/#publishsubscribe) model as well as adding a [streaming](/messaging/concepts/#stream) service via [JetStream](https://docs.nats.io/nats-concepts/jetstream). A stream is a persistent, time-ordered list of messages which can be read sequentially by consumers. A consumer can be thought of as a "cursor" in the stream, consuming the stream's messages according to their "subject filter" or "replay policy". With NATS, you would typically implement a [queue](/messaging/concepts/#queuing) as a stream with a single consumer to read from. - -NATS is a [Cloud Native Computing Foundation](https://www.cncf.io/) project supported by a strong community, and can also be integrated in a Kubernetes cluster. - -## Scaleway NATS - -Scaleway NATS is a managed messaging service that enable seamless communication between distributed applications, which leverages the NATS protocol. - -## NATS accounts - -You can easily create a NATS account from the [Scaleway console](https://console.scaleway.com/), via the [Scaleway API](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/) or via [Terraform/OpenTofu](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider). - -## NATS credentials - -When you create your NATS account, you next need to [create credentials](/messaging/how-to/create-credentials/). On the NATS side, these credentials are the equivalent of a 'user'. We use the most secure connection type offered by NATS: [NKeys](https://docs.nats.io/running-a-nats-service/configuration/securing_nats/auth_intro/nkey_auth). NKeys are a public-key signature system based on [Ed25519](https://ed25519.cr.yp.to/). - -Your credentials are provided in the form of a downloadable `.creds` file. Each set of credentials gives you full access to your NATS account, but does not enable you to generate new users with specific rights or fine-grained permissions. - -## Further actions: NATS CLI & NATS SDK - -All further actions related to publishing, processing and managing messages, subjects and streams can be done via one of the tools described below. - -Note that the Scaleway NATS server is configured with TLS, and as such will require all clients to connect with TLS. In the case of the NATS SDK however, the SDK abstracts this and handles the TLS connection itself. - -### NATS CLI - -The [NATS CLI](https://docs.nats.io/using-nats/nats-tools/nats_cli) is a great tool for administrating or testing your subjects and streams. See our [dedicated documentation](/messaging/api-cli/nats-cli/) for help getting started with the NATS CLI. - -### NATS SDK - -NATS has a wide range of language compatibility: - -| Language | Links | -|:----------:|:----------------------------:| -| Golang | [nats.go](https://github.com/nats-io/nats.go), [godoc](http://godoc.org/github.com/nats-io/nats.go) | -| Java | [nats.java](https://github.com/nats-io/nats.java), [javadoc](https://javadoc.io/doc/io.nats/jnats), [examples](https://github.com/nats-io/java-nats-examples) | -| C# | [nats.net](https://github.com/nats-io/nats.net), [doxygen](http://nats-io.github.io/nats.net/), [package](https://www.nuget.org/packages/NATS.Client/0.14.1) | -| JavaScript | [Node.js](https://github.com/nats-io/nats.js/#readme), [deno](https://github.com/nats-io/nats.deno/blob/main/README.md), [WebSocket](https://github.com/nats-io/nats.ws/#readme) | -| Python | [nats.py](https://github.com/nats-io/nats.py), [doc](https://nats-io.github.io/nats.py/) | -| Ruby | [nats-pure.rb](https://github.com/nats-io/nats-pure.rb), [yard](https://www.rubydoc.info/gems/nats) | -| C | [nats.c](https://github.com/nats-io/nats.c), [doc](http://nats-io.github.io/nats.c) | -| Rust | [nats.rs](https://github.com/nats-io/nats.rs), [doc](https://docs.rs/nats) | -| Elixir | [nats.ex](https://github.com/nats-io/nats.ex), [doc](https://hex.pm/packages/gnat) | -| Zig | [nats.zig](https://github.com/nats-io/nats.zig) | -| PHP | [phpnats](https://github.com/repejota/phpnats) [nats.php](https://github.com/basis-company/nats.php) | - -Further community NATS SDKs, e.g. SwiftyNats, Kotlin and Crystal, can be found [here](https://docs.nats.io/using-nats/developer). - -The following documents may help you get started using the above SDKs: -- [Authentication with SDK](https://docs.nats.io/using-nats/developer/connecting/creds) -- [JavaScript: Using Jetstream](https://github.com/nats-io/nats.deno/blob/main/jetstream.md/#jetstream-client) -- [Python: Using Jetstream](https://github.com/nats-io/nats.py#jetstream) -- [Go: Using Jetstream](https://github.com/nats-io/nats.go#jetstream-basic-usage) - -The main difference you will find between the standard NATS documentation and Scaleway NATS is that we require you to provide a specific NATS URL and credentials to access the service. Refer to our [developers documentation](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/) for further information. - -## NATS resources - -- [Official NATS Documentation: What is NATS?](https://docs.nats.io/nats-concepts/what-is-nats) -- [Create a serverless architecture for handling large messages using Scaleway's NATS, Serverless Functions, and Object Storage](/tutorials/large-messages/) -- [Publish/Subscribe in pure NATS (no message retention)](https://docs.nats.io/nats-concepts/core-nats/pubsub/pubsub_walkthrough) -- [Introduction to JetStream](https://docs.nats.io/nats-concepts/jetstream) -- [Learn NATS by Example](https://natsbyexample.com/) -- [How to use Scaleway NATS with the Terraform/OpenTofu NATS Jetstream provider](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) \ No newline at end of file diff --git a/pages/queues/api-cli/connect-aws-cli.mdx b/pages/queues/api-cli/connect-aws-cli.mdx deleted file mode 100644 index 34f61a55d2..0000000000 --- a/pages/queues/api-cli/connect-aws-cli.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -meta: - title: Connecting Queues or Topics and Events to the AWS-CLI - description: This page explains how to connect Scaleway Queues and/or Topics and Events to the AWS-CLI -content: - h1: Connecting Queues or Topics and Events to the AWS-CLI - paragraph: This page explains how to connect Scaleway Queues and/or Topics and Events to the AWS-CLI -tags: messaging sns sqs aws-cli cli aws sdk python boto -categories: - - messaging -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. With minimal configuration, you can start using the AWS-CLI with Scaleway Queues or Scaleway Topics and Events. This allows you to create, list and manage your queues and topics, send messages and much more, all from your command line. - -This guide shows you how to install the AWS-CLI and configure it to connect to Scaleway Queues or Scaleway Topics and Events. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) for Queues and/or Topics and Events - - - This page assumes you will use the AWS-CLI v1. - - -## How to install the AWS-CLI - -To interact with Scaleway Queues and Scaleway Topics and Events, both `aws-cli` and `awscli-plugin-endpoint` need to be installed. The `awscli-plugin-endpoint` is a useful plugin to help people more easily access third-party providers such as Scaleway. - -Install both `aws-cli` and `awscli-plugin` using `pip`. - -``` -pip3 install awscli -pip3 install awscli-plugin-endpoint -``` - -## How to configure the AWS-CLI - -Now you have installed the AWS-CLI, you need to configure it for use with Scaleway Queues / Topics and Events. - -1. Create a file named `~/.aws/config` by running the following command: - ``` - aws configure set plugins.endpoint awscli_plugin_endpoint - ``` - - - With the most recent versions of awscli (1.29.0 or 2.13.0), the use of a plugin is not necessary. If you are using one of those versions and wish to skip this step, you can do so. Note that this will also affect your configuration file in the next step. - - -2. Open the `~/.aws/config` file you just created in a text editor and edit it as follows (the Queues (SQS) or Topics and Events (SNS) endpoint URLs can be found in the console on the **Settings** page for the relevant product) - ``` - [plugins] - endpoint = awscli_plugin_endpoint - [profile sns] - region = fr-par - sns = - endpoint_url = https://sns.mnq.fr-par.scaleway.com - [profile sqs] - region = fr-par - sqs = - endpoint_url = https://sqs.mnq.fr-par.scaleway.com - ``` - - Optionally, you can also configure additional profiles by adding new blocks under `[sqs]` and `[sns]`. For example, you can add a third profile, `[profile aws]`, to connect to the AWS SQS/SNS service if you want: - - ``` - [plugins] - endpoint = awscli_plugin_endpoint - [profile sns] - region = fr-par - sns = - endpoint_url = https://sns.mnq.fr-par.scaleway.com - [profile sqs] - region = fr-par - sqs = - endpoint_url = https://sqs.mnq.fr-par.scaleway.com - [profile aws] - region=eu-west-3 - output=json - ``` - - - If you are using the AWS-CLI v2, you must include the path to the plugin in your configuration file. Add `cli_legacy_plugin_path = ` to the `[plugins]` section, replacing `` with the corresponding path. - - - - If you are using aws 1.29.0 or 2.13.0 without the plugin, your configuration file should be as follows: - ``` - [profile sns] - region = fr-par - endpoint_url = https://sns.mnq.fr-par.scaleway.com - [profile sqs] - region = fr-par - endpoint_url = https://sqs.mnq.fr-par.scaleway.com - ``` - - - -3. Generate a credentials file using the following command: - ``` - aws configure - ``` -** -4. Open the `~/.aws/credentials` file you just created, and for each product (out of **Queues** and **Topics and Events**) you want to use, add the access key and secret key you saved when you generated your [credentials](/messaging/how-to/create-credentials/): - ``` - [topics_events] - aws_access_key_id= - aws_secret_access_key= - - [queues] - aws_access_key_id= - aws_secret_access_key= - ``` - - If you have other profiles, you can add a block to indicate their credentials too: - ``` - [aws] - aws_access_key_id= - aws_secret_access_key= - ``` - -6. Test that everything is set up correctly with the following command: - ``` - aws queues list-queues - ``` - - Use the `--profile` option if you want to test it using a different profile. - - - Check out our dedicated documentation to find more common commands for getting started with the AWS CLI: - - The [Queues guide](/messaging/api-cli/sqs-sns-aws-cli/#getting-started-with-scaleway-queues) walks you through creating and listing queues, sending messages to queues, and more. - - The [Topics and Events guide](/messaging/api-cli/sqs-sns-aws-cli/#getting-started-with-topics-and-events) shows you how to create and list topics and subscriptions, send messages to topics, and more. - diff --git a/pages/queues/api-cli/index.mdx b/pages/queues/api-cli/index.mdx deleted file mode 100644 index aef6e7ef1f..0000000000 --- a/pages/queues/api-cli/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - API/CLI Documentation - description: NATS, Queues, and Topics and Events API/CLI Documentation -content: - h1: NATS, Queues, and Topics and Events - API/CLI Documentation - paragraph: NATS, Queues, and Topics and Events API/CLI Documentation ---- diff --git a/pages/queues/api-cli/python-node-sqs.mdx b/pages/queues/api-cli/python-node-sqs.mdx deleted file mode 100644 index 74d78d6b3b..0000000000 --- a/pages/queues/api-cli/python-node-sqs.mdx +++ /dev/null @@ -1,231 +0,0 @@ ---- -meta: - title: Using Go, Python or Node.js with Scaleway Queues - description: This page explains how to use Go, Python or Node.js with Scaleway Queues and provides code samples -content: - h1: Using Go, Python or Node.js with Scaleway Queues - paragraph: This page explains how to use Go, Python or Node.js with Scaleway Queues and provides code samples -tags: messaging boto3 python nodejs sqs go -categories: - - messaging -dates: - validation: 2024-10-18 - posted: 2023-01-04 -validation_frequency: 8 ---- - -AWS provides a number of SDKs (**S**oftware **D**evelopment **K**its) which provide language-specific APIs for AWS services, including [SQS](/messaging/concepts#sqs), which is the protocol Scaleway Queues is based on. - -- AWS provides a dedicated [SDK for Go](https://aws.amazon.com/sdk-for-go/). -- The [AWS SDK for Python](https://aws.amazon.com/sdk-for-python/) is Boto3 -- For Node.js, use the [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/), which can be [installed from NPM](https://github.com/aws/aws-sdk-js-v3#getting-started) - -This guide provides code samples to show you how to start using these SDKs with Scaleway Queues. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) for Scaleway Queues -- Installed the relevant AWS SDK [for Go](https://aws.amazon.com/sdk-for-go/), [Python](https://aws.amazon.com/sdk-for-python/) and/or [JavaScript](https://aws.amazon.com/sdk-for-javascript/) - -## Go - -### Connect to Queues (Go) - -The following code sample shows how to connect to Scaleway Queues: - -```go -import ( - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/sqs" -) - -func main() { - awsSession := session.Must(session.NewSession(&aws.Config{ - Region: aws.String("fr-par"), - Endpoint: aws.String("http://sqs.mnq.fr-par.scaleway.com"), - Credentials: credentials.NewStaticCredentials(AwsAccessKey, AwsSecretKey, ""), - })) - - awsSqs := sqs.New(awsSession) - - [...] -} -``` - - - - The `Endpoint` for Scaleway Queues is `https://sqs.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/messaging/how-to/create-credentials/) for Queues. - - - -Once you are connected, you can use any functions available with the SDK. However, we recommend that you check they are [supported by Scaleway Queues](/messaging/reference-content/sqs-support/). See the [official documentation](https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sqs) for more details on using the SDK, or read on to see some examples. - -### Create queue (Go) - -```go -createQueueResponse, _ := awsSqs.CreateQueue(&sqs.CreateQueueInput{ - QueueName: aws.String("my-test-queue"), -}) -fmt.Println(*createQueueResponse.QueueUrl) -``` - -### Send messages to this queue (Go) - -```go -for i := 0; i < 10; i++ { - _, _ = awsSqs.SendMessage(&sqs.SendMessageInput{ - MessageBody: aws.String(fmt.Sprintf("Hello World: %d", i)), - QueueUrl: createQueueResponse.QueueUrl, - }) -} -``` - -### Receive messages from this queue (Go) - -```go -for { - receiveMessageResponse, err := awsSqs.ReceiveMessage(&sqs.ReceiveMessageInput{ - QueueUrl: createQueueResponse.QueueUrl, - }) - if err != nil || len(receiveMessageResponse.Messages) == 0 { - break - } - for _, m := range receiveMessageResponse.Messages { - fmt.Println(*m.Body) - } -} -``` - -## Python - -### Connect to Queues (Python) - -The following code sample shows how to connect to Scaleway Queues using Boto3's `resource()`. It is also possible to use `client()`, but `resource()` is more pythonesque: - -```python -sqs = boto3.resource('sqs', - endpoint_url=[], - aws_access_key_id=[], - aws_secret_access_key=[], - region_name='fr-par') -``` - - - The `endpoint_url` for Scaleway Queues is `https://sqs.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/messaging/how-to/create-credentials/) for Queues. - - -Once connected, you can use any functions available with the SDK - just check that they are [supported by Scaleway Queues](/messaging/reference-content/sqs-support/). See the [official documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) for more details, or read on to see some examples. - -### Create queue (Python) - -```python -# Create the queue. This returns an SQS.Queue instance -queue = sqs.create_queue(QueueName='my test queue') - -# You can now access identifiers and attributes -print(queue.url) -print(queue.attributes) -``` - -### Send messages to this queue (Python) - -```python -for i in range (0,10): - queue.send_message(MessageBody="Hello World: "+str(i)) -``` - -### Receive messages from this queue (Python) - -```python -for message in queue.receive_messages(): - print(message.body) - message.delete() -``` - -## Node.js - -### Connect to Scaleway Queues (NodeJS) - -Here, we use the `@aws-sdk/client-sqs` module, which is the latest SDK available. -Import the required module: -```javascript -const { SQSClient, SendMessageCommand, CreateQueueCommand, ReceiveMessageCommand } = require("@aws-sdk/client-sqs"); -// If you use ES6 syntax -// import { SQSClient, SendMessageCommand, CreateQueueCommand, ReceiveMessageCommand } from "@aws-sdk/client-sqs"; -``` - -The following code sample shows how to connect to Scaleway Queues: - -```javascript -var sqsClient = new SQSClient({ - credentials: { - accessKeyId: SQS_ACCESS_KEY_ID, - secretAccessKey: SQS_ACCESS_KEY - }, - region: "par", - endpoint: SQS_ENDPOINT, -}) -``` - - - The `endpoint_url` for Scaleway Queues is `https://sqs.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/messaging/how-to/create-credentials/) for Scaleway Queues. - - -Once connected, you can use any of the SDK's functions as long as they're [supported by Scaleway Queues](/messaging/reference-content/sqs-support/). Refer to AWS's [official documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html)) for more information, or read on to see some examples. - -### Create queue (NodeJS) - -```javascript -const createQueueCommand = new CreateQueueCommand({ - QueueName: 'SQS_QUEUE_NAME', - Attributes: { - 'MessageRetentionPeriod': '86400' - } - }); - -const createQueue = await sqsClient.send(createQueueCommand); -console.log(createQueue.QueueUrl); -``` - -You can find all available parameters for createQueue in the AWS documentation [here](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#createQueue-property). - -### Send messages to this queue (NodeJS) - -The following code sample demonstrates how to send a message with some `MessageAttributes`: - -```javascript -const sendMessageCommand = new SendMessageCommand({ - MessageAttributes: { - "Name": { - DataType: "String", - StringValue: "John" - }}, - MessageBody: "This is a test message to John", - QueueUrl: "SQS_QUEUE_URL" - }); - -const sendMessage = await sqsClient.send(sendMessageCommand) -console.log("Success", sendMessage.MessageId); -}); -``` - -### Receive messages from this queue (NodeJS) - -The following code sample shows how to read messages from a queue, and then delete them: - -```javascript -var queueURL= "SQS_QUEUE_URL"; - -const receiveMessageCommand = new ReceiveMessageCommand({ - MaxNumberOfMessages: 10, - QueueUrl: queueURL, - VisibilityTimeout: 20 -}); - -const receiveMessage = await sqsClient.send(receiveMessageCommand); -console.log(receiveMessage); -``` diff --git a/pages/queues/api-cli/sqs-sns-aws-cli.mdx b/pages/queues/api-cli/sqs-sns-aws-cli.mdx deleted file mode 100644 index ac152c9f78..0000000000 --- a/pages/queues/api-cli/sqs-sns-aws-cli.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -meta: - title: Using Scaleway Queues and Scaleway Topics and Events with the AWS-CLI - description: This page explains how to use Scaleway Queues and Scaleway Topics and Events for creating queues and sending and receiving messages with the AWS CLI -content: - h1: Using Scaleway Queues and Scaleway Topics and Events with the AWS-CLI - paragraph: This page explains how to use Scaleway Queues and Scaleway Topics and Events for creating queues and sending and receiving messages with the AWS CLI -tags: messaging sns sqs aws-cli cli aws queues messages subscribe publish -categories: - - messaging -dates: - validation: 2024-10-18 - posted: 2023-04-04 -validation_frequency: 8 ---- - -The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. Once you have [connected Scaleway Queues and/or Topics and Events to the AWS-CLI](/messaging/api-cli/connect-aws-cli/), you can start creating, listing and managing your queues and topics, sending messages and much more, all from your command line. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) for Queues and/or Topics and Events -- [Connected Queues and/or Topics and Events to the AWS-CLI](/messaging/api-cli/connect-aws-cli/) -- [jq](https://stedolan.github.io/jq/download/) installed on your machine - -## Getting started with Scaleway Queues - -1. Use the following command to create a queue: - - ```sh - aws sqs create-queue --queue-name MyQueue | tee my-queue.json - ``` - -2. Use the following command to list existing queues: - - ```sh - aws sqs list-queues - ``` - -3. Use the following command to send messages to a queue: - - ```sh - aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Hello world!" - - aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Second Message." - ``` - -4. Use the following command to receive messages: - - ```sh - aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json - - aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message2.json - ``` - -5. Use the following command to delete messages. This is necessary as once a message has been processed on your consumer side (typically by a worker), it will be re-queued unless it is explicitly deleted. - - ```sh - aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) - - aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message2.json) - ``` - -6. Use the following command to delete the queue itself: - - ```sh - aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) - ``` - -## Getting started with Topics and Events - -1. Use the following command to create a topic: - - ```sh - aws sns create-topic --name MyTopic | tee my-topic.json - ``` - -2. Use the following command to list existing topics: - - ```sh - aws sns list-topics - ``` - -### Preparing and subscribing to an HTTP/HTTPS target for Topics and Events messages - -1. Get the public endpoint of the HTTP server you want to forward your messages to. - -2. Use the following command to configure a subscription to push each new message sent on the topic to the HTTP server: - - ```sh - aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol http --notification-endpoint | tee my-subscription.json - ``` - -3. Find the HTTP request received by the HTTP server. It should have a body in json matching the following format. It contains information necessary to complete the subscription process: - - ```json - { - "Type": "SubscriptionConfirmation", - "Token": "", - "MessageId": "", - "TopicArn": "arn:scw:sns:fr-par::MyTopic", - "Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", - "Timestamp": "2022-06-29T10:03:34Z", - "SignatureVersion": "1", - "Signature": "", - "SigningCertURL": "http:///SNStest.crt", - "SubscribeURL": "" // Get the confirmation link located here - } - ``` - -4. Use the following command to confirm the subscription: - - ```sh - curl "" - ``` - -### Preparing and subscribing to a lambda (Scaleway Serverless Functions) target for Topics and Events messages - -1. Create the function following the steps detailed in the [Scaleway Functions Quickstart](/serverless-functions/quickstart/). - -2. Get the function endpoint from the [Scaleway console](https://console.scaleway.com/functions) under "Functions" -> "[YOUR-FUNCTION-NAMESPACE]" -> "[YOUR-FUNCTION-NAME]" -> "Function Settings" tab -> "Function Endpoint" - - - Only the main generated endpoint of the function will work, not the aliases. The endpoint should match the following format: - - ```sh - https://-.functions.fnc.fr-par.scw.cloud - example: "https://mynamespacexxxxxxxx-myfunction.functions.fnc.fr-par.scw.cloud)" - ``` - - -3. Use the following command to configure a subscription to push each new message sent on this topic to the function: - - ```sh - aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol lambda --notification-endpoint | tee my-subscription.json - - ``` - -## Continuing with Topics and Events - -1. Use the following command to list subscriptions: - - ```sh - aws sns list-subscriptions - ``` - -2. Use the following command to publish a message on the topic: - - ```sh - aws sns publish --topic-arn $(jq -r .TopicArn my-topic.json) --message "Hello world!" --message-deduplication-id $(date +%s) - ``` - -3. Use the following command to read the message received on a **Scaleway Queues** target: - - - - For **HTTP**/**HTTPS** targets, you should have received the message on your server - - For **lambda** targets, your function should have been called with the message as argument - - - ```sh - aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json - ``` - -4. Use the following command to delete the message received on a **Scaleway Queues** target. This is necessary to prevent it from being re-queued: - - ```sh - aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) - ``` - -5. Use the following command to delete the subscription: - - ```sh - aws sns unsubscribe --subscription-arn $(jq -r .SubscriptionArn my-subscription.json) - ``` - -6. Use the following command to delete the Scaleway queue (if you had a Scaleway Queues target): - - ```sh - aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) - ``` - - - For **lambda**, delete the function (if necessary), using the [Scaleway console](https://console.scaleway.com/functions) - - -7. Use the following command to delete the topic: - - ```sh - aws sns delete-topic --topic-arn $(jq -r .TopicArn my-topic.json) - ``` diff --git a/pages/queues/assets/scaleway-queues-create-queue.webp b/pages/queues/assets/scaleway-queues-create-queue.webp deleted file mode 100644 index e53fbcfa94aaa1eaebb618eda22e89df886cede4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26120 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 E1AJBtW&i*H diff --git a/pages/queues/assets/scaleway-queues-gen-creds.webp b/pages/queues/assets/scaleway-queues-gen-creds.webp deleted file mode 100644 index dc53bbb7def4f670571f500a9195ca45094380bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38432 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 Lv8ZtWF;f5ljjB+A diff --git a/pages/queues/concepts.mdx b/pages/queues/concepts.mdx deleted file mode 100644 index 4cbee27ce6..0000000000 --- a/pages/queues/concepts.mdx +++ /dev/null @@ -1,183 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Concepts - description: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. -content: - h1: NATS, Queues, and Topics and Events - Concepts - paragraph: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. -categories: - - -tags: messaging queuing concepts nats queues topics events -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -## Content-based - -Content-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [topic-based](#topic-based) systems in terms of the way messages are [filtered](#filtering)/routed. In a content-based messaging system, the subscriber specifies the properties of the messages they want to receive, based on the message's attributes or content. Message delivery is therefore selective, and messages are only delivered to a subscriber if the attributes or content match the constraints they set. - -## Content-based deduplication - -Content-based deduplication is a setting available for [FIFO](#fifo) queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). - -## Credentials - -Credentials give services and platforms access to Scaleway NATS, Queues, and Topics and Events, enabling them to connect to the host system. Credentials are product-specific: for **Queues** and **Topics ad Events**, different levels of permissions can be defined to write, read, or manage queues/topics. NATS credentials give full read-write-manage access. Refer to our [additional content](/messaging/reference-content/) for more information. - -## Dead-letter queue - -A **D**ead-**l**etter **q**ueue (DLQ), or **undelivered-message queue**, receives and holds messages that cannot be delivered to their destination queues. A DLQ must be of the same type (FIFO or Standard), in the same Project and in the same region as the queue(s) it serves. Each DLQ also has an associated parameter: [maximum receive count](#maximum-receive-count). A single queue can serve as dead-letter queue to multiple source queues. - -If you designate a queue as a DLQ and its [storage quota](/organizations-and-projects/additional-content/organization-quotas/#queues) is reached, messages won't be redriven to the DLQ until enough free space is available again. If your DLQ is at its full quota, free up space by receiving and deleting messages from any queue in your Project. - -## Fanout - -Fanout is a type of messaging pattern. A fanout exchange broadcasts messages to all queues/consumers it is aware of. This allows the same published message to be consumed by different consumers, who will process it in different ways. Each message is processed in the order in which it arrives. - -## FIFO - -FIFO stands for **F**irst **I**n **F**irst **O**ut, and represents a type of queue or topic where the exact order of messages is preserved, and duplicate messages are not tolerated. As well as these specificities, FIFO queues and topics support all the same features as the [Standard](#standard) type. Consider using FIFO queues and topics for any use cases where the order of messages is critical, such as e-commerce order management systems, systems where one action should not happen until another has been completed, or first-come-first-served ticketing systems. - -## Filtering - -In a [topic-based](#topic-based) system, where topics handle the logic, filtering is similar to routing. Messages are sent to defined topics, which can be thought of as filters in so far as subscribers can subscribe only to the topics they are interested in. In a [content-based](#content-based) system, filtering is carried out more directly by subscribers, who define filters for messages based on the content/attributes they want to receive. - -## Long Polling - -Long polling is a technology where the client requests information from the server without expecting an immediate response. For [Queues](#queues), this enables clients to wait for the system to get messages that are not immediately available. - -## Message broker - -A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. All communication with producers and consumers uses a [protocol](#messaging-protocol). There are two basic models of communication for message brokers: [publish/subscribe](#publishsubscribe) and [queuing](#queuing). - -## Maximum receive count - -The maximum receive count is a setting that can be configured for a [dead-letter queue](#dead-letter-queue). It defines how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. This value must be between 1 and 1,000. - -## Message retention period - -The message retention period is a setting that can be configured for a queue. It represents the length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). - -## Messaging and Queuing - -Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#nats), [Queues](#queues), and [Topics and Events](#topics-and-events). - -## Messaging protocol - -A messaging protocol defines a structured way for users / platforms / services / applications to exchange data and messages, even if normally they do not "speak the same language". Protocols also describe how messages should be processed, prioritized, managed and routed. Scaleway NATS is based on the [NATS](#nats) protocol, Queues on the [SQS](#sqs) protocol, and Topics and Events on the [SNS](#sns) protocol. - -## NATS - -The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is an open-source messaging system written in Go. It is part of the Cloud Native Computing Foundation (CNCF) and has more than 40 client language implementations. The application has been designed with performance, scalability, and ease of use in mind. - -Check our our [NATS quickstart](/messaging/quickstart/#quickstart-for-nats) to get started with Scaleway NATS, or our [tutorial](/tutorials/large-messages/) on creating a serverless architecture to process large messages with NATS, to get an idea of how to go further. - -## NATS account - -A NATS account sets a scope for any NATS credentials, messages, queues and streams held within it. You can create one or multiple NATS accounts with Scaleway NATS. - -## Protocol - -See [messaging protocol](#messaging-protocol). - -## Publish/Subscribe - -Also known as "pub/sub", the publish/subscribe model provides a pattern or framework for the exchange of messages between publishers and subscribers. It contrasts with the [queuing](#queuing) model. The key feature of publish/subscribe is that messages are not sent to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. The process of selecting which messages to receive is called [filtering](#filtering), which can be [topic-based](#topic-based) or [content-based](#content-based). The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. - -## Queue - -Creating a queue with [Scaleway Queues](#queue) facilitates asynchronous communication between different microservices, applications, and platforms. You can create a queue, configure its delivery and message parameters, and then start sending messages to it. Messages are stored in the queue until they are processed and delivered, and deleted once consumed. [Read more about creating and configuring queues](/messaging/how-to/create-manage-queues/), or check our [tutorial on creating a serverless scraping architecture using a queue](/tutorials/create-serverless-scraping/) to get an idea of what you can do with message queues. - -## Queues - -Scaleway Queues is a product for creating managed messaging queues based on the [SQS](#sqs) protocol. Previously, it was part of the Messaging and Queuing product. - -## Queue types - -When creating queues with Scaleway Queues, two queue types are available. [Standard](#standard) queues provide at-least-once delivery, while [FIFO](#fifo) queues offer first-in-first-out delivery, and (unlike Standard queues) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO queue types. Find out more about creating queues with our [dedicated documentation](/messaging/how-to/create-manage-queues/). - -## Queuing - -The message queuing model provides a pattern or framework for sending messages, which contrasts with the [publish/subscribe](#publishsubscribe) model. Queuing is a form of asynchronous service-to-service communication. Whereas with the publish/subscribe model multiple subscribers can receive each message, with the queuing model, messages have just one destination. Messages are stored in the queue until they are processed and delivered, and they are deleted once consumed. This model is used in serverless and microservices architectures. - -## Queue volume - -Queue volume is one of the factors affecting the billing of Scaleway Queues. Queue volume is calculated as the number of messages in a queue, multiplied by the message size. Or, the sum of the size of all messages in a queue. - -## Region - -NATS, Queues, and Topics and Events are available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS, Queues, and Topics and Events. - -When [creating a NATS account](/messaging/how-to/get-started/#how-to-create-a-nats-account) or creating queues or topics, you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. - -## Routing - -In [topic-based](#topic-based) messaging, topics allow messages to be routed to the correct subscribers. Topics act as labels for each message, and the broker routes messages to subscribers who match the topic. - -## SNS - -The Scaleway **Topics and Events** product is based on the SNS protocol. **S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. - -## SQS - -The Scaleway **Queues** product is based on the SNS protocol. **S**imple **Q**ueue **S**ervice, or SQS, is a distributed message [queuing](#queuing) service that supports programmatic sending of messages via web service applications. - -## Standard - -Standard-type queues and topics represent the default queue/topic type, and offer an at-least-once message delivery system. Unlike [FIFO](#fifo) queues and topics, standard queues provide only best-effort attempts to deliver messages in order. At-least-once delivery means that it is possible under rare circumstances that the same message may be received more than once. - -## Stream - -Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Each message can be delivered to one or more consumers. - -## Stream volume - -Stream volume is one of the factors affecting the billing of Scaleway NATS. Stream volume is calculated as the number of messages in a stream, multiplied by the message size. Or, the sum of the size of all messages in a stream. - -## Stream persistence - -Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. - -## Subscriber - -In [publish/subscribe](#publishsubscribe) systems such as [Topics and Events](#topics-and-events), a subscriber is the entity (e.g. a queue, function, or URL) that messages from topics are pushed to. Subscribers can filter messages based on their topic or content. - -## Subscription - -A subscription is a connection between a client or endpoint, and a topic. By creating a subscription, the subscribed endpoint receives messages and notifications published to the topic. You can [create subscriptions](/messaging/how-to/create-manage-subscriptions/) for HTTP/S endpoints, Scaleway queues, and Scaleway Serverless [Functions](/serverless-functions/quickstart/) and [Containers](/serverless-containers/quickstart/). - -## Subscription protocols and endpoints - -A subscription protocol refers to the communication method used to deliver messages to a subscriber. Different types of subscriber require different protocols. When you create a new subscription to a topic with Scaleway Topics and Events, the following options are available: - -| Protocol | Endpoint / Client | Note | -|-------------------------------------|--------------------------------------------------|-----------------------------------| -| HTTP | The URL of a service or web server that can receive notifications (HTTP POST requests) from Topics and Events, e.g. `http://example.fr` | - For security reasons, we recommend using the HTTPS protocol rather than HTTP.
- HTTP subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | -| HTTPS | The URL of a service or web server that can receive notifications (HTTPS POST requests) from Topics and Events, e.g. `https://example.fr` | - HTTPS subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | -| Serverless Functions and Containers | A Scaleway Serverless [Function](/serverless-functions/quickstart/) or [Container](/serverless-containers/quickstart/)
| - It must have a [public](/serverless-functions/concepts/#privacy-policy) privacy policy
- It must be in a [namespace](/serverless-functions/concepts/#namespace) from the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | -| Queues | A Scaleway [queue](#queue)
| - It must be in the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | - -## Topic - -A topic is a communication channel used to send messages and notifications to subscribed endpoints or clients. Publishers send messages to topics, and those messages are received by subscribers. Subscribers can include Serverless Functions, Scaleway queues and HTTP/HTTPS endpoints. As such, topics decouple the publishing and the receiving of messages, allowing for flexibility and scalabilty in building loosely-coupled systems. - -## Topic types - -When creating topics with Scaleway Topics and Events, two topic types are available. [Standard](#standard) topics provide at-least-once delivery, while [FIFO](#fifo) topics offer first-in-first-out delivery, and (unlike Standard topics) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO topic types. Find out more about creating topics with our [dedicated documentation](/messaging/how-to/create-manage-topics/). - -## Topic-based - -Topic-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [content-based](#content-based) systems. In a topic-based system, messages are published to "topics" or named logical channels. See [topic](#topic) for more information. - -## Topic volume - -Topic volume is one of the factors affecting the billing of Scaleway Topics and Events. Topic volume is calculated as the total sum of the sizes of all messages sent from a topic to its subscriptions. - -## Topics and Events - -Scaleway Topics and Events is a product for creating managed messaging topics based on the [SNS](#sns) protocol. Previously, it was part of the Messaging and Queuing product. - -## Visibility timeout - -Visibility timeout is a setting that can be configured for a Scaleway queue. It represents the length of time (in seconds) during which, after a message is received, the queue hides it, so it cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). diff --git a/pages/queues/faq.mdx b/pages/queues/faq.mdx deleted file mode 100644 index 29fdf41f40..0000000000 --- a/pages/queues/faq.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events FAQ - description: Discover Scaleway NATS, Queues, and Topics and Events, and get answers to common questions about the different protocols available, compatibility with various services, and billing. -content: - h1: Messaging and Queuing FAQ -dates: - validation: 2024-12-04 -category: serverless -productIcon: NatsProductIcon ---- - -## What is NATS, Queues, and Topics and Events? - -These are three distinct managed message broker tools offered by Scaleway, based on the NATS, SQS and SNS protocols respectively. Previously, these products were grouped together as 'Messaging and Queuing', but have now become three separate products in their own right. - -## What are NATS, SNS and SQS? - -NATS, SNS and SQS are all messaging protocols used by the Scaleway NATS, Queues, and Topics and Events products. You can find out more about these protocols, and other essential concepts, on our dedicated [concepts page](/messaging/concepts/). - -## Is the Scaleway Queues gateway compatible with my application, framework or tool? - -We currently implement the API endpoints listed [here](/messaging/reference-content/sqs-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including KEDA and Symfony. Note that you need to specify both Regions and URL to ensure compatibility. - -## Does Scaleway Topics and Events support all SNS features? - -The following subscriber types are supported: -- HTTP/S clients -- Serverless Functions and Containers -- Scaleway Queues queues - -For more details on supported and unsupported Topics and Events features, see our [dedicated page](/messaging/reference-content/sns-support/). - -## Can I configure Scaleway NATS via Terraform/OpenTofu? - -Yes, check out our [tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) on how to configure Scaleway NATS with the Terraform/OpenTofu [NATS Jetstream provider](https://registry.terraform.io/providers/nats-io/jetstream/latest/docs). - -## How are NATS, Queues, and Topics and Events billed? - -Billing is based on: - -- For NATS: [Stream volume](/messaging/concepts/#stream-volume) (the total sum of each message's size going through the stream) and [stream persistence](/messaging/concepts/#stream-persistence) (the total amount of data stored * duration) -- For Queues: [Queue volume](/messaging/concepts/#queue-volume) (the total sum of each message's size going through the queue) -- For Topics and Events : [Topic Volume](/messaging/concepts/#queue-volume)(the total sum of each message's size going out from the topic to the subscriptions) - -For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/queues/how-to/assets/scaleway-queues-create-queue.webp b/pages/queues/how-to/assets/scaleway-queues-create-queue.webp deleted file mode 100644 index e53fbcfa94aaa1eaebb618eda22e89df886cede4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26120 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 E1AJBtW&i*H diff --git a/pages/queues/how-to/assets/scaleway-queues-gen-creds.webp b/pages/queues/how-to/assets/scaleway-queues-gen-creds.webp deleted file mode 100644 index dc53bbb7def4f670571f500a9195ca45094380bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38432 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 Lv8ZtWF;f5ljjB+A diff --git a/pages/queues/how-to/assets/scaleway-queues-queue-settings.webp b/pages/queues/how-to/assets/scaleway-queues-queue-settings.webp deleted file mode 100644 index 15810df3505f644171d01de6846a0b0fae743842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21672 zcmZ6x18^o$*Dd_Snb>wFwr$(CZ9AE8V%xTDPHfwr*uI(f{qFtm{kyBWo_e~v&f06Q zvrqRvOHo2pG*=k_P!kc9SCwa%PW=8&hb&wLP>K1~Y*SeLu5r~vjDU!oOO_UmQDNit z6R4Sl|FE}MW0NT{)q2F>fl>qPXc z=S(qO-ObJINoQm8|2aN*j(Mn@t~}r~2R_4cp+dq&Zli1m5!$Q>r}9AD6f68GakdDJ zM=W{?N!&t#AqkBeWGDi#*cmdu&%)}{KkSJ+EUh9-{vC-sHtv|oTX6P7M1rQYn6RzP z{DT`XU&RM-VDh~o#u><*gF$FEKg=O9nQRFOVc+XAXNb=IXK)2A3E~Io@ zRvNcF;B^r!@;ji%`muePNX#pTiTaUtlaIaZ1QY!~M1_?21sQgoVI%4L;S8T}V`E{^ zMC~KI5wI|w!f$p^h>fm?GB6xjxI|KAm_R{)WS*r7=+_cAM3^yZZVgfccVHR(qTfZ4 ztIse_aCeOWH{CVjMqtJ8&OihYfa_rI7DAS`Cv8^&Aq&*{WrhhR%b*7l8is7Wm&age zFi499_QSVdT@A4#lT;YtPl5k$3XKS*AV!2KYjkK>SqHS=Oly;P=K8=4q*kt)ks4Ne zj&80$`Y{R;1?a&u2A7~y1WbXj4V-0Ws1dLTf%p9(cB_B$W2Vl_8SV;vqbj&5>u}!* zAQK4OY^l>XfMF%Y8`U08jStvCSqDaB70f)6nCNHhN8U{K52P0s!Cwn zCIrZLg%)NJj&z6A08RRUu;#Y?tS3eKNi^H$=Ktlxr`cT99B&*z5Ckv?(tUZ{N`5(8 zR66~1{CMhJbKP8Owm}63KPWSHt)JgNH>SC#hy!fCe=V<%<~n>!^#42Fa<*Rz7V#@= zgO#!wO(dNGT75*&JMx>av;kaQF|pC8f1~|{MiG>qX>Gvy%hwec1<`UFN1#S79DXNK zGz`*U_GK+?n*10W0j9XoQrM!UNm>V{C1&3MvzOG&K32-aBqF(ls}c?A<$!+oY>Z5% zaKPxxlgzo}b_2zc9HR~x0A7Ft1`uR?a+t0!eG3rwHzFW5uF}$Qy}7Bm-wDX=>%(n_ zHJ+#~I^-#pZ$?2jfQayb?-u_hrf`l@+&K5*0j0|=@fGTbk1{(2R=|O48L5_T{L#?G zu1&n#q`;C&SUEk{XH@p6M%`Ce{BQN75a1x!ygBC+D7M*`-bW`#yGAx&fhJuK(m54m z@Kifyx(>+@(57qivq3Yq6z5%8%H_|&szc`MJ!1E$lBO4wcPOojN>v!5^d@~}#kk^P z^towYJf2|;iIdXS0GnH(IhGwr6i`)wyJWEg`tKG{(ubX_e(2PM2H!dt_gO z7V!|R+Z!9_Rd?6@)z@J?kxjk=;9oi4#$b*{ zUDQ5=<CS)!~e9)?%c0DG62^rQ{$n5QF>t1EXzEgoyU%g_T7m#e14%ts;A==_xmDqgU9Z* zsu81y$6&|3K*^O%Clj5%yhmi5cW#2<=bttx#)ljzHpICgadI)Ur%o+2am`AR+%5DD zs)z9rP{`qKoI(V6KBmUdh zUGv_=D%iLjV*C1vR;3Su-MLqK&*wGG=QQnh^TR>c^Uk1tc>{sF^ik)ER|Dy2vLR~V zlwjG-bfc{UsadeLB+dL|j2L^vPHQ{i^SVJyMksSw=E2GO2jl68!A2+Aeb%L@ z`zwvVS$I#wv|H=3N*=;_uYN^LykVf%AT>N$r`M(bfx!dZl{ZY#L8l zK6y~|EFbELeJ(>sK8HG93kWxC(&(l;VXZQYJ6*OS`_jGclri}R1OR>WHn=w(n^lUJ z4#hNpYaqoLv7nfx(MnzX_Al>Z%CFmpi)5jIb}xhSzf*EZ_!b9esZno+su!#tFc*X+)q8uIz_D9s_BFSG&-jc)@CEu zNEz24pKV@58)bEC(~~?WO46W0zA+v6Gum$=Y&4#jU%T^WYnCoEs@Y!LO6fY6{WCcR zsH)S>TM(94s|9L-W}9QNyN@zHEuJAT^P{@fOt}kH8D{5BRv(xc&U7$I_CjNl5LoMs z*A|+9X_l$Yk~-4G>0_8qIHUKQtf&(icy>@EOHfP@|(kn8o2tc@CA4Hq{C z2Kf(fBZ9z7S_XTnB|bknDEBsnvhr;Rz_yQOk*=SR3jqhh$~X=kBlwu;f?WLfcoW#@ zPwNa;P#4XU(eN-><;d5b*n-0Fi%X+0I&l76v@W_u9SqKJPdIU6v6U2n1ICiMOhwdO1o24!W~iD$@GBH@Qti3+7Q zRvn4X>X~!Aj~1ZmA<#@UCiBb_;4OC@g~4LQJ1abG8|bz4kO7Cdri1E9A9xv@=h=?A z-dqw0qKnq#GW$@Ntaj)sQ(-SqeHg}w#R*BkUgP@^r`SqClF(w|^5Z2&P9#O%9LRm} zZ*g_gOt!aSAZ{b{Ej%CiCN%P+0oQp4H7G;lwY{hE#SxDkMY@DLzHr{h zZbtW=%Trze`2*9nQH(1XnqNJG+c%#JHD@c!4ZPn!tywaNNuB2|`T27c_rAdnXwkFI zP)f&zo*)no+Pl$rhZO;))1@L&<$N)t4jzvC>Un*;!5G@Vt5x#h!U*t#5%yJ*m}|{9 z8aH5V*Vw5-SOV*ml0Pb+Qzn)E{S?ykexy3hIVl`a101Df85(yfTa#IOYDJaOLH@Ax zlrOg3Ax3BMB5wJ7?xVi^D*Tl1(#RBB+MaR_(s|b>=ntgBZN$gvp#|o~-*1 zWM0=A`R!$AQp*=6gO!FyEY#FygZ5-wm7U=Reph$l;CW z@mxa^h6ZZdwtT9s8yQ=9=R%jX(36{_@@G<@7#p^=7~_g-Y1!*_aDP+tEh~q#m#ykdW?Qs~O=y z!W3A~68116G9nkZ(FlE);J7c%NBozXX{e^MV6;(&g`)!qAb+A)k3X!TEDb#32Y9FT zaQW<-=ag^ty7u#EZy*_U=nl?*y{m325~YxFYBQQ_&pgdKP6`_52M_B_*3YvDmRIYu z{wNgsNrt)F^B9WYh-aB~G|F9avyONbtm0;U^(A$=munx4A)nl>R%X)zJ47SGG}2)L zXQ4nKAAsVB6m|M4Kt2K+>41jLHQL{7{BQtW_u%S=img=^;sVOFg>wMgLBhR)uPmW+ zW3MsFM!+CdN=jOG(ysIiF2DQ*quUF|QC4EM%`BJ|ae{cdDyR2MvoVz2|E;iyJ7{+3f zR7v~*Y$54|>x;evD&uvGVP8JC!=<=1)?$XI9X-yhACg~QcK7$DSogeS7F~=Ecz_Pm z;2jwhf}c;(H4Ks|@~rp#FrNenNsfi}6-fzvDRy}EqLUV}_+8P_yvixQPl~~*RP$J1 zeUs&aCv@avOyf9p?JV<7RI_7hO1h{Cj!Fi8bjO0Molx2r=j=42jY+3|K%|{|83yLf z>5>PYJFg%=Ch(L!L{r0#CW~cqBeM)#R!^SwdVqn3U9Gy4~HIWk(0_|7f2 zYrYxYNxuXQZT$oM^Dl~wraMW8H1H`I4?cbdQo3Q7&e?o3Dax^Zmjb#G`7?PmtuOz* zs>-g00os6UxUy3Y+8eN`TlN}^y!m6CW9KJ1Z|1DxykNs4d6($L_$>7pnia*bivU&k z@i`on4d-GeZE}kaX|K3mBD1)XP-XdoTTSKp1}$&qpELL}r$N25C63zi^&Jt|FTkls z@wFx{erpp8!2aVjUXQM!;enUXQw#&Dh&$@@-)|=Kj*s$!{M&jL!rqQUQkYd z&)bV(9^=ELyboqwSEzOs?m&63_Qesl?vfHyNm!wt;|$nS-b zX=wtBfk&M25p@*SMF7mIE*a-=(yFRL`aSbqZ3-o)e^)Qrwqo8Q;k0`8I~H-~-u1d+ z6@|$%r+%9256)GV^z>qFM=NTRZm}d}HSa%(GLTYT0SXaSkh-7_*iR1gugsJ7=$0B3 zqwY@kMW*9KMHrkSE5TZmk0jY#cn0!5?3<6H!OY1hDKn#vD@ zQz^Hch+V-Krp!jc9tqM>$xZRM6Ke0nWJ94-HKF~4e5YVlEG*gmk>{oJ&aZ#dx0A|Y zQ3T%_A}h?~s&Ha5GMB0J1t?{hFez%4?mJKt2@f-r-l8ZY%T#Ax6mbjrGRI*X20H$D ze7Xn!xiGFp@#lpmU3&9kB=n@m{UXRyMojFFJzCQPRLM&lI!p2cLPWN3j9~9c!L)B4=2#omOz1V4 zQA$%B5s#VHo0+yxsGZ-mhUHPTcdbId4>)2*)A9yM$xxCM3Ab^_W>Sb7*0F-wGOv#b z2kpFkeG#4(18L|I*Zb+bj`BTatQx!@r%;*Hj(C_NXTP#qckO2cCJ9ae1Ml-WNTRI~NvtqaBFqENTzDioJzKE_nG z9FMTHy`gKUwAc4?cLJMQ;M|trYwfx0=C{VSmxR9yseMLq1{z>!LBsiegX^cFcRuBQ zPVZ1%Z&LpDLeug=7C6MuTlN;;=Z)ca1ZXHz9#YIs6sBQ+uaLrh9Lw@KdP%w@F`Uu< z3y>pom2^C$Jy$ffStn@E0gF{va3VaW1;0^XFcybl zo66~s%Fj9J|1O3~v;*hqMP{y-uw~}M!RVH2ysd8|AH0^dB9yl<7j?zUx)ddodPljA zf1W46*zI};fAzfU_5uZb-Szke3>UpXFgQnnKIMT`J(_M+9GS7v@venhWOO+5O(qYV zuMW2u{9WzDc4HA!gpM@({3uy}d#n+Af0zaVB)gK;^n8|dzg;S1bJ1`ED6`qj(vI*Z z*B47_Ep40C&S}6^-HJ0z5v=(B7?DoFwH;$@%hr*dKSs3q2g2Y{(7aU|DFkcL1cLk$ z%Sf*ou9XPrn0zwaD!*xDK=8KT@4^K>ys2`0&1)-s*YRyT9;#d%=G_95(anU&yv&TD0Pq zt2<=kW-pQ3>e^9AP+rV-bK*NJAc1Q|4@ywJ_lh6YEyw8Gy^g-+8lNAZ5U32#>Su)j ze^lY^zi(m_?GkZfa?kv^Mo`o4aQyONJjO5DWy6zH)W(iV?VADC%hRH#KhNL{e<3E` zM{=QpJM8DVzWw>}Vbb%S^ZxnPQ*1YlsZEFnU)aUxz@m!b6)1co;L?HZMIKFv+p*qm;HyO?FoP|}^1L~6 zo!s6lOrz=^6<2r4tI`l?e8BB zf&&5q3Ld8n5@5sc(O!uuX;0+<%XNT9-LAiulOPo;;?4GsvEb)JK)zgC5oC}F-cKh* z^Zn)sUaCuY&}(TvZy(ok7Rx-7kDlY$Qi<%s!{)@V>%^xtr+70=u?F?3tQ7nq_ZF^6 znoIQ@dwSKYuH6c|4KJ?ZK&p^5jFn3`XtB869i^(Ym>y8wa-; z7T;orDmE|yi#eAZ2N;i!yVNq28lvU<7gkq=NZ$hkk0W<>|7|}E5rX$mjWvlhl7RW$ z#G^i?WN5|BuD2w@!ax*$c_)N?IEeR87WdYloc1UYuL`*d(zJb|l+Bh)XW9tJ^_M zDTgXX9+rXYkLF0Q?iRGVw0MNm#StM3?(c~vQcSj#xD4+=N(RZs8dT1J<3nONG|Y9F zcoptIe&czLZ8oU^O&RYpJ~KY8P1$-X7PC?x!r7Cx2UZkc&ou2n=Sn}py2P(S9 z0KSIBe}QzacQx+5=*NK3FoGE~vgK?Gu=!UBsUwgB& za5(w`f@6-gY^$e&F_uXz8o$GMuv0c9F!)V2jZ=!OcV?id$m80V>1!l{3LfM0G5i|a z)=0rdEvLFTwv9(!mDFd*%Mm^za2<{Oc-9RFXZTU^t5c;%Z7kJp3|h18?|7=RGS_?% zT+5#ZQD{9wMwqzbfQF=dN=3`f#^(DS$D{r-wdo3&!58v3=FScog!H#_YTdn>>Cf1c zoafIsGf&qR&|RyV>@SBGEgG3;tc&CivHyH={p)k_OnyQf%#tI6|DTo@@s|s4a8`Jp zM1~K4hGxo`XO+8j#eSo?b4iGO8s1FklIMkxv2rp*O9P6OX@paAFR!MwC0=B%7XtI) zWHOCV?}=?=nV;kdx)0zOdZSIGF#I(O*sakL`FY;cHjleC&qQ0?&muzH%{KCDs~tpx z_Cvi)9dBcX0gq=9Q;WM?;icP&HH#lj$_#lt5W9UyCy|2I>%sIQ7f+L$GthS{^=K{N zH%)q-QX$66bDNXIVISjf>`5gNg6$rnM==M8+eJ!_Y-#~WYSH$_T&7E+-gxwK z?c`axfBwZ;K*Ymd$WPz2YiQvLVQ ziN%Z=-4sMci&=((LA{0dM-ukfDH(RUK~6Q|s}lTB`RY?aw1|`zmG;RC^9C26cFi%; zWtq(ln3Y_utFV}D#}@S9U+Kj&8_*ns$((I&9&d<5x0ETZtE8~!TkSwFH?bBIiTg(? zMSi@59)if7)fZ&W&3tSe?3?yy$7{Ip~a&mDV;zCsRxys{NS27Ig{ zfW~cYJJbU6e;)^{GpUmIxGVdJkb?KccoZBIpLw=dFIj)W3{*Y#57R)hXUgF?yr$oKSDn{oXKk3}&V zVC(W3CY}S3mR70p&u6S1MJxB(Crpx8+f?2U#y+4+em0o~d8~Qnjza01Egn)V&<#1v z**BqW_mMvhGEkk<^8Fr;^w!two%5_WWujY)N=s*>=zwL7yEo^g9fNts4_aI0)ME`- zORd;V=1FdkF>RN~UqoerjB!;Ku0!O1XarD~+mOaTL-6ZU_1JCeiyNKCL z$4;HfRIhua4E=cFhzjdSMY=~p7h8@mhyRrKbC=*Pwn%8k)f8Fv1#qWH{voG|=ORbH z(5UvS-$+R>Lzj~0en>mGCD&T4Y_gv0!={#%;}L)#jTvJta^O3)^{per3Sp`D*NPVa zi1bdcMtbzY=6k-ynLVkB*-&SCCu5jpni%G;Q^k|%4i3`&2)lu&&reI>{7QjSBc2#^e1Z6#*5+OSn8)ZCv?QLjrv0cyWGU1G3xCB z>3`)m5SyW(l6L4ZV?SXe@h>kXa8>`!%gSavm|lJe{$XTxd}7XwQ6Am7c$}w$EGl=A zfo{=##od^<58kp}kj~I5Epyx8q@#KG6anRmWg?i^icFGkFUMMM$Pcwp23>ilFBpwc zHzj8jK<;0R8zZfU6vqGwR>>?uojkL#>ZPQ;+;MZ?se;M#ACJ5RgSy6UC*~{<0%^1U zobz{XudXEyMnP!jg?r!A0bTkWPAYA2gpsP1P!bfq60ESNyPSSn3rGiYu=_a$eR^%1>I-4BooJPgVf{q2Qo&oLycYGw%$hP!nq4ZD%s3mg(G ziNAM#B!q}X;s0g9@Ixr&2mM!TL?ELPZ24GaDnxE7=iCa`0YZliH3PK5y22;-5qMn! zJZX_GLrLT)JQj|L2Ps3vY>E-Ms;49d{nFV+)##Y~8 z=gL_sa?VHgog%EAJhO^s#drL$HR~x z(cYfGLr6cDVW``+39fRUkNUwSw#3?qU>r6$dr9^Jjv8f&GE40B{*)?>A;OL{21T$rq-Nk%YBk%Qww3 zy86924F2GGe@C^mX_XVnraS5%d+3|MlYwZ3>c=CW5$gg4*ua6<8Qas-bV>PvhO^l! z2i?qT!URcT8i@t5MI<5b19%=g(`8Kp&-w%=YLkwOaBOw#UKQN}lRtpW8-J7Ax@1r{ zqa848`s*>I>r*sQ2UkuOMc65FCgw!hbcOj4qj%U{Er|jcuxbAcI)=g-`fx5I? z|3_5iPLR!V)WpvkYx>`=n1vXw>{L&%z|QiynyGU|3RIMaSWjM&L=V*Cgi7)CsU6+R z_V9ZlFADTQ^4&3d?N@Cyi5LlRpt^!^#Pd?P{8r>O`8>1Sbtd9N0$b~ycPh>`v~*OA z6Pqeq7~{0;!C?JPf@HE@ge{Muy90gJj4IxP26B9upxHl-fy~>W)>bh5ivo4#)0B>S z$uFe(yG7s1;hnew_8t6LI|d00RX0d>5GwF1o%Z`vN*m863x`UiS40g+Rc~@+{iuNw z*w!Q&`5uFf2_=FQ$9bt2c8Z-jknI|@hf2_3u|^GDu8lbt(x&bS$TaRj8R;3P!QV&S zH%2v2K1f-`6q~#_nz{K5=hp?Ylnjem7et`?=v{c38vR5?rmu@`!C)3bIz-9?su`F6 ze-;f3-q8?BTpWOGdlu2hjJYShcq?aQ(d0EAo&%G|pg*lEn2OktDphr;nEU*GJIW@g zx;KePa5l6{25@W4qb8tNk3|Wn>ch7;+cdFnb~!Z*#b`k@Cq9MIq9gO*>bYi+vEwrg z7D=Qys{5S5`-;YW3h!>g$ z7r~QB(N7)Yjp7N%vs?0#TU}y-&{^dY}sa>VpXU^YCCQfL%s6bY(#yWb5(5 z`a&l4@0W6KBDo^x##n<_prnDG+lDm zM&q*Uios}Ht`wriyw{IJ*rn@a7Yts@fVG#1cBR?HEa8j&G!rOmTf4?OK2dVPO3DU8 zE6t)Z;+QJRP{Fys%yrgrpBdFm_Xd0dl3kT0wEwMTYNpyxO69m7Y8K5P;Ye)bc@lRL z%?_{8jC4Nrxu%37uctrX^}tN}1#m-Za*8H7BlL{8hfm;9aFdMh@9wabzMK8~?ncreY95)2khiWMo%lzLf}eB6(!b4SI<``K+&JQ9CS1PFY;KFS@5kx~h&f1Q)`&hB-1q-r9Wh%UDwjSH!$8z?TwL z*NPf51NA}t%a%fa35nL)-FPgSm!-MoW%9zaq1jw+1FCHFl+jS8g4yMuPUTQuJUxpv zndX*Gt8B@;Tk*`qCuf_W#_=`kcFldA;a!I<*_12y`(+p>ojJ#N@N>T`;owR*?Q?Sq zo*X&a0b@>J`7k_SL%~FMQ0b(pT5Ohk42tLKS!nJ}SsgAZ{4 z_aE%slW@r6y4x{!EuA6#Gz%FDA@V48a=YB2GF$2upDmAuzu|12)Yz^fQd^;!-%*c_ukGsZ#t^(^A zcfIy2#UWq*{r_*v@4rS1*fah}wcoVpg6o@Bqw~WRo!Y{XHtQQ?Quv=SddR=N=osMI zCN~`$$AduwLTv}Y$*`xkdj>5rg>X&Sq;1p7Fla{22?sIJv32eH5~)IF>t&D{LV?6e ztzO;m$1oP(QBUVYcGXfdLJ{gFZNPZalKPD$4)?d2`2Dtap@S&fnL9vJ?Yn;nmBR8G zG|+1tF~vm9w6k(S4FL#I5J<<{flNf~fI@1Z?=nb4Bwkyf;9xfVs($J%%hAh2(s!8S z&97P_EI0Gak*@KNIwk)8l}_P?J0kLT$Q-#XWz}Wsk7^046@H6?^c7SAuvS|6Qjy9F z{#=dR!SC^6rjJ}cCtLxS1|I^6&r7cnX84(zCi~k)tHWT4!?3KXywyCf4Tj^ht_M}L zXI}k6dD)^caT-S?qakqS2wy>~j|>vtVel%5I@ufBo<}zlIY*!1X^u*br+2DkriKNG zsn%+bxooIpdN&<;`+ZI1CvFW{CxR90y6@*9v?u1kQ5NoKGyJMhiDj81WlWvy++Ldr z^fnlIf;VR}OL;xew5(a2(4;1YD*w*$RIf-y+LkfPIEl7C+h83b+XP$23n##~c#W@^ z13?3*(S50n>KL;oFx5{{O6-%nVl1jm8^>!{=6?uG{6OI<(oo#tBb<3YkEbr>KA9^Y zmK2yQ0!$NUurhFgT;mu;YWHd$xgQQLk-Hvfxp1EV#JW%oSs*<^8fqH~j+U zV^Xo-DMZD5S;QoP6Qfdq+BQqgZs z+6ANm<;KX6IZC2(a*J_o03ewcz0pKh;S*$js?sz0v+5kfi|tMu@?z8aRz=(WyA{e&SP?(gI+p~qaeHk1D;g09_dT!#JzG0EE`)Sdz<6uS1tL`6~vDAcOQ|md}+!$zr9}w$*s`z z9bvsVw9UFDNkja_UciY9fF_?o73Ojqz&V~`r-;3>z;l^4{=_76w=^cGfA7qhEDkdM zgBpVHH zfyv}(q8z*pE%7s+b$BKI&Ww{&ulljvK^aKn?5^FapJ~UiiRY0xZjhY z;&AhkaF-egLe*pgg>P!xO;DTaVY;($)ZB}pr@CZ$BK`3SG(eV9lzKK`3&~z%QVsOZ z>ZH;8ah2L(Ajb0tg?B>jz4kT95D%JNiL^=2Y6*nbOlOtx7T*QKg^u}Qz^6&Z>ER0r z&(81@V<7PN>o0FYhVZwHL(x*D{`)qfUInF;EVK3aEd^|KRIL$e@6YaNv#CAs#=7dZ z^O`J%d@JX9%&_#)f+@`_CD%yMvnP?t_PsNgNzrcpy@ZVO$A#H))7iei;hvu+eE0OY zCfnXx^YEz)(mIZ>wmxf$Z-`sGVsKiFhwIHg;XMf$pXIAU=%;9C-wq$=CKfzu88Fd5 z<+@$33Ye1xZ*r?D3l(l&*@U~xMzV9u<;5Cqe=H%Z-XW7Z*D*1Gw4ca2bU(ithDWhxY(;)8zx&9{kVJM z+?7Jp9`EZsG;_O!P!mM(#T4;q_l?zim3NW_j-*jcPO%10(w8p9WxTpcq0}~&9?|l% znn!ESPdE}n(hZKp1#_MndFWbhXp@ITM#`+t{|JaXMuH(+}SPf$|!t_iIE#`b(m z9@3cz_56CD2bgC(HwgPgnTmC8a`VGX6*HK&C|nDF1Z)!=ABRxUjMtsLBK`7);Ma<* zKF|`kcJ9d5W;*)L=z)n@RMTi$NCi&+bStea%9bg#vl>@$CNZ~mbtQBNywXhvr~>p1D1TkhTFf2w4l57>#}Qg# zW(fHPSGwNW#;GNuBY*#~93arPZhB=MAlZhpW$6Yjp<4G}2l2WI=%FyWzsjlT+n3s( zVed5v((s^4%bJ#KADr!!ac``5LvS9xtrMr-eL$^a@hY}Umm9d2)jf}wo!@36L_dOx zstD)`u7CnV;F_#m<+hkSrVxLYA;93`7{6va3`}x8u*WQwylK+;q`b*n4hUwwu6cTs zoHmF*Oq?qg-$oWzipcD7`T3Waifg@anK~Er^L$a)W&g=AkfQ+)W$i74GpmU1Qcsx` zTk?EIE;^ym61zqR*Kmrn(hK_=2x7>4K~sjODmL9Q_$_q{%VBxa0)Lw!Sh+A4O0xqT!p=?VI9)SOVH@> zQ^%43e0h@SDf2I@@Bs5~mq~ImEl5F8CBN=Hl(I&aY|ce2ak8Xn$c9+!YqBT5!tk)R z-DFjY@OS8lXO)-(f_1KFouJwu+!3OFQV=5^cB@Q8%nKaYnZ@EF`lhD@Bg`RBtpg4&r4i71f?8V7Id7xBqvr|Dc!EKHm`J39U4Ob3&Z{b)jL+or5jb ztZkA)t+Eh&EU`jQyH~FCHW%x5&0{A>o>;H~#|IcxLA0iRKx~+w86mcz9CpsR^Dbst zjja(_d11a^L~M_=2p9yU0-`;KW38ev$#&r@ z6w5tPuURJvrXz^UqpKKmDVOs6DvD2aJ23Fjn#Rl+8h;5~9M$3F0*A#43TH+pIy*hP zOqmqn?XQS)_8m=$e}voh_zwNkSopWb(i|Tmpe?O6PYL`D2^sArJL!lViyKbhgcsN+ zyACJU_6L!4kXuKitYg{fhvT;9R%t15g|zS8#E@)$KHo(n9qVd#CB6v=K>yMKPC2TWFg0NkiaU6OE2AJC<;W+VE_Nysg2R=#b#D1vV|ebw(RDjuNR< z6+sR;4RU=Q`YZ-Mh!zEncM|0l1YP(WM9+ z4=zDX7KH2%lZq2Oge(Dki@&w6fy z)+xQ8y2XSL?OP%-_&EBZV;}GSR404=XR)mcT;%m_jxf6$-C#?_w{^sxDIqTg%U*d0LKMEoyee-^WA%^nblAH*sg1Ot+BDMB!(e*m5e zMmW|XV^@tu|Nq46$UF;I&;5h@#u=f%v-TtF`8#`{q4gZ4RAm85Q_~(LXUq2aRTSVM z=|Xk!SnMviDAMUH(MmQl4D<_RaD$STGjl;Tv$m^#GzyO#6)9yb1=zJWwi2&h-jKW2 zuN+gPT}_75rUjs~wa#D=tZQngAAG35SaLbMCQcR_1yZWazDT`p6DcIm~#YF$VN z&c|C`E&EYy3Rb-#8rAb#80#Ea*2s6^9=;>KQfwt^?fIe^=cPt8yKq)bOd}5+uOH!3 zs>&u0?byiMTq@;7__mx{{s}rSTGVVIL`?*$w=a3iVVAO`p*j$mYMT?MN!4645FxL; ze7^>FnFIqgbBOh*@}T_4Oo2}!NS^+hIj-?-79u&vfsJ4nhSP*~waGmifg~i0-!|7p z(y7WHCLy=?+1*uRkKZR$*UF16*7ZXGR#ItCp%9WtBO(gG`Hf-<>Yu40Wx7=bO)@-i z(0{x!968Q$EveZ+@AD4A=r>ORN;_=A^Q@wz{cM)CEHth_|DaQq?v4F;sN%ByCGdy& zqmYVvL19sM?U6K`V_K56SgIRXm}GPhSbyd36t^YgC8fo%xeeq{6B6ZULLtr1hcDSS z02wzre8W|J?K-_`g)U<6rjY>#aI~AiPIuFACWc;RZaCG$-LKUw1NR8(hF{px<=IqO zh8ZE-C^Wsz&ZBDnr9U;a0f&L18C<9|AgH-;*G z_SKB?w8Si@Rv~Fb&0+!?USsJ0zJo%<4@>9pc1^ebHxkdkdu~8BslIz)&!??t)9)zP zU5k#2>vJS}K>6{;4nRD~sqm>aa{>I~2!rJmI#hW`cRp+7Dv&`+V=+kGLM0#b-6nfZ zW7Pb2JC{}XK!8Ir3lyeiuZ`zmYMSs{Lok*FN(7j1nxL=e6( zbXOvx~-SP;#>e)s@+^XHL zLn&C1u56{^@C>6^t}bB|%x%M0z9k|X+`06Ja*UILrl&Tqr*r=~Oh%zqwLq{^GFY@} zWj$+LhkWa1D7}huBC#~EFc23b5gkRn4XVtsQo$3GPxd&NWO%g8B-561I#T&vg#)3f zxD&nz_Z7t1VYPx^SBdsDu85OGw@Tjz1AjiI-vxy@i{Qzjolf17xD2w&(y>Yh>0T+~cKfT?*x!8uEYCC`X9w$_ISz^?mY7anYN{fmBy5 z|ASHnRTi!uIt$V(O2p@5GE!-#isGjNC2Rw6onry9s;sr_KV_%isoA$i&r3vbj20f} z8jT7QBqOGbn#U4OA^-tgb)Z=R1@VVsGGHcTw#k4Kbx0GNDj`Kr9qxjkR=YxARs=Oz z6jc`v_XGvltg1MlxTxBSIW*qD`>}W~Gza>*c;a!CSp~(s4Ngjrx z0tFGUzX-Jya)SsYw4@NpeC2b97*l;U_&xGNnC3ZZX^B^YRTX6|VNrgNiuMi`WjN00 z!6AAwNQJDv%Ou3&ztD5ZnahEmJd<5zBb)^9^vlW)!N63@1MznBK5pR96Iy8r53X$QTT1U15ef5l1x|_gdBP^6(i>$1cwYEX~m-RaA^3WrIS2 ztX;AZ+BBs&;N|?NBN}KM$>{A^#4XQ1wu-p!}bG^+9t2Jaj>ifR4OY5mgbj zPPQZ^5T8IYHwF~;VIq95X6##r8S3{f0;{GMVc~)9Cc8NJHvi?^(7q`$JWh6nv=P93 zK|_g}r}EL5zf>N&1fn0Sm~`sQ*c$LpgG6GE66%NF!N0xg2t#-t5@)gL_R=Y$R4?Wt zR5<1-pay*_Fj4lNP@-ms^nb&^gLKB^n@U!Tm2ES=q}i9|9sa+-XeDbqgZa1&QMAR_ z@eH{){ZfgHVP_Z1oa&Jw6J(eJ1Bq$QwhGEuMATgTCxAnL7V)xQsU;Tow2qW09Pv{9 zlyp6{I4f6V$Dhsi9e2?uq1vsg1OJ&8DhQU%6PPA{CN_3PhWtv6Lxy-2as5Lls7aMVcYZ!rrwsgC8Y^1xj!%%+{S}jTZbgU zXGO~eF3Z8QZQ9RsWm1lO^>c6e$7rPXCyWW4hZ%cy7yA<&PI0XA0lX2jj{xfxtNAg+ z5szUTFRG}MT(B!0(lKDWAiXV!JpywU!-1*hO_gkj@F1x;()DY8|8%(sUxC84`lF_< zU#@$n3>nGKAP6#eR^=!8_-Annr%nhNImSa73NdFpbrC(5{I(u-bUTC@DpvZd8%2Eb z{$M_Ki)+BL zU(O$2S2IBU2zbKM#o#Z`G z=e~j9$8+CLuTv2LYc^RkilZR5=IeR#hD#m(WgXOg(aOzL9k;ceSmdZx#8)`I+^;<_J_}v$dy~Rvk<9Gf+RT>d%i0~0s zq84N10P0g7orZ`OxjAuHzX1$?pe7xLX5%E{=s=14i#8laJO()HpMz=PjX9MB!_1`! ztd|REJkFMofIlmIbK8d#_Cq3kl8Fe$gRKuskm}X76~mi&b6v~XSv@T&!fRj?dMTeHcMB-wPAB4bWf+I%mm7R!VvrfBFwyCj?< z+K9@VnzaD03oU+u3mhTK0f(N}Cs{1Sn_++n%_tne;Fr zl|xFcne(#V0_cA=ag|X~cHwq_kyJXRhL9elOF$Hma_CTSC_%azLXZ%N8Cpsh3F)D` zOFp_KBptfDL*kC#=eqa)KkJ;c_Ph6f)_e9j&wyIP3Ptb{mhG(qskS#jw3=MT4bbK{ z@{pSUP2@rlc`H2sa`o>n-LPfysIvJj9ORY5jfxaNW8wihmtP?{gda?Klsz+&2Ot%W zPGa4&4@X?YjX!n6-hRG8;6#2%dfwlqzXP&X!77klu6wUROEt7a3Z~E0FT|pYqD%nA zTa`0!ntqnDAP3CjIW*vjTN`XVI7}s=vssc}6tV%d9_kU9z{nmq+RBCK8YOCg!)n&u zrMD$c>EJ0Q{Ch=9A##q|EHb+ytPoLIDmQup&Q*S3{YO{nD6_?utLV*B9oDRRJa7X}jkTIHi-U8W>UO zB^t^~>dyk}c1$Uky`#WNiP2BOX7V!$(8x}17fc*vw36qNw_nqFe~t)#Gxxglk7+&a zigRq1T~6-8f_&0pV%>FHR7q56&G?rJ4yExjXjnylC)eZ2`LOrNPuMK_a~-u6Bj8uS z=49_X?L9r@kRcJ;DTn@e2wVf^V?La_89_LsfgyZ2sstRuG)p1!4& zwIO*~X_FOIl_LuJ$6dK)@eBW*0oz2LEJDi@>leN!1vF&U`Ae>M`0B6q#|`j=zh1o9 z3hi0`8F?>T?_B!^L7<1>j!4hoZcXiOG4`ZP*PMKQP&b=XwsxDiyyM++8(^)J zW3!RLuSrq>F*=k|wzvRq;~azY)mGwKaJ32u*gvVKfA@~CJg>rKvnV5Bqo0sv#xHIC z;gqYv9a)SQHv?(}#+V3SNwg;9l7dfcM^U?F^05Ut@Au92cciK;Xw45wn?=*Wz@0yu1P)je*DvapxIFh z^_NAwwQaDRB_rUcWB>RQP#ZAz6S&aF@VnBsMM(2&oo+0n_f#R|K4olJ^=B(6zs9x8 z+pL#T72$0l@`<&|5;XRt-d$&z`>H?ZV%VboRAYC{GpGBs3X~z*;*2=my)&fFPve;s zO-bQPZKgzTlE4PGM=5fHz11v1Qos@6n-XS zy+VI^wj+dDANSbI11#7(Kh0#KTMM^U1Y)r^~^Q7s~LV+(D{#8uQGUZSxW|5DJ z)OGw$mb;&k`7+wMadaIeN91K@rR^_|PG+_lzd$`558(G%1-&F>Tq_S34W*(@6;lTU z&g8e$?}a}+;~B`_Jh63lh7L{hxJ;lwJ+;AX=dkJrbzO-U=9#a&1B}>3UiF+2$|)St z3`^B?CJDyOt=!^&MAUV7rP$`;{+uSvlL7kXf}S8qnG!kNa7bN8+&0yK6h{MG9UkWw zM{nR>$7)L@o9(nT9^-zcm_jvRW{~qs?PSUQLG}|^cVR5u;C_P2{gL$CloD=!{91ep zdveu-fYGrd7R^1Uv=#w$Hk4Vhk~VEbveb_EM!fYuf-~hs>l@??HENZ%EBMK*Nvz(^ zW73>1jcLEHE{Sh+--l*tu_Feppw0J63TLW)HcI-yhKzOLZyXnv6RM-bVHt7Lq`%d> zNhW^@mbf}+83%7VQnO@MM*tpS2VCbBJ-fxZylYI>=ec&w?fu)eAVcdFs&l_t8+rFo zk^5a@1(Ond8D)M z?I<)?wivUz9Y?%Vaj_ouTui_Wivsu!N=*!;>fUci{%bEQg^l%_T)xWL?am>mr_To! zNw8cPj=KCKiw6;ccb=-Vfo-gaL0rxD4@~F3DNbGRi!<_Zv&WalMZjaOM5V-B()sUa zqh@8}i0a6>yZHcu>Ub3UhZfpqF22&cTbew1z7#1L-%|J;KCdH0fIyH_KnIP zTo)_$m%-co5Bk%NdTGReqr30G8+Q99H-f=3t(ShSrPsD`XUw2kwS=?R-AhEb-d(j& zFJCAHulEy5!I|V2nQNhpO3w3*ht4`C&d?oXlhZ#N_sjOyCb=^d+$D6b%(adS>y2-3 zD`k+s!L{;e3&rf4t%jGKvp+vj7ff#%50q{z)W<>}w|u%Yxa_U%Mr9fyZar*%@d*;f zgMkR>fg$mz>W|8=xi-|F8@Rb%k$V;B6O1>u-OdTG!jQs+B7!!>za_z-Mb>IGe6N4y?yJ%sA_m1 z&k6TCU%|9t1E-bQkncu9^e59-vpsx(4j=YG>81i6;eueh*oaqBce?-39O$b|=)0Us z#oPOajw##n4$YfY2L`)3x#GLi&TjH$wtlhV8)IQ+xXz#4HjbzY4Disf8nZ9^XZ;=D zPdH!%M5OU;5T-k!nyZD|RVe?%Z#DmAKlmnlbVs7#y<|`svHH7A-J`yZ2dtp;r z+FGj;6v#;j_J$PF_WGpVwL+c(K~ABpxKGBy^p;EM`<*V)wG~r7l1b}dQR29KclKPa zkJ1NILp9XQ^YuGf9=>=ZhYtPs;|_fBhXomdXG?a)<`3iPr(ydODa>;wVnj!~E<6}; z=S?#_`8KTF0NylB`nbvJd&y;`m^K0gA_TTq?MYycd4XJ^&K4ooeQ7pAS0{_3Vygo5 z%8L~&mJ&lGwufy5H*W5vJUFfeup@CiKf~aMw=U zz}>?)6*Z(~RdurPR4?iqw23g?S$Td5^+bue-A@<6)cz-Tx;}o*+6`i&$R$mY#YJ z6|9#0`0@3u*MLQVJ&anJa|( zg<_vH(y+i!ynkCGKGw(u^otT1vXDVWa8s&@>a(Jxwklt7;Na7DzXAmG|AVU9+Qk+d zaUBxIR<7<{yjD)BHCej5vb@0&+k9T9Sy%L?#eUyX>E@DfWml6ul@~y`iN-UnIqNXk za=sx5c?{{DA0Oj*f@^PYuMbL$HjkqsTOu2ptzpj=N_`+!vE8wD{U5V2NB%0LElRwd z{9eWPwSNfn>X8CS(r-!A#AMT!LIm}CAFHer)}eZ!Nq@iuBjM&+M`jDEfQt7xK=K{+*|qmyA#)1rKCCr0YA@QrS5=8B=+4b;DmB1I&^1n@h+Dcfn|g zZ`{Rc<1_zb>Hdo$w}@1_jS;2tUc{8#Tu+JK%Ixwu^{HL+l696-yJ|U+F>jFW$$%;q zu;4vhm-a`--b*J$T1l4nRX zL2|XcP9Uvmi*f%j#re8AN?5BAWPNTR^ES{iVI%yDPn>*)d>W2Gi{JTDmTqYNYN9B{ zH>01*9x_Eoy46$T<5z%%V4@rsuryB!f>R$X%Kg~wrMQn3ydsBf{p!9?7Z!LusYW5< z9+dY_g03uQa4>{XXcmqP!*d|PiUXoNMB19Gt@xDU4d3QeemB7Kw=(GD;5El_VQbWn zb&A$W&TJi-v%h-uo|?!NK|`hdIKn;w_o(Z` zVeA~eB(XOINXyZcjS#`2nbU_GO!K0?I`&URV?e~)dh38<_nmZz6q%!K8}dUW*16>F z{fAg9M&X}*re_@GqHt+L)+Gp?8&?d})>dEN8)YUD@EDHTGd6HR@Q8>Gwsl+aMa50a z&=t1x>+QwRs+m1P97Lo_wOxKKC0mE{y`_u1g7qP+VcfJ`O|r#udl2G4Vw`!t?|2bZ zP}BB{t6$;K`;2KlRXEsy0^LeOGZv~KYmDD*k;Ys%d}K?h(S5Bi7-Wm|C?yrgi}Rbz zq?V>``iwYfin%j$eDbhqw0->w(#wg30kgx@>LHoB&HA~4&!df@qhbM}oxNhZZ|4C6 zVqDU8T}#|~G3RDvMq%{R)rdbHMtKt)JeKD{@gJP7!ySyq3WU#v?5DLZ?>-R6&BypNE7(b|ajIgU5k3|FwYY-jh0-( zX>*{DMbS!p3yi^6?m3<|)kQ*BxJ!F2PGCaaYKJHJCImRiRW{o93Qi|qcV7v|5v~8^ zN`EpYpd#$^z>6X*GQGTy(-F%%I=h~g{%My1r7pzZjw#aM+Hq-jqURi;a-qbnlhtz1 zz+L@?Xu+49k1)_j)qqCOD0?ABe!vC*Fvsw+OK?qTmNdo}=@uBlTYN1=Njv6Xwr%e? z!upZtlWxIk&Bj}s+lU%36LB^cpZCW%EhaY;C3tyh;@4(RaQ>8*pi~=$TZQ1Ui-&!d z)S<6uiHWB`N^ZjGI_{B87|B2XD|y}At;d~LH!S#&{}g}9r^uGBivR(*oX!wiA%d2T zHFk`T8W6VYbT)H3ectJAbEf?D;;sxw9CDd+D=#QlSTu9{Vg#HK5J%w3{}qzIe6HW3 zH9|Skk3%Yc57)(lv$v~MTH=w}jwp`@pMAGO{Aaht+9aA@tJO((?5Eq)0O=RwF2`qJ zN^1*BH^PGgWnmM^pNKAm4L#D6TKg-%o9$c4yp1iaK|FriMa|2b8Eh8}NMAm*eAGI4 zFp&~$l7}?3x;8(8?2Gb&n4fT9z}5_PVH{?lJB&^fXfZw~-}Rto*+!;@D~4;}+s0k2 zROf+lI%4gH>reAZv0Y8{a2i{2vK6lqRK)Ghw+5-D$;*{=d*qS{s%9{Vn+Y~ diff --git a/pages/queues/how-to/assets/scaleway-queues-update-creds.webp b/pages/queues/how-to/assets/scaleway-queues-update-creds.webp deleted file mode 100644 index 6f32ca5499cc8c979166847b6228c3aaf7ce1d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25684 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
-Wa zMU$$7d*wI6-u0@~_ML#2ubphF7o5?{iug#Rlsu`CeImdPhXiKXZ~e+|jBeGv--Nb7 zJR)9kq_J(|v+9YTxGti3y~@YhQ|*;_7Pr9XnX0AH|$Z2-I(&t^xGD>6GlWJPwtGJs)mZH?c|!qi8i5U zAZL6HLE$&|fVovSg=EV8F0p`2q_ zUB6!uztu+8ob+9>o)5a=w$-at4k=+ZqGlu0UgI1O+O6nAFp+4?qG}Z*H~`_?49}zW z70&6hp*R}6+^Nf>lhn>zPJ>2W{#GPn?qltEFMdUcaH_Y2yzNHL6w+?At~JeMM#mpn z(}{=idY0lIS)Uij{M=q|GGgV`3bXjreyw8>BaN1O6!0%`*iaVqN4Jw+RE_;0bkAA} zP#Z3~Xl6s;@;wsCJMLD_@h6+qyz!Eq(#2R0>_CUan3J`+gZL=0;7TJ!Ph-oRa3NLo z?6zw#s}@c3(Rpu;E82}kb{{|W+T`{`X{{^jjahbw;2k8^O%^j-SJ3;l`jQ72I#oDd zc-kk$J4^Z}8>vpJC%?0q1cYE*R9~~1ch1U20b0`E_!+*fZ#1r8 z^#h|WUma{%HqFA5PmOhIk-Z?!WwkDYN0amlb*-j$26Y)FyBNp(+#Zb<+#XxnqumS^ z1Bl>X;^^LES7Q}SHD#b%9hJjptle^%a{20D-BL3fCCFq@)mi09vlLt*>~Ls|Q>F@z z@-+E;CClfph?=SF9!TKIxe>@=lx!tWy*9c1CC5ZBzsKYr04Vd!M^p0L>Q($fMy#A;plt(B6awbm6^XPjL?O5fXFrHjc-}AE> zcNAD4O|R%{w#!YKx45?&w`-;KqIo>TENjuE>Oh+chY3^S5<+U^g1f;l#!BXl!~qRP z)K7@B<3ow%3kC2l%9$)%P)b;epxG%qWtmds21Z@}=lh?8InL!YuE=+0*$v`WL+uFS zHcECd4i(hi5jOT)9v{`u{GNOfi!94l_6y(&&Y*Vx(>Gqu z?gK_C1WIAxvXU0A(KM>Yk&QAIf`5sh)R_g-ObT?Xt8%QF04~rDhr{UE>hzLDEqs>S z=L#o#^!@1a4dZR=dtEH-@!Elu+NhZ8W~w-3@J3Ya zO3K5U@oo+qjRGEW9?jcGubP2R?5Tvy{O!Kj)(-I{4iO(RDepe;Ksn z3&pEdPJ7RKdQ4{n3#9N004SH+<0WMlQ3E}3tYNMRpBR#yA5Kx<2GM8bRsk{E&z-7Pqr1hG3>&3O_38?DrYE2M(#VQ} zA}#tSoj7`>2FbW!2$wVccBOI25TSh`a(dj1uTEsHxbIkDt;@vGWjhwd;+If^>>6?M z*;=^sxKNu84zA$iY*Z0X2`V;+gS#P!g`6Tzb-~aJDI!h7j;AcDg!B10-MHeDSLhw@ zXhew{T9mRrZP^di1uE78oqDkR1cU?=(C2uPR7(Cl)5E%W!6+n+@_oZ->iQ>^j9z|XKaDVHp!0k&B?WP+xR+^2fd z=X(kGNe1oG$Ss7b=W5L~L{{g%#Ecc-PUWMN4E++UK!U7s%zK0!&|EN%SM!7P)jztrFT$r!! z(^ATj-m+LLGAcj)#;7iB-LTnW#F|0S&)3W4Yjj8xb<7f)jxq1|j!Ul^RtNR9(BSCP zEb1{7?1}}g)A_y&MWi+K1!iYX>%N$H&eqIU`$x-Wu8Isw)O;+@;?5o|$W(y+rd^{$ z!MS;(k?TQ|P~f)foG8=YrX>Owp^T4m#HN~K!hYiJgM5>%RY60cFixWoEg5Kl`a-AS z!e^e}@^G6NUTEl-)G2l<%mHy43tc(!rK6Mz=rY_;diUu4Wk*Qp!e1TS>`Cc6rB~;5 zf8Po>wwv$jb1N-@0o~qp3X-)1)AL~Q2+$$!kz0GLUmdUO_ue{2=T_?|<6=$#w03ig zs6N_R#NX-I{^nfcEf=Ym=WnGsC5q}yn%tH8lf zCYXSM#%szoTv1k{;Nk6R+lGv5zMM?6+3pn7#<<45;3d1cFUFWS_PZLcpK3E+ezzRT zpbRZPh1YJ|Xk%|C63~Tn#I(o;5)2J}?IB$WM{`@0=BqJphA8piM{H``5wK-jrqJx= zy}D5?)fSV8aS}dy>t8${iaA+8^;A!VKhG2TRpNBpEVt;V9<2eg3=>5ab?LwmUbYN& z?`8k%;9#!Mto9TO7x7`W6J|1d7VxHSGwFAc?w6)S%&-<*f%JX9nym1>16_+S2NGS4 z@RyvmByyHVJ|TCS0NK0UaS=j|Z^tPp!(EG#rf{POq!4vc-$V5{%$rW%VdTE>;y@M0 z|C&I4jqIT!Dv)W&NOjsJsbU)0WjjvEh@blVzl+o1pJ?R z=ki8F9Yd;ppSGvbf1f-A5m($84JWV|^dmF~4>sUoptVGjrd(7d=I4;NctVN8RsK9!p2y<=WHLo4v3x@*1&d6x^^Y z0r*(%MxUi3H2-u>+N4R?@w0QC1 zKInBVG3>9SbGW?w!f|rLQO9p?!TkTSCbOZ7v5mzN%>5;%E!WyArgGuHRI#dHb;ltM zI11BH5OQq@XClS&9$uc$XRjQgGn@J0UWF@*{d%$PKzCKAdI>i>9EsDRNskj<_NyE( zO%9$Z6Wb0Z>WQLoNS@S@nvbrv-)tkpw?oZDd-KLd=|asw0+Zao9kRn-qGF2dpXKCy zBzbO%d^ztVH0gT!IuwUJy*qTim0}OW*UC5&m-QxjOSb>)@NIGdef*Bm?aE4qinUn3 zsut#Jv71Z{Huw`A46ej~X?O~cM4`yMV9I4TkS*n1&i-k}Z9oC@tteu)u=uv~nZDh5 zprH_TC1{E-vk7^y8|m~LvM5Uf+mPb9Ik$X;)v)IEFZ0%boM>9Dz8TFK_8%C-LygpQ zgOl0~p{N$#5ta|WG-B0eqin=Ihz{_ z{e_G8W8k#tQkwvsw`-sdQ5!vn8mK=&i2^vN7RMa;hRoIp&CR7b_hOX+&%3(6e4ivl zWCOjY@ZRBzOMiHT3MbGAxnW%rxoZ%BbAANy%)#7K8p3zLp`p+th36AOB=M}(e)Lrh zNnt-#TJ%~tBF(rdDO}9__7f{p%;^|*k6b^i=CXn7cp64Bs?R1voN;vsZG=z3;SoOc zp6!5K@$WkU=yB=#u($_vZ~fiAZ_m|-+G^|>VmC>UL}%9GkX*+dG4zuIDLFFGK^Oxs ztX!&+_Zo~B{1-#&9Dr3})3}TLB_b3f0h+N%wSDloxI)&ZBIhRR8`__io#e?6+p0Ax z3sD7;|4L;=cODIRohyc!(kOUA!VkdSh1!+GXoLS#BjFpms_JRt#0qi`%fQ4jzpb;* z@~wB<^Di6=?eHO!pu;KUUcwINVM)UC3aaFRPly8w@3jBLt40&%R#*3{9k(pvAm)2K z6adtBA^F57<6h{;dMX!FcUvP!*7T)xwvzBL&;~*c#3m(5P7K_m?p)Fo{lWfuXyhw- zdrl*Q#h;`e*K>)KK1K8WVfe*Iy#oq#AzVgG^)jN>0-Fo6rTn)qD^$pp?|M z(2v;~dqcN-g*kr58Wqm{KkEzUtJg28SbVFOf7Xyt;(;B7iz`nLc>M@CWt+|t{L4P# z(vT=BPW{oc_hMwXjsW;}2mk(($OE=^3`3JI@(deNo*%-TD!sxl@lY{HpZ6F&>`1msAIW!(mn)UMLAym!eVaIJ3U9^u;Yn@B)$Vn*oB5A3FE zEdAJaibFV{0h&F;%G0a*ue<=?hoV=?+rbn&#v36wA1_rHag#pKJyg;O!xcT84Sm^R z^LM*cfFaPZZlVYr4@?0>NVZqP@ZoPQ--IOnvLRu~Wcy{5+H3h7Gd$ zr_`;{*rU`8gzjJFeDgzDZl0NR47mvJxOgl|l}ZHV{p=0p7u)-iwOop zPaDDn7%sU+)?S)rE~AQgm){z})d;{Bq46M~V#ZYLZll0EW}lxT21?<+U+(=Gh{;uJ z>{$mqHh*>uCt-qtWUm^aE2uv1E;N*F2Q3=v+Q8VlX-MQ4-cM9eTEp;EQSzcI_>4e- zJ=E2ReMjbJZIW&4A5+ZitOPzmxF#7k7OKMwIF&!RPag0&O8VnCHB1IYhu~) zdeO$s~m(8^?+C-EqMDlnC(q8yZ`KF`Cxipf7IL^D2lQ2Nq# zzhPN-iu?EF3=g2q1Z9+~soAk-Y5W2?YLvtVk4)R@2JUT>xx;z_Axhv`agK3GbLW8; z#21c0YFgSl(xYBn7qncv}qpQDS)9z;<9Ib zrQQW`=X8af5Zp#AyTYGl2cYf3!QfB>wQi-9B|^3b76;kT4E)u~1lPva|$;5$R%Mx0AnL zGZb2Brb?kv-Tu+k`Zw3m7z|>*`ImKKQC(&R_9*=VnIS?1GZ?AkAQ&%dn0hX$$x#iV zEUhu=->;Bv(zu7K(d$>YJuWMoxdE`fbL=0Kb>P{&Z^cOjDRi@rl?#pjQ0+@%w&?;CJ+Pz z)B&iE)*dUYCXZpNR8VXpOVvwN;CIJJ%7_>aoNk!VxqFz_{v70a&<(JrxFH!R^8`7# z;x$u!#1=-!?F7>joUmS|P@D=#NC9&kxq=IO@fCGP)G)Mugo0M>d(iOl7 zrsnVarCPZ_L}^5HTxi+If9>ZBaD_FR0N{E?@fFm!&OS4Y_i<~sL+d~GA%Eqopm;^T#gf@sqNK5;% zLE3^8nlJtXNp47c$GQY7)S(bZqw6UtiDG)l(u4}LE^8Vq=0*RM^-ATWTH-KeJXB+g zRl!Fd(fepvnGH&bT{Ud|J{kBIi#kPo{<2G105dUIsO`RS0O0YjNw(4AoRavG;r>dM zAoO_D5p}@f_(LE=q6)f#g~h#8OGU?kiqDd*+3d8W(+21vBDmdxNI#+*(LN%%kIr*G zkM6Bo{#>ITkZiy8Mey%VERXDcB=}&aq)2Y;*-~=@0eu>nZtW7#xkHfSNAHbKtEPuo z)?%&=yDzvH5er7hlI7*BeQ#>l5VeGkD;*B-I67-$LfE|NC(pI2TU9#4@3q3h}5fm)5KoOmXTo1mk+0MlIClVmtVToc(}4 zjinpz@)O18O;9~&7b%nfybhK~CX`!>_k4uz*828`*;EN!Z|oC@WBj9i^2_j-m8+7- zjj={uw}UYG5^qJn9P15uzuXNGa|8{MdCi*#OAcy4bUO>Vh#d1dTF zI?L=U89tx8xklojs-G5MAVY_v&50hMsL%Z|3Xh4fK)#~xx%*-_ja)6d5O-X_)xPE@ zkaoV!ok7XLEosfn4}BYlBbrS(Z1&0|Ome9DW4#}cw1vG4*!rw8T^{?+r;zGc7Z(K?^Azmw68qZ`=t7P4f*C6LpGU+YUZ zTqh5PWvf*JZy}|txzh=2(=qv2-PP28mly2DTxWbT|L{_*2t+}|Z1e}{)HZ2dz`q>x zVL$xBGoRlJW#l;Im7a8%&IK?GLC>tHuDY#kdZ~xLqMw>yxW0F{42$;T?^P^Dub0E2 z9$G)BTRcoa$z_x)I)DB9E$^GV8AX@b7|gl@pgte)_H`fNdLCa~7Q3$q4*R%Z6i$|Z zOxdT`U?5byqU?Ml%YkM!Nitx%K2p+`?e_b1XAzxMch*Cwk#NssF%CxIK^ivKhaALA>Yd37joR0)?j`uOrIrn#`4p6cs^n#FB zKTO&Ec+`Fy*p3jidm_UyBZHJ9h}7R$R+m8~HtIjVXb|SNxFOjko65;K#^4y)BX;P0 z>}uiy42@XHY!T5SClP22UoqNnInd*T>rSnq#GO&7rPMj zF7GG8c$?bdj*tgY-0tBANwJ?GWHOE(ICDZY1=m&(VjuSyvDE*HtUztZ0zV>@5G^c1 zFH)4u7{`^_S~@BVzZ~>9i8~i08FAH(LuoNf2y<>qTjYk`__Nte6$JQQ; zT^-3P8%d>Zq)NwDbX|;$@#09D}#r_j>Xg(GV5Gfu5z+(WMPzn zz|axY-#I=AKJF-5W-XFqlNu7!jt{6(H0Q)(UQHVOK}V$UcOQEm$w!+7ts_2AoMV8 z8?zQ#6sd6q%Pn#^tBTZ6Q%dFTtpjmy-r|@$1$TpMKup?Se4mYe=4&B&F6T zkxQjI8FIrb6oqA_RvwtL0coi}5gz#P-+<*vMgKt%q{M?FRJy0K-=1!3P%R&$HfDJd zJ1oiopYe8V64$_eGdu$&3?_INAvja9@?Smt?>UE&*bw1C@Y+7rAUsXy6jOUY$Gu~1faW5IWCmW8Ou8!7H1377vM<<+vON}4|Np;`X| z8wC0x^(8u}0H&Yg2)kA!HrPDmj=}hg$@#V<>De%S&j;xvVCa7WKp_*hxWXHNBBfpq ze3nTML6hwj2$_J(g6)h!5s*WHHpd-up)s`K&K>uniwAT+^B4-P8}xN_Qq+i0L`qSp zFq6cPh?r$Pv zV!@FzMLas&XahCP|AFHQgAv+-b~E@R$QUR*$k6mjL0G#9E{NW{7B( zI07O6j{fdAanD|1QYOO$Lyq^9nr#Z8`T~MO&-*uNo8K3M(4=cf}kFVcGis zBPoHszwME0g4SB&>PZqi(|T_t``Yrs-a2T}rXg<{2gwjeWb*VO=vT{3`$3H^k8?iZ_g8{HSC(r8fo3l--uYGUHK4Z3rIQ&#^k9vqo zr9LZ@&)LN#fD;FyQwd^0b#@(kuqiV2k8@`$qRz9c*Ay*S-SD@ftTgcL#-)4T{peI1vHJrIxZMu>kMkWCl7K!ikhphxV;knZL1 zStZUKAm~4RRA%uMJCIz;} zX(H<^sZ>qtaAP;%)jiv|_x(H89|I_pSu7mulImi=JygZ^oW>t%ywe(UWSr(-Nx1PR98!M1n6eSB)%5zy&K#ppV0FGX(g|1y9!EF>Vx=GtWr{u6I-$0B7iQ%3)` zP=`*g`z_^oWkya}f9p$uIZSyR^=9+=o#_(5t6D7bJJ^~wi%FWtTcp;ok#y{Z{Wkh`ri#73UEEbR1y zTZ_P3raX+1^R+#iFW4Eo-7wrTvu7#K*SrDrb=@!9iv?T}ayYw2?O6u$m;Cr#`U@?!_v-_qBDj=Aj5Ag|I0UlH@u zPBr?bJvV-Af?zRoTqYn~x}c-@h4YJ$BP#OKEL-nXuyp316FT@Zcw-e+q+a`%u==7G zk`JSJPXMNb!Aw6NA64P&t=C$J@C#dyzWxF5h=|d2=LeWR12XL{ERr$yBD(P|2Rz$1 z)i{0#)b!muBB$VO3vncRD(C^Dt8!#~C-k0h4 zK7rZ7Il3smWB#UODr@|@KoaQ~3mE^NlCdb(IqKspde1=N-m zukaOc$3?F3aD`IV-3K-ty_O z@aeTg@Dqf;Vy*dey`fjbbfla{yDdq--TU$GX^e4K{;2UzYL%?g1F@l7ha;|S>hwWe zN6}YPuaO1Y2+m(t>_{XT)%u;Wuu)bx4|v*t7VOV&w0@o(QF17MWX92yokThRg1yKVuUvK-}zpwhmTVX8|CD3^UJ4bUWeE2$Q5 zgH_EIkS@mZ+;tc@1n)G7h5>Q@eF)%5I3i!%3Id$Y0hBNbTaW>rnn!(qBXWm?E}PnN z>Q4bReJC73663;;l4TQM7wA{q>`=WlUQ)Y#`+Ef)qIcxaM6wC-CEDwq)VZ1Fx9)-a z5b^hhw2{=`bb2HW4sCod9cKAJW%{lJ)Ju!t=AStW&gcM3EasHmEX0K6>TbqcE{Ut- zfUsCwlB2Q5RYrM}8JoqcmzxdG?oO~~0*A7}l&$^=m_G%%>u#Yg`(|=-L6rygOxIW( zkIVGu39=?2fI*pTPRps%yX^c0T=XsF8ljKu<6)EwdQw@a55dE zoZtH9w2~P|4$rS1?TbisMk%qM*;wb_POB3&s`%e{(bL?NX!uWFQaU8YZQYkV^~cTC zkl%5+AOg3`ms0mL{bH=MyCqFyP%}J^U(F|}A - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create credentials for a NATS account - -Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. - -3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. - - - -4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. - -5. Enter a name for these credentials, and click **Generate credentials**. - - The credentials are created and a button displays prompting you to download them in a `.creds` file. - - - - - The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. - - -7. Click **Download** and save the file, before closing the window. - - You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. - -## How to create credentials for Queues - -Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -## How to create credentials for Topics and Events - -Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - - - - - diff --git a/pages/queues/how-to/create-manage-queues.mdx b/pages/queues/how-to/create-manage-queues.mdx deleted file mode 100644 index b0c93eeb45..0000000000 --- a/pages/queues/how-to/create-manage-queues.mdx +++ /dev/null @@ -1,102 +0,0 @@ ---- -meta: - title: How to create and manage queues - description: Learn to create and manage Scaleway Queues. This guide helps you efficiently handle messaging queues for seamless operations. -content: - h1: How to create and manage queues - paragraph: Learn to create and manage Scaleway Queues. This guide helps you efficiently handle messaging queues for seamless operations. -tags: messaging queuing queues sqs -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2022-08-11 ---- - -This page shows how to create and manage your Scaleway [Queues](/messaging/concepts/#queue) (formerly part of the **Messaging and Queuing** product). - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create a queue - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create queue**. The Queue creation wizard displays. - - - -3. Select the [region](/messaging/concepts/#region) in which you want to create the queue. - -4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose your **Queue type**, from one of the following: - - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. - - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. - -6. Configure your queue's **parameters**. The following parameters can be defined: - - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). - - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 290 600 seconds (14 days). - - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. - - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. - - **Dead-letter queue**: Designate another queue to [receive undelivered messages](/messaging/concepts/#dead-letter-queue) from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count**: how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. - -7. Click **Create queue** to finish. - -You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. - -Go further by clicking on the queue's name to access its **Settings** page and see additional information such as its ARN (Amazon Resource Name) and configuration parameters. - - -Remember that you need to [create credentials](/messaging/how-to/create-credentials/) in order to access your queues from an API or CLI. Sending messages to queues requires that credentials have the `can_publish` permission, while receiving messages from queues requires the `can_receive` permission. You can create separate credentials if you need to isolate these two roles in your application. - - -## How to modify a queue's configuration - -You can modify the visibility timeout, message retention period and maximum message size of a queue after creation. You can also modify the content based deduplication settings for FIFO queues. However, you cannot change a queue's name or type after creation. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to modify. - -3. Click the queue you wish to modify. The queue's **Settings** page displays: - - - -4. Modify the visibility timeout, message retention period, maximum message size, dead-letter queue settings, and (for FIFO queues) content-based deduplication values as you wish. - -5. Click **Save**. - -## How to purge a queue of messages - -You can use the **Purge** feature to delete all messages from a queue. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to configure. - -3. Either: - - Click the queue you wish to purge. The queue's **Settings** page displays. Click the **Purge** button in the top right corner. - - Click the icon next to the queue you wish to purge, then select **Purge** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete all your queued messages. - -4. Type **PURGE** and click **Purge queue**. - -## How to delete a queue - -When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to configure. - -3. Either: - - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. - - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. - -4. Type **DELETE** and click **Delete queue**. \ No newline at end of file diff --git a/pages/queues/how-to/deactivate-delete-messaging.mdx b/pages/queues/how-to/deactivate-delete-messaging.mdx deleted file mode 100644 index f8ef3f4fbe..0000000000 --- a/pages/queues/how-to/deactivate-delete-messaging.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -meta: - title: How to delete a NATS, Queues, or Topics and Events service - description: Delete Scaleway NATS, Queues, or Topics and Events effectively. Safely remove resources with this straightforward guide. -content: - h1: How to delete a NATS, Queues, or Topics and Events service - paragraph: Delete Scaleway NATS, Queues, or Topics and Events services effectively. Safely remove resources with this straightforward guide. -dates: - validation: 2024-10-17 - posted: 2023-10-03 -tags: delete messaging queuing queueing messaging-and-queuing service disable deactivate nats-account stop -categories: - - serverless ---- - -This page shows how to delete a Scaleway **NATS**, account. - -Note that it is no longer necessary to deactivate services for **Queues** or **Topics and Events**: simply delete the queues, topics, subscriptions or other associated resources for the product directly. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) - -## How to delete a NATS account - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. - -3. Click the NATS account you want to delete. - -4. In the bottom panel, click the **Delete NATS account** button. - - A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. - -5. Type `DELETE` and click **Delete NATS account** to confirm. - - -Repeat the process above for each NATS account you want to delete. Remember to use the region drop-down as appropriate to access the different NATS accounts you hold in different regions. - - - - diff --git a/pages/queues/how-to/get-started.mdx b/pages/queues/how-to/get-started.mdx deleted file mode 100644 index 639996edfa..0000000000 --- a/pages/queues/how-to/get-started.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -meta: - title: How to get started with NATS, Queues, or Topics and Events - description: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events services effortlessly. -content: - h1: How to get started with NATS, Queues, or Topics and Events - paragraph: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events effortlessly. -tags: messaging queuing enable disable nats sqs sns nats-account account create -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2023-10-03 ---- - -This page shows how to get started with Scaleway **NATS**, **Queues** or **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). - -The process differs depending on the [messaging protocol](/messaging/concepts/#messaging-protocol) you want to use: - -- For NATS, you need to **create a NATS account**. -- For **Queues** and **Topics and Events**, you no longer need to activate the protocol, but can proceed directly to [creating queues](/messaging/how-to/create-manage-queues) and/or [topics](/messaging/how-to/create-manage-topics). - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create a NATS account - -To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create a NATS account**. The creation wizard displays. - - - -3. Complete the following steps in the wizard: - - - Choose a **region**, which is the geographical location in which your NATS account will be created. - - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. - - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). - - Click **Create NATS account** to finish. - - You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. - - - You can create more NATS accounts in your pre-selected region if you wish, by clicking on the `+ Create NATS account` button. To create NATS accounts in other regions, repeat the steps above starting from step 2 and selecting the required region. - - - -## How to activate Queues or Topics and Events - -For **Queues** and **Topics and Events**, you no longer need to activate the individual protocols. Proceed directly to [creating queues](/messaging/how-to/create-manage-queues) or [topics](/messaging/how-to/create-manage-topics) directly. \ No newline at end of file diff --git a/pages/queues/how-to/index.mdx b/pages/queues/how-to/index.mdx deleted file mode 100644 index e54fd91319..0000000000 --- a/pages/queues/how-to/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - How Tos - description: NATS, Queues, and Topics and Events How Tos -content: - h1: NATS, Queues, and Topics and Events - How Tos - paragraph: NATS, Queues, and Topics and Events How Tos ---- diff --git a/pages/queues/how-to/manage-credentials.mdx b/pages/queues/how-to/manage-credentials.mdx deleted file mode 100644 index 4ea9a79652..0000000000 --- a/pages/queues/how-to/manage-credentials.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -meta: - title: How to manage credentials for NATS, Queues, or Topics and Events - description: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. -content: - h1: How to manage credentials for NATS, Queues, or Topics and Events - paragraph: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. -dates: - validation: 2024-10-17 - posted: 2022-08-11 -tags: manage credentials messaging queuing permissions update revoke -categories: - - serverless ---- - -Credentials give their bearer (e.g. services and platforms) access to your service. - -This page shows how to manage [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). - -Credentials for **Queues** and **Topics and Events** can be updated to change their permissions, or revoked. **NATS** credentials can only be revoked, not updated. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) - -## How to update Queues or Topics and Events credentials - -1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to update. - -2. Click the **Credentials** tab. - -3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to update. - -4. Click the button next to the credentials you want to update, and select **Update credentials**. A pop-up displays, such as the one below for Queues: - - - -5. Make the required updates to your credentials. You can modify the name, and the permissions. - -6. Click **Update credentials**. - - The credentials are updated and you are returned to the product's **Credentials** listing. - -## How to revoke Queues or Topics and Events credentials - -1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to revoke. - -2. Click the **Credentials** tab. - -3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to revoke. - -4. Click the button next to the credentials you want to revoke and select **Revoke**. - - A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. - -5. Click **Revoke credentials**. - - The credentials are revoked and you are returned to the product's **Credentials** listing. - -## How to revoke NATS credentials - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Select the NATS account you want to revoke credentials for. - -3. In the **Credentials** panel, click the button next to the credentials you want to revoke. - - A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. - -5. Click **Revoke credentials**. - - The credentials are revoked and you are returned to the NATS account's **Overview** page. - - diff --git a/pages/queues/how-to/monitor-mnq-cockpit.mdx b/pages/queues/how-to/monitor-mnq-cockpit.mdx deleted file mode 100644 index c957711a74..0000000000 --- a/pages/queues/how-to/monitor-mnq-cockpit.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -meta: - title: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit - description: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. -content: - h1: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit - paragraph: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. -tags: messaging queuing queueing cockpit metrics observability -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2023-09-07 ---- - -You can view metrics for your NATS, Queues, and Topics and Events services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues/streams and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: - -1. Generate your Grafana credentials -2. Access the product's metrics dashboard - -These steps are described below. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) - -## How to activate your Cockpit - -Scaleway Cockpit is activated by default if you have created [Scaleway resources integrated with Cockpit](/cockpit/reference-content/cockpit-limitations/#product-integration-into-cockpit). - -## How to generate Grafana credentials - -To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). - -## How to access your NATS, Queues, or Topics and Events dashboard and view your metrics - -1. Click **NATS**, **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Click the **protocol** you want to view metrics for, and navigate to the **Metrics** tab. - -3. Click **Open Grafana metrics dashboard**. - -4. Enter your Grafana username and password to log in. - - You are directed to the dashboard for the product in question, where you can view all your metrics. - - diff --git a/pages/queues/index.mdx b/pages/queues/index.mdx deleted file mode 100644 index 89f6a6c8a3..0000000000 --- a/pages/queues/index.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events Documentation - description: Explore Scaleway NATS, Queues, and Topics and Events. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. ---- - - - -## Getting Started - - - - - - - - - -## Tutorials - - - - - - - - - - -## Changelog - - \ No newline at end of file diff --git a/pages/queues/quickstart.mdx b/pages/queues/quickstart.mdx deleted file mode 100644 index 441abf33e0..0000000000 --- a/pages/queues/quickstart.mdx +++ /dev/null @@ -1,298 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Quickstart - description: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. -content: - h1: NATS, Queues, and Topics and Events - Quickstart - paragraph: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. -dates: - validation: 2024-10-18 - posted: 2022-08-29 -tags: messaging queuing queueing quickstart messaging-and-queuing nats sqs sls message-broker queues topics messages streams -categories: - - serverless ---- - -Scaleway NATS, Queues, and Topics and Events are [message broker](/messaging/concepts/#messaging-and-queuing) tools that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. These brokers enable and simplify microservices application development and allows you to build highly scalable, reliable, distributed applications. - -NATS, Queues, and Topics and Events were previously grouped together as the Messaging and Queuing product, and have now become three separate products in their own right. Read on to learn how to get started with your product of choice - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## Quickstart for NATS - -### How to create a NATS account - -To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create a NATS account**. The creation wizard displays. - - - -3. Complete the following steps in the wizard: - - - Choose a **region**, which is the geographical location in which your NATS account will be created. - - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. - - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). - - Click **Create NATS account** to finish. - - You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. - -### How to create NATS credentials - -Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. - -3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. - - - -4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. - -6. Enter a name for these credentials, and click **Generate credentials**. - - The credentials are created and a button displays prompting you to download them in a `.creds` file. - - - - - The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. - - -7. Click **Download** and save the file, before closing the window. - - You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. - -### How to create and manage queues, messages and streams - -All further actions related to publishing, processing and managing messages, subjects, queues and streams can be done via a supported CLI or SDK. See our documentation on [NATS CLI and SDKs](/messaging/reference-content/nats-overview/#further-actions-nats-cli-and-nats-sdk) for more information. You can also check out our tutorial on [creating a serverless architecture for handling large messages](/tutorials/large-messages/) with Scaleway Messaging and Queuing NATS. - -### How to delete a NATS account - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. - -3. Click the NATS account you want to delete. - -4. In the bottom panel, click the **Delete NATS account** button. - - A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. - -5. Type `DELETE` and click **Delete NATS account** to confirm. - - -## Quickstart for Queues - -### How to create credentials for Queues - -Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -### How to create queues - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create queue**. The queue creation wizard displays. - - - -3. Select the [region](/messaging/concepts/#region) in which you want to create the queue. - -4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose your **Queue type**, from one of the following: - - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. - - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. - -6. Configure your queue's **parameters**. The following parameters can be defined: - - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). - - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 209 600 seconds (14 days). - - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. - - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. - - **Dead-letter queue**: Designate another queue to receive undelivered messages from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count** (how many times a message can be received from the source queue before being moved to the dead-letter queue). - -7. Click **Create queue** to finish. - -You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. - -### How to send and receive messages - -All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/messaging/reference-content/sqs-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. - -### How to delete a queue - -When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to configure. - -3. Either: - - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. - - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. - -4. Type **DELETE** and click **Delete queue**. - -## Quickstart for Topics and Events - -### How to create Topics and Events credentials - -Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -### How to create topics - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create topic**. The topic creation wizard displays. - - - -3. Choose a region in which to create your topic. - -4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose a **topic type**. The following topic types are available: - - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. - - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/messaging/concepts/#content-based-deduplication) is only available for FIFO topics. - -6. Click **Create topic** to finish. - -You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. - -### How to create a subscription - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Use the dropdown menu to select the [region](/messaging/concepts/#region) of the topic you want to create a subscription for. - -3. Click the name of the topic you want to create a subscription for. - -4. Click **Create Subscription**. The subscription creation wizard displays. - - -5. Verify the parameters of the topic that you are creating a subscription for (name and type). - -6. Choose a protocol, based on the type of endpoint or client you want to subscribe. Click the tab below for further details and full instructions on each protocol: - - - -
- Select **HTTP** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via standard HTTP protocol. - - Note that for security reasons, we recommend using the HTTPS protocol, rather than HTTP. - - You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. - - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). - -
- -
- Select **HTTPS** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via secure HTTP protocol. - - You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. - - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). -
- -
- Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. - - You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. - - You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. -
- -
- - Choose **Queues** to create a subscription for a Scaleway queue that you have created. - - You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. -
-
- -7. Click **Create subscription** to finish. - - The subscription is created. If you created an HTTP or HTTPS subscription, you will now need to [confirm it](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). - -### How to publish messages - -All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/messaging/reference-content/sns-overview#further-actions)for more information. - -### How to delete a topic - -When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the topic you want to delete. - -3. Either: - - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or - - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. - -4. Type **DELETE** and click **Delete topic**. diff --git a/pages/queues/reference-content/index.mdx b/pages/queues/reference-content/index.mdx deleted file mode 100644 index b74fe93663..0000000000 --- a/pages/queues/reference-content/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Additional content - description: NATS, Queues, and Topics and Events additional content -content: - h1: NATS, Queues, and Topics and Events - Additional content - paragraph: NATS, Queues, and Topics and Events additional content ---- diff --git a/pages/queues/reference-content/limitations.mdx b/pages/queues/reference-content/limitations.mdx deleted file mode 100644 index ed7ab269ea..0000000000 --- a/pages/queues/reference-content/limitations.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events Limitations - description: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events -content: - h1: Limitations - paragraph: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events -tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics max-queues visibility-timeout -dates: - validation: 2024-10-18 - posted: 2023-01-04 -validation_frequency: 8 -categories: - - serverless ---- - -## Usage limits - -For the usage limits that apply when using Scaleway NATS, Queues, and Topics and Events, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues, streams, topics and consumers/subscribers, as well as to message retention duration and storage. - -## VPC - -NATS, Queues, and Topics and Events are not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/queues/reference-content/sqs-overview.mdx b/pages/queues/reference-content/sqs-overview.mdx deleted file mode 100644 index ea66b88507..0000000000 --- a/pages/queues/reference-content/sqs-overview.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -meta: - title: Scaleway Queues Overview - description: Learn about the Scaleway Queues messaging system -content: - h1: Scaleway Queues Overview - paragraph: Learn about the Scaleway Queues messaging system -tags: messaging sqs aws queuing publish-subscribe message-queue -categories: - - serverless -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -## What is Scaleway Queues? - -Scaleway Queues is a managed message queuing service that enables decoupling of components within distributed applications. It allows applications to send, queue, store and receive messages between each other asynchronously. Scaleway Queues leverages the SQS protocol. - -## What is SQS? - -SQS is a managed messaging service developed by AWS and leveraged by Scaleway Queues. - -SQS (Simple Queue Service) became generally available in 2006. It is a highly scalable [queuing](/messaging/concepts#queuing) service that facilitates the decoupling of software systems. Scaleway Queues provides a gateway that enables you to connect your existing applications without having to significantly modify your code baseline. - - - Some SQS features are not yet supported. Refer to our [dedicated documentation page](/messaging/reference-content/sqs-support/) for more information. - - -## Scaleway Queues credentials - -You must [create credentials](/messaging/how-to/create-credentials/) to give your applications permission to connect to the Scaleway Queues service. - -Credentials are scoped to your Scaleway Queues service at [Project](/organizations-and-projects/concepts/#project)-level. You can choose to give each set of credentials the required level of permissions: - - - **Read**: receive messages from queues and topics. - - **Write**: send messages to queues and publish in topics. - - **Manage**: create or edit resources (such as queues and topics). - -## Queues - -You can [create queues](/messaging/how-to/create-manage-queues/) via the Scaleway console. You can choose to create either a Standard or FIFO queue, and tweak parameters such as visibility timeout, message retention period, maximum message size and content based deduplication. - -## Further actions - -All further actions such as sending messages can be done using the AWS CLI or AWS SDKs. Check out our documentation to help you get started with the [AWS CLI](/messaging/api-cli/connect-aws-cli/) or [AWS SDKs](/messaging/api-cli/python-node-sqs/). - -## Queue resources - -The following resources may be helpful: - - - [How to create a serverless scraping architecture, with Scaleway Queues, Serverless Functions and Managed Database](/tutorials/create-serverless-scraping/) - - [Official SQS Documentation](https://docs.aws.amazon.com/sqs/index.html) - - Further information on supported API features: - - [SQS](/messaging/reference-content/sqs-support/) - - [Official AWS CLI Documentation](https://aws.amazon.com/cli/) - - [Official AWS SDK Documentation](https://aws.amazon.com/developer/tools/) \ No newline at end of file diff --git a/pages/queues/reference-content/sqs-support.mdx b/pages/queues/reference-content/sqs-support.mdx deleted file mode 100644 index c7f310df70..0000000000 --- a/pages/queues/reference-content/sqs-support.mdx +++ /dev/null @@ -1,291 +0,0 @@ ---- -meta: - title: Scaleway Queues - Supported Actions - description: Discover which SQS AWS API actions are supported by Scaleway Queues -content: - h1: Scaleway Queues - Supported Actions - paragraph: Discover which SQS AWS API actions are supported by Scaleway Queues -tags: messaging supported actions sqs aws api -categories: - - serverless -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -This page lists all actions described in the AWS SQS documentation, and states whether they are supported by Scaleway Queues. - -- **Y** means the parameter is fully supported -- **N** means the parameter is not supported -- **P** means the parameter is partially supported (see associated comments for more details) - -## CreateQueue - -CreateQueue requires the `CanManage` permission. - -### CreateQueue Request - -| Parameters | Support | Comments | -|:----------------|:---------:|:--------------------------------------------------------------------------------------------------| -| Attribute (map) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | -| QueueName | **Y** | See AWS documentation for naming conventions (FIFO queues are supported) | -| Tag | **N** | | - -### CreateQueue Response - -| Elements | Support | Comments | -|:-----------|:---------:|:-----------| -| QueueUrl | **Y** | | - -## ReceiveMessage - -ReceiveMessage requires the `CanReceive` permission. - -### ReceiveMessage Request - -| Parameters | Support | Comments | -|:------------------------|:---------:|:------------------------------------------------------------------------------------------------------| -| AttributeName.N (array) | **P** | See supported attributes in the [SQS Message Attributes](#sqs-api-support-message-attributes) section | -| MaxNumberOfMessages | **Y** | | -| MessageAttributeName.N | **Y** | | -| QueueUrl | **Y** | | -| ReceiveRequestAttemptId | **N** | | -| VisibilityTimeout | **N** | | -| WaitTimeSeconds | **Y** | | - -### ReceiveMessage Response - -| Elements | Support | Comments | -|:---------------------------------|:---------:|:------------------------------------------------------------------------------------------------------| -| Message.N.Attribute | **P** | See supported attributes in the [SQS Message Attributes](#sqs-api-support-message-attributes) section | -| Message.N.Body | **Y** | | -| Message.N.MD5OfBody | **Y** | | -| Message.N.MD5OfMessageAttributes | **Y** | | -| Message.N.MessageAttribute | **Y** | | -| Message.N.MessageId | **Y** | | -| Message.N.ReceiptHandle | **Y** | | - -## SendMessage - -SendMessage requires the `CanPublish` permission. - -### SendMessage Request - -| Parameters | Support | Comments | -|:-----------------------|:---------:|:-----------| -| DelaySeconds | **N** | | -| MessageAttribute (map) | **Y** | | -| MessageBody | **Y** | | -| MessageDeduplicationId | **Y** | | -| MessageGroupId | **N** | | -| MessageSystemAttribute | **N** | | -| QueueUrl | **Y** | | - -### SendMessage Response - -| Elements | Support | Comments | -|:-----------------------------|:---------:|:-----------| -| MD5OfMessageAttributes | **Y** | | -| MD5OfMessageBody | **Y** | | -| MD5OfMessageSystemAttributes | **N** | | -| MessageId | **Y** | | -| SequenceNumber | **Y** | | - -## SendMessageBatch - -SendMessageBatch requires the `CanPublish` permission. - -### SendMessageBatch Request - -| Parameters | Support | Comments | -|:---------------------------------------|:---------:|:-------------------------------------------------------------------------------------------------------------------------| -| QueueUrl | **Y** | | -| SendMessageBatchRequestEntry.N (array) | **P** | As with the SendMessage action, the DelaySeconds, MessageGroupId and MessageSystemAttribute parameters are not supported | - -### SendMessageBatch Response - -| Elements | Support | Comments | -|:--------------------------------------|:---------:|:-------------------------------------------------------------| -| BatchResultErrorEntry.N (array) | **Y** | | -| SendMessageBatchResultEntry.N (array) | **P** | All fields are supported except MD5OfMessageSystemAttributes | - -## ListQueues - -ListQueues requires the `CanManage` permission. - -### ListQueues Request - -| Parameters | Support | Comments | -|:----------------|:---------:|:-----------| -| MaxResults | **N** | | -| NextToken | **N** | | -| QueueNamePrefix | **Y** | | - -### ListQueues Response - -| Elements | Support | Comments | -|:-------------------|:---------:|:-----------| -| NextToken | **N** | | -| QueueUrl.N (array) | **Y** | | - -## DeleteMessage - -DeleteMessage requires the `CanReceive` permission. - -### DeleteMessage Request - -| Parameters | Support | Comments | -|:--------------|:---------:|:-----------| -| QueueUrl | **Y** | | -| ReceiptHandle | **Y** | | - -## DeleteMessageBatch - -DeleteMessageBatch requires the `CanReceive` permission. - -### DeleteMessageBatch Request - -| Parameters | Support | Comments | -|:-----------------------------------------|:---------:|:-----------| -| DeleteMessageBatchRequestEntry.N (array) | **Y** | | -| QueueUrl | **Y** | | - -### DeleteMessageBatch Response - -| Elements | Support | Comments | -|:----------------------------------------|:---------:|:-----------| -| BatchResultErrorEntry.N (array) | **Y** | | -| DeleteMessageBatchResultEntry.N (array) | **Y** | | - -## DeleteQueue - -DeleteQueue requires the `CanManage` permission. - -### DeleteQueue Request - -| Parameters | Support | Comments | -|:-------------|:---------:|:-----------| -| QueueUrl | **Y** | | - -## GetQueueUrl - -GetQueueUrl requires the `CanPublish, CanReceive or CanManage` permission. - -### GetQueueUrl Request - -| Parameters | Support | Comments | -|:-----------------------|:---------:|:-----------| -| QueueName | **Y** | | -| QueueOwnerAWSAccountId | **Y** | | - -### GetQueueUrl Response - -| Elements | Support | Comments | -|:-----------|:---------:|:-----------| -| QueueUrl | **Y** | | - -## GetQueueAttributes - -GetQueueAttributes requires the `CanPublish`, `CanReceive` or `CanManage` permission. - -### GetQueueAttributes Request - -| Parameters | Support | Comments | -|:------------------------|:---------:|:--------------------------------------------------------------------------------------------------| -| AttributeName.N (array) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | -| QueueUrl | **Y** | | - -### GetQueueAttributes Response - -| Elements | Support | Comments | -|:----------------|:---------:|:--------------------------------------------------------------------------------------------------| -| Attribute (map) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | - -## SetQueueAttributes - -SetQueueAttributes requires the `CanManage` permission. - -### SetQueueAttributes Request - -| Parameters | Support | Comments | -|:----------------|:---------:|:--------------------------------------------------------------------------------------------------| -| Attribute (map) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | -| QueueUrl | **Y** | | - -## ChangeMessageVisibility - -ChangeMessageVisibility requires the `CanReceive` or `CanManage` permission. - -### ChangeMessageVisibility Request - -| Parameters | Support | Comments | -|:------------------|:---------:|:----------------------------------------------------------------| -| QueueUrl | **Y** | | -| ReceiptHandle | **Y** | | -| VisibilityTimeout | **P** | Only '0' and the current queue visibility timeout are supported | - -## ChangeMessageVisibilityBatch - -ChangeMessageVisibilityBatch requires the `CanReceive` or `CanManage` permission. - -### ChangeMessageVisibilityBatch Request - -| Parameters | Support | Comments | -|:--------------------------------------------------|:---------:|:-----------------------------------------------------------------------------------------------------------| -| QueueUrl | **Y** | | -| ChangeMessageVisibilityBatchResultEntry.N (array) | **P** | The same VisibilityTimeout values are supported as for [ChangeMessageVisibility](#changemessagevisibility) | - -## PurgeQueue - -PurgeQueue requires the `CanManage` permission. - -### PurgeQueue Request - -| Parameters | Support | Comments | -|:-------------|:---------:|:-----------| -| QueueUrl | **Y** | | - -### SQS API support - Queue attributes - -The Scaleway Queues API (currently named the SQS API) supports the following queue attributes: - -| Attribute Name | Support | Comments | -|:--------------------------------------|:---------:|:-----------| -| All | **Y** | | -| ApproximateNumberOfMessages | **Y** | | -| ApproximateNumberOfMessagesDelayed | **N** | | -| ApproximateNumberOfMessagesNotVisible | **Y** | When a message has been delivered once, it will be counted here until it is deleted, even if its VisibilityTimeout expires. | -| ContentBasedDeduplication | **Y** | | -| CreatedTimestamp | **Y** | | -| DeduplicationScope | **N** | | -| DelaySeconds | **N** | | -| FifoQueue | **Y** | | -| FifoThroughputLimit | **N** | | -| KmsDataKeyReusePeriodSeconds | **N** | | -| KmsMasterKeyId | **N** | | -| LastModifiedTimestamp | **N** | | -| MaximumMessageSize | **Y** | | -| MessageRetentionPeriod | **Y** | | -| Policy | **N** | | -| QueueArn | **Y** | | -| ReceiveMessageWaitTimeSeconds | **Y** | | -| RedriveAllowPolicy | **N** | | -| RedrivePolicy | **Y** | | -| SqsManagedSseEnabled | **N** | | -| VisibilityTimeout | **Y** | | - -### SQS API support - Message attributes - -The Scaleway Queues API (currently named the SQS API) supports the following queue attributes: - -| Attribute Name | Support | Comments | -|:---------------------------------|:---------:|:-----------| -| All | **Y** | | -| ApproximateFirstReceiveTimestamp | **N** | | -| ApproximateReceiveCount | **Y** | | -| AWSTraceHeader | **N** | | -| MessageDeduplicationId | **Y** | | -| MessageGroupId | **N** | | -| SequenceNumber | **Y** | | -| SenderId | **Y** | | -| SentTimestamp | **Y** | | \ No newline at end of file diff --git a/pages/topics-and-events/api-cli/connect-aws-cli.mdx b/pages/topics-and-events/api-cli/connect-aws-cli.mdx deleted file mode 100644 index 34f61a55d2..0000000000 --- a/pages/topics-and-events/api-cli/connect-aws-cli.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -meta: - title: Connecting Queues or Topics and Events to the AWS-CLI - description: This page explains how to connect Scaleway Queues and/or Topics and Events to the AWS-CLI -content: - h1: Connecting Queues or Topics and Events to the AWS-CLI - paragraph: This page explains how to connect Scaleway Queues and/or Topics and Events to the AWS-CLI -tags: messaging sns sqs aws-cli cli aws sdk python boto -categories: - - messaging -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. With minimal configuration, you can start using the AWS-CLI with Scaleway Queues or Scaleway Topics and Events. This allows you to create, list and manage your queues and topics, send messages and much more, all from your command line. - -This guide shows you how to install the AWS-CLI and configure it to connect to Scaleway Queues or Scaleway Topics and Events. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) for Queues and/or Topics and Events - - - This page assumes you will use the AWS-CLI v1. - - -## How to install the AWS-CLI - -To interact with Scaleway Queues and Scaleway Topics and Events, both `aws-cli` and `awscli-plugin-endpoint` need to be installed. The `awscli-plugin-endpoint` is a useful plugin to help people more easily access third-party providers such as Scaleway. - -Install both `aws-cli` and `awscli-plugin` using `pip`. - -``` -pip3 install awscli -pip3 install awscli-plugin-endpoint -``` - -## How to configure the AWS-CLI - -Now you have installed the AWS-CLI, you need to configure it for use with Scaleway Queues / Topics and Events. - -1. Create a file named `~/.aws/config` by running the following command: - ``` - aws configure set plugins.endpoint awscli_plugin_endpoint - ``` - - - With the most recent versions of awscli (1.29.0 or 2.13.0), the use of a plugin is not necessary. If you are using one of those versions and wish to skip this step, you can do so. Note that this will also affect your configuration file in the next step. - - -2. Open the `~/.aws/config` file you just created in a text editor and edit it as follows (the Queues (SQS) or Topics and Events (SNS) endpoint URLs can be found in the console on the **Settings** page for the relevant product) - ``` - [plugins] - endpoint = awscli_plugin_endpoint - [profile sns] - region = fr-par - sns = - endpoint_url = https://sns.mnq.fr-par.scaleway.com - [profile sqs] - region = fr-par - sqs = - endpoint_url = https://sqs.mnq.fr-par.scaleway.com - ``` - - Optionally, you can also configure additional profiles by adding new blocks under `[sqs]` and `[sns]`. For example, you can add a third profile, `[profile aws]`, to connect to the AWS SQS/SNS service if you want: - - ``` - [plugins] - endpoint = awscli_plugin_endpoint - [profile sns] - region = fr-par - sns = - endpoint_url = https://sns.mnq.fr-par.scaleway.com - [profile sqs] - region = fr-par - sqs = - endpoint_url = https://sqs.mnq.fr-par.scaleway.com - [profile aws] - region=eu-west-3 - output=json - ``` - - - If you are using the AWS-CLI v2, you must include the path to the plugin in your configuration file. Add `cli_legacy_plugin_path = ` to the `[plugins]` section, replacing `` with the corresponding path. - - - - If you are using aws 1.29.0 or 2.13.0 without the plugin, your configuration file should be as follows: - ``` - [profile sns] - region = fr-par - endpoint_url = https://sns.mnq.fr-par.scaleway.com - [profile sqs] - region = fr-par - endpoint_url = https://sqs.mnq.fr-par.scaleway.com - ``` - - - -3. Generate a credentials file using the following command: - ``` - aws configure - ``` -** -4. Open the `~/.aws/credentials` file you just created, and for each product (out of **Queues** and **Topics and Events**) you want to use, add the access key and secret key you saved when you generated your [credentials](/messaging/how-to/create-credentials/): - ``` - [topics_events] - aws_access_key_id= - aws_secret_access_key= - - [queues] - aws_access_key_id= - aws_secret_access_key= - ``` - - If you have other profiles, you can add a block to indicate their credentials too: - ``` - [aws] - aws_access_key_id= - aws_secret_access_key= - ``` - -6. Test that everything is set up correctly with the following command: - ``` - aws queues list-queues - ``` - - Use the `--profile` option if you want to test it using a different profile. - - - Check out our dedicated documentation to find more common commands for getting started with the AWS CLI: - - The [Queues guide](/messaging/api-cli/sqs-sns-aws-cli/#getting-started-with-scaleway-queues) walks you through creating and listing queues, sending messages to queues, and more. - - The [Topics and Events guide](/messaging/api-cli/sqs-sns-aws-cli/#getting-started-with-topics-and-events) shows you how to create and list topics and subscriptions, send messages to topics, and more. - diff --git a/pages/topics-and-events/api-cli/index.mdx b/pages/topics-and-events/api-cli/index.mdx deleted file mode 100644 index aef6e7ef1f..0000000000 --- a/pages/topics-and-events/api-cli/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - API/CLI Documentation - description: NATS, Queues, and Topics and Events API/CLI Documentation -content: - h1: NATS, Queues, and Topics and Events - API/CLI Documentation - paragraph: NATS, Queues, and Topics and Events API/CLI Documentation ---- diff --git a/pages/topics-and-events/api-cli/python-node-sns.mdx b/pages/topics-and-events/api-cli/python-node-sns.mdx deleted file mode 100644 index acd87ce96e..0000000000 --- a/pages/topics-and-events/api-cli/python-node-sns.mdx +++ /dev/null @@ -1,422 +0,0 @@ ---- -meta: - title: Using Go, Python or Node.js with Topics and Events - description: This page explains how to use Go, Python or Node.js with Topics and Events and provides code samples -content: - h1: Using Go, Python or Node.js with Topics and Events - paragraph: This page explains how to use Go, Python or Node.js with Topics and Events and provides code samples -tags: messaging boto3 python nodejs sns go topics-events -categories: - - messaging -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -AWS provides a number of **S**oftware **D**evelopment **K**its (SDKs) which provide language-specific APIs for AWS services, including [SNS](/messaging/concepts/#sns), which is the protocol that Scaleway Topics and Events is based on. - -- AWS provides a dedicated [SDK for Go](https://aws.amazon.com/sdk-for-go/). -- The [AWS SDK for Python](https://aws.amazon.com/sdk-for-python/) is Boto3. -- For Node.js, use the [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/), which can be [installed from NPM](https://github.com/aws/aws-sdk-js-v3#getting-started). - -This page provides code samples to show you how to get started using these SDKs with Scaleway Topics and Events. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) for Topics and Events -- Installed the relevant AWS SDK [for Go](https://aws.amazon.com/sdk-for-go/), [Python](https://aws.amazon.com/sdk-for-python/) and/or [JavaScript](https://aws.amazon.com/sdk-for-javascript/) - -## Go - -### Connect to Topics and Events (Go) - -The following code shows you how to connect to Scaleway Topics and Events: - -```go -import ( - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/sns" -) - -func main() { - awsSession := session.Must(session.NewSession(&aws.Config{ - Region: aws.String("fr-par"), - Endpoint: aws.String("http://sns.mnq.fr-par.scaleway.com"), - Credentials: credentials.NewStaticCredentials(AwsAccessKey, AwsSecretKey, ""), - })) - - awsSns := sns.New(awsSession) - - [...] -} -``` - - - - The `Endpoint` for Scaleway Topics and Events is `https://sns.mnq.fr-par.scaleway.com`. The values for the access and secret keys should be the credentials you [generated](/messaging/how-to/create-credentials/) for Topics and Events. - - - -Once connected, you can use any of the SDK's available functions. Be aware though that some functions are not [supported by Scaleway Topics and Events](/messaging/reference-content/sns-support/), so make sure to check the link for more details on these. See the [official SDK documentation](https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sns) for more information on getting started with the SDK, or keep reading for some code examples. - -### Create topic (Go) - -```go -createTopicResponse, _ := awsSNS.CreateTopic(&sns.CreateTopicInput{ - Name: aws.String("my-test-topic"), -}) -fmt.Println(*createTopicResponse.TopicArn) -``` - -### Publish messages to this topic (Go) - -Be careful: messages sent to topics with no subscriptions are automatically deleted - -```go -for i := 0; i < 10; i++ { - _, _ = awsSNS.Publish(&sns.PublishInput{ - Message: aws.String(fmt.Sprintf("Hello World: %d", i)), - TopicArn: createTopicResponse.TopicArn, - }) -} -``` - -### Create subscriptions to this topic (Go) - -#### Subscribe to a public Scaleway function - -This code triggers the function each time a message is published to the topic. - -You can find the value for `[Function URL]` in the [Scaleway console](https://console.scaleway.com) in the **Endpoints** tab of your function's **Overview** page. - -```go -_, _ = awsSns.Subscribe(&sns.SubscribeInput{ - Endpoint: aws.String(FunctionUrl), - Protocol: aws.String("lambda"), - TopicArn: createTopicResponse.TopicArn, -}) - -#### Subscribe to an HTTP/S endpoint - -```go -_, _ = awsSns.Subscribe(&sns.SubscribeInput{ - Endpoint: aws.String(Url), - Protocol: aws.String("http"), // or https - TopicArn: createTopicResponse.TopicArn, -}) -``` - -The HTTP server should receive an HTTP request with a body in json matching the following format: - -```json -{ -"Type": "SubscriptionConfirmation", -"Token": "", -"MessageId": "", -"TopicArn": "arn:scw:sns:fr-par::MyTopic", -"Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", -"Timestamp": "2022-06-29T10:03:34Z", -"SignatureVersion": "1", -"Signature": "", -"SigningCertURL": "https://messaging.s3.fr-par.scw.cloud/fr-par/sns/sns_certificate_[certSerialNumber].crt", -"SubscribeURL": "" // Get the confirmation link located here -} -``` - -The signing certificate of the message is in the JSON of the `SigningCertURL`. This certificate is also signed by the [trust chain certificate](https://messaging.s3.fr-par.scw.cloud/fr-par/sns/sns-trust-chain.pem) (common name `sns.mnq.srr.scw.cloud`). For more information about verifying the authenticity of the message, refer to the official [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/sns-verify-signature-of-message.html). - -To confirm the subscription, make a request to the `SubscribeURL` using your browser or curl. - -### Delete all subscriptions (Go) - -```go -listSubscriptions, _ := awsSns.ListSubscriptionsByTopic(&sns.ListSubscriptionsByTopicInput{ - TopicArn: createTopicResponse.TopicArn, -}) -for _, sub := range listSubscriptions.Subscriptions { - awsSns.Unsubscribe(&sns.UnsubscribeInput{ - SubscriptionArn: sub.SubscriptionArn, - }) -} -``` - -## Python - -### Connect to Topics and Events (Python) - -The following code shows you how to connect to Topics and Events using Boto3's `resource()`. You could also use `client()`, but we favor `resource()` as it is more pythonesque: - -```python -sns = boto3.resource('sns', - endpoint_url=[], - aws_access_key_id=[], - aws_secret_access_key=[], - region_name='fr-par') -``` - - - The `endpoint_url` for Scaleway Topics and Events (based on SNS) is `https://sns.mnq.fr-par.scaleway.com`. The values for the access and secret keys should be the credentials you [generated](/messaging/how-to/create-credentials/) for Topics and Events. - - -Once connected to, you can use any of the SDK's available functions. However, some functions are not [supported by Scaleway Topics and Events](/messaging/reference-content/sns-support/), so do check the link to make sure. See the [official SDK documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) for more information, or keep reading for some code examples. - -### Create topic (Python) - -```python -# Create a topic. This returns an SNS.Topic instance -topic = sns.create_topic(Name='test') # You can now access identifiers and attributes -print(topic.arn) -print(topic.attributes) -``` - -### Publish messages to this topic (Python) - -Be careful: messages sent to topics with no subscriptions are automatically deleted - -```python -for i in range (0,10): - topic.publish(Message="Hello World: "+str(i)) -``` - -### Create subscriptions to this topic (Python) - -#### Subscribe to a public Scaleway function - -This code triggers the function each time a message is published to the topic. - -You can find the value for `[Function URL]` in the [Scaleway console](https://console.scaleway.com) in the **Endpoints** tab of your function's **Overview** page. - -```python -subscription_functions = topic.subscribe( - Protocol='lambda', - Endpoint=[Function URL], - ReturnSubscriptionArn=True -) -``` - -```python -subscription_functions = topic.subscribe( - Protocol='lambda', - Endpoint=[Function URL], - ReturnSubscriptionArn=True, - Attributes={ - 'RedrivePolicy': '{"deadLetterTargetArn": "[Queue ARN]"}' - } -) -``` - -#### Subscribe to an HTTP/S endpoint - -```python -subscription = topic.subscribe( - Protocol='http', //or https - Endpoint=url, - ReturnSubscriptionArn=True -) -``` - -The HTTP server should receive an HTTP request with a body in json matching the following format: - -```json -{ -"Type": "SubscriptionConfirmation", -"Token": "", -"MessageId": "", -"TopicArn": "arn:scw:sns:fr-par::MyTopic", -"Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", -"Timestamp": "2022-06-29T10:03:34Z", -"SignatureVersion": "1", -"Signature": "", -"SigningCertURL": "http:///SNStest.crt", -"SubscribeURL": "" // Get the confirmation link located here -} -``` - -To confirm the subscription, make a request to the `SubscribeURL` using your browser or curl. - -### Delete all subscriptions (Python) - -```python -for subs in topic.subscriptions.all(): - subs.delete() -``` - -## Node.js - -### Connect to Topics and Events (NodeJS) - -The following code sample shows how to connect to Topics and Events: - -```javascript -import { - CreateTopicCommand, - DeleteTopicCommand, - ListSubscriptionsByTopicCommand, - ListTopicsCommand, - PublishCommand, - SNSClient, - SubscribeCommand, - UnsubscribeCommand, - } from "@aws-sdk/client-sns"; - -var snsClient = new SNSClient({ - credentials : { - accessKeyId : "", - secretAccessKey: "" - }, - region: "par", - endpoint: "https://sns.mnq.fr-par.scaleway.com", - -}) - -``` - - - The `endpoint_url` for Scaleway Topics and Events is `https://sns.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/messaging/how-to/create-credentials/) for Topics and Events. - - -Once connected, you can use any of the SDK's available functions. However, some functions are not [supported by Scaleway Topics and Events](/messaging/reference-content/sns-support), so do check the link to make sure. See the [official SDK documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/) for more information, or keep reading for some code examples. - -### Create topic (NodeJS) - -You can find all available parameters for `createTopic` in the [AWS documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/classes/createtopiccommand.html). - -```javascript -var paramsTopic = { - Name: 'MyTopic' - }; -const commandCreateTopic = new CreateTopicCommand(paramsTopic); -const restCreateTopic = await snsClient.send(commandCreateTopic); -const topicARN= restCreateTopic.TopicArn; -console.log(topicARN); -``` - -### Publish messages to this topic (NodeJS) - -Be careful: messages sent to topics with no subscriptions are automatically deleted. - -This code sample demonstrates how to send a message with `MessageAttributes`. For more information on MessageAttributes, refer to [the official documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/classes/publishcommand.html). - -```javascript -var paramsSend = { - Message: 'MyMessage', - Subject: 'MySubject', - TopicArn: topicARN, - }; -const commandPublishCommand = new PublishCommand(paramsSend); -const restPublishCommand = await snsClient.send(commandPublishCommand); -console.log(restPublishCommand.MessageId); -``` - -### Subscribe to a topic (NodeJS) - -You can find all available parameters for the subscribe operation in the [AWS documentation] (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/classes/subscribecommand.html) - -#### Subscribe to a public Scaleway function - -This code triggers the function each time a message is published to the topic. - -You can find the value for `[Function URL]` in the [Scaleway console](https://console.scaleway.com) in the **Endpoints** tab of your function's **Overview** page. - -```javascript -var params = { - Protocol: 'lambda', - TopicArn: topicARN, - Endpoint: 'YOUR FUNCTION ENDPOINT', - ReturnSubscriptionArn: true - }; -const command = new SubscribeCommand(params); -const rest = await snsClient.send(command); -console.log(rest.SubscriptionArn); -``` - -#### Subscribe to an HTTP/S endpoint - -```javascript -var paramsHttpsSubscription = { - Protocol: 'https', - TopicArn: topicARN, - Endpoint: 'YOUR SERVER ENDPOINT', - ReturnSubscriptionArn: true - }; -const commandHttpsSubscription = new SubscribeCommand(paramsHttpsSubscription); -const restHttpsSubscription = await snsClient.send(commandHttpsSubscription); -console.log(restHttpsSubscription.SubscriptionArn); - -``` -The HTTP server receives an HTTP request with a `json` body matching the following format: - -```json -{ -"Type": "SubscriptionConfirmation", -"Token": "", -"MessageId": "", -"TopicArn": "arn:scw:sns:fr-par::MyTopic", -"Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", -"Timestamp": "2022-06-29T10:03:34Z", -"SignatureVersion": "1", -"Signature": "", -"SigningCertURL": "http:///SNStest.crt", -"SubscribeURL": "" // Get the confirmation link located here -} -``` - -To confirm the subscription, make a request to the `SubscribeURL` using your browser or curl. - -### Delete all subscriptions (NodeJS) - -The following code sample deletes all subscriptions to a topic. - -```javascript -var paramsListSubs = { - TopicArn: topicARN, - }; -const commandListSubs = new ListSubscriptionsByTopicCommand(paramsListSubs); -const restListSubs = await snsClient.send(commandListSubs); -const subscriptionsList = restListSubs.Subscriptions; -subscriptionsList.forEach(async function (element) { -try { - var params = { - SubscriptionArn: element.SubscriptionArn - }; - const command = new UnsubscribeCommand(params) - const rest = await snsClient.send(command) - console.log("Unsubscribing : ",rest.$metadata.httpStatusCode) - -} catch (e) { - throw new Error(e.message) -} -}); - -``` - -### Delete all topics (NodeJS) - -The following code sample deletes all your topics. - -```javascript -// First List Topics -const commandList = new ListTopicsCommand({}); -const restTopicList = await snsClient.send(commandList); -const TopicList = restTopicList.Topics - -// For Each Topic in the list, apply the Delete Topic Command -TopicList.forEach(async function (element) { - try { - var params = { - TopicArn: element.TopicArn - }; - const command = new DeleteTopicCommand(params) - const rest = await snsClient.send(command) - console.log("Deleting : ",rest.$metadata.httpStatusCode) - - } catch (e) { - throw new Error(e.message) - } - }); - -``` diff --git a/pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx b/pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx deleted file mode 100644 index ac152c9f78..0000000000 --- a/pages/topics-and-events/api-cli/sqs-sns-aws-cli.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -meta: - title: Using Scaleway Queues and Scaleway Topics and Events with the AWS-CLI - description: This page explains how to use Scaleway Queues and Scaleway Topics and Events for creating queues and sending and receiving messages with the AWS CLI -content: - h1: Using Scaleway Queues and Scaleway Topics and Events with the AWS-CLI - paragraph: This page explains how to use Scaleway Queues and Scaleway Topics and Events for creating queues and sending and receiving messages with the AWS CLI -tags: messaging sns sqs aws-cli cli aws queues messages subscribe publish -categories: - - messaging -dates: - validation: 2024-10-18 - posted: 2023-04-04 -validation_frequency: 8 ---- - -The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. Once you have [connected Scaleway Queues and/or Topics and Events to the AWS-CLI](/messaging/api-cli/connect-aws-cli/), you can start creating, listing and managing your queues and topics, sending messages and much more, all from your command line. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) for Queues and/or Topics and Events -- [Connected Queues and/or Topics and Events to the AWS-CLI](/messaging/api-cli/connect-aws-cli/) -- [jq](https://stedolan.github.io/jq/download/) installed on your machine - -## Getting started with Scaleway Queues - -1. Use the following command to create a queue: - - ```sh - aws sqs create-queue --queue-name MyQueue | tee my-queue.json - ``` - -2. Use the following command to list existing queues: - - ```sh - aws sqs list-queues - ``` - -3. Use the following command to send messages to a queue: - - ```sh - aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Hello world!" - - aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Second Message." - ``` - -4. Use the following command to receive messages: - - ```sh - aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json - - aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message2.json - ``` - -5. Use the following command to delete messages. This is necessary as once a message has been processed on your consumer side (typically by a worker), it will be re-queued unless it is explicitly deleted. - - ```sh - aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) - - aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message2.json) - ``` - -6. Use the following command to delete the queue itself: - - ```sh - aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) - ``` - -## Getting started with Topics and Events - -1. Use the following command to create a topic: - - ```sh - aws sns create-topic --name MyTopic | tee my-topic.json - ``` - -2. Use the following command to list existing topics: - - ```sh - aws sns list-topics - ``` - -### Preparing and subscribing to an HTTP/HTTPS target for Topics and Events messages - -1. Get the public endpoint of the HTTP server you want to forward your messages to. - -2. Use the following command to configure a subscription to push each new message sent on the topic to the HTTP server: - - ```sh - aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol http --notification-endpoint | tee my-subscription.json - ``` - -3. Find the HTTP request received by the HTTP server. It should have a body in json matching the following format. It contains information necessary to complete the subscription process: - - ```json - { - "Type": "SubscriptionConfirmation", - "Token": "", - "MessageId": "", - "TopicArn": "arn:scw:sns:fr-par::MyTopic", - "Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", - "Timestamp": "2022-06-29T10:03:34Z", - "SignatureVersion": "1", - "Signature": "", - "SigningCertURL": "http:///SNStest.crt", - "SubscribeURL": "" // Get the confirmation link located here - } - ``` - -4. Use the following command to confirm the subscription: - - ```sh - curl "" - ``` - -### Preparing and subscribing to a lambda (Scaleway Serverless Functions) target for Topics and Events messages - -1. Create the function following the steps detailed in the [Scaleway Functions Quickstart](/serverless-functions/quickstart/). - -2. Get the function endpoint from the [Scaleway console](https://console.scaleway.com/functions) under "Functions" -> "[YOUR-FUNCTION-NAMESPACE]" -> "[YOUR-FUNCTION-NAME]" -> "Function Settings" tab -> "Function Endpoint" - - - Only the main generated endpoint of the function will work, not the aliases. The endpoint should match the following format: - - ```sh - https://-.functions.fnc.fr-par.scw.cloud - example: "https://mynamespacexxxxxxxx-myfunction.functions.fnc.fr-par.scw.cloud)" - ``` - - -3. Use the following command to configure a subscription to push each new message sent on this topic to the function: - - ```sh - aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol lambda --notification-endpoint | tee my-subscription.json - - ``` - -## Continuing with Topics and Events - -1. Use the following command to list subscriptions: - - ```sh - aws sns list-subscriptions - ``` - -2. Use the following command to publish a message on the topic: - - ```sh - aws sns publish --topic-arn $(jq -r .TopicArn my-topic.json) --message "Hello world!" --message-deduplication-id $(date +%s) - ``` - -3. Use the following command to read the message received on a **Scaleway Queues** target: - - - - For **HTTP**/**HTTPS** targets, you should have received the message on your server - - For **lambda** targets, your function should have been called with the message as argument - - - ```sh - aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json - ``` - -4. Use the following command to delete the message received on a **Scaleway Queues** target. This is necessary to prevent it from being re-queued: - - ```sh - aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) - ``` - -5. Use the following command to delete the subscription: - - ```sh - aws sns unsubscribe --subscription-arn $(jq -r .SubscriptionArn my-subscription.json) - ``` - -6. Use the following command to delete the Scaleway queue (if you had a Scaleway Queues target): - - ```sh - aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) - ``` - - - For **lambda**, delete the function (if necessary), using the [Scaleway console](https://console.scaleway.com/functions) - - -7. Use the following command to delete the topic: - - ```sh - aws sns delete-topic --topic-arn $(jq -r .TopicArn my-topic.json) - ``` diff --git a/pages/topics-and-events/assets/scaleway-topics-create-subs.webp b/pages/topics-and-events/assets/scaleway-topics-create-subs.webp deleted file mode 100644 index f9aec9f4b7d090f7f17a9f5d99957656471ff9fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24710 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 z zo7WB?J~)I>U&3$eYshl3CB|m;_^O#%44EJ>pO4i0 zSy5Ed(Jf5hl(k*yKzOoZWHmVN`HZBL5>Yn0&s&WS-Ozdj%@*#c+wfMpB+($1H)vVi z8M<$?_R$eiae}O@?Lrs;NpR^=+5Vk~YQJ_lPzcqRK8P1r!Nc62e6l=Fx-auGGxKd! z!lZ%!;J-ix{|Ws6U-0qi|AG(xdtWXU{ML47*@&VW(R5>q?>sUrEa_Ml&?1M|i;}D8 zE~5K?g<-6#vhIKVq}*pf#p)X;K{vDQ@VNO_TKks&G`V)bM_<9U(5fa5;ye$0c1 z0S3KX^U-artpW*s^D|3esjk&kC3&+K$5fbt^%IHn1%a>PsUj$t~|T_zT7>42&N14~wm z?eX9{`up5M!IN@GgdZu_z7Uz~XlRbwd=4ZiAVpPfq0`3abqph|QrBDRg=HB7viZ+V z?D}O-Y84Cr<*v@n_`;TI2`j|ip6iRF(r$gSs@zx_@HY5Q;Qv4H;W<2^k6F%Q2DQ&RGP{3L>#13%GZCM74=q{#~~qG2&OskL6d z;czT!=)LQfk}IV z?T}FoH)CD(0Ru%ii1Yvy%Zj>hJaeTL2+%(Y}m2xgs|Zagd;G28zj0TGoGN&1e&`EA7@YSx8@zP}Xr7 zf<#0pjSiaFvOBUx8&3gK?GOMB5D+s9R=q;n4$&c@I5~6*_JCcg#)ub@7cHYrX7h`^ z#Cxj2sJ9at*@p&#K*-Xb*+inP4IjQLVr--92oP_1Yb}?B^fieU^(JvATn~nlco3~x zQ&IxR5Vb=MNEm^I(E79r^TbBJ@8#1-xu@Fw$ELW-{rajf5bFa`Gm4ht1YJEqNQcqL z;L(<90RPHx0}w*u0kmdqS-EKAsnT+yX;g8KW!JoydDx?)Et@F{o^RYZ>$EgLC5+}r5wMAv0h zMMt>mbJ8w>g<*uN8<(*eQ9fT_}X`jq6G;wlZ!2dSu5;_wF_{3`=ZTm&sj*;n{?dWK}V2>_5)<)Sl6XGx)`O^RPuZJ0Am%`Z}-;Stw+i zOv^Hw!xc1A>Z$T95k3=fXyn;X?p1doY*0RhF8u6r&GU&`+7w|+;^M(DGQPO`#~ysX z3a<9jZ_)KxkdsV*qM?GzJvFpnwCYl;* z_gpur3NWC82S=JF!5lGYW>7R~zAJnzM#G`5;i|M=A?*xSOF=9(wr8QoGfgT$lSYG= zW>uOCa83FS>5GT4aM*ZPJ%Hf5A7i@BwJer&kZcq@hp^u3Dq10vvL-ljRyu3DJiLwf zU+lfpoAKXSEqt_KnfWQa=TGI8h&Ug=_XeMqV=!lSln92&J$I!6ey- ZPfE?oTlHIB9%;Fk{)7MEKltzM4-95iK864Q diff --git a/pages/topics-and-events/assets/scaleway-topics-create-topic.webp b/pages/topics-and-events/assets/scaleway-topics-create-topic.webp deleted file mode 100644 index 7596cd2e1536081066660d43cc2a890f63d9197e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44744 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 diff --git a/pages/topics-and-events/concepts.mdx b/pages/topics-and-events/concepts.mdx deleted file mode 100644 index 4cbee27ce6..0000000000 --- a/pages/topics-and-events/concepts.mdx +++ /dev/null @@ -1,183 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Concepts - description: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. -content: - h1: NATS, Queues, and Topics and Events - Concepts - paragraph: Understand the core concepts of Scaleway NATS, Queues, and Topics and Events. Explore fundamental principles for efficient message handling and service optimization. -categories: - - -tags: messaging queuing concepts nats queues topics events -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -## Content-based - -Content-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [topic-based](#topic-based) systems in terms of the way messages are [filtered](#filtering)/routed. In a content-based messaging system, the subscriber specifies the properties of the messages they want to receive, based on the message's attributes or content. Message delivery is therefore selective, and messages are only delivered to a subscriber if the attributes or content match the constraints they set. - -## Content-based deduplication - -Content-based deduplication is a setting available for [FIFO](#fifo) queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). - -## Credentials - -Credentials give services and platforms access to Scaleway NATS, Queues, and Topics and Events, enabling them to connect to the host system. Credentials are product-specific: for **Queues** and **Topics ad Events**, different levels of permissions can be defined to write, read, or manage queues/topics. NATS credentials give full read-write-manage access. Refer to our [additional content](/messaging/reference-content/) for more information. - -## Dead-letter queue - -A **D**ead-**l**etter **q**ueue (DLQ), or **undelivered-message queue**, receives and holds messages that cannot be delivered to their destination queues. A DLQ must be of the same type (FIFO or Standard), in the same Project and in the same region as the queue(s) it serves. Each DLQ also has an associated parameter: [maximum receive count](#maximum-receive-count). A single queue can serve as dead-letter queue to multiple source queues. - -If you designate a queue as a DLQ and its [storage quota](/organizations-and-projects/additional-content/organization-quotas/#queues) is reached, messages won't be redriven to the DLQ until enough free space is available again. If your DLQ is at its full quota, free up space by receiving and deleting messages from any queue in your Project. - -## Fanout - -Fanout is a type of messaging pattern. A fanout exchange broadcasts messages to all queues/consumers it is aware of. This allows the same published message to be consumed by different consumers, who will process it in different ways. Each message is processed in the order in which it arrives. - -## FIFO - -FIFO stands for **F**irst **I**n **F**irst **O**ut, and represents a type of queue or topic where the exact order of messages is preserved, and duplicate messages are not tolerated. As well as these specificities, FIFO queues and topics support all the same features as the [Standard](#standard) type. Consider using FIFO queues and topics for any use cases where the order of messages is critical, such as e-commerce order management systems, systems where one action should not happen until another has been completed, or first-come-first-served ticketing systems. - -## Filtering - -In a [topic-based](#topic-based) system, where topics handle the logic, filtering is similar to routing. Messages are sent to defined topics, which can be thought of as filters in so far as subscribers can subscribe only to the topics they are interested in. In a [content-based](#content-based) system, filtering is carried out more directly by subscribers, who define filters for messages based on the content/attributes they want to receive. - -## Long Polling - -Long polling is a technology where the client requests information from the server without expecting an immediate response. For [Queues](#queues), this enables clients to wait for the system to get messages that are not immediately available. - -## Message broker - -A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. All communication with producers and consumers uses a [protocol](#messaging-protocol). There are two basic models of communication for message brokers: [publish/subscribe](#publishsubscribe) and [queuing](#queuing). - -## Maximum receive count - -The maximum receive count is a setting that can be configured for a [dead-letter queue](#dead-letter-queue). It defines how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. This value must be between 1 and 1,000. - -## Message retention period - -The message retention period is a setting that can be configured for a queue. It represents the length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). - -## Messaging and Queuing - -Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#nats), [Queues](#queues), and [Topics and Events](#topics-and-events). - -## Messaging protocol - -A messaging protocol defines a structured way for users / platforms / services / applications to exchange data and messages, even if normally they do not "speak the same language". Protocols also describe how messages should be processed, prioritized, managed and routed. Scaleway NATS is based on the [NATS](#nats) protocol, Queues on the [SQS](#sqs) protocol, and Topics and Events on the [SNS](#sns) protocol. - -## NATS - -The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is an open-source messaging system written in Go. It is part of the Cloud Native Computing Foundation (CNCF) and has more than 40 client language implementations. The application has been designed with performance, scalability, and ease of use in mind. - -Check our our [NATS quickstart](/messaging/quickstart/#quickstart-for-nats) to get started with Scaleway NATS, or our [tutorial](/tutorials/large-messages/) on creating a serverless architecture to process large messages with NATS, to get an idea of how to go further. - -## NATS account - -A NATS account sets a scope for any NATS credentials, messages, queues and streams held within it. You can create one or multiple NATS accounts with Scaleway NATS. - -## Protocol - -See [messaging protocol](#messaging-protocol). - -## Publish/Subscribe - -Also known as "pub/sub", the publish/subscribe model provides a pattern or framework for the exchange of messages between publishers and subscribers. It contrasts with the [queuing](#queuing) model. The key feature of publish/subscribe is that messages are not sent to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. The process of selecting which messages to receive is called [filtering](#filtering), which can be [topic-based](#topic-based) or [content-based](#content-based). The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. - -## Queue - -Creating a queue with [Scaleway Queues](#queue) facilitates asynchronous communication between different microservices, applications, and platforms. You can create a queue, configure its delivery and message parameters, and then start sending messages to it. Messages are stored in the queue until they are processed and delivered, and deleted once consumed. [Read more about creating and configuring queues](/messaging/how-to/create-manage-queues/), or check our [tutorial on creating a serverless scraping architecture using a queue](/tutorials/create-serverless-scraping/) to get an idea of what you can do with message queues. - -## Queues - -Scaleway Queues is a product for creating managed messaging queues based on the [SQS](#sqs) protocol. Previously, it was part of the Messaging and Queuing product. - -## Queue types - -When creating queues with Scaleway Queues, two queue types are available. [Standard](#standard) queues provide at-least-once delivery, while [FIFO](#fifo) queues offer first-in-first-out delivery, and (unlike Standard queues) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO queue types. Find out more about creating queues with our [dedicated documentation](/messaging/how-to/create-manage-queues/). - -## Queuing - -The message queuing model provides a pattern or framework for sending messages, which contrasts with the [publish/subscribe](#publishsubscribe) model. Queuing is a form of asynchronous service-to-service communication. Whereas with the publish/subscribe model multiple subscribers can receive each message, with the queuing model, messages have just one destination. Messages are stored in the queue until they are processed and delivered, and they are deleted once consumed. This model is used in serverless and microservices architectures. - -## Queue volume - -Queue volume is one of the factors affecting the billing of Scaleway Queues. Queue volume is calculated as the number of messages in a queue, multiplied by the message size. Or, the sum of the size of all messages in a queue. - -## Region - -NATS, Queues, and Topics and Events are available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS, Queues, and Topics and Events. - -When [creating a NATS account](/messaging/how-to/get-started/#how-to-create-a-nats-account) or creating queues or topics, you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. - -## Routing - -In [topic-based](#topic-based) messaging, topics allow messages to be routed to the correct subscribers. Topics act as labels for each message, and the broker routes messages to subscribers who match the topic. - -## SNS - -The Scaleway **Topics and Events** product is based on the SNS protocol. **S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. - -## SQS - -The Scaleway **Queues** product is based on the SNS protocol. **S**imple **Q**ueue **S**ervice, or SQS, is a distributed message [queuing](#queuing) service that supports programmatic sending of messages via web service applications. - -## Standard - -Standard-type queues and topics represent the default queue/topic type, and offer an at-least-once message delivery system. Unlike [FIFO](#fifo) queues and topics, standard queues provide only best-effort attempts to deliver messages in order. At-least-once delivery means that it is possible under rare circumstances that the same message may be received more than once. - -## Stream - -Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Each message can be delivered to one or more consumers. - -## Stream volume - -Stream volume is one of the factors affecting the billing of Scaleway NATS. Stream volume is calculated as the number of messages in a stream, multiplied by the message size. Or, the sum of the size of all messages in a stream. - -## Stream persistence - -Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. - -## Subscriber - -In [publish/subscribe](#publishsubscribe) systems such as [Topics and Events](#topics-and-events), a subscriber is the entity (e.g. a queue, function, or URL) that messages from topics are pushed to. Subscribers can filter messages based on their topic or content. - -## Subscription - -A subscription is a connection between a client or endpoint, and a topic. By creating a subscription, the subscribed endpoint receives messages and notifications published to the topic. You can [create subscriptions](/messaging/how-to/create-manage-subscriptions/) for HTTP/S endpoints, Scaleway queues, and Scaleway Serverless [Functions](/serverless-functions/quickstart/) and [Containers](/serverless-containers/quickstart/). - -## Subscription protocols and endpoints - -A subscription protocol refers to the communication method used to deliver messages to a subscriber. Different types of subscriber require different protocols. When you create a new subscription to a topic with Scaleway Topics and Events, the following options are available: - -| Protocol | Endpoint / Client | Note | -|-------------------------------------|--------------------------------------------------|-----------------------------------| -| HTTP | The URL of a service or web server that can receive notifications (HTTP POST requests) from Topics and Events, e.g. `http://example.fr` | - For security reasons, we recommend using the HTTPS protocol rather than HTTP.
- HTTP subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | -| HTTPS | The URL of a service or web server that can receive notifications (HTTPS POST requests) from Topics and Events, e.g. `https://example.fr` | - HTTPS subscriptions must be [confirmed](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | -| Serverless Functions and Containers | A Scaleway Serverless [Function](/serverless-functions/quickstart/) or [Container](/serverless-containers/quickstart/)
| - It must have a [public](/serverless-functions/concepts/#privacy-policy) privacy policy
- It must be in a [namespace](/serverless-functions/concepts/#namespace) from the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | -| Queues | A Scaleway [queue](#queue)
| - It must be in the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | - -## Topic - -A topic is a communication channel used to send messages and notifications to subscribed endpoints or clients. Publishers send messages to topics, and those messages are received by subscribers. Subscribers can include Serverless Functions, Scaleway queues and HTTP/HTTPS endpoints. As such, topics decouple the publishing and the receiving of messages, allowing for flexibility and scalabilty in building loosely-coupled systems. - -## Topic types - -When creating topics with Scaleway Topics and Events, two topic types are available. [Standard](#standard) topics provide at-least-once delivery, while [FIFO](#fifo) topics offer first-in-first-out delivery, and (unlike Standard topics) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO topic types. Find out more about creating topics with our [dedicated documentation](/messaging/how-to/create-manage-topics/). - -## Topic-based - -Topic-based messaging systems are a subset of the [publish/subscribe](#publishsubscribe) model, and contrast with [content-based](#content-based) systems. In a topic-based system, messages are published to "topics" or named logical channels. See [topic](#topic) for more information. - -## Topic volume - -Topic volume is one of the factors affecting the billing of Scaleway Topics and Events. Topic volume is calculated as the total sum of the sizes of all messages sent from a topic to its subscriptions. - -## Topics and Events - -Scaleway Topics and Events is a product for creating managed messaging topics based on the [SNS](#sns) protocol. Previously, it was part of the Messaging and Queuing product. - -## Visibility timeout - -Visibility timeout is a setting that can be configured for a Scaleway queue. It represents the length of time (in seconds) during which, after a message is received, the queue hides it, so it cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Read more in our dedicated documentation on [creating queues](/messaging/how-to/create-manage-queues/). diff --git a/pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp b/pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp deleted file mode 100644 index f9aec9f4b7d090f7f17a9f5d99957656471ff9fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24710 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 z zo7WB?J~)I>U&3$eYshl3CB|m;_^O#%44EJ>pO4i0 zSy5Ed(Jf5hl(k*yKzOoZWHmVN`HZBL5>Yn0&s&WS-Ozdj%@*#c+wfMpB+($1H)vVi z8M<$?_R$eiae}O@?Lrs;NpR^=+5Vk~YQJ_lPzcqRK8P1r!Nc62e6l=Fx-auGGxKd! z!lZ%!;J-ix{|Ws6U-0qi|AG(xdtWXU{ML47*@&VW(R5>q?>sUrEa_Ml&?1M|i;}D8 zE~5K?g<-6#vhIKVq}*pf#p)X;K{vDQ@VNO_TKks&G`V)bM_<9U(5fa5;ye$0c1 z0S3KX^U-artpW*s^D|3esjk&kC3&+K$5fbt^%IHn1%a>PsUj$t~|T_zT7>42&N14~wm z?eX9{`up5M!IN@GgdZu_z7Uz~XlRbwd=4ZiAVpPfq0`3abqph|QrBDRg=HB7viZ+V z?D}O-Y84Cr<*v@n_`;TI2`j|ip6iRF(r$gSs@zx_@HY5Q;Qv4H;W<2^k6F%Q2DQ&RGP{3L>#13%GZCM74=q{#~~qG2&OskL6d z;czT!=)LQfk}IV z?T}FoH)CD(0Ru%ii1Yvy%Zj>hJaeTL2+%(Y}m2xgs|Zagd;G28zj0TGoGN&1e&`EA7@YSx8@zP}Xr7 zf<#0pjSiaFvOBUx8&3gK?GOMB5D+s9R=q;n4$&c@I5~6*_JCcg#)ub@7cHYrX7h`^ z#Cxj2sJ9at*@p&#K*-Xb*+inP4IjQLVr--92oP_1Yb}?B^fieU^(JvATn~nlco3~x zQ&IxR5Vb=MNEm^I(E79r^TbBJ@8#1-xu@Fw$ELW-{rajf5bFa`Gm4ht1YJEqNQcqL z;L(<90RPHx0}w*u0kmdqS-EKAsnT+yX;g8KW!JoydDx?)Et@F{o^RYZ>$EgLC5+}r5wMAv0h zMMt>mbJ8w>g<*uN8<(*eQ9fT_}X`jq6G;wlZ!2dSu5;_wF_{3`=ZTm&sj*;n{?dWK}V2>_5)<)Sl6XGx)`O^RPuZJ0Am%`Z}-;Stw+i zOv^Hw!xc1A>Z$T95k3=fXyn;X?p1doY*0RhF8u6r&GU&`+7w|+;^M(DGQPO`#~ysX z3a<9jZ_)KxkdsV*qM?GzJvFpnwCYl;* z_gpur3NWC82S=JF!5lGYW>7R~zAJnzM#G`5;i|M=A?*xSOF=9(wr8QoGfgT$lSYG= zW>uOCa83FS>5GT4aM*ZPJ%Hf5A7i@BwJer&kZcq@hp^u3Dq10vvL-ljRyu3DJiLwf zU+lfpoAKXSEqt_KnfWQa=TGI8h&Ug=_XeMqV=!lSln92&J$I!6ey- ZPfE?oTlHIB9%;Fk{)7MEKltzM4-95iK864Q diff --git a/pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp b/pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp deleted file mode 100644 index 7596cd2e1536081066660d43cc2a890f63d9197e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44744 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 diff --git a/pages/topics-and-events/how-to/create-credentials.mdx b/pages/topics-and-events/how-to/create-credentials.mdx deleted file mode 100644 index 16ee57b0c8..0000000000 --- a/pages/topics-and-events/how-to/create-credentials.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -meta: - title: How to create credentials for NATS, Queues, or Topics and Events - description: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. -content: - h1: How to create credentials for NATS, Queues, or Topics and Events - paragraph: Learn how to create credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing). Securely manage access and ensure seamless integration with this step-by-step guide. -tags: credentials messaging queuing key token -categories: - - serverless -dates: - validation: 2024-10-18 - posted: 2022-08-11 ---- - -This page shows how to create [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). Credentials give their bearer (e.g. services and platforms) access to your service. - -You can create multiple sets of credentials for each of your NATS accounts, and for your Queues and Topics and Events services. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create credentials for a NATS account - -Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. - -3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. - - - -4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. - -5. Enter a name for these credentials, and click **Generate credentials**. - - The credentials are created and a button displays prompting you to download them in a `.creds` file. - - - - - The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. - - -7. Click **Download** and save the file, before closing the window. - - You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. - -## How to create credentials for Queues - -Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -## How to create credentials for Topics and Events - -Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - - - - - diff --git a/pages/topics-and-events/how-to/create-manage-topics.mdx b/pages/topics-and-events/how-to/create-manage-topics.mdx deleted file mode 100644 index be9d69feda..0000000000 --- a/pages/topics-and-events/how-to/create-manage-topics.mdx +++ /dev/null @@ -1,61 +0,0 @@ ---- -meta: - title: How to create and manage Topics and Events topics - description: Discover how to create and manage topics with Scaleway Topics and Events. Enhance your messaging setup with this comprehensive, easy-to-follow guide. -content: - h1: How to create and manage Topics and Events topics - paragraph: Discover how to create and manage topics with Scaleway Topics and Events. Enhance your messaging setup with this comprehensive, easy-to-follow guide. -tags: messaging queuing topics sns -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2023-12-27 ---- - -This page shows how to create and manage [topics](/messaging/concepts/#topic) with Scaleway Topics and Events (formerly part of the Messaging and Queuing product). - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create a topic - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create topic**. The topic creation wizard displays. - - - -3. Choose a region in which to create your topic. - -4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose a **topic type**. The following topic types are available: - - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. - - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/messaging/concepts/#content-based-deduplication) is only available for FIFO topics. - -6. Click **Create topic** to finish. - -You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. - - -Remember that you need to [create credentials](/messaging/how-to/create-credentials/) in order to access your Topics and Events service and its topics from an API or CLI. Sending messages to topics requires that credentials have the `can_publish` permission, while receiving messages from topics requires the `can_receive` permission. You can create separate credentials if you need to isolate these two roles in your application. - - -## How to delete a topic - -When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the topic you want to delete. - -3. Either: - - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or - - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. - -4. Type **DELETE** and click **Delete topic**. \ No newline at end of file diff --git a/pages/topics-and-events/how-to/deactivate-delete-messaging.mdx b/pages/topics-and-events/how-to/deactivate-delete-messaging.mdx deleted file mode 100644 index f8ef3f4fbe..0000000000 --- a/pages/topics-and-events/how-to/deactivate-delete-messaging.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -meta: - title: How to delete a NATS, Queues, or Topics and Events service - description: Delete Scaleway NATS, Queues, or Topics and Events effectively. Safely remove resources with this straightforward guide. -content: - h1: How to delete a NATS, Queues, or Topics and Events service - paragraph: Delete Scaleway NATS, Queues, or Topics and Events services effectively. Safely remove resources with this straightforward guide. -dates: - validation: 2024-10-17 - posted: 2023-10-03 -tags: delete messaging queuing queueing messaging-and-queuing service disable deactivate nats-account stop -categories: - - serverless ---- - -This page shows how to delete a Scaleway **NATS**, account. - -Note that it is no longer necessary to deactivate services for **Queues** or **Topics and Events**: simply delete the queues, topics, subscriptions or other associated resources for the product directly. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) - -## How to delete a NATS account - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. - -3. Click the NATS account you want to delete. - -4. In the bottom panel, click the **Delete NATS account** button. - - A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. - -5. Type `DELETE` and click **Delete NATS account** to confirm. - - -Repeat the process above for each NATS account you want to delete. Remember to use the region drop-down as appropriate to access the different NATS accounts you hold in different regions. - - - - diff --git a/pages/topics-and-events/how-to/get-started.mdx b/pages/topics-and-events/how-to/get-started.mdx deleted file mode 100644 index 639996edfa..0000000000 --- a/pages/topics-and-events/how-to/get-started.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -meta: - title: How to get started with NATS, Queues, or Topics and Events - description: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events services effortlessly. -content: - h1: How to get started with NATS, Queues, or Topics and Events - paragraph: Kickstart your journey with Scaleway NATS, Queues, or Topics and Events. Learn how to set up, manage, and optimize your NATS, Queues, and Topics and Events effortlessly. -tags: messaging queuing enable disable nats sqs sns nats-account account create -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2023-10-03 ---- - -This page shows how to get started with Scaleway **NATS**, **Queues** or **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). - -The process differs depending on the [messaging protocol](/messaging/concepts/#messaging-protocol) you want to use: - -- For NATS, you need to **create a NATS account**. -- For **Queues** and **Topics and Events**, you no longer need to activate the protocol, but can proceed directly to [creating queues](/messaging/how-to/create-manage-queues) and/or [topics](/messaging/how-to/create-manage-topics). - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## How to create a NATS account - -To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create a NATS account**. The creation wizard displays. - - - -3. Complete the following steps in the wizard: - - - Choose a **region**, which is the geographical location in which your NATS account will be created. - - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. - - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). - - Click **Create NATS account** to finish. - - You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. - - - You can create more NATS accounts in your pre-selected region if you wish, by clicking on the `+ Create NATS account` button. To create NATS accounts in other regions, repeat the steps above starting from step 2 and selecting the required region. - - - -## How to activate Queues or Topics and Events - -For **Queues** and **Topics and Events**, you no longer need to activate the individual protocols. Proceed directly to [creating queues](/messaging/how-to/create-manage-queues) or [topics](/messaging/how-to/create-manage-topics) directly. \ No newline at end of file diff --git a/pages/topics-and-events/how-to/index.mdx b/pages/topics-and-events/how-to/index.mdx deleted file mode 100644 index e54fd91319..0000000000 --- a/pages/topics-and-events/how-to/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - How Tos - description: NATS, Queues, and Topics and Events How Tos -content: - h1: NATS, Queues, and Topics and Events - How Tos - paragraph: NATS, Queues, and Topics and Events How Tos ---- diff --git a/pages/topics-and-events/how-to/manage-credentials.mdx b/pages/topics-and-events/how-to/manage-credentials.mdx deleted file mode 100644 index 4ea9a79652..0000000000 --- a/pages/topics-and-events/how-to/manage-credentials.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -meta: - title: How to manage credentials for NATS, Queues, or Topics and Events - description: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. -content: - h1: How to manage credentials for NATS, Queues, or Topics and Events - paragraph: Master managing credentials for Scaleway NATS, Queues, or Topics and Events (Messaging and Queuing)! Follow this guide to securely update, rotate, and control access to your messaging services. -dates: - validation: 2024-10-17 - posted: 2022-08-11 -tags: manage credentials messaging queuing permissions update revoke -categories: - - serverless ---- - -Credentials give their bearer (e.g. services and platforms) access to your service. - -This page shows how to manage [credentials](/messaging/concepts/#credentials) for Scaleway **NATS**, **Queues** and **Topics and Events** (previously grouped together as the **Messaging and Queuing** product). - -Credentials for **Queues** and **Topics and Events** can be updated to change their permissions, or revoked. **NATS** credentials can only be revoked, not updated. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- Valid [credentials](/messaging/how-to/create-credentials/) - -## How to update Queues or Topics and Events credentials - -1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to update. - -2. Click the **Credentials** tab. - -3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to update. - -4. Click the button next to the credentials you want to update, and select **Update credentials**. A pop-up displays, such as the one below for Queues: - - - -5. Make the required updates to your credentials. You can modify the name, and the permissions. - -6. Click **Update credentials**. - - The credentials are updated and you are returned to the product's **Credentials** listing. - -## How to revoke Queues or Topics and Events credentials - -1. Click **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu, depending on which type of credentials you want to revoke. - -2. Click the **Credentials** tab. - -3. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the credentials you want to revoke. - -4. Click the button next to the credentials you want to revoke and select **Revoke**. - - A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. - -5. Click **Revoke credentials**. - - The credentials are revoked and you are returned to the product's **Credentials** listing. - -## How to revoke NATS credentials - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Select the NATS account you want to revoke credentials for. - -3. In the **Credentials** panel, click the button next to the credentials you want to revoke. - - A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. - -5. Click **Revoke credentials**. - - The credentials are revoked and you are returned to the NATS account's **Overview** page. - - diff --git a/pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx b/pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx deleted file mode 100644 index c957711a74..0000000000 --- a/pages/topics-and-events/how-to/monitor-mnq-cockpit.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -meta: - title: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit - description: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. -content: - h1: How to monitor NATS, Queues, and Topics and Events with Scaleway Cockpit - paragraph: Monitor your NATS, Queues, and Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. -tags: messaging queuing queueing cockpit metrics observability -categories: - - serverless -dates: - validation: 2024-10-17 - posted: 2023-09-07 ---- - -You can view metrics for your NATS, Queues, and Topics and Events services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues/streams and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: - -1. Generate your Grafana credentials -2. Access the product's metrics dashboard - -These steps are described below. - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) - -## How to activate your Cockpit - -Scaleway Cockpit is activated by default if you have created [Scaleway resources integrated with Cockpit](/cockpit/reference-content/cockpit-limitations/#product-integration-into-cockpit). - -## How to generate Grafana credentials - -To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). - -## How to access your NATS, Queues, or Topics and Events dashboard and view your metrics - -1. Click **NATS**, **Queues** or **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Click the **protocol** you want to view metrics for, and navigate to the **Metrics** tab. - -3. Click **Open Grafana metrics dashboard**. - -4. Enter your Grafana username and password to log in. - - You are directed to the dashboard for the product in question, where you can view all your metrics. - - diff --git a/pages/topics-and-events/index.mdx b/pages/topics-and-events/index.mdx deleted file mode 100644 index 89f6a6c8a3..0000000000 --- a/pages/topics-and-events/index.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events Documentation - description: Explore Scaleway NATS, Queues, and Topics and Events. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. ---- - - - -## Getting Started - - - - - - - - - -## Tutorials - - - - - - - - - - -## Changelog - - \ No newline at end of file diff --git a/pages/topics-and-events/quickstart.mdx b/pages/topics-and-events/quickstart.mdx deleted file mode 100644 index 441abf33e0..0000000000 --- a/pages/topics-and-events/quickstart.mdx +++ /dev/null @@ -1,298 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Quickstart - description: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. -content: - h1: NATS, Queues, and Topics and Events - Quickstart - paragraph: Get started with Scaleway's serverless NATS, Queues, and Topics and Events services. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. -dates: - validation: 2024-10-18 - posted: 2022-08-29 -tags: messaging queuing queueing quickstart messaging-and-queuing nats sqs sls message-broker queues topics messages streams -categories: - - serverless ---- - -Scaleway NATS, Queues, and Topics and Events are [message broker](/messaging/concepts/#messaging-and-queuing) tools that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. These brokers enable and simplify microservices application development and allows you to build highly scalable, reliable, distributed applications. - -NATS, Queues, and Topics and Events were previously grouped together as the Messaging and Queuing product, and have now become three separate products in their own right. Read on to learn how to get started with your product of choice - - - -- A Scaleway account logged into the [console](https://console.scaleway.com) -- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - -## Quickstart for NATS - -### How to create a NATS account - -To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create a NATS account**. The creation wizard displays. - - - -3. Complete the following steps in the wizard: - - - Choose a **region**, which is the geographical location in which your NATS account will be created. - - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. - - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). - - Click **Create NATS account** to finish. - - You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. - -### How to create NATS credentials - -Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. - -3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. - - - -4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. - -6. Enter a name for these credentials, and click **Generate credentials**. - - The credentials are created and a button displays prompting you to download them in a `.creds` file. - - - - - The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. - - -7. Click **Download** and save the file, before closing the window. - - You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. - -### How to create and manage queues, messages and streams - -All further actions related to publishing, processing and managing messages, subjects, queues and streams can be done via a supported CLI or SDK. See our documentation on [NATS CLI and SDKs](/messaging/reference-content/nats-overview/#further-actions-nats-cli-and-nats-sdk) for more information. You can also check out our tutorial on [creating a serverless architecture for handling large messages](/tutorials/large-messages/) with Scaleway Messaging and Queuing NATS. - -### How to delete a NATS account - -1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. - -3. Click the NATS account you want to delete. - -4. In the bottom panel, click the **Delete NATS account** button. - - A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. - -5. Type `DELETE` and click **Delete NATS account** to confirm. - - -## Quickstart for Queues - -### How to create credentials for Queues - -Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -### How to create queues - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create queue**. The queue creation wizard displays. - - - -3. Select the [region](/messaging/concepts/#region) in which you want to create the queue. - -4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose your **Queue type**, from one of the following: - - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. - - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. - -6. Configure your queue's **parameters**. The following parameters can be defined: - - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). - - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 209 600 seconds (14 days). - - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. - - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. - - **Dead-letter queue**: Designate another queue to receive undelivered messages from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count** (how many times a message can be received from the source queue before being moved to the dead-letter queue). - -7. Click **Create queue** to finish. - -You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. - -### How to send and receive messages - -All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/messaging/reference-content/sqs-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. - -### How to delete a queue - -When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. - -1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) of the queue you want to configure. - -3. Either: - - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. - - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. - -4. Type **DELETE** and click **Delete queue**. - -## Quickstart for Topics and Events - -### How to create Topics and Events credentials - -Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. - -2. Click the **Credentials** tab. - -3. Click **Generate credentials**. A pop-up displays: - - - -4. Choose a region that these credentials should be scoped to. - -5. Enter a name for these credentials. - -6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. - -7. Click **Generate credentials**. - - The credentials are created. The access key and secret key are displayed, and you are invited to copy them. - - - This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. - - -8. Copy and save the credentials, before closing the window. - - You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. - -### How to create topics - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Click **Create topic**. The topic creation wizard displays. - - - -3. Choose a region in which to create your topic. - -4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. - -5. Choose a **topic type**. The following topic types are available: - - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. - - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/messaging/concepts/#content-based-deduplication) is only available for FIFO topics. - -6. Click **Create topic** to finish. - -You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. - -### How to create a subscription - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Use the dropdown menu to select the [region](/messaging/concepts/#region) of the topic you want to create a subscription for. - -3. Click the name of the topic you want to create a subscription for. - -4. Click **Create Subscription**. The subscription creation wizard displays. - - -5. Verify the parameters of the topic that you are creating a subscription for (name and type). - -6. Choose a protocol, based on the type of endpoint or client you want to subscribe. Click the tab below for further details and full instructions on each protocol: - - - -
- Select **HTTP** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via standard HTTP protocol. - - Note that for security reasons, we recommend using the HTTPS protocol, rather than HTTP. - - You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. - - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). - -
- -
- Select **HTTPS** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via secure HTTP protocol. - - You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. - - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). -
- -
- Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. - - You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. - - You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. -
- -
- - Choose **Queues** to create a subscription for a Scaleway queue that you have created. - - You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. -
-
- -7. Click **Create subscription** to finish. - - The subscription is created. If you created an HTTP or HTTPS subscription, you will now need to [confirm it](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). - -### How to publish messages - -All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/messaging/reference-content/sns-overview#further-actions)for more information. - -### How to delete a topic - -When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. - -1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. - -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the topic you want to delete. - -3. Either: - - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or - - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. - - A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. - -4. Type **DELETE** and click **Delete topic**. diff --git a/pages/topics-and-events/reference-content/index.mdx b/pages/topics-and-events/reference-content/index.mdx deleted file mode 100644 index b74fe93663..0000000000 --- a/pages/topics-and-events/reference-content/index.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events - Additional content - description: NATS, Queues, and Topics and Events additional content -content: - h1: NATS, Queues, and Topics and Events - Additional content - paragraph: NATS, Queues, and Topics and Events additional content ---- diff --git a/pages/topics-and-events/reference-content/limitations.mdx b/pages/topics-and-events/reference-content/limitations.mdx deleted file mode 100644 index ed7ab269ea..0000000000 --- a/pages/topics-and-events/reference-content/limitations.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -meta: - title: NATS, Queues, and Topics and Events Limitations - description: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events -content: - h1: Limitations - paragraph: Learn about the current limitations of Scaleway NATS, Queues, and Topics and Events -tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics max-queues visibility-timeout -dates: - validation: 2024-10-18 - posted: 2023-01-04 -validation_frequency: 8 -categories: - - serverless ---- - -## Usage limits - -For the usage limits that apply when using Scaleway NATS, Queues, and Topics and Events, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues, streams, topics and consumers/subscribers, as well as to message retention duration and storage. - -## VPC - -NATS, Queues, and Topics and Events are not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/topics-and-events/reference-content/sns-overview.mdx b/pages/topics-and-events/reference-content/sns-overview.mdx deleted file mode 100644 index d862ff1182..0000000000 --- a/pages/topics-and-events/reference-content/sns-overview.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -meta: - title: Topics and Events Overview - description: Learn about the Scaleway Topics and Events messaging system -content: - h1: Topics and Events Overview - paragraph: Learn about the Scaleway Topics and Events messaging system -tags: messaging sns aws queuing publish-subscribe message-queue topic notification simple notification service -categories: - - serverless -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -## What is Scaleway Topics and Events? - -Scaleway Topics and Events is a managed messaging service that facilitates the sending of notificatons or messages to a large number of subscribers, including email addresses, webhooks, and more. Topics and Events leverages the SNS protocol. - -## What is SNS? - -SNS is a managed messaging service developed by AWS and leveraged by Scaleway Topics and Events. - -SNS (Simple Notification Service) was released in 2010. It enables users to interconnect their applications and systems using a [publish/subscribe](/messaging/concepts#publishsubscribe) pattern. Many publishers can send messages to [topics](/messaging/concepts#topic), while consumers, e.g. applications, can subscribe to topics to receive all (or a subset) of messages sent to this topic. Scaleway Topics and Events makes it easy to migrate your SNS-connected applications by providing a dedicated protocol gateway. - - - Some SNS features are not yet available with Scaleway Topics and Events. Supported subscribers are currently limited to: - - HTTP/S clients - - [Serverless Functions](https://www.scaleway.com/en/serverless-functions/) - - Scaleway queues in the same [Project](/organizations-and-projects/concepts/#project) - - Refer to the [developers documentation](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sns-api/) for more information. - - -## Topics and Events credentials - -You must [create credentials](/messaging/how-to/create-credentials/) that give your applications permission to connect to the Scaleway Topics and Events service. - -Credentials are scoped to your Topics and Events service at [Project](/organizations-and-projects/concepts/#project)-level. You can choose to give each set of credentials the required level of permissions: - - - **Read**: receive messages from queues and topics. - - **Write**: send messages to queues and publish in topics. - - **Manage**: create or edit resources (such as queues and topics). - -## Topics and subscriptions - -You can [create topics](/messaging/how-to/create-manage-topics/) and [subscriptions](/messaging/how-to/create-manage-subscriptions/) via the Scaleway console. - -## Further actions - -All further actions such as sending messages etc. can be done using the AWS CLI or AWS SDKs. Check out our documentation to help you get started with the [AWS CLI](/messaging/api-cli/connect-aws-cli/) or [AWS SDKs](/messaging/api-cli/python-node-sqs/). - -## Topics and Events Resources - -The following resources may be helpful: - - - [Official SNS Documentation](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) - - Further information on supported API features: - - [SNS](/messaging/reference-content/sns-support/) - - [Creating a simulated CPU monitor notification system with Scaleway Topics and Events](/tutorials/sns-instances-notification-system/) - - [Official AWS CLI Documentation](https://aws.amazon.com/cli/) - - [Official AWS SDK Documentation](https://aws.amazon.com/developer/tools/) \ No newline at end of file diff --git a/pages/topics-and-events/reference-content/sns-support.mdx b/pages/topics-and-events/reference-content/sns-support.mdx deleted file mode 100644 index d1983c5c91..0000000000 --- a/pages/topics-and-events/reference-content/sns-support.mdx +++ /dev/null @@ -1,279 +0,0 @@ ---- -meta: - title: Topics and Events - Supported Actions - description: Discover which SNS AWS API actions are supported by Scaleway Topics and Events -content: - h1: Topics and Events - Supported Actions - paragraph: Discover which SNS AWS API actions are supported by Scaleway Topics and Events -tags: messaging queuing supported supports sns aws api actions -categories: - - serverless -dates: - validation: 2024-10-18 - posted: 2023-01-04 ---- - -This page lists all actions described in the AWS SNS documentation, and states whether they are supported by Scaleway Topics and Events. - -- **Y** means the parameter is fully supported -- **N** means the parameter is not supported -- **P** means the parameter is partially supported (see associated comments for more details) - -## CreateTopic - -CreateTopic requires the `CanManage` permission. - -### CreateTopic Request - -| Parameters | Support | Comments | -|:----------------------|:---------:|:--------------------------------------------------------------------------------------------------| -| Attributes (map) | **P** | See supported attributes in the [SNS Topic Attributes](#sns-api-support-topic-attributes) section | -| Name | **Y** | | -| Tags.member.N (array) | **N** | | - -### CreateTopic Response - -| Elements | Support | Comments | -|:-----------|:---------:|:-----------| -| TopicArn | **Y** | | - -## DeleteTopic - -DeleteTopic requires the `CanManage` permission. - -### DeleteTopic Request - -| Parameters | Support | Comments | -|:-------------|:---------:|:-----------| -| TopicArn | **Y** | | - -## ListTopics - -ListTopics requires the `CanPublish`, `CanReceive` or `CanManage` permission. - -### ListTopics Request - -| Parameters | Support | Comments | -|:-------------|:---------:|:-----------| -| NextToken | **N** | | - -### ListTopics Response - -| Elements | Support | Comments | -|:------------------------|:---------:|:-----------| -| NextToken | **N** | | -| Topics.member.N (array) | **Y** | | - -## ListSubscriptions - -ListSubscriptions requires the `CanReceive` or `CanManage` permission. - -### ListSubscriptions Request - -| Parameters | Support | Comments | -|:-------------|:---------:|:-----------| -| NextToken | **N** | | - -### ListSubscriptions Response - -| Elements | Support | Comments | -|:-------------------------------|:---------:|:-----------| -| NextToken | **N** | | -| Subscriptions.member.N (array) | **Y** | | - -## ListSubscriptionsByTopic - -ListSubscriptionsByTopic requires the `CanReceive` or `CanManage` permission. - -### ListSubscriptionsByTopic Request - -| Parameters | Support | Comments | -|:-------------|:---------:|:-----------| -| NextToken | **N** | | -| TopicArn | **Y** | | - -### ListSubscriptionsByTopic Response - -| Elements | Support | Comments | -|:-------------------------------|:---------:|:-----------| -| NextToken | **N** | | -| Subscriptions.member.N (array) | **Y** | | - -## Publish - -Publish requires the `CanPublish` permission. - -### Publish Request - -| Parameters | Support | Comments | -|:-----------------------|:---------:|:-----------| -| Message | **Y** | | -| MessageAttributes | **Y** | | -| MessageDeduplicationId | **Y** | | -| MessageGroupId | **N** | | -| MessageStructure | **N** | | -| PhoneNumber | **N** | | -| Subject | **Y** | | -| TargetArn | **N** | | -| TopicArn | **Y** | | - -### Publish Response - -| Elements | Support | Comments | -|:---------------|:---------:|:-----------| -| MessageId | **Y** | | -| SequenceNumber | **N** | | - -## PublishBatch - -PublishBatch requires the `CanPublish` permission. - -### PublishBatch Request - -| Parameters | Support | Comments | -|:--------------------------------------------|:---------:|:-------------------------------------------------------------------------------------------------| -| PublishBatchRequestEntries.member.N (array) | **P** | As with the Publish action, the MessageGroupId and MessageStructure parameters are not supported | -| TopicArn | **Y** | | - -### PublishBatch Response - -| Elements | Support | Comments | -|:----------------------------|:---------:|:-----------| -| Failed.member.N (array) | **Y** | | -| Successful.member.N (array) | **Y** | | - -## Subscribe - -Subscribe requires the `CanReceive` permission. - -### Subscribe Request - -| Parameters | Support | Comments | -|:----------------------|:---------:|:----------------------------------------------------------------------------------------------------------------| -| Attributes (map) | **P** | See supported attributes in the [SNS Subscription Attributes](#sns-api-support-subscription-attributes) section | -| Endpoint | **Y** | Note that for lambda, the endpoint must be the Scaleway Serverless Function public URL | -| Protocol | **P** | Only http, sqs and lambda protocols are supported | -| ReturnSubscriptionArn | **Y** | | -| TopicArn | **Y** | | - -### Subscribe Response - -| Elements | Support | Comments | -|:----------------|:---------:|:-----------| -| SubscriptionArn | **Y** | | - -## Unsubscribe - -Unsubscribe requires the `CanReceive` or `CanManage` permission. - -### Unsubscribe Request - -| Parameters | Support | Comments | -|:----------------|:---------:|:-----------| -| SubscriptionArn | **Y** | | - -## GetTopicAttributes - -GetTopicAttributes requires the `CanReceive` or `CanManage` permission. - -### GetTopicAttributes Request - -| Parameters | Support | Comments | -|:-------------|:---------:|:-----------| -| TopicArn | **Y** | | - -### GetTopicAttributes Response - -| Elements | Support | Comments | -|:-----------------|:---------:|:--------------------------------------------------------------------------------------------------| -| Attributes (map) | **P** | See supported attributes in the [SNS Topic Attributes](#sns-api-support-topic-attributes) section | - -## SetTopicAttributes - -SetTopicAttributes requires the `CanManage` permission. - -### SetTopicAttributes Request - -| Parameters | Support | Comments | -|:---------------|:---------:|:--------------------------------------------------------------------------------------------------| -| AttributeName | **P** | See supported attributes in the [SNS Topic Attributes](#sns-api-support-topic-attributes) section | -| AttributeValue | **Y** | | -| TopicArn | **Y** | | - -## ConfirmSubscription - -ConfirmSubscription requires the `None` permission. - -### ConfirmSubscription Request - -| Parameters | Support | Comments | -|:--------------------------|:---------:|:-----------| -| AuthenticateOnUnsubscribe | **N** | | -| Token | **Y** | | -| TopicArn | **Y** | | - -### ConfirmSubscription Response - -| Elements | Support | Comments | -|:----------------|:---------:|:-----------| -| SubscriptionArn | **Y** | | - -## GetSubscriptionAttributes - -GetSubscriptionAttributes requires the `CanReceive` or `CanManage` permission. - -### GetSubscriptionAttributes Request - -| Parameters | Support | Comments | -|:----------------|:---------:|:-----------| -| SubscriptionArn | **Y** | | - -### GetSubscriptionAttributes Response - -| Elements | Support | Comments | -|:-----------------|:---------:|:----------------------------------------------------------------------------------------------------------------| -| Attributes (map) | **P** | See supported attributes in the [SNS Subscription Attributes](#sns-api-support-subscription-attributes) section | - -## SetSubscriptionAttributes - -SetSubscriptionAttributes requires the `CanReceive` or `CanManage` permission. - -### SetSubscriptionAttributes Request - -| Parameters | Support | Comments | -|:----------------|:---------:|:----------------------------------------------------------------------------------------------------------------| -| AttributeName | **P** | See supported attributes in the [SNS Subscription Attributes](#sns-api-support-subscription-attributes) section | -| AttributeValue | **Y** | | -| SubscriptionArn | **Y** | | - -### SNS API support - Topic attributes - -The Scaleway Topics and Events API (currently named the SNS API) supports the following topic attributes: - -| Attribute Name | Support | Comments | -|:--------------------------|:---------:|:------------------------------------------------------| -| ContentBasedDeduplication | **Y** | | -| DeliveryPolicy | **N** | | -| DisplayName | **N** | | -| EffectiveDeliveryPolicy | **N** | | -| FifoTopic | **Y** | | -| KmsMasterKeyId | **N** | | -| Owner | **Y** | | -| Policy | **N** | | -| SignatureVersion | **N** | Version 1 is always used, version 2 is not supported. | -| SubscriptionsConfirmed | **Y** | | -| SubscriptionsDeleted | **Y** | | -| SubscriptionsPending | **Y** | | -| TopicArn | **Y** | | - -### SNS API support - Subscription attributes - -The Scaleway Topics and Events API (currently named the SNS API) supports the following subscription attributes: - -| Attribute Name | Support | Comments | -|:--------------------|:---------:|:-----------| -| DeliveryPolicy | **N** | | -| FilterPolicy | **N** | | -| RawMessageDelivery | **N** | | -| RedrivePolicy | **N** | | -| SubscriptionRoleArn | **N** | | \ No newline at end of file From fd458fb11980e88cad18d3010c5cc15e943de278 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:42:06 +0200 Subject: [PATCH 03/15] feat(nats): add doc for NATS product (#4764) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(nats): add doc for nats produc * fix(menu): fix * fix(nats): cleanup * Update pages/nats/how-to/monitor-nats-cockpit.mdx * Update pages/nats/how-to/monitor-nats-cockpit.mdx * Apply suggestions from code review Co-authored-by: Néda <87707325+nerda-codes@users.noreply.github.com> * fix(nats): review comments * Apply suggestions from code review Co-authored-by: Benedikt Rollik * fix(nats): correct pricing --------- Co-authored-by: Néda <87707325+nerda-codes@users.noreply.github.com> Co-authored-by: Benedikt Rollik --- menu/navigation.json | 76 ++++++++++++ pages/nats/api-cli/index.mdx | 8 ++ pages/nats/api-cli/nats-cli.mdx | 114 ++++++++++++++++++ .../assets/scaleway-nats-create-account.webp | Bin 0 -> 19190 bytes pages/nats/assets/scaleway-nats-creds.webp | Bin 0 -> 23498 bytes pages/nats/assets/scaleway-nats-overview.webp | Bin 0 -> 38086 bytes pages/nats/concepts.mdx | 70 +++++++++++ pages/nats/faq.mdx | 31 +++++ .../assets/scaleway-nats-create-account.webp | Bin 0 -> 19190 bytes .../how-to/assets/scaleway-nats-creds.webp | Bin 0 -> 23498 bytes .../how-to/assets/scaleway-nats-overview.webp | Bin 0 -> 38086 bytes pages/nats/how-to/create-account.mdx | 43 +++++++ pages/nats/how-to/create-credentials.mdx | 52 ++++++++ pages/nats/how-to/delete-account.mdx | 44 +++++++ pages/nats/how-to/index.mdx | 8 ++ pages/nats/how-to/manage-credentials.mdx | 42 +++++++ pages/nats/how-to/monitor-nats-cockpit.mdx | 45 +++++++ pages/nats/index.mdx | 73 +++++++++++ pages/nats/quickstart.mdx | 90 ++++++++++++++ pages/nats/reference-content/index.mdx | 8 ++ pages/nats/reference-content/limitations.mdx | 22 ++++ .../nats/reference-content/nats-overview.mdx | 81 +++++++++++++ 22 files changed, 807 insertions(+) create mode 100644 pages/nats/api-cli/index.mdx create mode 100644 pages/nats/api-cli/nats-cli.mdx create mode 100644 pages/nats/assets/scaleway-nats-create-account.webp create mode 100644 pages/nats/assets/scaleway-nats-creds.webp create mode 100644 pages/nats/assets/scaleway-nats-overview.webp create mode 100644 pages/nats/concepts.mdx create mode 100644 pages/nats/faq.mdx create mode 100644 pages/nats/how-to/assets/scaleway-nats-create-account.webp create mode 100644 pages/nats/how-to/assets/scaleway-nats-creds.webp create mode 100644 pages/nats/how-to/assets/scaleway-nats-overview.webp create mode 100644 pages/nats/how-to/create-account.mdx create mode 100644 pages/nats/how-to/create-credentials.mdx create mode 100644 pages/nats/how-to/delete-account.mdx create mode 100644 pages/nats/how-to/index.mdx create mode 100644 pages/nats/how-to/manage-credentials.mdx create mode 100644 pages/nats/how-to/monitor-nats-cockpit.mdx create mode 100644 pages/nats/index.mdx create mode 100644 pages/nats/quickstart.mdx create mode 100644 pages/nats/reference-content/index.mdx create mode 100644 pages/nats/reference-content/limitations.mdx create mode 100644 pages/nats/reference-content/nats-overview.mdx diff --git a/menu/navigation.json b/menu/navigation.json index 3c195705e6..e321013adb 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4225,6 +4225,82 @@ "label": "Jobs", "slug": "serverless-jobs" }, + { + "items": [ + { + "label": "Overview", + "slug": "../nats" + }, + { + "label": "Concepts", + "slug": "concepts" + }, + { + "label": "Quickstart", + "slug": "quickstart" + }, + { + "label": "FAQ", + "slug": "faq" + }, + { + "items": [ + { + "label": "Create a NATS account", + "slug": "create-account" + }, + { + "label": "Create NATS credentials", + "slug": "create-credentials" + }, + { + "label": "Manage NATS credentials", + "slug": "manage-credentials" + }, + { + "label": "Monitor NATS with Cockpit", + "slug": "monitor-nats-cockpit" + }, + { + "label": "Delete a NATS account", + "slug": "delete-account" + } + ], + "label": "How to", + "slug": "how-to" + }, + { + "items": [ + { + "label": "NATS API Reference", + "slug": "https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/" + }, + { + "label": "Using the NATS CLI", + "slug": "nats-cli" + } + ], + "label": "API/CLI", + "slug": "api-cli" + }, + { + "items": [ + { + "label": "NATS overview", + "slug": "nats-overview" + }, + { + "label": "Limitations", + "slug": "limitations" + } + ], + "label": "Additional Content", + "slug": "reference-content" + } + ], + "label": "NATS", + "slug": "nats" + }, { "items": [ { diff --git a/pages/nats/api-cli/index.mdx b/pages/nats/api-cli/index.mdx new file mode 100644 index 0000000000..cf24e2b0b3 --- /dev/null +++ b/pages/nats/api-cli/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS - API/CLI Documentation + description: NATS API/CLI Documentation +content: + h1: NATS - API/CLI Documentation + paragraph: NATS API/CLI Documentation +--- diff --git a/pages/nats/api-cli/nats-cli.mdx b/pages/nats/api-cli/nats-cli.mdx new file mode 100644 index 0000000000..dd0eec375c --- /dev/null +++ b/pages/nats/api-cli/nats-cli.mdx @@ -0,0 +1,114 @@ +--- +meta: + title: Using the NATS CLI + description: This page explains how to use the NATS CLI with Scaleway NATS +content: + h1: Using the NATS CLI + paragraph: This page explains how to use the NATS CLI with Scaleway NATS +tags: messaging nats cli +categories: + - messaging +dates: + validation: 2024-10-18 + posted: 2023-01-20 +--- + +The NATS CLI (`nats`) is the official NATS tool for managing your NATS resources. It allows you to simply create and manage your streams, consumers and more. + +Check out the official [NATS CLI documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli/) for installation instructions, examples and more. + + + You can also configure Scaleway NATS with the Terraform/OpenTofu NATS Jetstream provider using our [dedicated tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider). + + +This page shows you how to get started with some basic actions via the NATS CLI. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- A Scaleway [NATS account](/nats/how-to/create-account) +- NATS [credentials](/nats/how-to/create-credentials/) downloaded to your machine + +## Installing the NATS CLI + +Follow instructions from the [official NATS documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli#installing-nats). The installation process may differ depending on your operating system. + +## Define a context + +To simplify your interactions with NATS hosted on Scaleway, we recommend that you use [contexts](https://docs.nats.io/using-nats/nats-tools/nats_cli#nats-contexts). A context is a named configuration that stores the settings (such as credentials, URLs and certificates) required to connect to NATS. By creating a context, you will not need to specify your server and credentials with each new request. + +### Create a context + +The example below creates a context named `scaleway`. +- Replace `{Scaleway NATS URL}` with the URL of your NATS account (find this in the console on your NATS account **Overview** tab). +- Replace `{path to your creds file}` with the path to the location where you [downloaded your `.creds` file](/nats/how-to/create-credentials/). + +```bash +nats context save scaleway --server={Scaleway NATS URL} --creds={path to your creds file} +``` + +### Use the saved context + +Enter the following command to select the `scaleway` context for use: + +``` +nats context select scaleway +``` + +## Create a stream + +To create a [stream](/nats/concepts/#stream), use the command `nats stream add` and follow the CLI guidelines. + + + Bear in mind that: + - Scaleway NATS does not support in-memory streams: choose `File` as storage backend. + - Some [system limits](/nats/reference-content/limitations/) may apply by default. + - If you choose a `Retention Policy` other than `Work Queue` you will be billed for the messages stored and retained. + - Choosing three replicas has an impact on: + - The stream storage limit (as data is replicated 3 times) + - The volume of billed messages + + +You can connect to your stream using code, developer tools or the NATS CLI (for testing purposes only). + +## NATS cheat sheet + +Use the `nats cheat` command to get a list of all possible commands. + +Below we provide a summary of some useful commands. + +### General + +| Action | Command | +| ------------ | ------------------- | +| Show a specific section of cheats | `nats cheat pub` | +| List available sections | `nats cheat --sections` | + + +### Messaging + +| Action | Command | +| ------------ | ------------------- | +| Publish message from STDIN | `echo "hello world" \| nats pub destination.subject` | +| Publish 100 messages with a random body of 100 - 1000 characters | `nats cheat --sections``nats pub destination.subject "{{ Random 100 1000 }}" -H Count:{{ Count }} --count 100` | +| Publish message from STDINReceive new messages received with the subject ORDERS.new | `nats sub ORDERS.new` | +| Subscribe to messages, on subject source.subject | `nats sub source.subject` | + + +### Queuing/Streaming + +| Action | Command | +| ------------ | ------------------- | +| Adding a stream | `nats stream add` | +| Viewing a stream | `nats stream info STREAMNAME` | +| Removing a stream | `nats stream rm STREAMNAME` | +| Show a list of streams | `nats stream list` | +| Get message `12345` in stream `ORDERS` | `nats stream get ORDERS 12345` | +| Delete message `12345` in stream `ORDERS` | `nats stream rmm ORDERS 12345` | +| Purge messages from stream `ORDERS` | `nats stream purge ORDERS` | +| Mark a stream `ORDERS` as read only | `nats stream seal ORDERS` | +| Add a consumer | `nats consumer add` | +| View a consumer `NEW` of stream `ORDERS` | `nats consumer info ORDERS NEW` | +| Remove consumer `NEW` from stream `ORDERS`| `nats consumer rm ORDERS NEW` | +| Get messages from consumer `NEW` of stream `ORDERS` | `nats consumer next ORDERS NEW --ack --count=10 `, `nats consumer next ORDERS NEW --no-ack`, `nats consumer sub ORDERS NEW --ack` | diff --git a/pages/nats/assets/scaleway-nats-create-account.webp b/pages/nats/assets/scaleway-nats-create-account.webp new file mode 100644 index 0000000000000000000000000000000000000000..12653712c9cbc9bd0feebd3cb7dd5c6f6303756b GIT binary patch literal 19190 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

KiG)VMT`< zD!fW&|09HAc(M+2iDV7p9coOSp^97nx9$u9bo@GVelFR>W5(b3n2xOaMuQ?$PD|aiT)a8vD~_&h2q+ql-50!3@lPN`vPXbWpmZ^IIzonbuqk#{QPoNW+$XJ&x#-tl zZk)zzPx*qj)SU{0!iR*U*MD_0PDNcCR_)}d=KpRk13C}@$8bXMraZ?KF>Cz_wRWup zyH?DoudbRf>+;M7tN_@34u*es9OyV(=D6;2<($ydI_;Xm?~yrw^2AN%=P4yZ*Z#Vu zwk9R7peNqOQr>Q`oBleYkMVNrlIO=YvT999J~N8H;Nqe*qnrPPHf}d9RFiC`z@OI9 z`nopCRXzJHK{kUrwED8bQk>6VBG1N~Uik^XVa7YMF|7C|2B2Mtmb@zYZvkW?cNVXS zxi3W-?{pEI-Z{6Q-NLfAA^+*2%SKsaAHf zeXeNost~Jvvdyd7GZ_dH(O9CHw@e&F7!ft=y2VQn$;yaV)oprIOLSk(8JrV%?i_JK zgVv1PpEvTYT6uJ!CIL6TDzp%?)Mr6{W#z3i&1`6Y*Rthye-WfB3_0IsBJveVG!K~; z7POz098Cbxs#cUl)&1IMV@gD=);~rc{XaiVX>Ip7QfLP0Ea?@`Xfh%3V6X^Di7-!{ zxjkOxDT4Pha5N$JibFYN+SA>ltAi}pW;~*UJe(d!=pw+jbV9}_Z6?`VH$>#%)V%U4 z$3EhAH)dh?)x!E0bPz(wBm0)_in$2OxDL-s5X)9Kq&sxKg`yeb@8s|y1E7g(o{Na} za2!n_`jvamH=wn&@r8a95mNke>C3>@G4F^VONv_hK0Q~Zz5g){lkTc#pILefb$aE? zK$RjmAT*wte&?xE=$2c1G+KP;21bNto-Y*&#gT#A=?FJTQ`m4x>btMsf72nS&E>)M zQhFHO`7oCTD*}rKKg~VE-JMHaXE1G5=SPe#@kVN$`Rk$&Md>FAX}&W8IvwLk%NGv>`rtK4)h!xXk0+hJRMJdGQRe|Bx3 zD_7$o{wI_IyQ~I)iItd2HHmnM|3D2)aO2SMOMWIKYi`&!8b4D$ii8*Wrg}HkV2BIE@}MHs4vGwJYN#5YutJ#VAwojM?6eVrR@%B=+kGSd32qSr-{-5TmSaf zk(ZmVJCGqYPNSivsvl8f^8PyIRs*Q40=ztS54G4+`hJsv0k^q}I9sbQ}x z6^9U~bYi*wFH*>!7;GjX$nnO>54CQKGJR^1)t{PIxooff<)?oDvk!Gf|4yZDhvHYF zQ&$A+jHA<#q%QEJHos1Lx&ZLZ`otH>nsG}u=q@8^Y?q47_Zd4Iz{G3=k^r2qWTRd@ z9|tEFCIvdUeDJ6s$#wWh|D-xao7;oAD9mscSa}1h-{L`h)Y1RyMu+w@)}XaZw|dzE zOOe8|t+;XeV4ZnX%ciX3sqEJ@U){%_Hv*vQ7EPC()%kY}+So3pC;uc^iM$)30ZM>N zPdaBhv%I7Qjk-Ym8HQPt)FLhfn!zOdnvCn^10Gy_^~cC8mb@zyfZu~>mbS!E08P-z zJ$XFKq%DuuaFgPC6cDOuu_%c^tP@_Qe%zwE4YsS!%cezgx4u%j`u8e9&1PA?&I)k> zeZJ*P{cwkSqapUM!JEfszriy?BhK4_Gv1lT;X+TJ%D-U4wd^m1NKxKdU8*xw>@y)tQj!p4##*w!w-X;eRQTalDd z-Qvured$Bqf$kT?A9%flt8$`rcTEd(Du+JPD5w!>gw6&~Ez{%k4tzB}Sc%)Iv^)pBMursqbE>@hJQ2^otuLLHH;0+Wr>C!{@^6R(=S!mfiNL4*asV>1gJ!7vf zM`CPkZUs?+nBHcyspvc}320ZbTV@pTi-W^Kbz(U%&(rOlei@TkEp1)W_bT^(4IjaC zV-;K-wW)5=#08MbnpMlStx7UGs(`>u0spX#i#!?jk{Ogh0Duy+4)uhIM|Rqy#1#D2 zqG}4vkIFzG$3uQE`X%zo*_0&mg+Q&arl#jVC*EJNl-8IU+fk)k$xgLL_9W&Z+G0mU z<~+-Q+DsGK#AY7Q=eTAJH9d8?aSu1{o&gXF%RI%HCWp2&*H>&lF-x5PF(g?%fN%kQ zPVBfEAD{UewJSPwc8uoQLMsS$A%tBR`YoihArdHFLpz3Gy8)df-IBnsXHg)w;%aFSF(8{>e9lg$)(J7Ul&<; zzqsB2H555Lol4yfIs+=dm z-elimhwJa&mYVz{kq{!xicQrO?bS(qg7P8*xQb}63f5_(xkz)3X!iw{6KuIDO&OJo zR)Ik~#FHvq<)2i67O<9J*KLf9epDL84a+A!0Pio1Q@^B%)e^>M@n z3BZ@f3)0Pw)gSOZ%vodgZ!T9qHLmXm-Z>*ib5@CXh`@Y5mS!8iDUvn#Uf~3jPurnZ9d$7rm{)y1nF_MgdtO#WU6;&S3=f zzGnn>>jCG-4;OMaP;nA_xF7BN_gb|WYUo1M+vZ{2(Et>mS{7avce(%=0j<5X3 zirpZ}8o4V0-CnET&}&DWD95?5rwSu^nV(bUn4kSBurx=j_eLSH7!BlVR9 z6jKwM89~q)jjUwi+ywu%OLQiPPWADv8kGtnoZ<1C%_fw;(28esWmCB%`O$;50BG_- zVV|as&LktF9`>qAljA1!G43Am51pc>l37F^0KU3xZTD-ssY6H=mlL6Tw|(;-5~EL$ zQEw|#QfVpu$4hz@?M2hinq>JZC9VCvDV3VZZl9X&8)0gNHiq+`YFbFY`39cro@1@$ zviPfSm}Np8)+z>Ma>G7C#~CF24>Y&v+eTh1yw^Y*eGPdk3zm)s{Z-=jR+hMv1*I#y zJl{K`_j10^jRzN4s-hQs;U;{1ms=Kmf^v~_N6eEwU($j0TsTMTJpqg%WUJy0D>y=g zN-u?Bu^R;MXRfaVdeRx`De?&ugkCc0934+Ps9HgYcqmN&%|=lc95u;qr_EXzi20_t z>cOIQ^ft09C?&@Poh7Rn;aBL`M8Dq_MXiks*ZR(SXw~X3K8GJK-O#RB0?>c5SxZ0W&;L=_QcZVqZoU z>gE}jfYS-o$hxSwhBuZ1YB~!cf&D=IpP|1RbcE^{thxzjVnx-Huj+8&(+v> zm**2pI@Rse0o%g5SwN1|Fl&EQ^T6W8<}~n0;ZUn4HQU;;Mh$Xyd-TiC#W$YZ62KP> zid?h$`DBocx5|}Z)t<1{0k?~oSvmdl_-B$1W%cG`$?VU}-D8!CqcZ0+edEYkV!gLu zA|6VJD4px&Rfujlj|h{c5zuqTt)4X-B+xa;>;XpBuomdDeVKm5O~_*}{Lc&FlC9URvy^oVaSN0w;Za92|IK1oL-78a6_^(_;~;y+j6>5a zoziKwQI8(=)RW5Fn_awNm8;a{uZA->t3soRZH6q0>ykllp}nt{13zF0KO9 z#NviCpm*S-uO*{{UME9Oe>2+*3B&YkMMsFj)kaMCro?W`qqsQCQBL7K7=7j!LnG3? zi8DSM%(Q-1xn1a`<_c!<2A2@ zc%G%8O2t->jC6?0DFk7ZfxmY{{B9gkLFjlzg}7e8fVxBXA~G!jI3$7?nYNx{D_R^Y?OAO0JV=i0Orl1GWD9H$^D7!0uP>E z`w>Q1X_Ow;7L&H&Xi6(LgN}_q28Q|^3bKg9vsncJW`X?iyBZPLmCf%Vvt4Z_x1hal zYA&o4vTfAS-91F6nLVIgfcKPQ{`y1{7v)rFiIicbK}!0{U{> zlMIB!`4-f!>UhgRE!Wt!>-8qZ{E8V%vvQ+Ep0Fw}|H0c+-$9!513v27%Vg3}ngw^r}<~kN%ZZ+{Tl!_@&;pK(>nO ziVNb+Y>x&lPg<|MQj^-f7`-3qG2ikX_;i#;;n5Zxi+c?m-3(MNdve+h3Nqe1i0+&e zSMniHUOCv|;91lh=R-5oEdF5$va}>{nfh}AT^R~j0Ol#=t_&Z&wntyQAx}?mr<~2J zf>$o<-7G&h%_C)%$MA~-pEs<5NN?266xR_xSB?jHJbw3#d!#dIwu7eQ6xS55F_LtA ziT5tfrXkKw#hXPk>{N~TM)SFfRDM1Ctt~^+$fJK?cVccld3yzmOtxbbiySAzuDdyE zk9ggdWZ5jXJlP~Ccz}jPk_~g>$?~4l9MnlsPr^rot(+H|h@onk> zTR=|ScmI&L zGqC-rm;fO6Kk%E@wXhdGCo?`PV~*jvNS_*ZXZ+ZT8o#uEh+xn~lAmz1gz9i7So;?R zW8-=}D^xjH?C?K#B*Z3PETM9GFT?i1DTZ?Lf*ZI9lzWZi^~Zh6u+kD3v3=Ue09{#T zOhb~(O6W&LaA>*{&$?Oll zzg7`p+D@`Ch4&I)gXw#dwY4!l;v_G1y8rrl-QzZ9pROt{S>tQ&yAzrnv zG#$WIr-7KiT9hHCmVnKRF^xR5$3oLOFXKenN=g42xuB1O-nz_qRk7DdFK2ONRRAWI ztFK1SfXO`P6yCkT!05mNjgh*nC~634_(Hhwg1%3?d5TZxnV`nZ^QGrLlo(gLjt#T6 zj0w1Gg}7nnO=1fCpU0gHJI?)#m`!ro{2&1Yq_ieJ8tmpi&f-zUtuNkNJ&F->n*_CE zXgf(l7jp8XxOvY9&GK%U&4T5LN19cg3SHi0#Mt33ZDoi=zG2x0tBDWpwgoXaa6;q> zZl3;4=!Wib&{-Tr8RN<~8;o0O6Li}ibOHX3WwdN|b^Uh`z(`ABr`wFD`B(rH+ROEP znk7f5eW8+Dbi|aVH`id|_j+sN4l&sR+DbrUYB}0aOb_5ejsG%VZT3TO5Ze^yb&q^7 zK6^k^)OGfC3j1iveJ8H|b*%9R@m4U=%!fcNKd`FzUsCcc0>COF;xNEg?iOk+S=1N- zkPI_m2`p6yg64j=jS}g?Q;XH%6+jXqIdq>tV762H)eGMg$Go`-YN>=cKi+h$gw%e+ z1zYNrauA;9=PFD_75&22+r2j?4Bp#z>$Z^Mg6d}v;wKi5s@KL^frH`IS$?~O zme0d#CQ?3$7{35BoySrh{#zS_I^}-O{LjoksW$ay`Fa#%Q#npD3)6GvF4Q-zTT{UH zq(ODrcx4ICOweiiu)eK!wCtINC--YC#<`@9^>E-maK73BfgwY8-fRa*wNxo`_Uzzh zcxgqK|GSQNMj_vLYo_7qWoN^v#PV}f(1};I3peIZJb_HXR=e9_x&k3R#sqK-9*p0# zNE22CKgw{rgRVWpqT7KTs*8s)j{rSNOCeLP-)cB$q9|du&-VaFO)~0qXhB#^$J!+F zTF40Bl5q^dvL4Omzxbd)N`Cu0gR|&WDlnmgWDD3DXn;fgK=q3 zYKN{|>;7W8qKlD*9Oauz&>rEJn4h&Jsa-AgMuq4N>~+a8vJvK2V=mv+$TRv?(_TYy z1S_}-Da&sI>2^}gs=JjjkaD)5mA~1D4Q|ct{WZM$L<{oR0!{1d7Lx}sAWDUai)gRH z*U%#?zjRSapmc3bayy#LA>_*K5aG1lqGOp($$tU>oV*qXPt}6qO^+%nF9P%>>^9x8 z)gq-(*VGl|sVrSqZG7E5Roflsy03xYfDxs6VI2Y}oD*i}q4mfMK5@n<8|F;&u#>{k z)n~({OKW&g=dG&WRr@7nmD<@ZsH@iJ=U-e2YtJgU4J1%Fl2MZD?lu=Xs|$|?*Z#1c zNNeWQ`!t@a-NSD-HbDctXZh9M7PMuZJa~Lb79DUUHH)8Bu0cZNrtqGsP4%>_F-5*> z&faFxaa*OX?$H-un6L1zY6mpyvFy&C^X{$adWaScwZ+Zk@z@lxp0B}lbBV56Uv3S`t=JVVzZ5&XEUqRsA-W7@kMC3*) zyK}eVd}g8y`n#JDV5=>W#Fezvvk;0-S^#GqSar9Y*N(n@B2{KuLJIsaPOWplGSFCM zjL2ndx6YK~y%!#02ZVI*%k1@?Y}Mnt)A2BSeRBOcKJ;cF;A!tV*Iz6@lWB3qbN{An z$h)_=Y=Yl9ZFJyCO)sw*~zj1Prwdy9f^(Xtj5l!M7iIJ(_iHiM#-F)S1t4}{}2 z{czC|b=Rs8!4Wvmp`UJ7IJ^63)dQPoQ?j#=+IavbAm!VFs5J&=m#$_XlGMA6O>!?V zOzzNhpn8kyp2r+#ZxjrwXs34=j8I5GH_}JcgRny@?+^i{K(LI5sMm1noerTck*N1m zQ(bc#+l(Hpq$YZb=juyjsD5*!5yth>A%k~U#GBg8TR&RyF{8=d(EBDI==aYkZ*O#% z`Kyc3dFv_jod(gsl78>UYxJ`%2>vUW{1jYBYCgVLdF~9`U6_yBQ1?UzDSM(;Q4zGW z2yzP7^f^<64eX(lhL;aLlcSBhvTiF?_Rf!<8A3NPiMe1n(>y>S~v}MujR@yFA7b46Z!Adcwh>PnQ;-l{icCh~lPC11{I`mGC9MaJp zeLGv9wAZAN^DU_bPuEsrXLqa&oBsrgK$Cf=TIwTz>Lw-x>SQ`G2_Y+7qAq`S@4^Nf z>I^rH6lazLR;1jah;~_jAL_)s5?wFA{*fk$ik(EDKm8=1hLqk&Bu|TMO@JGWbD6$S zZ6sGGDY1mN3d~}+?W2oWKZF&}+htG-`Rtz49Y4h?%~Lx(u~q=wo9b$f@!Pcs&9w&u z{FcJh-<2cA-uYx;Q4Y#i#fYAYsH=9?lP2v^HC&@@UK?s^jSVd@G;x&5CzxjzvVA%a z9F(=Elkf02m8uKpK^c;ifFrF84%Jdi6c^!&@VTekEn^#%>r_*8DDcDpWJSFX@`ke3 zv*OYy006DgZyY+q7)T5WAQ|&qPLX7D?RQeyxvj(DQ3nGXSm=d{ZYLBEdt&R_;Y@>I zgwoU_=eB{yVA1>&#R98&m81V>G)6=GXV?@S?GXUE`qaZ3!7ID4y6lduO{5Avf3jci zUSiiGr}j^K9-)vJMnvAFL+@{=Q#vf-8|>&QMbpgX%GOlIBM$q9lD2ZohW&JqYizkH zMT(*MGJci$W>YTRw2X$b6E_>Sqcn|(rQGq=A zYd@0eqM3IeS0JJSp*W1Vsto&X<`zz5(sYiQ9+Z!+b=i^#BCKf&(wqxKGg(5kDYH+r zoDIW7yZ6ZEV-o?mW&UCXv$cDFgqRr!!4d=}cv91nc|d=m4RUZiDo;)lbBy2qNW7&9 z=q8|3EK|b~*gnS`FzlH;k#PAfbRQD?G5l^(FerPnVuvH(BXZN1aq|MHP z;EV(@=j4CWRPo43$la=u0Cm8shI!dCyR!PYzu0Xz#@=fgSM_qFFomO4muVwFZ%n4H zO0_EZndT|1h^3JEz}J`j7~$FzPFgvfkUeX483l+;R*((Hh{Z~6q{4rJCeX^nj;;g~ z4mLHw(u7ulD*8Pf_`Zd1P}G`*=$Q`^%D<@_8g2#C_?RpLYh`NiJ3qRuW%x1?|J zyrokYwYly|i}Oa#Q#MKHn8mGD)R~9%G-`8dQdy+U!UVkjX{RVgZY&pd{d8CXN`!I>em~L}@ z4_&g%fIi` z1r+FZc#h*h9fj?%xVTk?sosn;TBO0<$sQ(sT~O11j?O|2xW{MTUwPbR@TR!el%Gsg zV;$U^eDSCkfM@TeMdSyOr11?;rgYG*l?6yFO?dh7j*q5kovdmyH_BGP!(^?6tlh;U zb_%U%QKnmXtbkQ)z3rFzXtZUbqzBD617PTHj`JNIjUDg4XQ2XExG>Bjf6;$aNYQLA zjTQ_KTl(E|1C$Jj+w@h8GDO`!P~{~q2R2{sucpL{-imPd3_JJMM`o7MLs(qbs!>k4 z)}x`tc%(6S^i0Pod=f3SS|x~fJPeBI#^<9MksHGwl8NGRR>1KZZ>5)|@Y~n5<1`RN z=~c955LeVSP(RG7x82H`f*$&$SDkMs-Qr(8-_&2c<8|FVv$=d6&W<7(^yH5S=XQ+u z`tV^uzWN9t(_D)H8JE_VH7_xKaR{u36Y&omq~qBa-9h7|N`wOxZR1j9u7q?~{j->c zgW`c{k~H;wSsn4R#CFHi%5Z?{-?(p*gu>loTP__{AEb0&G!tX>|G;4ngr-QiLLRlh1}rLpiu)s#P&OO<1ZT6A#>Hbey@9 z@z;$iBYvXIGwe_hc*0hJq=Z<)zA*_5JVHfI!E-%PV{UwSwDb-V`f<2$`E8OJmzPu; zrM$dQ>l%|*hNPLN^>eHjCDyt^fB-fiqLbzjVVyZDc;8``;8v58i6 zl<@JA7o3yXt)ug&@h#@a3oUi0c3=s*!$@zMG_YwyE}t!sAO&P>bTi+Tp|tU3A9MlB2lvlgADkxzUecEcRE8UwL^dI%^j zDew;Eqy9aPmTZsMJ+IO0ddN|k7$#Rd&vZ;v>otD%dCA)As33~}&^C|1-Zu8En>+V(h7c#{{O?aR}$q5 z| zYCQyt`$ckI4isPxRVEA~om|cQYKqttv-Fr_7OADkLgpITi|G~wfR2SeQUC7wAe<|5 zcm(&RE7!u1iP+LeL8J~iuRHIupc1Gap0>*8`kwi3uRD6xqsm-eLPT|?S?>xGFumVd z!GOuH%ecCG*KlY&=)ucXETbGcd(#!gP0AuNOo|WZeZ#qT%B1iUwra&{8>DcfpL1|H zl1OtIXPMK4gAy3)oVMBJ{lJ8Bnsc#co}in3bIv@;@y0-W)-h4u#a}Z{2>Z)aXH87% z+=sk|PyhEKtLVm?sZ*A@@FtjqH;KX`oKs_glfHcYTmpi$1@q{!QFbLR>Ca(#aj|Qe zO*pCM?uosJI)M+Vyd^h`;rHF1Vnz2Jo%t{Y>_rDE3|3IOdD}<Ps74Ij z)#EzZ6Ox5bSh!9M!x;H<)Dw6JReNP$05nKSiJ9oB0(Zaz&?usZ=|O>vt}z?VMnn*# zgN)bw76VU32%s4w?)ctz^XOZoc;Y~+6|d?Gb=sR0WWs6x0^cnfT#rUSNvWxc z`GaZ`dcQ>1^5ubu=^qfJ&TSp&2mIG`Qp4vh% zsHFU-TU3Ib#k+ee$A0&M^tP)UalZ1Mi9ATqd9y;F7Sh7Zw{9&&Lts~!f4jRvvGC9F zw3_zHQZUkHzrR3q@(ABs-I|eG5}O+5&!bWz;L7TfE2BzT1-O`=stKN4jdH-GVJp6& zTjTh^>`8xj-Ow-Sy7@>%OK&WUF~FkxpNreB#JS5RPOG2LGOA5jZuLdflGs=Ko%+EC zXEg`6BhL;W2v)6Kcvad0*jhGnApgxAwu11J6$P3SFK&t)3{dZ;Z%Hobh7udCBk!Lh zptu?hX3=G;eaNMoex!4<6H+@@c@AV_r&S?H_GJ7Bv^#VftG$QF;^{)`$q>8Hbn}%T zAHY`~P4`K_nbv!nb2~Q=S_@yaZQ&gQX#D4T|HtCj)KJ;B#=qgQGd`tiA* zvY=Hr6Ib)QxXuelCb(*ul+MF?9OYcvd^kcUI>bZ;8R?McqK>83K;j_U)Zj^4(O16< zz<6_&XpKjwnW8G->us8it43M}H=8(bE;oyJ**peSRv&2F>Lp?sV_KZuF3T9(lI8)* zZQiJ|39^#;+5AOTGxIq7xRw>_i?2T!Jnhvj3XntY#&KoV2!6-lK&9dKNiOGo$F})6 zLJik*U_tkTvU^jtyjenu3i3O66=;Gx7W&#+ zAA(V&A{ZaK;2HdY$@p#mFGC8v_4X--)O8evvSx_8dGRHDC&u3BT2^CEO^J) zzmA&u@UB~p9c3C>{b2F~XzXk6h_T|<&g7iWym5l_p~~v_4iIP8@*jS=b+?cXrr`h2 zZ#|FXi?Fc;aXX<{awq6e|D4v2Iai7#Yrpg%SGn#MR6;S^FWq1XR*Zt(BE}=KD~3y?@Q z=k$#EcPEckLT`II5Sbt@?)Y`= zINKhcS)VIyIvsX)obSb?ybI8eYDe#GSO3#i;RW`8FXYnin-9*Pt$I7}cG7H5{dZ$+ zhuhV#jXJ+n+zP)Jy#T#q{eN5p6EZ2y`jB7G>*mg084Y=gkFJ|tnSOa*$mCM@A9=ri zO%S1l=V`K8gy(8IEVAHl$I-|C-%cL+K-ieP(x2Wju2lZLQ&4m8@1hw?4BcZ`qh{2o z`n|sM>3_K?gaUctmI%=Gk6$$4nYJB&n)#0gYV_(>e_D3`|x%8ovp{e8wQzF&vy&6(x{sp#-MEqgxGl#q=*zWsZv%`^1{*!O$d zsrW}SJCmmlc1CHReogi@0aK1wddtD|K+@#dWUIp z$-gEZ00&mfmp*%JJZ`Ud#r_d814vtWuD3O~kc5+r%x=)?{787--_C)*{IwJPqbQ~X zfVt~`Zs+t)`ePpe)abR!{El=a)qm{N>Ou zvQ&TXc+4IAyFe`7aI^paFE@iwC@b933HWas@apjGv;CjHZ`#=H+rJkbo*6F9_~#C8 z>%jkF+#F(|w({3ke(H0u*Y}L;?V08i0RUhRV4>meKVO|2XxuK(v{f+p#hiGLKYwC{Uf}n;Tdjx36^&CAAD`bR_v20nhyUJD zvNb60og+?K`CcwEkET#I4h$OqdVQ<4_=FNSR$msm<`?aq@wmP1{knZJk<^ab%xAg& zpPl^r0}_!FndPwc+Z|U)e(G~{_U1nq*tB)cZ7rCfai*tRb8w^ni<uu%tl6UItS^$m>{BeHu_S8QE6ibrhv6gMR6Gm^(80Bs6kh^Vm28elS^V;ceCsA9q zw+|e&b}$8BF6LXG>THg7#Mq0CU7^Krab1C2Wwqtk)tT9H3lh;1{|I(8K3#Nt#^d_?A3R=6jW>$_;6@Oi`|a<2xJA8U zd&atRG3d2h6i_klOVMd{xgD&&e0|)?G01Qc} z%7mwf&?TEd6-NSDLZBfW$w*#rw&90{fR z#Y1TtZ4b(XSsE-d-tD5<$}bWm74}M2MFLfU2%I<}D+b}k0fLo{U?gfI;nDQbrGcs z8iB$IE2@MP=mJWhvZBgJp=7a3V}yKSIxZo4HX}N*93@J7ftdNE6olNLIx{{HrykCAbg(lqLMG2-AaD zp-UD=0y_ZuB0?yZ6zd$a@!55bU8SttxO_3sqCBLjyE0i72~-6laN>xl7zF)hy0Q^y zvCwGm@N2|nR6Bull+8v5orB4QQJ)gj=yROH7BjI4sRxyl#gT9meGwtBja9s}=xKyx z0#j|`82Yfq&H#z3iUg|k5a?1$0O-m_pubvddJb@mWiYLvjbX2Qss=`+goWA6!7KpBE)|S;DIl<2a7MapN%i~H-Ife{73vp{73w^KnVZ<^+K!d+hNk&G(TL1u8MM6+kP&iDrTL1trR>E%pRg2=bZ5-MAZ=G`e-VreYXh+zB z5$rkBS)Ro;`y0>H=DbnEyEJ?1TKuHPHCQlqx)zap5CXSUx=j5w++B2|?O!c7jWCFr znVFfHnVFfHnPp~XW@ct4G2`9YbFcpA-aDhCbN+^7W;fspn7ut1TRLN=9#nx*tQLGD zI}^qP&usT!5+uoC+w>A908udfOMxju z`s%U%f4Lmn+3&mQt=h%VMdA`viKQy3ge9g{iLn`VgjX%8S=c10S>0l6P>UH_tx}1p zL29+ALC{i(r6MuZuD$pBF75Z-|6Q$H_nxiGOatHvICJD1+LO2`4ZtZoa&*?(k+Gwb z+L>Z=@s8?K(AE;xUtzjpaFD# zA-$O~!-J7CoB%__AVYLv1{4MWSd&=a5~L9ekhHN*v9HfAYWRNSlQzyPySoDwY{~%X z*ydpXfJKS6Z99$$x8*F$6IL!F%z(nGEmy|Nq_>W=R~#r)pqLDEmFKk(wCDWXdN~ zG_h;}Jj$g8yf+Q3$#o{50;Jp<9`#@uDe{V>cwMFr#Ivcq$z0@xqx8yqbuiKT-6r-N zo+Dp@*F^GCWMeOOpvbEWr1BkX15z(uq0|SX$>hBW72Yb8<1kVqjBYp$$h!)ZufnZB z1?Z>@ce9P95>$lx@Gt-XlVsbrxn;U=?-U&ET`q+4A7A?qT!Pr{=q%0LTTDw4C+Keg zfF;eg|I_J|*c1p3k|as8goLWOB0Q__ zvSsV5iy*ivy#JovE)f8x=P2B<6t4%(;`I-evc*n{ik7ZZ4*dc88x|8S@lzw8Xk}PZ zv@9Z88h!|Jvp)a6McGrX0sy+ zc|R7dczCVNUdU#}M2pAzI3>k<)lA zg3u~!hKL7T5aBNMw3Rj}Ci7?7>KphZX=Bqynbw+DHr(C}k%n6iydjwP+p@Ar7RjG+0GAJZfTyO9S2( z?sMzv+w8?&b7q1enVG`!X5QkETQQFVk*Z^3G^LzmX$}%y)vditE+VBUJS@Sh^q4>M zq>v+lkQ(t_S94KB@?p)1NdcB3Dn9X{;EwaG1OV|J^;Qv%wQ~F(RKM;a`x4_Rd8TEp zO9^lw>R)wIR{mzsjYuHOIU%Ux%fIEgfTI8~_Qx=tpE3zc1eiZP0XQ(N?6j)l&6yvT zAc#Yf@8{1Md#dJ=K#x^LH>Z|8coYN}Mv@^}nZmNBH|h|tSZ8hH?L{p+4_pd^G(u-T zF{@8e0L#Qz^~)dKMFAO}vP^UGJuAChY9d0o&U@I{^2>5cw+lNYK~R^t@Q8#TPt$@D8av=3-L^yhygW$3N#9k0R zZcNolX_?1?6OlrQQ-WW?pF8D5wa?%^4J*Rnajv0*5S9{4Y=Xd!EDiv7s@B|FUPKTO zQ*8G*BRv|DvXUYI-GWtf7ga(77MLF2?(L%K)nE8^L99^W3(cWr*^Isu&4QOL-1AaB zM-)oGlv|AJ3B@fqktdm@vU<-na2de+Ccak;v+}4_f}bUWcxP)u=A>XDZ?oQcnwO$z zJavTcLnqyMehQ}Lne3sH4MyCgUC6_yeE{$Qv{SzK;qI^EKlF!u0AtL*R)B>*&hB0k z3sMvfY!m#9WXh34QV>niyavlUjUOT505zg{&RQKb(KPOoU?#`HfBf~_f|a)|ss(6@ zU*bJL^PqE-mn{dXUw5g!D58h9%vh?(*E37=JX0_Qi==Qs(MW-_uCQYDSmq(5zz@!Ey-Yi;HhuuRNCq$UF&|pTX=aV`;S1+7b zLC<1^$h{!oKuzUez`$l_%YNy<3(9dOi<6vU9KFJGllmqjrilaRe+B9bd7Ry77eqf-4<;Nd$8= z_ykz2ZimfYk+eM|bQ}ERgoLck`BjXEIL~4xFuG;}8IDtsOVlMC6&Q%T}v) zhFFMSBt9$JdHOf2E)!o9IB?0Jlj6{dL~i?yik;6a#4i?KmgzXAP};Pc-dH@E;@JYc z<$Sy983Q!1w^i>v&87406Y49JyjUSUy&%{mn6c^enBQ+Pzng9X-@9H??0tGWKw;7Ch+@CY0c(H#eKmmY-0w?KaXCj^{f62N3-7KY@Gf@fvSXeP`{vqP#>)*b_)un;o$`Gp*z#9HGvSA1SYUHVmaf5-u&2<)ae7Ec6_3QNS-1b_%^&%sb1)7Enh;J3X0*2&jDl3#+4J^8UaM%|wi%w52uJEV2jhhA1%dg=@K+`P zM4wJLLvZYzqhN3aEZ&9mgNAOP>1m*w5 zY9{2=o$Kc!K#QW;1IGuz3o0Bl{~Af=8`!zR7Ovt#gH43t=i1F22{5d0gyMs|I~I)x zfuI6DTE${&H~q1+Xi7TT(h1(7W5z})!0J0b5E=Spe-jB`6R7y#HAQUVS|Y&eGp>iAhK&6G zm(-m2?;xJ1w0V)DS^1x&!c^sFebB)wfpA$P0P1S%v4FGBY z+OzaU1T#8XjYgtJwl&y97~0aeT?BkOIP0d6&G35P0;&(7{KxHrhlOdYZ$sPiQlLltgz&CPKOS49aDO7DWq2jq7yPoESO?4g6Su*dnEphbRLk~iybm-(Et*Ywef3Fe!E=4Hb+GdUs3TMpP zj{0`fA4^M~?hJ8Bg&Gjfm+opYMh3YTB-lT(;-sAN*-Q|7l8K_3IiB(d?Q6L>FmzE2 zy721Y`_;M63ygLV2DHK%Q&yuv^JM?FDW2XpHKOM!W&T4`>Eo?!AQZ{Yyv@`jk2EE2 zvQfLrCuDOFIPghC2t(hdjlm|uuoiYA3Hob#yY1r_*tFfnQ4ytNe}{ zxz26c6O-9fYz;!;jL^0;Co&E+AsiwEKi_7K5n!QkDBzIIYO+bnlR1wF^*IUvEaax&zDm%AfL6O$Nqw>(ZQ$}U9=&e$6{G421AxTw zEe?sAGHE^X9Z@(ev1N$x;)2_sH!^0Q$r|{#!KfcTpIA+~23poEDFrDfH9O4Zf-{#o z*;h#N6U0jDLu0?gr93SC6Q=g_u<6fH*PgG@PTS>+~RSd%>&S%$(UE8uyx&%eBXf6Et^nLg5(C?^W$)&=GaK`5)tt(P-(l%1N_)h^M z;T38cmp_8Xef8vn0yYJ~LXqohHXLie#ANyad#jOTqhQvy$1fqXd;P9wV-V4^mAjrT z4^R4^?W{(Dx`gv%b+Z_S=gT_vI%s~%=Dn!bmR9-3K>QujL$A&&3c~9DF|iQ{-TIaa zO_-)c^|xx)+)9B^{!_h<%@398p(}Jxtl;{Y8e?Q&3-`QK_tE>LXy_Q{WhPUOT=M9Y`6!%rc&)xPcR&}>4&k)oY1!N*E%3-#5e6N?@H2Ro=Q-46^7UEwh$N(j?7s(kJlrSXjzRzFyjg`n%V106>MloHVfhPF~ME z#q~@hDOlvkPwuO`ed9HS{^cisZ@sakKsC#vn1zn$J{?nLvgo&Vj7o~e@nTrmQ51NR z!)wL-f5nFH&(JR~xo)g_$|&+PjD&>3Q@u+XdNd)|l9{bmA#CA3x30d+S@dn57ne|2 z@~HU4yQ0PCnLwmKjd*)&E{lmjY`9SxM(mSJO?rk8^f0F01}Hm9djFt^ADuLh}!bcU`~wlT3myoAysrpH@@2UHPOK1r`}jo|lXs z=UVj(3UaM1zG+=cY5n`674GzBvHBA~&uKQ`IsM1`kM|$%zh}Fuy3Behwfh1Y{&Qr9&zu`Q zLtY#)YclAPPWVWD6kgJVAk*ZMR(QxIW`s6om#};+z3=w zrzT+VAVaI5a3oa9)Hk0YIOebHfeTyU%mzR(3@<#%%^Z%RSx zC>i#*5<>JP>QYtp2_cuT_|X`BuvTV-oZ3$zb^4u3h*>L^-6zPD2buNUYrv1v`*A=o z)_pRNjRAvdLdY3y6f&gE8H6-p*K7KMjM;}tM|oC2p56JkMwJ&=6dkH5Eho~&`tFih z6A08vc$Q@kvgU>K{7}19(lyX_- z?#8vKnY?{F)nxbWsS1)s2nZilN!J{yywp2=ATUs_c&I^xsCGw`L~3?5*}v;KgF<1C zyjbMaH&<(owIqQWglZ0A)g!M?E2DiLhNx>65LQL| z6gCa?4+$mtq-{86l?h?{?!qta@&psBaMY zf+-Zz)L{zpX$S}eU02w$(DbgC@3j}s6{^r0J!M}~$q zaF$*(U+Wjd=$oec*n2~{I{JV<5hH6fWp(De9Z7QuTHJhYt#?w&j$ZM5=q_RH0|mxS z{|;8)!nn)(Gy@@psa~!AY?(`_v(`e0?{d=(#O9Y_B{Tw-Vf`7=O7{-4XnkVF$T2*W zZMF%Cb9Sd&hQ&TNjovAG`E&L^+BUPv!^Xe~-A$v)s*kuUtxm|Pv^ssTvg%~#$|^OZ z(n=(&tkPa9t0a9~^+*w1^#CMH^|&@%^>9f{^(fpGcF4<4s5mL3esg3;EOIQLQ07&q z6`C*-S*s)me)Z4RyjT{mUb!2oH#+AT)NS41M-jsZht1Ib?GxO4K#A|>7gHvA4Zv9L5Spg1E!`hrunP{M`Ga*tqKvo=^sy;dN8UTQ20stUN^ExKfZWO?} z;$4rgcO^E=nmfc$#(}_*#I*O3Np*n>T7W$^YwhN<0D_hz_g! zmqYm>XF$(j(S$XjuW_fj-OS~H;8hu|jS~HT3-0LJOSY3qd|58ds$)z8e|2a&@{oEJ zFf+%SqQ^n?d()v!!C*+bw~Y1&b(&WM0bfVVdAiY_!>r{VGpK%*GZTwt$5pEz?6@)K zxaf%c(iJC406_&8CpKI=2*MT_QSGCa{?((rckpT5M5J|&Uo4P2b*Cf-ztVg_&~GlS zYU`CbFJYIEo^sr<>yCv!JlC#;Zg&qfF*&lh&8ia&9EjC5kIHg&cRTZe z0Rtlnv~9y=nr;__9@C-e*i-s#hN2nXl$V`Ut3nv?y#_Yy=aGC_vf~bMSuIa_$b}T( z06nK{zhu?31v}yNp3z~g_LN>HQR0l+X`33f&9Cmys@vEQ(TvTHSO=TI2!sizt-E9G zY(}G@AOc%Wu77W1GZE$liomXl==M|j%6fU^{!p-9^`4Bc80=^^M*m-jcedYC?M?T> z`FXE?pZ6WZoguSQ6-qA33l$$&Ief0~t_)ls<8yRUD{*+2Lnh`uWWUTmiuNeJ$SA>6 z2t0aNC$XZBwE>U(g=rz12say^Fo&|wJIEWKNu00RGn2B~J9NVI-|I~jAiMQ`-o$kB zBE_CUj$Y{M-}iu|fS1jm+uyCYmE?rKGFM5LT)IB__^i&~Cz#57FV%VE>DBMrWkoGJShKdn;Z9Z~M*%{2$A7XiqS|GS zJgCrpPs0^OvwK+wI2t_eBx0=ahUH0wF7UqBn^@2}tq*eovdN1}kFAyQM!)p$ExzAZ zyQEO~3_F@>@AxReZ3gXQl|_OLKrB(u*=vI(&uT^n*~2(*1snb8(Rbes3(2ij^A7dN z=6`h$LbtIT@E=Lc_-+y39f`dMtqP=h&6E;`g00+9W&jQx*F#6*;2tZ(*3NU404(IM zWt>TWV~W_tce9Okh5Z%-t0gX`lQqK9tKE6ggNW8rp{Lo5=SR&F>?;HU+HGPP)Wb2- zvuRcctd@*hbmHA@IwKCW);W^B=y$EK1XfGNEIP4n_TCsA==yp6cz?6{3VlE-%9(2W z0laKOlPiPw*S0+#5SqX2(jDkv)pHcxx6f*hS1+0@)P7zoY1&}Yzuqo!NVnCTRld-r z1~l+XY14Yuf0hS-B{P(4=`bhZP(5PQ`-u1_!W~`&<{u*q270mp6}snPxIfQkj^W*{ zaxl%Ze+PsKpC*wCRRoJ#ROoRQ!`0aig3Hl_?rvu}^i0|EFW7yS8oCS%2g-^pXIqwa)Zg|*|{I%mJ z=W!1q#xq{&cO9^R(EKImAMd{F7G1-~`))5=a%m1Vnd@g?AgQs&F<-5Wu=Z|eKHk!g zSgJ5T$UZ{@!l3^L2(R7q!2Yl7cvo(GXa_@BaQEQ%4Vx+>JBCS`h zFy?D)Or?6BT?0ZFct6V=>I$0_1K7ryu^Ei^uox169ZYf#H#CeDtghXcligu1u?ju# zG~PC|6G;FE!bh3M37bnc1S#4-YAqOEk=R%+0d_IhQjES|Y%|5IFCMq}%o<|tN`L{f z^SCPijaQ!j@2vnVE^{!A88dAEo@L5W2R8;DdH z8?Q1w^i}{y3=Ho+{A+&^1rR=p7^D;lefTs}kU#!XgEh6!6tRhuu+Y~f?f+aPJ}Jpc z7vuT8W3GzN(;S2VmX@9zQT1pe3W+IBzQ=-z+a)nk%Xapx%}}JX)yUBiLU$9d9=5th z2X-#StDEPWJBW>(DckRvbL^USdTY7|lWGS8p$l4EHq}9Ib$K%?7a0H|u${Dq=e9O; z%wolE@!AIoo3>Bzd}4x<{AUL040DN<__B-M+rery0vt#*BAmL1nV}d>bFHCp(LICm zia~5F8-V*yH92z~5$a3WZN%yl?cct@g~8z7BZwLABeUQt8rZ%2Dj)qJW>@}gi{=&q zFs;KX7i;gdt0U#NGtJV8))oK}*tWaj`O_!uV2zp$qQl02X`M+p-nS6?4i8(A?Q>Qc z3jxs9?KHOiodW>qH$1EWJ)5RQL=VqsxNY>eYas>rP=N^nmy6djJM(W7ni~X2?5ZEp zZfcob1-5hxB9M=A2gPTjFjB^Sw#o`JyUkW?53}+7xlBho01X_zt?2cr)?Ewo$Fk|X zC?#?DH>*roI^V9@Pv|bzh+T?~jLFj>w_(OqYXb|tl^`}Ru{W17t~792;`G?}krbeN zjvP22fS+U~kai^ItNVTRH9*oS8{+?-`6_z#CQ$0l_*%uuT7 zjNum9q=hDR#xMPwk{Zk90OmB9?BU6$>Yd0X6ba#I&V7+`rH2K((&>rvT!oD?PXR zlm|(a_>z;}|67baE=zaTTOFeYmZ(oGN-#)r) zw@WI>80u&;5*nKTHFDu)JUxCJQ+&v}*;ZpvoQ7@NGb!e?OI;UrdE;D*22YS*%0=MV zRlWKN@ zC!Y7yC$W(CNYk8MMAhvuYa;SpqvL>9^_8QCfdpmEflb|>vx<00%d=k+XH3KDn<9d5z z!p^)CuaR^2N6ocf**MsDbmLie5Hmyi-wsOrqM+_L)4lfEJLx1kdZFytN*OA za4v{3WaneCSUqd2C5xWdjtsDeabEK^2D2b;-%ShYW-Ro6oMFlSy>9W}d{Sc(f0^F) zIkKLbRVNq>i8|z8c~VOCX3vh8lWgzj%x-6u>Q@xNX5MY1#!J@%(wt`H3FMC2(;P&k zfQ883ANI18e#&r|K2+$x%JedvHn$T=2rf9O)N*acO&%6iwAudA^o#Q^=ztpex$)PuErGDq$j22;#~CDEIfl5uDK9&$(}WNRVUg^xV$Gu!KPn^H-oc!q zyX9OG0P73Sk8QZI6-E?UaqYv_QOYrMUfpzapED!> zo>Z%X7!W4BIIii+Mi^0K1=TKVu97Y=d7Zl@&Mx0AR{3nsP97G`=(JMXtk>bYZ6Th9 z-O4@8HgM&2-oNdbM`|oq$Q-hE@QGt!fE5cxw$p3?;f(c^I*;~~k-<^{AFYb~A1fxZ zVSqW*R5zaHrL>1P{iZY=%lW9>cx;=lyZd)O3>9liJY#To_Kxc#XNhkEL#%e@JvVDU zPgUp_W6&waN^p(6S`ox=>`mcOnKIg#R7s*3j???2vuykBZTWHAWmh9nG= zdykbv>0A+kfMIf9XW5T?u}lHD?_Qa8227LAy#ILr@&3c!=Ex3D>}9*+Z-j|)I>KMCceqo39t>hBF6k?t}sb3_YcWsC^ z`upp>Emt^YZOJ-LOWfWn79!8@nWhCPCM_)$;#G&qWa2LhASDj^ce>eo*!{l5hO6JG zTxL8Yn$uvDR8r~g)n~`i87JBW)st45=n4Of>?_=xHL2AuQBs*aP0M#OfL+X|BL~+h zlzG0xkn~K*=-v@ZfM01f8UYnT$6zlO3w>4~7Nxo3S@v=O2otVk?<7lmb>9Q~Z>ZVJ zukt8ZDc7j1;br;8YZ1^#H%#Mc1OFZ`mM3*?+Rx$z-}mc#bod zd(1%FYbMT79ab!VvFAoDvz($&g;V#6W5R?kd3VfYGL@MfWM3felpj^8dbHz4ZPJ2D z_r-S{<^tHkdOWlF%(akIko;=y`qA74vX#<}G+j?_{vS)0a?!e@ zVW`JzM!S=0bqL+d6wa8pAN6`25|4mRaUeD1qf;VHc|NGmd%^1#Uoj=|f`}Y8Cq^^Bh@|K=y+e=!KJE2$JQ^qaPH~%qUP*ZXZ5F3sA0u? zHZ-v32;(vZGkiS-EmKq(dRDpBmL}Q!MnD?doeN#_F34UB9sL z=nRcBOI#JUNm1q1mo$rc=1)Br1ACV?6glNz;?<`9`=&rBJG2x6O96OK%P5W}fka^c z((7;2+;)d;iV@wp-!A5ehg&-FbP*G+`;+*#*vegY8SrE|GpkN8LX`dY(m>qX)@=mt zmfW@#Q45Y#z^ETqT7-498jXUTH#(k}lI6;7acY5i)lPYRvXPUBn^$X>Xs8mKCe8DX-m<1?Ns($Xm0fp| zYoAbGB3*SO6wd88{tLk9?h#su>TV#5U5_V51Qw|34VL zrP(GagSt!<05mOV=jx5ak1Szc7Uq&>YZf~SF}Kbxse$L&%{#Fb*AY*tWsAm-L^uDuKZb}_fzNAJ^lOc6Wy{93!D7M#4;Hk|^~ z0eINMrUSV6RhB?Nh{DlvfydP*#-vnU*Cox?7dCFvTE!|vM+Ejanf^7`e#f*o_%LnF zPD|MscrO&r>0|i~U}Vn-EkJcyMYaCxQP18R^JLkqDGk0?^|49wWaET&CZB62#ohVB z#*gtb9_BnU`xiLGV(zupK8^;F+H}^B(5Sq_f|k!V9UvQ?rF)roG``&~R;03BwyxY) z0BYp(^u9%kjWu$u zo=I1kRXc93iFjV?Ht!1JyAIpLOvO-JD@OycP_R$sd%tj=#*csl)JK#;szS(>ZM1vi z9}yxWZefi>T2D8cF>_IX#HrO+-Qx1lJIP)q77DcLouPRtCM_uy;?;!0?&1#$hCb)I zEk}IB_xlV-i+RdRY`Z2&)PNll7$Le_yiYW{ybH8G%V_3?}>SZn#N@c#tV81 zTcwhvRkxXAw738v*?)Pzi{>K7&70T|+`&5X8ah`bmG!UFE~8`B|G#PelpQI^dyFcqX=hc|WI3)6q-T!xKlfdEFpf7^rb(VGw&g8@+KPKiYiofsm)~fFxc`bu zUlsKkoyWe+{yWB?;@3wuqNm=2dDco(=-ZQ-+am-9tu(EwvYV-qDbX8X6@m(eJC$#Me-up;E%nhK9{3l;5*A>s!Za^LQl^HYpt3TTSh|u35LUFDH zwhn`OGe~EAaksR(#@#Kha@L{r;}ph=wbr2xOQ@WrAws_bP4=0OpH|(pgZZnV^$~^T zFrK2QCxf}#PKU%?VtcC76ypT_rJCgNB3r&Nrxt1s8&sK%VXhiXws5$}^HQ!mUXQ)t zNlw)JIP6w3CvdoERLys7pdys!_hG>wWjqWbm4z#AzYi@v`30!LFTn{=%D5hn(2LV z-^Vp44eo2uI#=fKSg5g%!xrE25<|^Rgno}~jVqpCeMx4VpYD&zFzOs$2*u+=AGWrB)N&I{5kM--y9_=p)+|*;601ON@ z-mZfFwhhw1S6dh!0#b^jx} z2%^l?nW4cP%)S>ThMF6I2>o9)$6?~Kh*J7=+r1JCF{1Xm#hhBGIgBRwPklufL7+nR zi}r$!vvU{bjar-npZEySci#DkPhjNYRQF-76h!D}z{!3Kv6H)MEAGs%ssm>#L@xlq zIAMRuAM@`7)t7t)m>O_w*{XW|ZhJ|Z>v?#*kgI0X!CZSm;YXWo`u1z=SyK}IP$-!@ zGc=g}+4iEvP;)aLE);IBRjkV57UKpl4xYWFP|wsZTlH=%+w0iA0CnW|)>f7|yPdPu z*8$X!TKMwQez^wVxSgf2Q2C#^361}})%s8HqgUP58S7q}0f^9_P!sJZe5TCb60b=g z46TaO>e-(5Af^kyb9-E8Lg%MUHpf?p=sy@3VxmL*BVLMr z06@9iH|=>HXJ?7jBsX?I14(A=*pFVh9N>F!f*Pnx^r2b}YHy0;G=K#w{w<9ueHE)- zhFMJJ8UvWKh{%?2zviCRO@Su+9Xn*|?WUow8cpb+<~D`bPQ4Q^cHeCRl`}pZ%<%Qp zRy?<~>D^xH$Q_hLgjm%i&e=t?4_hR)8Fh`>>gyzuLDyuC(#N(A&@RJ<3l3RoQmQc< zsnKcCI{=uk8d@J#SPNij3p%oxDjc@+b+GLzPg6~xj{Ny_71k6%A<+Fql=)f`RCtpX zakR*`FVI2Ftz7P>^%;e2FPb~2zL2)SQ#0KvwW3E^ij7oj!kpOEr^OAnI1foIwkbKg zatiy%_R*bomdH*qt%DWiwzM~mtj2Uf^o((Tv#tdIn5)Vz9M^9JC@m%Qf$LdQzb5Pp z&@2p`bjB_pQ?CR!75Lx$ZGCQJsvJBlxO!jC` z48@1I8NmwKTE1#H=wG8Tiip2LZ%q+2My%q(WjxCO0EkKiwRcR3zg^IL=2;M67$D87 zvh``L%8voRc2L7^cEyLB0X>7N3G4Xx`}9fo`w}~6Ox2yzc4RAx+9%}AcU!_zHz%}Q z*a)IFDQS~~mWW4OFjSB3_=p7B!4U1ZQLBug;%({D!z}0w$#`H~&0c=B+ky$wh9zgZ zYj)gm$a5qTW@CK7oYy=3^u(v;MaF9K!`-hji z9XVk|j$ih^XzqStf&dHox@r$RrC%}(ridsm-K}R|AOHZ`1t{_;=a{tNMa`BQKJNdM z;QxgKugbTsr3)=CNn<$Iu26$dbg|zcpOMw(_>RGb1vP< zzd4oarrfqrGq1LF8+nOi+Ff!P`^0_ixCqv};5ucU+i%0HxkK*%fX7>F+Pyp*C-S|& z`X}72xQlNjGhv~?iKdy9{__6rw43Qrlcr4zyyDJDHTQ97w)A<1ugHi)Cz;2Jtqih$ zs6r1j8m~|ML$DDDOx4=NYN++Wi?3KTPY5*deLiBR_>$#^fQ7yfH!mFR8WId!Mi^#M zNIMu}25#%FrFSYN3hQjxUq4iG)KK|CH?-_)BOLZ$M0Q`7vD%_qC$5w7#_~Gn`5AXJ^uOJ zEg>Ek>gE6)$_~ung!^(nb2MN2>{-+vG*IqfT1Dfm?EoUM&D8o=Eni}*q0_PtzpEs% zwEMbv*_vacm3|I!F~B1Yvj_+WP1H`^1pvY!8DEF#kW8?&@-=Wv1bZ(uEDOdevoe>zdbBqyGoEhSg1}@W~#8*C@@cDz&8Taf( zBsG+n2K=0e6oj2`Gb@p0!W@aD(GdmT4sgI%&OG~CL|Zx6C%2wieM6>IcHJK>KPKWr0E6Czq&X5vqa#K}bW@YV>8)ncW}Yg6Aw=Y2zO#h@gmS<7 z$d8;f-*u-5E)IArWKO0{G|tjaLSB3$l?j08<@xUyRBy?|g8sHH6VBsPFx7dpY}J4o zxhr7$=d(wsuhEBl8gGuCCD>O8ynC@6?in12)+5IFc@a19x5_o9{<~0Y7Q=PZNfVa@ zz&6hPV2)&SKtP%!ku*9Y$(4HR?kPD14pko;EB||ldk4S`T{elBFTg^+ftAnWFEvKI z>`7)<-d&5vi$IBh82rF*_e=gBaC75I8II~h^2m#Cq%zsTdTOsq-hG@0sL(wR!`&GU z%PXA64%SAh;n(7)bz=gYv3Z}>8ZPbgqPxWp_-vOH3G3{Yjf)~Zi!L*Zu@pkjo`FF5 zAE);3!spc^{M-?2caf&^WWkQ0Ww}t|s1B!@SbWNXD&QR(&Ur8X;mk48v}!h!G)E#~ zbVL%2{%)1zr?uEFnCZ*hrxo9E$Zi4WU%r<;B};V{pJyof7V`uG90=AiO*y@mUVW;# zkxX=u?^~B8&T$&{Ev%WatV^CYX?Tsqk)2MNlvitC6A(eJF1$^nc`dVP(%d3E^5Pq* zOqBRxR{dqJ%i2+oqUlJmaqW(bpFP1*&w(ykp#E31`q_+?bcoB(KKOA;=lCc1!1!MM z8+NnGKV&%c2&yNo3VcmF_e{hlvK^sck+1DEROe9qxJuQJw%n*?hVOS*de=dY&JGTY z)%?q=^e}lzi!{H?gL>Y6egbihM8fEZBpTR#_UC=40y5W$S$&T3OHd=8^V<)T75Qa= zmFKBs+|`-R&UW^FBkhHAK~M_tbZ?5br?sj8hDGIb&JBrkruyT+f%q8BUS5^QJdZjo zF0JRT+T;-mruHT;zLClV%cVz^Y9Fk4QHEsa4(1HoEq@ITvAQ2M>Q^#DQ4?RgpF`4T z1|H((m^85W7D4JJ0QkC@#<#rk_da2(Z3eK_rYP8I3nvV@;T+xw??2vuy#LrAZ1t7U zu+zE&;`GqfLe$mkUTb zrsUC;d*(Slt64tom1od#Zd`uOgsK>*P{~k>qRIN;$d90mZ+y& zaR-k26oYi*=x;glkl9~x1mb^!${~S^q4a0-R>Iup0NBeP%(zno0FFv%V|qDu2_&aq ze`@sZ^t|P$&jxd^T6wC@F-%HIn>xM*sWx#QH9K9iA0(k{ssco4G&??MVimdX^sT3s z1r7UgjsmPZEJFIBQb9HZemjg+eHCim06byTY3bezJAdxI1iO6A&;YB~Lq4Lp7Y|?F zyReYwX!XYzUXV<;GDp;XE5gMiFqL_%ja?@8jJj6RGq}m^(!Bf)3XRilfI=@?hcvxK z)3pRHqo{W$h33o|VL?12a|nDxcxYK4l4^JQwqr+J-7KjY21hzx3v%xStx7Li!aLrB z<1LG0Yp{NicT-m{b6=Y-<{jHw3JG8=tbUUBIVJ@_2O!Ut@e&@+ z>OfWzY6oR!VGl7;29_hJ6FCljjEP&ob;)5u2hs6KQ-fGgsT=;;3VgQ8nFgWB4dQuKOxot3Hk0NK-)0$f}wKr!45 z%uu)d1q%9(GW5MARHeF>g%<4Ce*qjrk3CEiaxYOb2z+N<$7Ly_s>CX zY~@rOkCK5AwoyNPpuR_uvDP-pG#;Q!zh%h)-7icw(_9K$;u$TK)&E8p4z7$kx-T(t zSD>38bht^lQa7I4=2rE)73{J=UFTLrvCj|OZ=vGwPp!q9@T%UW+lvYyQ)H~PPOt&I zFLo$fuVY6NJwfl?e5YsFiDz{|&A>0$y0wsi4FhnY|6`baM9vQ7J#cw&9ZMF@>F_*c zf7W0Wy{0PQ^!qj4sxGZLjN9!(+oZn#*rgmZPdHowP8+f0;eGRspA9W+)$AOPEP{!J zm+-LXP41XO7Ccw6fsHq@>bec8)dE+ij!QLzy|>+L zAjkTZDWc|FzuxC;PZB`V@enaEIF{Vz-PNvX75zr#YQDFvbLbYcsI685J6ekRrB&@7 zHHh_eef$?g9sh@{qUH?jy|M#@c6>mgkD z9Ff@f4JKdJ|TO9l2x)T`elVJh>E#FLyBGlo|jNgH8_b=D{-1lFQO zgZ0gZ>|{Vb`WcRxRMuIm4(KLKO&)uKDIsi2Vc{decnSKDZ*;@2C=(rr98c>`!~5Tl zGE`H8BKcPDhxl|RxVYP_pu5YwR{z>6m2BP4$rdr~qybCP%`OD16#F9_yyP&AL|t zkG_!n4t-at|a+tXRc5j1gS*h^Gg17K4;t#R9vSZB>( zx*RZw6*jiO&oobP{R-M#=3~F`E%oe-_{9tiMbZL{3Kx(sRyiQQraC!h; z>GDR13vh(sx40+*Kq($R28Npcbh*o0{55fQorlR4PN;P@7-r=jY;eR~=iKy9IS(?1 z9Op1zp*#*O%Vc$1;?V0xgjyXkz1&X4QHdX@6Jk? zg$jU3Qs(R^>Z3_FVQzCMH0QmqB-3+`Hr2J&yhW34w6M7a@@=J%u+;crr{Youv1CS& z@q>@MVz|~S&GdSXJ_gvemvIkkmoUB;o02Uy&BFc?(_g#(V1lEhw?-!TD0Nn4ZM>9b)SZSW(Mlr!Ez#dJ#`tu1>ofo0+ zZrN_n$Jk$pP{)v&gcl;`i7wA`57_x8a-9jp80gjn+rCT`PuQDZZ3r8FAfOZv7Xvpf zOcVq)Ji2DyCSHgt0H9V2-S57G035WWbeGDQ+#R?3kb&H4qF148SahP@#PS~xjyaiv z_dH%$+|~@EORa11;vq{V7DHy;CA{Ey4`3&r(gv(7_ag!zl4LT>j3l)l_Xf_4_?xUw z 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 J_umRG0svKfuu1>` literal 0 HcmV?d00001 diff --git a/pages/nats/assets/scaleway-nats-overview.webp b/pages/nats/assets/scaleway-nats-overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..c2240019b0f6f86d600f1628707c08c0e62e2d2a GIT binary patch literal 38086 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 literal 0 HcmV?d00001 diff --git a/pages/nats/concepts.mdx b/pages/nats/concepts.mdx new file mode 100644 index 0000000000..53d7110a2e --- /dev/null +++ b/pages/nats/concepts.mdx @@ -0,0 +1,70 @@ +--- +meta: + title: NATS - Concepts + description: Understand the core concepts of Scaleway NATS. Explore fundamental principles for efficient message handling and service optimization. +content: + h1: NATS - Concepts + paragraph: Understand the core concepts of Scaleway NATS. Explore fundamental principles for efficient message handling and service optimization. +categories: + - +tags: messaging queuing concepts nats +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +## Credentials + +Credentials give services and platforms access to Scaleway NATS, enabling them to connect to the host system. NATS credentials give full read-write-manage access to your NATS message broker. See the documentation on [how to create credentials](/nats/how-to/create-credentials/) for full details. + +## Message broker + +A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. Scaleway NATS is a message broker tool based on the NATS messaging system. + +## Message volume + +Message volume is one of the factors affecting the billing of Scaleway NATS. Message volume is calculated as the number of messages sent to/received by NATS, multiplied by the message size. Or, the sum of the size of all messages passing through NATS. + +## Message persistence + +Message persistence is one of the factors affecting the billing of Scaleway NATS. Message persistence is calculated as the total amount stored in NATS, multiplied by the duration it is stored for. + +## Messaging and Queuing + +Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#scaleway-nats), [Queues](/queues/), and [Topics and Events](/topics-and-events/). + +## NATS account + +A Scaleway NATS account sets a scope for any NATS credentials, messages, queues and streams held within it. You can create one or multiple NATS accounts with Scaleway NATS. + +## NATS messaging system + +The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is a distributed messaging system, designed to be lightweight and high-performance. Fully open-source, it is part of the Cloud Native Computing Foundation (CNCF) and has more than 40 client language implementations. + +It implements both of the following: +- A [publish/subscribe](#publish-subscribe) model, designed for real-time messaging and notifications and event-driven architectures. This is ideal for communication between microservices. +- A [streaming service](#stream) via JetStream, providing persistence so that messages can be re-accessed after sending. The streaming add-on is ideal when applications require message replay or historical data access, such as event sourcing and audit logs. + +## Publish/Subscribe + +This is the primary messaging model for NATS, sometimes abbreviated to "pub/sub". The key feature of publish/subscribe is that the publisher does not send messages to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. + +The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. With NATS, subscribers can select which messages to receive based on **subject**. + +## Region + +NATS is available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS. + +When [creating a NATS account](/nats/how-to/create-account), you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. + +## Scaleway NATS + +Scaleway NATS is a managed messaging service that leverages the open-source [NATS messaging system](#nats-messaging-system) to enable seamless communication between distributed applications and microservices. Scaleway handles set-up, patching, and performance optimization, as well as scaling to adjust to dynamic workloads, and backups of your data. + +Check our our [NATS quickstart](/nats/quickstart/) to get started with Scaleway NATS, or our [tutorial](/tutorials/large-messages/) on creating a serverless architecture to process large messages with NATS, to get an idea of how to go further. + +## Stream + +NATS includes the JetStream feature, an add-on to its pub/sub model which implements message streams with persistent messaging capabilities. Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records ("persistence") of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Consumers can be thought of as “cursors” in the stream, consuming the stream’s messages according to their filters. + +With NATS, you would typically implement a queue as a stream with a single consumer to read from. \ No newline at end of file diff --git a/pages/nats/faq.mdx b/pages/nats/faq.mdx new file mode 100644 index 0000000000..f1bc0cf8ea --- /dev/null +++ b/pages/nats/faq.mdx @@ -0,0 +1,31 @@ +--- +meta: + title: NATS FAQ + description: Discover Scaleway NATS, and get answers to all your most commonly asked questions, including information on compatibility with various services, and billing. +content: + h1: NATS FAQ +dates: + validation: 2025-04-01 +category: serverless +productIcon: NatsProductIcon +--- + +## What is Scaleway NATS? + +Scaleway NATS is a managed messaging service that leverages the open-source [NATS messaging system](/nats/concepts/#nats-messaging-system) to enable seamless communication between distributed applications and microservices. It allows you to implement your messaging streams without the hassle of managing the infrastructure, scaling or updates. + +## Can I configure Scaleway NATS via Terraform/OpenTofu? + +Yes, check out our [tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) on how to configure Scaleway NATS with the Terraform/OpenTofu [NATS Jetstream provider](https://registry.terraform.io/providers/nats-io/jetstream/latest/docs). + +## What is the NATS messaging system? + +The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is a distributed messaging system, designed to be lightweight and high-performance. It implements both of the following: +- A [publish/subscribe](#publish-subscribe) model, designed for real-time messaging and notifications and event-driven architectures. This is ideal for communication between microservices. +- A [streaming service](#stream) via JetStream, providing persistence so that messages can be re-accessed after sending. The streaming add-on is ideal when applications require message replay or historical data access, such as event sourcing and audit logs. + +## How is Scaleway NATS billed? + +Billing is based on [message volume](/nats/concepts/#message-volume) (the total sum of each message's size going through NATS) and [message persistence](/nats/concepts/#message-persistence) (the total amount of data stored * duration). + +For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/nats/how-to/assets/scaleway-nats-create-account.webp b/pages/nats/how-to/assets/scaleway-nats-create-account.webp new file mode 100644 index 0000000000000000000000000000000000000000..12653712c9cbc9bd0feebd3cb7dd5c6f6303756b GIT binary patch literal 19190 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

KiG)VMT`< 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 z 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 J_umRG0svKfuu1>` literal 0 HcmV?d00001 diff --git a/pages/nats/how-to/assets/scaleway-nats-overview.webp b/pages/nats/how-to/assets/scaleway-nats-overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..c2240019b0f6f86d600f1628707c08c0e62e2d2a GIT binary patch literal 38086 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 literal 0 HcmV?d00001 diff --git a/pages/nats/how-to/create-account.mdx b/pages/nats/how-to/create-account.mdx new file mode 100644 index 0000000000..3caa49a886 --- /dev/null +++ b/pages/nats/how-to/create-account.mdx @@ -0,0 +1,43 @@ +--- +meta: + title: How to create a NATS account + description: Kickstart your journey with Scaleway NAT. Learn how to set up, manage, and optimize your NATS services effortlessly. +content: + h1: How to create a NATS account + paragraph: Kickstart your journey with Scaleway NAT. Learn how to set up, manage, and optimize your NATS services effortlessly. +tags: messaging queuing enable disable nats account +categories: + - serverless +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/nats/faq/#how-is-nats-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + + + You can create more NATS accounts in your pre-selected region if you wish, by clicking on the `+ Create NATS account` button. To create NATS accounts in other regions, repeat the steps above starting from step 2 and selecting the required region. + \ No newline at end of file diff --git a/pages/nats/how-to/create-credentials.mdx b/pages/nats/how-to/create-credentials.mdx new file mode 100644 index 0000000000..1de0418eb0 --- /dev/null +++ b/pages/nats/how-to/create-credentials.mdx @@ -0,0 +1,52 @@ +--- +meta: + title: How to create credentials for NATS + description: Learn how to create credentials for Scaleway NATS. Securely manage access, and ensure seamless integration with this step-by-step guide. +content: + h1: How to create credentials for NATS + paragraph: Learn how to create credentials for Scaleway NATS. Securely manage access, and ensure seamless integration with this step-by-step guide. +tags: credentials messaging queuing key token nats +categories: + - serverless +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +This page shows how to create [credentials](/nats/concepts/#credentials) for Scaleway NATS (previously part of the Messaging and Queuing product). Credentials give their bearer (e.g. services and platforms) access to your service. + +You can create multiple sets of credentials for each of your NATS accounts. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- A [NATS account](/nats/how-to/create-account/) + +## How to create credentials for a NATS account + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/nats/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +5. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +6. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. \ No newline at end of file diff --git a/pages/nats/how-to/delete-account.mdx b/pages/nats/how-to/delete-account.mdx new file mode 100644 index 0000000000..475f145476 --- /dev/null +++ b/pages/nats/how-to/delete-account.mdx @@ -0,0 +1,44 @@ +--- +meta: + title: How to delete a NATS account + description: Delete a Scaleway NATS account effectively. Safely remove resources with this straightforward guide. +content: + h1: How to delete a NATS account + paragraph: Delete a Scaleway NATS account effectively. Safely remove resources with this straightforward guide. +dates: + validation: 2025-04-01 + posted: 2025-04-01 +tags: delete messaging queuing messaging-and-queuing service delete nats-account +categories: + - serverless +--- + +This page shows how to delete a Scaleway **NATS**, account. + + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/nats/how-to/create-account/) + +## How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/nats/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. + + +Repeat the process above for each NATS account you want to delete. Remember to use the region drop-down as appropriate to access the different NATS accounts you hold in different regions. + + + + diff --git a/pages/nats/how-to/index.mdx b/pages/nats/how-to/index.mdx new file mode 100644 index 0000000000..7bff246f34 --- /dev/null +++ b/pages/nats/how-to/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS - How Tos + description: NATS How Tos +content: + h1: NATS- How Tos + paragraph: NATS How Tos +--- diff --git a/pages/nats/how-to/manage-credentials.mdx b/pages/nats/how-to/manage-credentials.mdx new file mode 100644 index 0000000000..9a6c396710 --- /dev/null +++ b/pages/nats/how-to/manage-credentials.mdx @@ -0,0 +1,42 @@ +--- +meta: + title: How to manage credentials for Scaleway NATS + description: Master managing credentials for Scaleway NATS. Follow this guide to securely update, rotate, and control access to your messaging services. +content: + h1: How to manage credentials for Scaleway NATS + paragraph: Master managing credentials for Scaleway NATS. Follow this guide to securely update, rotate, and control access to your messaging services. +dates: + validation: 2025-04-01 + posted: 2025-04-01 +tags: manage credentials nats permissions update revoke +categories: + - serverless +--- + +Credentials give their bearer (e.g. services and platforms) access to your service. + +This page shows how to manage [credentials](/nats/concepts/#credentials) for Scaleway NATS (previously part of the Messaging and Queuing product). + +Note that the only management action available for NATS credentials is revocation. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [NATS credentials](/nats/how-to/create-credentials/) + +## How to revoke NATS credentials + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Select the NATS account you want to revoke credentials for. + +3. In the **Credentials** panel, click the button next to the credentials you want to revoke. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +4. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the NATS account's **Overview** page. + + diff --git a/pages/nats/how-to/monitor-nats-cockpit.mdx b/pages/nats/how-to/monitor-nats-cockpit.mdx new file mode 100644 index 0000000000..8b71c000c2 --- /dev/null +++ b/pages/nats/how-to/monitor-nats-cockpit.mdx @@ -0,0 +1,45 @@ +--- +meta: + title: How to monitor NATS with Scaleway Cockpit + description: Monitor your NATS service with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +content: + h1: How to monitor NATS with Scaleway Cockpit + paragraph: Monitor your NATS service with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +tags: messaging queuing nats cockpit metrics observability +categories: + - serverless +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +You can view metrics for your NATS services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues/streams and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: + +1. Generate your Grafana credentials +2. Access the product's metrics dashboard + +These steps are described below. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/nats/how-to/create-account/) + +## How to generate Grafana credentials + +To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). + +## How to access your NATS dashboard and view your metrics + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **Metrics** tab. + +3. Click **Open Grafana metrics dashboard**. + +4. Enter your Grafana username and password to log in. + + You are directed to the NATS dashboard, where you can view all your metrics. + + diff --git a/pages/nats/index.mdx b/pages/nats/index.mdx new file mode 100644 index 0000000000..6bee88e879 --- /dev/null +++ b/pages/nats/index.mdx @@ -0,0 +1,73 @@ +--- +meta: + title: NATS Documentation + description: Explore Scaleway NATS. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. +--- + + + +## Getting Started + + + + + + + + + +## Tutorials + + + + + + + + +## Changelog + + \ No newline at end of file diff --git a/pages/nats/quickstart.mdx b/pages/nats/quickstart.mdx new file mode 100644 index 0000000000..eae0e678de --- /dev/null +++ b/pages/nats/quickstart.mdx @@ -0,0 +1,90 @@ +--- +meta: + title: NATS - Quickstart + description: Get started with Scaleway NATS. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +content: + h1: NATS - Quickstart + paragraph: Get started with Scaleway NATS. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +dates: + validation: 2025-04-01 + posted: 2025-04-01 +tags: messaging queuing queueing quickstart messaging-and-queuing nats message-broker queues topics messages streams jetstream +categories: + - serverless +--- + +Scaleway NATS is a managed message broker tool that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. This enables and simplifies microservices application development and allows you to build highly scalable, reliable, distributed applications. + + +Scaleway NATS was previously part of our Messaging and Queuing product, and has now become a product in its own right. + + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a NATS account + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/nats/faq/#how-is-scaleway-nats-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + +## How to create NATS credentials + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/nats/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +5. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +6. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. + +## How to create and manage queues, messages and streams + +All further actions related to publishing, processing and managing messages, subjects, queues and streams can be done via a supported CLI or SDK. See our documentation on [NATS CLI and SDKs](/nats/reference-content/nats-overview/#further-actions-nats-cli-and-nats-sdk) for more information. You can also check out our tutorial on [creating a serverless architecture for handling large messages](/tutorials/large-messages/) with Scaleway NATS. + +## How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/nats/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. \ No newline at end of file diff --git a/pages/nats/reference-content/index.mdx b/pages/nats/reference-content/index.mdx new file mode 100644 index 0000000000..dacce5bb31 --- /dev/null +++ b/pages/nats/reference-content/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS - Additional content + description: NATS additional content +content: + h1: NATS - Additional content + paragraph: NATS additional content +--- diff --git a/pages/nats/reference-content/limitations.mdx b/pages/nats/reference-content/limitations.mdx new file mode 100644 index 0000000000..0ce68a8d6d --- /dev/null +++ b/pages/nats/reference-content/limitations.mdx @@ -0,0 +1,22 @@ +--- +meta: + title: NATS Limitations + description: Learn about the current limitations of Scaleway NATS +content: + h1: NATS Limitations + paragraph: Learn about the current limitations of Scaleway NATS +tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics visibility-timeout +dates: + validation: 2025-04-01 + posted: 2025-04-01 +categories: + - serverless +--- + +## Usage limits + +For the usage limits that apply when using Scaleway NATS, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues, streams, topics and consumers/subscribers, as well as to message retention duration and storage. + +## VPC + +NATS is not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/nats/reference-content/nats-overview.mdx b/pages/nats/reference-content/nats-overview.mdx new file mode 100644 index 0000000000..c3de3c6bf4 --- /dev/null +++ b/pages/nats/reference-content/nats-overview.mdx @@ -0,0 +1,81 @@ +--- +meta: + title: NATS Overview + description: Learn about the NATS messaging system +content: + h1: NATS Overview + paragraph: Learn about the NATS messaging system +tags: nats overview neural-autonomic-transport-system publish-subscribe jetstream streaming messaging deno +categories: + - serverless +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +## What is NATS? + +NATS (**N**eural **A**utonomic **T**ransport **S**ystem) is a messaging system that aims to be simple to use, scalable and provide high performance. It implements a [publish/subscribe](/nats/concepts/#publishsubscribe) model as well as adding a [streaming](/nats/concepts/#stream) service via [JetStream](https://docs.nats.io/nats-concepts/jetstream). A stream is a persistent, time-ordered list of messages which can be read sequentially by consumers. A consumer can be thought of as a "cursor" in the stream, consuming the stream's messages according to their "subject filter" or "replay policy". With NATS, you would typically implement a queue as a stream with a single consumer to read from. + +NATS is a [Cloud Native Computing Foundation](https://www.cncf.io/) project supported by a strong community, and can also be integrated in a Kubernetes cluster. + +## Scaleway NATS + +Scaleway NATS is a managed messaging service that enable seamless communication between distributed applications, which leverages the NATS protocol. + +## NATS accounts + +You can easily create a NATS account from the [Scaleway console](https://console.scaleway.com/), via the [Scaleway API](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/) or via [Terraform/OpenTofu](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider). + +## NATS credentials + +When you create your NATS account, you next need to [create credentials](/nats/how-to/create-credentials/). On the NATS side, these credentials are the equivalent of a 'user'. We use the most secure connection type offered by NATS: [NKeys](https://docs.nats.io/running-a-nats-service/configuration/securing_nats/auth_intro/nkey_auth). NKeys are a public-key signature system based on [Ed25519](https://ed25519.cr.yp.to/). + +Your credentials are provided in the form of a downloadable `.creds` file. Each set of credentials gives you full access to your NATS account, but does not enable you to generate new users with specific rights or fine-grained permissions. + +## Further actions: NATS CLI & NATS SDK + +All further actions related to publishing, processing and managing messages, subjects and streams can be done via one of the tools described below. + +Note that the Scaleway NATS server is configured with TLS, and as such will require all clients to connect with TLS. In the case of the NATS SDK however, the SDK abstracts this and handles the TLS connection itself. + +### NATS CLI + +The [NATS CLI](https://docs.nats.io/using-nats/nats-tools/nats_cli) is a great tool for administrating or testing your subjects and streams. See our [dedicated documentation](/nats/api-cli/nats-cli/) for help getting started with the NATS CLI. + +### NATS SDK + +NATS has a wide range of language compatibility: + +| Language | Links | +|:----------:|:----------------------------:| +| Golang | [nats.go](https://github.com/nats-io/nats.go), [godoc](http://godoc.org/github.com/nats-io/nats.go) | +| Java | [nats.java](https://github.com/nats-io/nats.java), [javadoc](https://javadoc.io/doc/io.nats/jnats), [examples](https://github.com/nats-io/java-nats-examples) | +| C# | [nats.net](https://github.com/nats-io/nats.net), [doxygen](http://nats-io.github.io/nats.net/), [package](https://www.nuget.org/packages/NATS.Client/0.14.1) | +| JavaScript | [Node.js](https://github.com/nats-io/nats.js/#readme), [deno](https://github.com/nats-io/nats.deno/blob/main/README.md), [WebSocket](https://github.com/nats-io/nats.ws/#readme) | +| Python | [nats.py](https://github.com/nats-io/nats.py), [doc](https://nats-io.github.io/nats.py/) | +| Ruby | [nats-pure.rb](https://github.com/nats-io/nats-pure.rb), [yard](https://www.rubydoc.info/gems/nats) | +| C | [nats.c](https://github.com/nats-io/nats.c), [doc](http://nats-io.github.io/nats.c) | +| Rust | [nats.rs](https://github.com/nats-io/nats.rs), [doc](https://docs.rs/nats) | +| Elixir | [nats.ex](https://github.com/nats-io/nats.ex), [doc](https://hex.pm/packages/gnat) | +| Zig | [nats.zig](https://github.com/nats-io/nats.zig) | +| PHP | [phpnats](https://github.com/repejota/phpnats) [nats.php](https://github.com/basis-company/nats.php) | + +Further community NATS SDKs, e.g. SwiftyNats, Kotlin and Crystal, can be found [here](https://docs.nats.io/using-nats/developer). + +The following documents may help you get started using the above SDKs: +- [Authentication with SDK](https://docs.nats.io/using-nats/developer/connecting/creds) +- [JavaScript: Using Jetstream](https://github.com/nats-io/nats.deno/blob/main/jetstream.md/#jetstream-client) +- [Python: Using Jetstream](https://github.com/nats-io/nats.py#jetstream) +- [Go: Using Jetstream](https://github.com/nats-io/nats.go#jetstream-basic-usage) + +The main difference you will find between the standard NATS documentation and Scaleway NATS is that we require you to provide a specific NATS URL and credentials to access the service. Refer to our [developers documentation](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/) for further information. + +## NATS resources + +- [Official NATS Documentation: What is NATS?](https://docs.nats.io/nats-concepts/what-is-nats) +- [Create a serverless architecture for handling large messages using Scaleway's NATS, Serverless Functions, and Object Storage](/tutorials/large-messages/) +- [Publish/Subscribe in pure NATS (no message retention)](https://docs.nats.io/nats-concepts/core-nats/pubsub/pubsub_walkthrough) +- [Introduction to JetStream](https://docs.nats.io/nats-concepts/jetstream) +- [Learn NATS by Example](https://natsbyexample.com/) +- [How to use Scaleway NATS with the Terraform/OpenTofu NATS Jetstream provider](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) \ No newline at end of file From b15ae12f3d2a2aa8ab1a6f61ff4a3719d96291d3 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:51:28 +0200 Subject: [PATCH 04/15] feat(queues): add doc for Queues product (#4801) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(mnq): add branch for queues * feat(queues): add queues doc * feat(queues): rebase to feature branch * Apply suggestions from code review Co-authored-by: Néda <87707325+nerda-codes@users.noreply.github.com> * fix(queues): review comment --------- Co-authored-by: Néda <87707325+nerda-codes@users.noreply.github.com> --- menu/navigation.json | 84 +++++ .../assets/scaleway-nats-create-account.webp | Bin 19190 -> 0 bytes pages/nats/assets/scaleway-nats-creds.webp | Bin 23498 -> 0 bytes pages/nats/assets/scaleway-nats-overview.webp | Bin 38086 -> 0 bytes .../assets/scaleway-nats-create-account.webp | Bin 19190 -> 0 bytes .../how-to/assets/scaleway-nats-creds.webp | Bin 23498 -> 0 bytes .../how-to/assets/scaleway-nats-overview.webp | Bin 38086 -> 0 bytes pages/queues/api-cli/connect-aws-cli.mdx | 129 ++++++++ pages/queues/api-cli/index.mdx | 8 + pages/queues/api-cli/python-node-queues.mdx | 230 ++++++++++++++ pages/queues/api-cli/queues-aws-cli.mdx | 68 ++++ pages/queues/concepts.mdx | 84 +++++ pages/queues/faq.mdx | 30 ++ pages/queues/how-to/create-credentials.mdx | 49 +++ pages/queues/how-to/create-manage-queues.mdx | 102 ++++++ pages/queues/how-to/index.mdx | 8 + pages/queues/how-to/manage-credentials.mdx | 58 ++++ .../queues/how-to/monitor-queues-cockpit.mdx | 42 +++ pages/queues/index.mdx | 73 +++++ pages/queues/quickstart.mdx | 97 ++++++ pages/queues/reference-content/index.mdx | 8 + .../queues/reference-content/limitations.mdx | 22 ++ .../reference-content/queues-overview.mdx | 57 ++++ .../reference-content/queues-support.mdx | 291 ++++++++++++++++++ 24 files changed, 1440 insertions(+) delete mode 100644 pages/nats/assets/scaleway-nats-create-account.webp delete mode 100644 pages/nats/assets/scaleway-nats-creds.webp delete mode 100644 pages/nats/assets/scaleway-nats-overview.webp delete mode 100644 pages/nats/how-to/assets/scaleway-nats-create-account.webp delete mode 100644 pages/nats/how-to/assets/scaleway-nats-creds.webp delete mode 100644 pages/nats/how-to/assets/scaleway-nats-overview.webp create mode 100644 pages/queues/api-cli/connect-aws-cli.mdx create mode 100644 pages/queues/api-cli/index.mdx create mode 100644 pages/queues/api-cli/python-node-queues.mdx create mode 100644 pages/queues/api-cli/queues-aws-cli.mdx create mode 100644 pages/queues/concepts.mdx create mode 100644 pages/queues/faq.mdx create mode 100644 pages/queues/how-to/create-credentials.mdx create mode 100644 pages/queues/how-to/create-manage-queues.mdx create mode 100644 pages/queues/how-to/index.mdx create mode 100644 pages/queues/how-to/manage-credentials.mdx create mode 100644 pages/queues/how-to/monitor-queues-cockpit.mdx create mode 100644 pages/queues/index.mdx create mode 100644 pages/queues/quickstart.mdx create mode 100644 pages/queues/reference-content/index.mdx create mode 100644 pages/queues/reference-content/limitations.mdx create mode 100644 pages/queues/reference-content/queues-overview.mdx create mode 100644 pages/queues/reference-content/queues-support.mdx diff --git a/menu/navigation.json b/menu/navigation.json index e321013adb..0db8d35507 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4301,6 +4301,90 @@ "label": "NATS", "slug": "nats" }, + { + "items": [ + { + "label": "Overview", + "slug": "../queues" + }, + { + "label": "Concepts", + "slug": "concepts" + }, + { + "label": "Quickstart", + "slug": "quickstart" + }, + { + "label": "FAQ", + "slug": "faq" + }, + { + "items": [ + { + "label": "Create credentials", + "slug": "create-credentials" + }, + { + "label": "Manage credentials", + "slug": "manage-credentials" + }, + { + "label": "Create and manage queues", + "slug": "create-manage-queues" + }, + { + "label": "Monitor Queues with Cockpit", + "slug": "monitor-queues-cockpit" + } + ], + "label": "How to", + "slug": "how-to" + }, + { + "items": [ + { + "label": "Queues API Reference", + "slug": "https://www.scaleway.com/en/developers/api/messaging-and-queuing/sqs-api/" + }, + { + "label": "Connecting Queues to the AWS-CLI", + "slug": "connect-aws-cli" + }, + { + "label": "Using Queues with the AWS-CLI", + "slug": "queues-aws-cli" + }, + { + "label": "Using Go, Python or Node.js with Queues", + "slug": "python-node-queues" + } + ], + "label": "API/CLI", + "slug": "api-cli" + }, + { + "items": [ + { + "label": "Queues overview", + "slug": "queues-overview" + }, + { + "label": "Queues - supported actions", + "slug": "queues-support" + }, + { + "label": "Limitations", + "slug": "limitations" + } + ], + "label": "Additional Content", + "slug": "reference-content" + } + ], + "label": "Queues", + "slug": "queues" + }, { "items": [ { diff --git a/pages/nats/assets/scaleway-nats-create-account.webp b/pages/nats/assets/scaleway-nats-create-account.webp deleted file mode 100644 index 12653712c9cbc9bd0feebd3cb7dd5c6f6303756b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19190 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

KiG)VMT`< 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 z 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 J_umRG0svKfuu1>` diff --git a/pages/nats/assets/scaleway-nats-overview.webp b/pages/nats/assets/scaleway-nats-overview.webp deleted file mode 100644 index c2240019b0f6f86d600f1628707c08c0e62e2d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38086 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 diff --git a/pages/nats/how-to/assets/scaleway-nats-create-account.webp b/pages/nats/how-to/assets/scaleway-nats-create-account.webp deleted file mode 100644 index 12653712c9cbc9bd0feebd3cb7dd5c6f6303756b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19190 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

KiG)VMT`< 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 z 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 J_umRG0svKfuu1>` diff --git a/pages/nats/how-to/assets/scaleway-nats-overview.webp b/pages/nats/how-to/assets/scaleway-nats-overview.webp deleted file mode 100644 index c2240019b0f6f86d600f1628707c08c0e62e2d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38086 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 diff --git a/pages/queues/api-cli/connect-aws-cli.mdx b/pages/queues/api-cli/connect-aws-cli.mdx new file mode 100644 index 0000000000..251ca68d3e --- /dev/null +++ b/pages/queues/api-cli/connect-aws-cli.mdx @@ -0,0 +1,129 @@ +--- +meta: + title: Connecting Scaleway Queues to the AWS-CLI + description: This page explains how to connect Scaleway Queues to the AWS-CLI +content: + h1: Connecting Scaleway Queues to the AWS-CLI + paragraph: This page explains how to connect Scaleway Queues to the AWS-CLI +tags: messaging queues sqs aws-cli cli aws sdk python boto +categories: + - serverless +dates: + validation: 2025-04-02 + posted: 2025-04-02 +--- + +The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. With minimal configuration, you can start using the AWS-CLI with Scaleway Queues. This allows you to create, list and manage your queues, send messages and much more, all from your command line. + +This guide shows you how to install the AWS-CLI and configure it to connect to Scaleway Queues. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/queues/how-to/create-credentials/) for Scaleway Queues + + This page assumes you will use the AWS-CLI v1. + + +## How to install the AWS-CLI + +To interact with Scaleway Queues, both `aws-cli` and `awscli-plugin-endpoint` need to be installed. The `awscli-plugin-endpoint` is a useful plugin to help people more easily access third-party providers such as Scaleway. + +Install both `aws-cli` and `awscli-plugin` using `pip`. + +``` +pip3 install awscli +pip3 install awscli-plugin-endpoint +``` + +## How to configure the AWS-CLI + +Now you have installed the AWS-CLI, you need to configure it for use with Scaleway Queues. + +1. Create a file named `~/.aws/config` by running the following command: + ``` + aws configure set plugins.endpoint awscli_plugin_endpoint + ``` + + + With the most recent versions of awscli (1.29.0 or 2.13.0), the use of a plugin is not necessary. If you are using one of those versions and wish to skip this step, you can do so. Note that this will also affect your configuration file in the next step. + + +2. Open the `~/.aws/config` file you just created in a text editor and edit it as follows (the Queues (SQS) endpoint URL can be found in the console on the **Settings** page of the Queues product) + ``` + [plugins] + endpoint = awscli_plugin_endpoint + [profile sns] + region = fr-par + [profile sqs] + region = fr-par + sqs = + endpoint_url = https://sqs.mnq.fr-par.scaleway.com + ``` + + Optionally, you can also configure additional profiles by adding new blocks under `[sqs]`. For example, you can add a profile for `[sns]` if you are also using Scaleway Topics and Events, or another profile, `[profile aws]`, to connect to the AWS SQS/SNS service if you want: + + ``` + [plugins] + endpoint = awscli_plugin_endpoint + [profile sns] + region = fr-par + sns = + endpoint_url = https://sns.mnq.fr-par.scaleway.com + [profile sqs] + region = fr-par + sqs = + endpoint_url = https://sqs.mnq.fr-par.scaleway.com + [profile aws] + region=eu-west-3 + output=json + ``` + + + If you are using the AWS-CLI v2, you must include the path to the plugin in your configuration file. Add `cli_legacy_plugin_path = ` to the `[plugins]` section, replacing `` with the corresponding path. + + + + If you are using aws 1.29.0 or 2.13.0 without the plugin, your configuration file should be as follows: + ``` + [profile sqs] + region = fr-par + endpoint_url = https://sqs.mnq.fr-par.scaleway.com + ``` + + + +3. Generate a credentials file using the following command: + ``` + aws configure + ``` + +4. Open the `~/.aws/credentials` file you just created, and add the access key and secret key you saved when you generated your [credentials](/queues/how-to/create-credentials/): + ``` + [queues] + aws_access_key_id= + aws_secret_access_key= + ``` + + If you have other profiles, you can add a block to indicate their credentials too: + ``` + [topics_events] + aws_access_key_id= + aws_secret_access_key= + + [aws] + aws_access_key_id= + aws_secret_access_key= + ``` + +5. Test that everything is set up correctly with the following command: + ``` + aws queues list-queues + ``` + + Use the `--profile` option if you want to test it using a different profile. + + + Check out our dedicated documentation to find more common commands for getting started with the AWS CLI. The [Queues guide](/queues/api-cli/sqs-sns-aws-cli/#getting-started-with-scaleway-queues) walks you through creating and listing queues, sending messages to queues, and more. + diff --git a/pages/queues/api-cli/index.mdx b/pages/queues/api-cli/index.mdx new file mode 100644 index 0000000000..f81cd2808b --- /dev/null +++ b/pages/queues/api-cli/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: Queues - API/CLI Documentation + description: Queues API/CLI Documentation +content: + h1: Queues - API/CLI Documentation + paragraph: Queues API/CLI Documentation +--- diff --git a/pages/queues/api-cli/python-node-queues.mdx b/pages/queues/api-cli/python-node-queues.mdx new file mode 100644 index 0000000000..5c016274f4 --- /dev/null +++ b/pages/queues/api-cli/python-node-queues.mdx @@ -0,0 +1,230 @@ +--- +meta: + title: Using Go, Python or Node.js with Scaleway Queues + description: This page explains how to use Go, Python or Node.js with Scaleway Queues and provides code samples +content: + h1: Using Go, Python or Node.js with Scaleway Queues + paragraph: This page explains how to use Go, Python or Node.js with Scaleway Queues and provides code samples +tags: messaging boto3 python nodejs sqs go +categories: + - messaging +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +AWS provides a number of SDKs (**S**oftware **D**evelopment **K**its) which provide language-specific APIs for AWS services, including [SQS](/queues/concepts#sqs), which is the protocol Scaleway Queues is based on. + +- AWS provides a dedicated [SDK for Go](https://aws.amazon.com/sdk-for-go/). +- The [AWS SDK for Python](https://aws.amazon.com/sdk-for-python/) is Boto3 +- For Node.js, use the [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/), which can be [installed from NPM](https://github.com/aws/aws-sdk-js-v3#getting-started) + +This guide provides code samples to show you how to start using these SDKs with Scaleway Queues. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/queues/how-to/create-credentials/) for Scaleway Queues +- Installed the relevant AWS SDK [for Go](https://aws.amazon.com/sdk-for-go/), [Python](https://aws.amazon.com/sdk-for-python/) and/or [JavaScript](https://aws.amazon.com/sdk-for-javascript/) + +## Go + +### Connect to Queues (Go) + +The following code sample shows how to connect to Scaleway Queues: + +```go +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/sqs" +) + +func main() { + awsSession := session.Must(session.NewSession(&aws.Config{ + Region: aws.String("fr-par"), + Endpoint: aws.String("http://sqs.mnq.fr-par.scaleway.com"), + Credentials: credentials.NewStaticCredentials(AwsAccessKey, AwsSecretKey, ""), + })) + + awsSqs := sqs.New(awsSession) + + [...] +} +``` + + + + The `Endpoint` for Scaleway Queues is `https://sqs.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/queues/how-to/create-credentials/) for Queues. + + + +Once you are connected, you can use any functions available with the SDK. However, we recommend that you check they are [supported by Scaleway Queues](/queues/reference-content/sqs-support/). See the [official documentation](https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sqs) for more details on using the SDK, or read on to see some examples. + +### Create queue (Go) + +```go +createQueueResponse, _ := awsSqs.CreateQueue(&sqs.CreateQueueInput{ + QueueName: aws.String("my-test-queue"), +}) +fmt.Println(*createQueueResponse.QueueUrl) +``` + +### Send messages to this queue (Go) + +```go +for i := 0; i < 10; i++ { + _, _ = awsSqs.SendMessage(&sqs.SendMessageInput{ + MessageBody: aws.String(fmt.Sprintf("Hello World: %d", i)), + QueueUrl: createQueueResponse.QueueUrl, + }) +} +``` + +### Receive messages from this queue (Go) + +```go +for { + receiveMessageResponse, err := awsSqs.ReceiveMessage(&sqs.ReceiveMessageInput{ + QueueUrl: createQueueResponse.QueueUrl, + }) + if err != nil || len(receiveMessageResponse.Messages) == 0 { + break + } + for _, m := range receiveMessageResponse.Messages { + fmt.Println(*m.Body) + } +} +``` + +## Python + +### Connect to Queues (Python) + +The following code sample shows how to connect to Scaleway Queues using Boto3's `resource()`. It is also possible to use `client()`, but `resource()` is more pythonesque: + +```python +sqs = boto3.resource('sqs', + endpoint_url=[], + aws_access_key_id=[], + aws_secret_access_key=[], + region_name='fr-par') +``` + + + The `endpoint_url` for Scaleway Queues is `https://sqs.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/queues/how-to/create-credentials/) for Queues. + + +Once connected, you can use any functions available with the SDK - just check that they are [supported by Scaleway Queues](/queues/reference-content/sqs-support/). See the [official documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) for more details, or read on to see some examples. + +### Create queue (Python) + +```python +# Create the queue. This returns an SQS.Queue instance +queue = sqs.create_queue(QueueName='my test queue') + +# You can now access identifiers and attributes +print(queue.url) +print(queue.attributes) +``` + +### Send messages to this queue (Python) + +```python +for i in range (0,10): + queue.send_message(MessageBody="Hello World: "+str(i)) +``` + +### Receive messages from this queue (Python) + +```python +for message in queue.receive_messages(): + print(message.body) + message.delete() +``` + +## Node.js + +### Connect to Scaleway Queues (NodeJS) + +Here, we use the `@aws-sdk/client-sqs` module, which is the latest SDK available. +Import the required module: +```javascript +const { SQSClient, SendMessageCommand, CreateQueueCommand, ReceiveMessageCommand } = require("@aws-sdk/client-sqs"); +// If you use ES6 syntax +// import { SQSClient, SendMessageCommand, CreateQueueCommand, ReceiveMessageCommand } from "@aws-sdk/client-sqs"; +``` + +The following code sample shows how to connect to Scaleway Queues: + +```javascript +var sqsClient = new SQSClient({ + credentials: { + accessKeyId: SQS_ACCESS_KEY_ID, + secretAccessKey: SQS_ACCESS_KEY + }, + region: "par", + endpoint: SQS_ENDPOINT, +}) +``` + + + The `endpoint_url` for Scaleway Queues is `https://sqs.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/queues/how-to/create-credentials/) for Scaleway Queues. + + +Once connected, you can use any of the SDK's functions as long as they are [supported by Scaleway Queues](/queues/reference-content/sqs-support/). Refer to AWS's [official documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html) for more information, or read on to see some examples. + +### Create queue (NodeJS) + +```javascript +const createQueueCommand = new CreateQueueCommand({ + QueueName: 'SQS_QUEUE_NAME', + Attributes: { + 'MessageRetentionPeriod': '86400' + } + }); + +const createQueue = await sqsClient.send(createQueueCommand); +console.log(createQueue.QueueUrl); +``` + +You can find all available parameters for createQueue in the AWS documentation [here](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#createQueue-property). + +### Send messages to this queue (NodeJS) + +The following code sample demonstrates how to send a message with some `MessageAttributes`: + +```javascript +const sendMessageCommand = new SendMessageCommand({ + MessageAttributes: { + "Name": { + DataType: "String", + StringValue: "John" + }}, + MessageBody: "This is a test message to John", + QueueUrl: "SQS_QUEUE_URL" + }); + +const sendMessage = await sqsClient.send(sendMessageCommand) +console.log("Success", sendMessage.MessageId); +}); +``` + +### Receive messages from this queue (NodeJS) + +The following code sample shows how to read messages from a queue, and then delete them: + +```javascript +var queueURL= "SQS_QUEUE_URL"; + +const receiveMessageCommand = new ReceiveMessageCommand({ + MaxNumberOfMessages: 10, + QueueUrl: queueURL, + VisibilityTimeout: 20 +}); + +const receiveMessage = await sqsClient.send(receiveMessageCommand); +console.log(receiveMessage); +``` diff --git a/pages/queues/api-cli/queues-aws-cli.mdx b/pages/queues/api-cli/queues-aws-cli.mdx new file mode 100644 index 0000000000..2d7bdb15a8 --- /dev/null +++ b/pages/queues/api-cli/queues-aws-cli.mdx @@ -0,0 +1,68 @@ +--- +meta: + title: Using Scaleway Queues with the AWS-CLI + description: This page explains how to use Scaleway Queues with the AWS CLI +content: + h1: Using Scaleway Queues with the AWS-CLI + paragraph: This page explains how to use Scaleway Queues for creating queues and sending and receiving messages with the AWS CLI +tags: messaging sqs aws-cli cli aws queues messages +categories: + - messaging +dates: + validation: 2025-04-02 + posted: 2025-04-02 +--- + +The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. Once you have [connected Scaleway Queues to the AWS-CLI](/queues/api-cli/connect-aws-cli/), you can start creating, listing and managing your queues, sending messages and much more, all from your command line. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/queues/how-to/create-credentials/) for Queues +- [Connected Queues to the AWS-CLI](/queues/api-cli/connect-aws-cli/) +- [jq](https://stedolan.github.io/jq/download/) installed on your machine + +## Getting started with Scaleway Queues + +1. Use the following command to create a queue: + + ```sh + aws sqs create-queue --queue-name MyQueue | tee my-queue.json + ``` + +2. Use the following command to list existing queues: + + ```sh + aws sqs list-queues + ``` + +3. Use the following command to send messages to a queue: + + ```sh + aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Hello world!" + + aws sqs send-message --queue-url $(jq -r .QueueUrl my-queue.json) --message-body "Second Message." + ``` + +4. Use the following command to receive messages: + + ```sh + aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json + + aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message2.json + ``` + +5. Use the following command to delete messages. This is necessary as once a message has been processed on your consumer side (typically by a worker), it will be re-queued unless it is explicitly deleted. + + ```sh + aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) + + aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message2.json) + ``` + +6. Use the following command to delete the queue itself: + + ```sh + aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) + ``` \ No newline at end of file diff --git a/pages/queues/concepts.mdx b/pages/queues/concepts.mdx new file mode 100644 index 0000000000..7a114025c8 --- /dev/null +++ b/pages/queues/concepts.mdx @@ -0,0 +1,84 @@ +--- +meta: + title: Queues - Concepts + description: Understand the core concepts of Scaleway Queues. Explore fundamental principles for efficient message handling and service optimization. +content: + h1: Queues - Concepts + paragraph: Understand the core concepts of Scaleway Queues. Explore fundamental principles for efficient message handling and service optimization. +categories: + - +tags: messaging queuing concepts queues +dates: + validation: 2025-04-02 + posted: 2025-04-02 +--- + +## Content-based deduplication + +Content-based deduplication is a setting available for [FIFO](#fifo) queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. Read more in our dedicated documentation on [creating queues](/queues/how-to/create-manage-queues/). + +## Credentials + +Credentials give services and platforms access to Scaleway Queues, enabling them to connect to the host system. Credentials for Scaleway Queues define whether the bearer is allowed to write, and/or read, and/or manage queues. Refer to our [credentials documentation](/queues/how-to/create-credentials/) for more information. + +## Dead-letter queue + +A **D**ead-**l**etter **q**ueue (DLQ), or **undelivered-message queue**, receives and holds messages that cannot be delivered to their destination queues. A DLQ must be of the same type (FIFO or Standard), in the same Project and in the same region as the queue(s) it serves. Each DLQ also has an associated parameter: [maximum receive count](#maximum-receive-count). A single queue can serve as dead-letter queue to multiple source queues. + +If you designate a queue as a DLQ and its [storage quota](/organizations-and-projects/additional-content/organization-quotas/#queues) is reached, messages will not be re-driven to the DLQ until enough free space is available again. If your DLQ is at its full quota, free up space by receiving and deleting messages from any queue in your Project. + +## FIFO + +FIFO stands for **F**irst **I**n **F**irst **O**ut, and represents a type of queue where the exact order of messages is preserved, and duplicate messages are not tolerated. As well as these specificities, FIFO queues support all the same features as the [Standard](#standard) queue type. Consider using FIFO queues for any use cases where the order of messages is critical, such as e-commerce order management systems, systems where one action should not happen until another has been completed, or first-come-first-served ticketing systems. + +## Message broker + +A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. Scaleway Queues is a message broker tool based on the AWS SQS messaging system. + +## Maximum receive count + +The maximum receive count is a setting that can be configured for a [dead-letter queue](#dead-letter-queue). It defines how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. This value must be between 1 and 1,000. + +## Message retention period + +The message retention period is a setting that can be configured for a queue. It represents the length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. Read more in our dedicated documentation on [creating queues](/queues/how-to/create-manage-queues/). + +## Messaging and Queuing + +Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](/nats/), [Queues](#queues), and [Topics and Events](/topics-and-events/). + +## Queue + +Creating a queue with [Scaleway Queues](#scaleway-queues) facilitates asynchronous communication between different microservices, applications, and platforms. You can create a queue, configure its delivery and message parameters, and then start sending messages to it. Messages are stored in the queue until they are processed and delivered, and deleted once consumed. [Read more about creating and configuring queues](/queues/how-to/create-manage-queues/), or check our [tutorial on creating a serverless scraping architecture using a queue](/tutorials/create-serverless-scraping/) to get an idea of what you can do with message queues. + +## Queue types + +When creating queues with Scaleway Queues, two queue types are available. [Standard](#standard) queues provide at-least-once delivery, while [FIFO](#fifo) queues offer first-in-first-out delivery, and (unlike Standard queues) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO queue types. Find out more about creating queues with our [dedicated documentation](/queues/how-to/create-manage-queues/). + +## Queuing + +The message queuing model used by Scaleway Queues. It provides a pattern or framework for sending messages, which contrasts with the publish/subscribe model used by NATS and Topics and Events. Queuing is a form of asynchronous service-to-service communication. Whereas with the publish/subscribe model multiple subscribers can receive each message, with the queuing model, messages have just one destination. Messages are stored in the queue until they are processed and delivered, and they are deleted once consumed. This model is used in serverless and microservices architectures. + +## Queue volume + +Queue volume is one of the factors affecting the billing of Scaleway Queues. Queue volume is calculated as the number of messages in a queue, multiplied by the message size. Or, the sum of the size of all messages in a queue. + +## Region + +Scaleway Queues is available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available. + +## Scaleway Queues + +Scaleway Queues is a product for creating managed messaging queues based on AWS's [SQS](#sqs) protocol. It allows you to implement your messaging queues without the hassle of managing the infrastructure, scaling or updates. + +## SQS + +The Scaleway Queues product is based on the AWS SQS protocol. **S**imple **Q**ueue **S**ervice, or SQS, is a distributed message [queuing](#queuing) service that supports programmatic sending of messages via web service applications. + +## Standard + +Standard-type queues and topics represent the default queue/topic type, and offer an at-least-once message delivery system. Unlike [FIFO](#fifo) queues and topics, standard queues provide only best-effort attempts to deliver messages in order. At-least-once delivery means that it is possible under rare circumstances that the same message may be received more than once. + +## Visibility timeout + +Visibility timeout is a setting that can be configured for a Scaleway queue. It represents the length of time (in seconds) during which, after a message is received, the queue hides it, so it cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Read more in our dedicated documentation on [creating queues](/queues/how-to/create-manage-queues/). diff --git a/pages/queues/faq.mdx b/pages/queues/faq.mdx new file mode 100644 index 0000000000..0a8ec8ec05 --- /dev/null +++ b/pages/queues/faq.mdx @@ -0,0 +1,30 @@ +--- +meta: + title: Queues FAQ + description: Discover Scaleway Queues, and get answers to common questions about the capabilities of the product, how to manage your queues, billing and more. +content: + h1: Queues FAQ + paragraph: Discover Scaleway Queues, and get answers to common questions about the capabilities of the product, how to manage your queues, billing and more. +dates: + validation: 2025-04-02 + posted: 2025-04-02 +categories: + - serverless +productIcon: SqsProductIcon +--- + +## What is Scaleway Queues? + +Scaleway Queues is a product for creating managed message queues based on AWS's SQS protocol. It allows you to implement your message queues without the hassle of managing the infrastructure, scaling or updates. Message queues are ideal for facilitating asynchronous job processing and communication between microservices. + +## What is SQS? + +**S**imple **Q**ueue **S**ervice, or SQS, is AWS's distributed message [queuing](#queuing) protocol, that supports programmatic sending of messages via web service applications. + +## Is the Scaleway Queues gateway compatible with my application, framework or tool? + +We currently implement the API endpoints listed [here](/queues/reference-content/sqs-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including [KEDA](https://keda.sh/) and [Symfony](https://symfony.com/). Note that you need to specify both Regions and URL to ensure compatibility. + +## How is Scaleway Queues billed? + +Billing is based on [queue volume](/queues/concepts/#queue-volume) - the combined size of the messages travelling through queues. For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/queues/how-to/create-credentials.mdx b/pages/queues/how-to/create-credentials.mdx new file mode 100644 index 0000000000..c012078bc7 --- /dev/null +++ b/pages/queues/how-to/create-credentials.mdx @@ -0,0 +1,49 @@ +--- +meta: + title: How to create credentials for Scaleway Queues + description: Learn how to create credentials for Scaleway Queues. Securely manage access and ensure seamless integration with this step-by-step guide. +content: + h1: How to create credentials for Scaleway Queues + paragraph: Learn how to create credentials for Scaleway Queues. Securely manage access and ensure seamless integration with this step-by-step guide. +tags: credentials queues messaging queuing key token +categories: + - serverless +dates: + validation: 2025-04-02 + posted: 2025-04-02 +--- + +This page shows how to create [credentials](/queues/concepts/#credentials) for Scaleway Queues. Credentials give their bearer (e.g. services and platforms) access to your messaging queue service. + +You can create multiple sets of credentials for Scaleway Queues. Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the [region](/queues/concepts/#region) they are scoped to. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. \ No newline at end of file diff --git a/pages/queues/how-to/create-manage-queues.mdx b/pages/queues/how-to/create-manage-queues.mdx new file mode 100644 index 0000000000..6344c6d39d --- /dev/null +++ b/pages/queues/how-to/create-manage-queues.mdx @@ -0,0 +1,102 @@ +--- +meta: + title: How to create and manage queues + description: Learn to create and manage queues with Scaleway Queues. This guide helps you efficiently handle messaging queues for seamless operations. +content: + h1: How to create and manage queues + paragraph: Learn to create and manage queues with Scaleway Queues. This guide helps you efficiently handle messaging queues for seamless operations. +tags: messaging queuing queues sqs +categories: + - serverless +dates: + validation: 2025-04-02 + posted: 2022-08-11 +--- + +This page shows how to create and manage your queues with [Scaleway Queues](/queues/concepts/#queue) (formerly part of the **Messaging and Queuing** product). + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a queue + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create queue**. The queue creation wizard displays. + + + +3. Select the [region](/queues/concepts/#region) in which you want to create the queue. + +4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose your **Queue type**, from one of the following: + - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. + - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. + +6. Configure your queue's **parameters**. The following parameters can be defined: + - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). + - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 290 600 seconds (14 days). + - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. + - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. + - **Dead-letter queue**: Designate another queue to [receive undelivered messages](/queues/concepts/#dead-letter-queue) from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count**: how many times a message can be received by consumers from the source queue before being moved to the dead-letter queue. + +7. Click **Create queue** to finish. + +You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. + +Go further by clicking on the queue's name to access its **Settings** page and see additional information such as its ARN (Amazon Resource Name) and configuration parameters. + + +Remember that you need to [create credentials](/queues/how-to/create-credentials/) in order to access your queues from an API or CLI. Sending messages to queues requires that credentials have the `can_publish` permission, while receiving messages from queues requires the `can_receive` permission. You can create separate credentials if you need to isolate these two roles in your application. + + +## How to modify a queue's configuration + +You can modify the visibility timeout, message retention period and maximum message size of a queue after creation. You can also modify the content based deduplication settings for FIFO queues. However, you cannot change a queue's name or type after creation. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/queues/concepts/#region) of the queue you want to modify. + +3. Click the queue you wish to modify. The queue's **Settings** page displays: + + + +4. Modify the visibility timeout, message retention period, maximum message size, dead-letter queue settings, and (for FIFO queues) content-based deduplication values as you wish. + +5. Click **Save**. + +## How to purge a queue of messages + +You can use the **Purge** feature to delete all messages from a queue. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/queues/concepts/#region) of the queue you want to configure. + +3. Either: + - Click the queue you wish to purge. The queue's **Settings** page displays. Click the **Purge** button in the top right corner. + - Click the icon next to the queue you wish to purge, then select **Purge** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete all your queued messages. + +4. Type **PURGE** and click **Purge queue**. + +## How to delete a queue + +When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/queues/concepts/#region) of the queue you want to configure. + +3. Either: + - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. + - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. + +4. Type **DELETE** and click **Delete queue**. \ No newline at end of file diff --git a/pages/queues/how-to/index.mdx b/pages/queues/how-to/index.mdx new file mode 100644 index 0000000000..3a24970e46 --- /dev/null +++ b/pages/queues/how-to/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: Queues - How Tos + description: Queues How Tos +content: + h1: Queues - How Tos + paragraph: Queues How Tos +--- diff --git a/pages/queues/how-to/manage-credentials.mdx b/pages/queues/how-to/manage-credentials.mdx new file mode 100644 index 0000000000..6e2a01d84a --- /dev/null +++ b/pages/queues/how-to/manage-credentials.mdx @@ -0,0 +1,58 @@ +--- +meta: + title: How to manage credentials for Scaleway Queues + description: Master managing credentials for Scaleway Queues. Follow this guide to securely update, rotate, and control access to your messaging services. +content: + h1: How to manage credentials for Scaleway Queues + paragraph: Master managing credentials for Scaleway Queues. Follow this guide to securely update, rotate, and control access to your messaging services. +dates: + validation: 2025-04-03 + posted: 2025-04-03 +tags: manage credentials messaging queuing permissions update revoke +categories: + - serverless +--- + +Credentials give their bearer (e.g. services and platforms) access to your Queues service. + +This page shows how to manage [credentials](/queues/concepts/#credentials) for Scaleway Queues. Credentials can be updated to change their permissions, or revoked entirely. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/queues/how-to/create-credentials/) + +## How to update Queues credentials + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/queues/concepts/#region) containing the credentials you want to update. + +4. Click the button next to the credentials you want to update, and select **Update credentials**. A pop-up displays, such as the one below for Queues: + + + +5. Make the required updates to your credentials. You can modify the name, and the permissions. + +6. Click **Update credentials**. + + The credentials are updated and you are returned to the product's **Credentials** listing. + +## How to revoke Queues credentials + +1. Click **Queues**in the **Serverless** section of the Scaleway console side menu. + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/queues/concepts/#region) containing the credentials you want to revoke. + +4. Click the button next to the credentials you want to revoke and select **Revoke**. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +5. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the product's **Credentials** listing. \ No newline at end of file diff --git a/pages/queues/how-to/monitor-queues-cockpit.mdx b/pages/queues/how-to/monitor-queues-cockpit.mdx new file mode 100644 index 0000000000..0b42611856 --- /dev/null +++ b/pages/queues/how-to/monitor-queues-cockpit.mdx @@ -0,0 +1,42 @@ +--- +meta: + title: How to monitor Queues with Scaleway Cockpit + description: Monitor your Queues services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +content: + h1: How to monitor Queues with Scaleway Cockpit + paragraph: Monitor your Queues services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +tags: messaging queuing queues cockpit metrics observability +categories: + - serverless +dates: + validation: 2025-04-03 + posted: 2025-04-03 +--- + +You can view metrics for your Queues services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: + +1. Generate your Grafana credentials +2. Access the product's metrics dashboard + +These steps are described below. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to generate Grafana credentials + +To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). + +## How to access your Queues dashboard and view your metrics + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **Metrics** tab. + +3. Click **Open Grafana metrics dashboard**. + +4. Enter your Grafana username and password to log in. + + You are directed to the Queues dashboard, where you can view all your metrics. \ No newline at end of file diff --git a/pages/queues/index.mdx b/pages/queues/index.mdx new file mode 100644 index 0000000000..e33c4d05ff --- /dev/null +++ b/pages/queues/index.mdx @@ -0,0 +1,73 @@ +--- +meta: + title: Queues Documentation + description: Explore Scaleway Queues. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. +--- + + + +## Getting Started + + + + + + + + + +## Tutorials + + + + + + + + +## Changelog + + \ No newline at end of file diff --git a/pages/queues/quickstart.mdx b/pages/queues/quickstart.mdx new file mode 100644 index 0000000000..04ac7b32e3 --- /dev/null +++ b/pages/queues/quickstart.mdx @@ -0,0 +1,97 @@ +--- +meta: + title: Queues - Quickstart + description: Get started with Scaleway Queues. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +content: + h1: Queues - Quickstart + paragraph: Get started with Scaleway Queues. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +dates: + validation: 2025-04-01 + posted: 2025-04-01 +tags: messaging queuing queueing quickstart messaging-and-queuing sqs message-broker queues +categories: + - serverless +--- + +Scaleway Queues is a managed message broker service that allows you to transfer messages between different microservices and platforms via queues. This enables decoupled applications to "talk" to each other effectively even if they are not otherwise compatible. Scaleway Queues enables and simplifies microservices application development and allows you to build highly scalable, reliable, distributed applications. + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create credentials for Queues + +Credentials for Queues are granular: you can define the level of access that they should give. Credentials give the specified level of access to all queues that you create in the region they are scoped to. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. A list of your queues displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +## How to create queues + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create queue**. The queue creation wizard displays. + + + +3. Select the [region](/queues/concepts/#region) in which you want to create the queue. + +4. Enter a **name** for your queue. The name must be no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose your **Queue type**, from one of the following: + - **Standard**: Standard Queues ensure at-least-once delivery. The exact order of messages in the queue is not preserved. + - **FIFO**: FIFO Queues (**F**irst **In** **F**irst **O**ut) preserves the exact ordering of messages. + +6. Configure your queue's **parameters**. The following parameters can be defined: + - **Visibility timeout**: The length of time (in seconds) during which, after a message is received, it is hidden and cannot be received again by the same or other consumers. This is useful as the queue itself does not automatically delete messages once they are received, and so prevents consumers from receiving the same message many times before they have finished processing it. Therefore, the value set here should be informed by the expected length of time it will take consumers to process messages. The default value is 30 seconds. The value must be between 1 second and 43 200 seconds (12 hours). + - **Message retention period**: The length of time (in seconds) that messages are kept in the queue before being deleted. Setting a longer message retention period allows for a longer interval between a message being sent and it being received. The default value is 60 seconds. The value must be between 60 seconds and 1 209 600 seconds (14 days). + - **Maximum message size**: The maximum size (in kilobytes) of a message that can be sent to the queue. Messages greater than the defined size will be rejected. The default value is 256 KB. The value must be between 1 KB and 256 KB. + - **Content Based Deduplication**: This setting is only available for FIFO queues. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. + - **Dead-letter queue**: Designate another queue to receive undelivered messages from this queue. If you select this option, you are prompted to select an existing queue as dead-letter queue. This queue must be of the same type, in the same Project and in the same region as the queue you are creating. You must also enter a value for the **maximum receive count** (how many times a message can be received from the source queue before being moved to the dead-letter queue). + +7. Click **Create queue** to finish. + +You are returned to the **Queues** tab, where your newly-created queue now displays. The queue's URL is also displayed here, for use in your API/CLI operations. + +## How to send and receive messages + +All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/queues/reference-content/sqs-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. + +## How to delete a queue + +When you no longer want a queue, you can delete it. This action is irreversible and deletes the queue along with any queued messages. + +1. Click **Queues** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/queues/concepts/#region) of the queue you want to configure. + +3. Either: + - Click the queue you wish to delete. The queue's **Settings** page displays. Click the **Delete queue** button in the bottom right corner. + - Click the icon next to the queue you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the queue and all your queued messages. + +4. Type **DELETE** and click **Delete queue**. \ No newline at end of file diff --git a/pages/queues/reference-content/index.mdx b/pages/queues/reference-content/index.mdx new file mode 100644 index 0000000000..005f2eb239 --- /dev/null +++ b/pages/queues/reference-content/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: Queues - Additional content + description: Queues additional content +content: + h1: Queues - Additional content + paragraph: Queues additional content +--- diff --git a/pages/queues/reference-content/limitations.mdx b/pages/queues/reference-content/limitations.mdx new file mode 100644 index 0000000000..f4808c382f --- /dev/null +++ b/pages/queues/reference-content/limitations.mdx @@ -0,0 +1,22 @@ +--- +meta: + title: Queues Limitations + description: Learn about the current limitations of Scaleway Queues +content: + h1: Queues Limitations + paragraph: Learn about the current limitations of Scaleway Queues +tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics max-queues visibility-timeout +dates: + validation: 2025-04-02 + posted: 2025-04-02 +categories: + - serverless +--- + +## Usage limits + +For the usage limits that apply when using Scaleway Queues, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues and consumers/subscribers, as well as to message retention duration and storage. + +## VPC + +Queues is not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/queues/reference-content/queues-overview.mdx b/pages/queues/reference-content/queues-overview.mdx new file mode 100644 index 0000000000..47aaea736c --- /dev/null +++ b/pages/queues/reference-content/queues-overview.mdx @@ -0,0 +1,57 @@ +--- +meta: + title: Scaleway Queues Overview + description: Learn about the Scaleway Queues messaging system +content: + h1: Scaleway Queues Overview + paragraph: Learn about the Scaleway Queues messaging system +tags: messaging sqs aws queuing publish-subscribe message-queue +categories: + - serverless +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +## What is Scaleway Queues? + +Scaleway Queues is a managed message queuing service that enables decoupling of components within distributed applications. It allows applications to send, queue, store and receive messages between each other asynchronously. Scaleway Queues leverages the SQS protocol. + +## What is SQS? + +SQS is a managed messaging service developed by AWS and leveraged by Scaleway Queues. + +SQS (Simple Queue Service) became generally available in 2006. It is a highly scalable [queuing](/queues/concepts#queuing) service that facilitates the decoupling of software systems. Scaleway Queues provides a gateway that enables you to connect your existing applications without having to significantly modify your code baseline. + + + Some SQS features are not yet supported. Refer to our [dedicated documentation page](/queues/reference-content/sqs-support/) for more information. + + +## Credentials + +You must [create credentials](/queues/how-to/create-credentials/) to give your applications permission to connect to the Scaleway Queues service. + +Credentials are scoped to your Scaleway Queues service at [Project](/organizations-and-projects/concepts/#project)-level. You can choose to give each set of credentials the required level of permissions: + + - **Read**: receive messages from queues and topics. + - **Write**: send messages to queues and publish in topics. + - **Manage**: create or edit resources (such as queues and topics). + +## Creating queues + +You can [create queues](/queues/how-to/create-manage-queues/) via the Scaleway console. You can choose to create either a Standard or FIFO queue, and tweak parameters such as visibility timeout, message retention period, maximum message size and content based deduplication. + +## Further actions + +All further actions such as sending messages can be done using the AWS CLI or AWS SDKs. Check out our documentation to help you get started with the [AWS CLI](/queues/api-cli/connect-aws-cli/) or [AWS SDKs](/queues/api-cli/python-node-sqs/). + +## Queues resources + +The following resources may be helpful: + + - [How to create a serverless scraping architecture, with Scaleway Queues, Serverless Functions and Managed Databases](/tutorials/create-serverless-scraping/) + - [Official SQS Documentation](https://docs.aws.amazon.com/sqs/index.html) + - Further information on supported API features: + - [SQS](/queues/reference-content/queues-support/) + - [Official AWS CLI Documentation](https://aws.amazon.com/cli/) + - [Official AWS SDK Documentation](https://aws.amazon.com/developer/tools/) \ No newline at end of file diff --git a/pages/queues/reference-content/queues-support.mdx b/pages/queues/reference-content/queues-support.mdx new file mode 100644 index 0000000000..c7f310df70 --- /dev/null +++ b/pages/queues/reference-content/queues-support.mdx @@ -0,0 +1,291 @@ +--- +meta: + title: Scaleway Queues - Supported Actions + description: Discover which SQS AWS API actions are supported by Scaleway Queues +content: + h1: Scaleway Queues - Supported Actions + paragraph: Discover which SQS AWS API actions are supported by Scaleway Queues +tags: messaging supported actions sqs aws api +categories: + - serverless +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +This page lists all actions described in the AWS SQS documentation, and states whether they are supported by Scaleway Queues. + +- **Y** means the parameter is fully supported +- **N** means the parameter is not supported +- **P** means the parameter is partially supported (see associated comments for more details) + +## CreateQueue + +CreateQueue requires the `CanManage` permission. + +### CreateQueue Request + +| Parameters | Support | Comments | +|:----------------|:---------:|:--------------------------------------------------------------------------------------------------| +| Attribute (map) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | +| QueueName | **Y** | See AWS documentation for naming conventions (FIFO queues are supported) | +| Tag | **N** | | + +### CreateQueue Response + +| Elements | Support | Comments | +|:-----------|:---------:|:-----------| +| QueueUrl | **Y** | | + +## ReceiveMessage + +ReceiveMessage requires the `CanReceive` permission. + +### ReceiveMessage Request + +| Parameters | Support | Comments | +|:------------------------|:---------:|:------------------------------------------------------------------------------------------------------| +| AttributeName.N (array) | **P** | See supported attributes in the [SQS Message Attributes](#sqs-api-support-message-attributes) section | +| MaxNumberOfMessages | **Y** | | +| MessageAttributeName.N | **Y** | | +| QueueUrl | **Y** | | +| ReceiveRequestAttemptId | **N** | | +| VisibilityTimeout | **N** | | +| WaitTimeSeconds | **Y** | | + +### ReceiveMessage Response + +| Elements | Support | Comments | +|:---------------------------------|:---------:|:------------------------------------------------------------------------------------------------------| +| Message.N.Attribute | **P** | See supported attributes in the [SQS Message Attributes](#sqs-api-support-message-attributes) section | +| Message.N.Body | **Y** | | +| Message.N.MD5OfBody | **Y** | | +| Message.N.MD5OfMessageAttributes | **Y** | | +| Message.N.MessageAttribute | **Y** | | +| Message.N.MessageId | **Y** | | +| Message.N.ReceiptHandle | **Y** | | + +## SendMessage + +SendMessage requires the `CanPublish` permission. + +### SendMessage Request + +| Parameters | Support | Comments | +|:-----------------------|:---------:|:-----------| +| DelaySeconds | **N** | | +| MessageAttribute (map) | **Y** | | +| MessageBody | **Y** | | +| MessageDeduplicationId | **Y** | | +| MessageGroupId | **N** | | +| MessageSystemAttribute | **N** | | +| QueueUrl | **Y** | | + +### SendMessage Response + +| Elements | Support | Comments | +|:-----------------------------|:---------:|:-----------| +| MD5OfMessageAttributes | **Y** | | +| MD5OfMessageBody | **Y** | | +| MD5OfMessageSystemAttributes | **N** | | +| MessageId | **Y** | | +| SequenceNumber | **Y** | | + +## SendMessageBatch + +SendMessageBatch requires the `CanPublish` permission. + +### SendMessageBatch Request + +| Parameters | Support | Comments | +|:---------------------------------------|:---------:|:-------------------------------------------------------------------------------------------------------------------------| +| QueueUrl | **Y** | | +| SendMessageBatchRequestEntry.N (array) | **P** | As with the SendMessage action, the DelaySeconds, MessageGroupId and MessageSystemAttribute parameters are not supported | + +### SendMessageBatch Response + +| Elements | Support | Comments | +|:--------------------------------------|:---------:|:-------------------------------------------------------------| +| BatchResultErrorEntry.N (array) | **Y** | | +| SendMessageBatchResultEntry.N (array) | **P** | All fields are supported except MD5OfMessageSystemAttributes | + +## ListQueues + +ListQueues requires the `CanManage` permission. + +### ListQueues Request + +| Parameters | Support | Comments | +|:----------------|:---------:|:-----------| +| MaxResults | **N** | | +| NextToken | **N** | | +| QueueNamePrefix | **Y** | | + +### ListQueues Response + +| Elements | Support | Comments | +|:-------------------|:---------:|:-----------| +| NextToken | **N** | | +| QueueUrl.N (array) | **Y** | | + +## DeleteMessage + +DeleteMessage requires the `CanReceive` permission. + +### DeleteMessage Request + +| Parameters | Support | Comments | +|:--------------|:---------:|:-----------| +| QueueUrl | **Y** | | +| ReceiptHandle | **Y** | | + +## DeleteMessageBatch + +DeleteMessageBatch requires the `CanReceive` permission. + +### DeleteMessageBatch Request + +| Parameters | Support | Comments | +|:-----------------------------------------|:---------:|:-----------| +| DeleteMessageBatchRequestEntry.N (array) | **Y** | | +| QueueUrl | **Y** | | + +### DeleteMessageBatch Response + +| Elements | Support | Comments | +|:----------------------------------------|:---------:|:-----------| +| BatchResultErrorEntry.N (array) | **Y** | | +| DeleteMessageBatchResultEntry.N (array) | **Y** | | + +## DeleteQueue + +DeleteQueue requires the `CanManage` permission. + +### DeleteQueue Request + +| Parameters | Support | Comments | +|:-------------|:---------:|:-----------| +| QueueUrl | **Y** | | + +## GetQueueUrl + +GetQueueUrl requires the `CanPublish, CanReceive or CanManage` permission. + +### GetQueueUrl Request + +| Parameters | Support | Comments | +|:-----------------------|:---------:|:-----------| +| QueueName | **Y** | | +| QueueOwnerAWSAccountId | **Y** | | + +### GetQueueUrl Response + +| Elements | Support | Comments | +|:-----------|:---------:|:-----------| +| QueueUrl | **Y** | | + +## GetQueueAttributes + +GetQueueAttributes requires the `CanPublish`, `CanReceive` or `CanManage` permission. + +### GetQueueAttributes Request + +| Parameters | Support | Comments | +|:------------------------|:---------:|:--------------------------------------------------------------------------------------------------| +| AttributeName.N (array) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | +| QueueUrl | **Y** | | + +### GetQueueAttributes Response + +| Elements | Support | Comments | +|:----------------|:---------:|:--------------------------------------------------------------------------------------------------| +| Attribute (map) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | + +## SetQueueAttributes + +SetQueueAttributes requires the `CanManage` permission. + +### SetQueueAttributes Request + +| Parameters | Support | Comments | +|:----------------|:---------:|:--------------------------------------------------------------------------------------------------| +| Attribute (map) | **P** | See supported attributes in the [SQS Queue Attributes](#sqs-api-support-queue-attributes) section | +| QueueUrl | **Y** | | + +## ChangeMessageVisibility + +ChangeMessageVisibility requires the `CanReceive` or `CanManage` permission. + +### ChangeMessageVisibility Request + +| Parameters | Support | Comments | +|:------------------|:---------:|:----------------------------------------------------------------| +| QueueUrl | **Y** | | +| ReceiptHandle | **Y** | | +| VisibilityTimeout | **P** | Only '0' and the current queue visibility timeout are supported | + +## ChangeMessageVisibilityBatch + +ChangeMessageVisibilityBatch requires the `CanReceive` or `CanManage` permission. + +### ChangeMessageVisibilityBatch Request + +| Parameters | Support | Comments | +|:--------------------------------------------------|:---------:|:-----------------------------------------------------------------------------------------------------------| +| QueueUrl | **Y** | | +| ChangeMessageVisibilityBatchResultEntry.N (array) | **P** | The same VisibilityTimeout values are supported as for [ChangeMessageVisibility](#changemessagevisibility) | + +## PurgeQueue + +PurgeQueue requires the `CanManage` permission. + +### PurgeQueue Request + +| Parameters | Support | Comments | +|:-------------|:---------:|:-----------| +| QueueUrl | **Y** | | + +### SQS API support - Queue attributes + +The Scaleway Queues API (currently named the SQS API) supports the following queue attributes: + +| Attribute Name | Support | Comments | +|:--------------------------------------|:---------:|:-----------| +| All | **Y** | | +| ApproximateNumberOfMessages | **Y** | | +| ApproximateNumberOfMessagesDelayed | **N** | | +| ApproximateNumberOfMessagesNotVisible | **Y** | When a message has been delivered once, it will be counted here until it is deleted, even if its VisibilityTimeout expires. | +| ContentBasedDeduplication | **Y** | | +| CreatedTimestamp | **Y** | | +| DeduplicationScope | **N** | | +| DelaySeconds | **N** | | +| FifoQueue | **Y** | | +| FifoThroughputLimit | **N** | | +| KmsDataKeyReusePeriodSeconds | **N** | | +| KmsMasterKeyId | **N** | | +| LastModifiedTimestamp | **N** | | +| MaximumMessageSize | **Y** | | +| MessageRetentionPeriod | **Y** | | +| Policy | **N** | | +| QueueArn | **Y** | | +| ReceiveMessageWaitTimeSeconds | **Y** | | +| RedriveAllowPolicy | **N** | | +| RedrivePolicy | **Y** | | +| SqsManagedSseEnabled | **N** | | +| VisibilityTimeout | **Y** | | + +### SQS API support - Message attributes + +The Scaleway Queues API (currently named the SQS API) supports the following queue attributes: + +| Attribute Name | Support | Comments | +|:---------------------------------|:---------:|:-----------| +| All | **Y** | | +| ApproximateFirstReceiveTimestamp | **N** | | +| ApproximateReceiveCount | **Y** | | +| AWSTraceHeader | **N** | | +| MessageDeduplicationId | **Y** | | +| MessageGroupId | **N** | | +| SequenceNumber | **Y** | | +| SenderId | **Y** | | +| SentTimestamp | **Y** | | \ No newline at end of file From e20e874d2e0fc8c45704f9b4e56e69e0d61d645d Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Mon, 14 Apr 2025 15:22:49 +0200 Subject: [PATCH 05/15] feat(topics): add separate topics and events doc (#4834) * feat(topics): start resturcture * fix(topics): started concepts * feat(topics): continue to add content * feat(topics-and-events): finish adding new doc * Apply suggestions from code review Co-authored-by: Jessica <113192637+jcirinosclwy@users.noreply.github.com> * Update pages/topics-and-events/concepts.mdx * Apply suggestions from code review Co-authored-by: Jessica <113192637+jcirinosclwy@users.noreply.github.com> --------- Co-authored-by: Jessica <113192637+jcirinosclwy@users.noreply.github.com> --- menu/navigation.json | 118 ++++- .../api-cli/connect-aws-cli.mdx | 128 ++++++ pages/topics-and-events/api-cli/index.mdx | 8 + .../api-cli/python-node-topics-events.mdx | 422 ++++++++++++++++++ .../api-cli/topics-events-aws-cli.mdx | 147 ++++++ .../assets/scaleway-topics-create-subs.webp | Bin 0 -> 24710 bytes .../assets/scaleway-topics-create-topic.webp | Bin 0 -> 44744 bytes .../assets/scaleway-topics-gen-creds.webp | Bin 0 -> 38064 bytes pages/topics-and-events/concepts.mdx | 91 ++++ pages/topics-and-events/faq.mdx | 38 +- .../assets/scaleway-topics-create-subs.webp | Bin 0 -> 24710 bytes .../assets/scaleway-topics-create-topic.webp | Bin 0 -> 44744 bytes .../assets/scaleway-topics-gen-creds.webp | Bin 0 -> 38064 bytes .../how-to/create-credentials.mdx | 49 ++ .../how-to/create-manage-subscriptions.mdx | 47 ++ .../how-to/create-manage-topics.mdx | 61 +++ pages/topics-and-events/how-to/index.mdx | 8 + .../how-to/manage-credentials.mdx | 58 +++ .../how-to/monitor-topics-cockpit.mdx | 41 ++ pages/topics-and-events/index.mdx | 73 +++ pages/topics-and-events/quickstart.mdx | 147 ++++++ .../reference-content/index.mdx | 8 + .../reference-content/limitations.mdx | 22 + .../topics-and-events-overview.mdx | 62 +++ .../topics-and-events-support.mdx | 279 ++++++++++++ 25 files changed, 1767 insertions(+), 40 deletions(-) create mode 100644 pages/topics-and-events/api-cli/connect-aws-cli.mdx create mode 100644 pages/topics-and-events/api-cli/index.mdx create mode 100644 pages/topics-and-events/api-cli/python-node-topics-events.mdx create mode 100644 pages/topics-and-events/api-cli/topics-events-aws-cli.mdx create mode 100644 pages/topics-and-events/assets/scaleway-topics-create-subs.webp create mode 100644 pages/topics-and-events/assets/scaleway-topics-create-topic.webp create mode 100644 pages/topics-and-events/assets/scaleway-topics-gen-creds.webp create mode 100644 pages/topics-and-events/concepts.mdx create mode 100644 pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp create mode 100644 pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp create mode 100644 pages/topics-and-events/how-to/assets/scaleway-topics-gen-creds.webp create mode 100644 pages/topics-and-events/how-to/create-credentials.mdx create mode 100644 pages/topics-and-events/how-to/create-manage-topics.mdx create mode 100644 pages/topics-and-events/how-to/index.mdx create mode 100644 pages/topics-and-events/how-to/manage-credentials.mdx create mode 100644 pages/topics-and-events/how-to/monitor-topics-cockpit.mdx create mode 100644 pages/topics-and-events/index.mdx create mode 100644 pages/topics-and-events/quickstart.mdx create mode 100644 pages/topics-and-events/reference-content/index.mdx create mode 100644 pages/topics-and-events/reference-content/limitations.mdx create mode 100644 pages/topics-and-events/reference-content/topics-and-events-overview.mdx create mode 100644 pages/topics-and-events/reference-content/topics-and-events-support.mdx diff --git a/menu/navigation.json b/menu/navigation.json index 0db8d35507..8deb49cb9b 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4386,23 +4386,111 @@ "slug": "queues" }, { - "items": [ - { - "label": "Overview", - "slug": "../serverless-sql-databases" - }, - { - "label": "Concepts", - "slug": "concepts" - }, - { - "label": "Quickstart", - "slug": "quickstart" + "items": [ + { + "label": "Overview", + "slug": "../topics-and-events" + }, + { + "label": "Concepts", + "slug": "concepts" + }, + { + "label": "Quickstart", + "slug": "quickstart" + }, + { + "label": "FAQ", + "slug": "faq" + }, + { + "items": [ + { + "label": "Create credentials", + "slug": "create-credentials" + }, + { + "label": "Manage credentials", + "slug": "manage-credentials" + }, + { + "label": "Create and manage queues", + "slug": "create-manage-topics" + }, + { + "label": "Create and manage subscriptions", + "slug": "create-manage-subscriptions" + }, + { + "label": "Monitor Topics and Events with Cockpit", + "slug": "monitor-topics-cockpit" + } + ], + "label": "How to", + "slug": "how-to" + }, + { + "items": [ + { + "label": "Topics and Events API Reference", + "slug": "https://www.scaleway.com/en/developers/api/messaging-and-queuing/sns-api/" + }, + { + "label": "Connecting Topics and Events to the AWS-CLI", + "slug": "connect-aws-cli" + }, + { + "label": "Using Topics and Events with the AWS-CLI", + "slug": "topics-events-aws-cli" + }, + { + "label": "Using Go, Python or Node.js with Topics and Events", + "slug": "python-node-topics-events" + } + ], + "label": "API/CLI", + "slug": "api-cli" + }, + { + "items": [ + { + "label": "Topics and Events overview", + "slug": "topics-and-events-overview" + }, + { + "label": "Topics and Events - supported actions", + "slug": "topics-and-events-support" + }, + { + "label": "Limitations", + "slug": "limitations" + } + ], + "label": "Additional Content", + "slug": "reference-content" + } + ], + "label": "Topics and Events", + "slug": "topics-and-events" }, { - "label": "FAQ", - "slug": "faq" - }, + "items": [ + { + "label": "Overview", + "slug": "../serverless-sql-databases" + }, + { + "label": "Concepts", + "slug": "concepts" + }, + { + "label": "Quickstart", + "slug": "quickstart" + }, + { + "label": "FAQ", + "slug": "faq" + }, { "items": [ { diff --git a/pages/topics-and-events/api-cli/connect-aws-cli.mdx b/pages/topics-and-events/api-cli/connect-aws-cli.mdx new file mode 100644 index 0000000000..c668b41f28 --- /dev/null +++ b/pages/topics-and-events/api-cli/connect-aws-cli.mdx @@ -0,0 +1,128 @@ +--- +meta: + title: Connecting Topics and Events to the AWS-CLI + description: This page explains how to connect Scaleway Topics and Events to the AWS-CLI +content: + h1: Connecting Topics and Events to the AWS-CLI + paragraph: This page explains how to connect Scaleway Topics and Events to the AWS-CLI +tags: messaging sns aws-cli cli aws sdk python boto +categories: + - messaging +dates: + validation: 2025-04-10 + posted: 2023-01-04 +--- + +The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. With minimal configuration, you can start using the AWS-CLI with Scaleway Topics and Events. This allows you to create, list and manage your topics, send messages and much more, all from your command line. + +This guide shows you how to install the AWS-CLI and configure it to connect to Scaleway Topics and Events. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/topics-and-events/how-to/create-credentials/) for Topics and Events + + + This page assumes you will use the AWS-CLI v1. + + +## How to install the AWS-CLI + +To interact with Scaleway Topics and Events, both `aws-cli` and `awscli-plugin-endpoint` need to be installed. The `awscli-plugin-endpoint` is a useful plugin to help people more easily access third-party providers such as Scaleway. + +Install both `aws-cli` and `awscli-plugin` using `pip`. + +``` +pip3 install awscli +pip3 install awscli-plugin-endpoint +``` + +## How to configure the AWS-CLI + +Now you have installed the AWS-CLI, you need to configure it for use with Scaleway Topics and Events. + +1. Create a file named `~/.aws/config` by running the following command: + ``` + aws configure set plugins.endpoint awscli_plugin_endpoint + ``` + + + With the most recent versions of awscli (1.29.0 or 2.13.0), the use of a plugin is not necessary. If you are using one of those versions and wish to skip this step, you can do so. Note that this will also affect your configuration file in the next step. + + +2. Open the `~/.aws/config` file you just created in a text editor and edit it as follows (the Topics and Events (SNS) endpoint URLs can be found in the console on the **Settings** page for your Topics and Events service). + ``` + [plugins] + endpoint = awscli_plugin_endpoint + [profile sns] + region = fr-par + sns = + endpoint_url = https://sns.mnq.fr-par.scaleway.com + ``` + + Optionally, you can also configure additional profiles by adding new blocks under `[sns]`. For example, you can add a profile for `[sqs]` if you are also using Scaleway Queues, or another profile, `[profile aws]`, to connect to the AWS SQS/SNS service if you want: + + ``` + [plugins] + endpoint = awscli_plugin_endpoint + [profile sns] + region = fr-par + sns = + endpoint_url = https://sns.mnq.fr-par.scaleway.com + [profile sqs] + region = fr-par + sqs = + endpoint_url = https://sqs.mnq.fr-par.scaleway.com + [profile aws] + region=eu-west-3 + output=json + ``` + + + If you are using the AWS-CLI v2, you must include the path to the plugin in your configuration file. Add `cli_legacy_plugin_path = ` to the `[plugins]` section, replacing `` with the corresponding path. + + + + If you are using aws 1.29.0 or 2.13.0 without the plugin, your configuration file should be as follows: + ``` + [profile sns] + region = fr-par + endpoint_url = https://sns.mnq.fr-par.scaleway.com + ``` + + + +3. Generate a credentials file using the following command: + ``` + aws configure + ``` +** +4. Open the `~/.aws/credentials` file you just created, and add the access key and secret key you saved when you generated your [credentials](/topics-and-events/how-to/create-credentials/): + ``` + [topics_events] + aws_access_key_id= + aws_secret_access_key= + ``` + + If you have other profiles, you can add a block to indicate their credentials too: + ``` + [queues] + aws_access_key_id= + aws_secret_access_key= + + [aws] + aws_access_key_id= + aws_secret_access_key= + ``` + +5. Test that everything is set up correctly with the following command: + ``` + aws topics_events list-topics + ``` + + Use the `--profile` option if you want to test it using a different profile. + + + Check out our dedicated documentation to find more common commands for getting started with the AWS CLI. The [Topics and EVents guide](/queues/api-cli/topics-events-aws-cli/) walks you through creating and listing topics, sending messages. + diff --git a/pages/topics-and-events/api-cli/index.mdx b/pages/topics-and-events/api-cli/index.mdx new file mode 100644 index 0000000000..072212e100 --- /dev/null +++ b/pages/topics-and-events/api-cli/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: Topics and Events - API/CLI Documentation + description: Topics and Events API/CLI Documentation +content: + h1: Topics and Events - API/CLI Documentation + paragraph: Topics and Events API/CLI Documentation +--- diff --git a/pages/topics-and-events/api-cli/python-node-topics-events.mdx b/pages/topics-and-events/api-cli/python-node-topics-events.mdx new file mode 100644 index 0000000000..29a76340bb --- /dev/null +++ b/pages/topics-and-events/api-cli/python-node-topics-events.mdx @@ -0,0 +1,422 @@ +--- +meta: + title: Using Go, Python or Node.js with Topics and Events + description: This page explains how to use Go, Python or Node.js with Topics and Events and provides code samples +content: + h1: Using Go, Python or Node.js with Topics and Events + paragraph: This page explains how to use Go, Python or Node.js with Topics and Events and provides code samples +tags: messaging boto3 python nodejs sns go topics-events +categories: + - messaging +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +AWS provides a number of **S**oftware **D**evelopment **K**its (SDKs) which provide language-specific APIs for AWS services, including [SNS](/topics-and-events/concepts/#sns), which is the protocol that Scaleway Topics and Events is based on. + +- AWS provides a dedicated [SDK for Go](https://aws.amazon.com/sdk-for-go/). +- The [AWS SDK for Python](https://aws.amazon.com/sdk-for-python/) is Boto3. +- For Node.js, use the [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/), which can be [installed from NPM](https://github.com/aws/aws-sdk-js-v3#getting-started). + +This page provides code samples to show you how to get started using these SDKs with Scaleway Topics and Events. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/topics-and-events/how-to/create-credentials/) for Topics and Events +- Installed the relevant AWS SDK [for Go](https://aws.amazon.com/sdk-for-go/), [Python](https://aws.amazon.com/sdk-for-python/) and/or [JavaScript](https://aws.amazon.com/sdk-for-javascript/) + +## Go + +### Connect to Topics and Events (Go) + +The following code shows you how to connect to Scaleway Topics and Events: + +```go +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/sns" +) + +func main() { + awsSession := session.Must(session.NewSession(&aws.Config{ + Region: aws.String("fr-par"), + Endpoint: aws.String("http://sns.mnq.fr-par.scaleway.com"), + Credentials: credentials.NewStaticCredentials(AwsAccessKey, AwsSecretKey, ""), + })) + + awsSns := sns.New(awsSession) + + [...] +} +``` + + + + The `Endpoint` for Scaleway Topics and Events is `https://sns.mnq.fr-par.scaleway.com`. The values for the access and secret keys should be the credentials you [generated](/topics-and-events/how-to/create-credentials/) for Topics and Events. + + + +Once connected, you can use any of the SDK's available functions. Be aware though that some functions are not [supported by Scaleway Topics and Events](/topics-and-events/reference-content/sns-support/), so make sure to check the link for more details on these. See the [official SDK documentation](https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sns) for more information on getting started with the SDK, or keep reading for some code examples. + +### Create a topic (Go) + +```go +createTopicResponse, _ := awsSNS.CreateTopic(&sns.CreateTopicInput{ + Name: aws.String("my-test-topic"), +}) +fmt.Println(*createTopicResponse.TopicArn) +``` + +### Publish messages to this topic (Go) + +Be careful: messages sent to topics with no subscriptions are automatically deleted. + +```go +for i := 0; i < 10; i++ { + _, _ = awsSNS.Publish(&sns.PublishInput{ + Message: aws.String(fmt.Sprintf("Hello World: %d", i)), + TopicArn: createTopicResponse.TopicArn, + }) +} +``` + +### Create subscriptions to this topic (Go) + +#### Subscribe to a public Scaleway function + +This code triggers the function each time a message is published to the topic. + +You can find the value for `[Function URL]` in the [Scaleway console](https://console.scaleway.com) in the **Endpoints** tab of your function's **Overview** page. + +```go +_, _ = awsSns.Subscribe(&sns.SubscribeInput{ + Endpoint: aws.String(FunctionUrl), + Protocol: aws.String("lambda"), + TopicArn: createTopicResponse.TopicArn, +}) + +#### Subscribe to an HTTP/S endpoint + +```go +_, _ = awsSns.Subscribe(&sns.SubscribeInput{ + Endpoint: aws.String(Url), + Protocol: aws.String("http"), // or https + TopicArn: createTopicResponse.TopicArn, +}) +``` + +The HTTP server should receive an HTTP request with a body in json matching the following format: + +```json +{ +"Type": "SubscriptionConfirmation", +"Token": "", +"MessageId": "", +"TopicArn": "arn:scw:sns:fr-par::MyTopic", +"Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", +"Timestamp": "2022-06-29T10:03:34Z", +"SignatureVersion": "1", +"Signature": "", +"SigningCertURL": "https://messaging.s3.fr-par.scw.cloud/fr-par/sns/sns_certificate_[certSerialNumber].crt", +"SubscribeURL": "" // Get the confirmation link located here +} +``` + +The signing certificate of the message is in the JSON of the `SigningCertURL`. This certificate is also signed by the [trust chain certificate](https://messaging.s3.fr-par.scw.cloud/fr-par/sns/sns-trust-chain.pem) (common name `sns.mnq.srr.scw.cloud`). For more information about verifying the authenticity of the message, refer to the official [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/sns-verify-signature-of-message.html). + +To confirm the subscription, make a request to the `SubscribeURL` using your browser or curl. + +### Delete all subscriptions (Go) + +```go +listSubscriptions, _ := awsSns.ListSubscriptionsByTopic(&sns.ListSubscriptionsByTopicInput{ + TopicArn: createTopicResponse.TopicArn, +}) +for _, sub := range listSubscriptions.Subscriptions { + awsSns.Unsubscribe(&sns.UnsubscribeInput{ + SubscriptionArn: sub.SubscriptionArn, + }) +} +``` + +## Python + +### Connect to Topics and Events (Python) + +The following code shows you how to connect to Topics and Events using Boto3's `resource()`. You could also use `client()`, but we favor `resource()` as it is more pythonesque: + +```python +sns = boto3.resource('sns', + endpoint_url=[], + aws_access_key_id=[], + aws_secret_access_key=[], + region_name='fr-par') +``` + + + The `endpoint_url` for Scaleway Topics and Events (based on SNS) is `https://sns.mnq.fr-par.scaleway.com`. The values for the access and secret keys should be the credentials you [generated](/topics-and-events/how-to/create-credentials/) for Topics and Events. + + +Once connected, you can use any of the SDK's available functions. However, some functions are not [supported by Scaleway Topics and Events](/topics-and-events/reference-content/sns-support/), so do check the link to make sure. See the [official SDK documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) for more information, or keep reading for some code examples. + +### Create a topic (Python) + +```python +# Create a topic. This returns an SNS.Topic instance +topic = sns.create_topic(Name='test') # You can now access identifiers and attributes +print(topic.arn) +print(topic.attributes) +``` + +### Publish messages to this topic (Python) + +Be careful: messages sent to topics with no subscriptions are automatically deleted. + +```python +for i in range (0,10): + topic.publish(Message="Hello World: "+str(i)) +``` + +### Create subscriptions to this topic (Python) + +#### Subscribe to a public Scaleway function + +This code triggers the function each time a message is published to the topic. + +You can find the value for `[Function URL]` in the [Scaleway console](https://console.scaleway.com) in the **Endpoints** tab of your function's **Overview** page. + +```python +subscription_functions = topic.subscribe( + Protocol='lambda', + Endpoint=[Function URL], + ReturnSubscriptionArn=True +) +``` + +```python +subscription_functions = topic.subscribe( + Protocol='lambda', + Endpoint=[Function URL], + ReturnSubscriptionArn=True, + Attributes={ + 'RedrivePolicy': '{"deadLetterTargetArn": "[Queue ARN]"}' + } +) +``` + +#### Subscribe to an HTTP/S endpoint + +```python +subscription = topic.subscribe( + Protocol='http', //or https + Endpoint=url, + ReturnSubscriptionArn=True +) +``` + +The HTTP server should receive an HTTP request with a body in json matching the following format: + +```json +{ +"Type": "SubscriptionConfirmation", +"Token": "", +"MessageId": "", +"TopicArn": "arn:scw:sns:fr-par::MyTopic", +"Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", +"Timestamp": "2022-06-29T10:03:34Z", +"SignatureVersion": "1", +"Signature": "", +"SigningCertURL": "http:///SNStest.crt", +"SubscribeURL": "" // Get the confirmation link located here +} +``` + +To confirm the subscription, make a request to the `SubscribeURL` using your browser or curl. + +### Delete all subscriptions (Python) + +```python +for subs in topic.subscriptions.all(): + subs.delete() +``` + +## Node.js + +### Connect to Topics and Events (NodeJS) + +The following code sample shows how to connect to Topics and Events: + +```javascript +import { + CreateTopicCommand, + DeleteTopicCommand, + ListSubscriptionsByTopicCommand, + ListTopicsCommand, + PublishCommand, + SNSClient, + SubscribeCommand, + UnsubscribeCommand, + } from "@aws-sdk/client-sns"; + +var snsClient = new SNSClient({ + credentials : { + accessKeyId : "", + secretAccessKey: "" + }, + region: "par", + endpoint: "https://sns.mnq.fr-par.scaleway.com", + +}) + +``` + + + The `endpoint_url` for Scaleway Topics and Events is `https://sns.mnq.fr-par.scaleway.com`. For the access and secret key values, use the credentials you [generated](/topics-and-events/how-to/create-credentials/) for Topics and Events. + + +Once connected, you can use any of the SDK's available functions. However, some functions are not [supported by Scaleway Topics and Events](/topics-and-events/reference-content/sns-support), so do check the link to make sure. See the [official SDK documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/) for more information, or keep reading for some code examples. + +### Create a topic (NodeJS) + +You can find all available parameters for `createTopic` in the [AWS documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/classes/createtopiccommand.html). + +```javascript +var paramsTopic = { + Name: 'MyTopic' + }; +const commandCreateTopic = new CreateTopicCommand(paramsTopic); +const restCreateTopic = await snsClient.send(commandCreateTopic); +const topicARN= restCreateTopic.TopicArn; +console.log(topicARN); +``` + +### Publish messages to this topic (NodeJS) + +Be careful: messages sent to topics with no subscriptions are automatically deleted. + +This code sample demonstrates how to send a message with `MessageAttributes`. For more information on MessageAttributes, refer to [the official documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/classes/publishcommand.html). + +```javascript +var paramsSend = { + Message: 'MyMessage', + Subject: 'MySubject', + TopicArn: topicARN, + }; +const commandPublishCommand = new PublishCommand(paramsSend); +const restPublishCommand = await snsClient.send(commandPublishCommand); +console.log(restPublishCommand.MessageId); +``` + +### Subscribe to a topic (NodeJS) + +You can find all available parameters for the subscribe operation in the [AWS documentation] (https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sns/classes/subscribecommand.html) + +#### Subscribe to a public Scaleway function + +This code triggers the function each time a message is published to the topic. + +You can find the value for `[Function URL]` in the [Scaleway console](https://console.scaleway.com) in the **Endpoints** tab of your function's **Overview** page. + +```javascript +var params = { + Protocol: 'lambda', + TopicArn: topicARN, + Endpoint: 'YOUR FUNCTION ENDPOINT', + ReturnSubscriptionArn: true + }; +const command = new SubscribeCommand(params); +const rest = await snsClient.send(command); +console.log(rest.SubscriptionArn); +``` + +#### Subscribe to an HTTP/S endpoint + +```javascript +var paramsHttpsSubscription = { + Protocol: 'https', + TopicArn: topicARN, + Endpoint: 'YOUR SERVER ENDPOINT', + ReturnSubscriptionArn: true + }; +const commandHttpsSubscription = new SubscribeCommand(paramsHttpsSubscription); +const restHttpsSubscription = await snsClient.send(commandHttpsSubscription); +console.log(restHttpsSubscription.SubscriptionArn); + +``` +The HTTP server receives an HTTP request with a `json` body matching the following format: + +```json +{ +"Type": "SubscriptionConfirmation", +"Token": "", +"MessageId": "", +"TopicArn": "arn:scw:sns:fr-par::MyTopic", +"Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", +"Timestamp": "2022-06-29T10:03:34Z", +"SignatureVersion": "1", +"Signature": "", +"SigningCertURL": "http:///SNStest.crt", +"SubscribeURL": "" // Get the confirmation link located here +} +``` + +To confirm the subscription, make a request to the `SubscribeURL` using your browser or curl. + +### Delete all subscriptions (NodeJS) + +The following code sample deletes all subscriptions to a topic. + +```javascript +var paramsListSubs = { + TopicArn: topicARN, + }; +const commandListSubs = new ListSubscriptionsByTopicCommand(paramsListSubs); +const restListSubs = await snsClient.send(commandListSubs); +const subscriptionsList = restListSubs.Subscriptions; +subscriptionsList.forEach(async function (element) { +try { + var params = { + SubscriptionArn: element.SubscriptionArn + }; + const command = new UnsubscribeCommand(params) + const rest = await snsClient.send(command) + console.log("Unsubscribing : ",rest.$metadata.httpStatusCode) + +} catch (e) { + throw new Error(e.message) +} +}); + +``` + +### Delete all topics (NodeJS) + +The following code sample deletes all your topics. + +```javascript +// First List Topics +const commandList = new ListTopicsCommand({}); +const restTopicList = await snsClient.send(commandList); +const TopicList = restTopicList.Topics + +// For Each Topic in the list, apply the Delete Topic Command +TopicList.forEach(async function (element) { + try { + var params = { + TopicArn: element.TopicArn + }; + const command = new DeleteTopicCommand(params) + const rest = await snsClient.send(command) + console.log("Deleting : ",rest.$metadata.httpStatusCode) + + } catch (e) { + throw new Error(e.message) + } + }); + +``` diff --git a/pages/topics-and-events/api-cli/topics-events-aws-cli.mdx b/pages/topics-and-events/api-cli/topics-events-aws-cli.mdx new file mode 100644 index 0000000000..a61b719a4a --- /dev/null +++ b/pages/topics-and-events/api-cli/topics-events-aws-cli.mdx @@ -0,0 +1,147 @@ +--- +meta: + title: Using Scaleway Topics and Events with the AWS-CLI + description: This page explains how to use Scaleway Topics and Events for creating topics and sending and receiving messages with the AWS CLI +content: + h1: Using Scaleway Topics and Events with the AWS-CLI + paragraph: This page explains how to use Scaleway Topics and Events for creating topics and sending and receiving messages with the AWS CLI +tags: messaging sns aws-cli cli aws messages subscribe publish topics +categories: + - messaging +dates: + validation: 2025-04-10 + posted: 2023-04-04 +--- + +The AWS-CLI is an open-source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services. Once you have [connected Scaleway Topics and Events to the AWS-CLI](/topics-and-events/api-cli/connect-aws-cli/), you can start creating, listing and managing your topics, sending messages and much more, all from your command line. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/topics-and-events/how-to/create-credentials/) for Topics and Events +- [Connected Topics and Events to the AWS-CLI](/topics-and-events/api-cli/connect-aws-cli/) +- [jq](https://stedolan.github.io/jq/download/) installed on your machine + + +## Getting started with Topics and Events + +1. Use the following command to create a topic: + + ```sh + aws sns create-topic --name MyTopic | tee my-topic.json + ``` + +2. Use the following command to list existing topics: + + ```sh + aws sns list-topics + ``` + +## Preparing and subscribing to an HTTP/HTTPS target for Topics and Events messages + +1. Get the public endpoint of the HTTP server you want to forward your messages to. + +2. Use the following command to configure a subscription to push each new message sent on the topic to the HTTP server: + + ```sh + aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol http --notification-endpoint | tee my-subscription.json + ``` + +3. Find the HTTP request received by the HTTP server. It should have a body in JSON matching the following format. It contains the information necessary to complete the subscription process: + + ```json + { + "Type": "SubscriptionConfirmation", + "Token": "", + "MessageId": "", + "TopicArn": "arn:scw:sns:fr-par::MyTopic", + "Message": "You have chosen to subscribe to the topic arn:scw:sns:fr-par::MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", + "Timestamp": "2022-06-29T10:03:34Z", + "SignatureVersion": "1", + "Signature": "", + "SigningCertURL": "http:///SNStest.crt", + "SubscribeURL": "" // Get the confirmation link located here + } + ``` + +4. Use the following command to confirm the subscription: + + ```sh + curl "" + ``` + +## Preparing and subscribing to a lambda (Scaleway Serverless Functions) target for Topics and Events messages + +1. Create the function following the steps detailed in the [Scaleway Functions Quickstart](/serverless-functions/quickstart/). + +2. Get the function endpoint from the [Scaleway console](https://console.scaleway.com/functions) under "Functions" -> "[YOUR-FUNCTION-NAMESPACE]" -> "[YOUR-FUNCTION-NAME]" -> "Function Settings" tab -> "Function Endpoint" + + + Only the main generated endpoint of the function will work, not the aliases. The endpoint should match the following format: + + ```sh + https://-.functions.fnc.fr-par.scw.cloud + example: "https://mynamespacexxxxxxxx-myfunction.functions.fnc.fr-par.scw.cloud)" + ``` + + +3. Use the following command to configure a subscription to push each new message sent on this topic to the function: + + ```sh + aws sns subscribe --topic-arn $(jq -r .TopicArn my-topic.json) --protocol lambda --notification-endpoint | tee my-subscription.json + + ``` + +## Continuing with Topics and Events + +1. Use the following command to list subscriptions: + + ```sh + aws sns list-subscriptions + ``` + +2. Use the following command to publish a message on the topic: + + ```sh + aws sns publish --topic-arn $(jq -r .TopicArn my-topic.json) --message "Hello world!" --message-deduplication-id $(date +%s) + ``` + +3. Use the following command to read the message received on a **Scaleway Queues** target: + + + - For **HTTP**/**HTTPS** targets, you should have received the message on your server + - For **lambda** targets, your function should have been called with the message as argument + + + ```sh + aws sqs receive-message --queue-url $(jq -r .QueueUrl my-queue.json) | tee message1.json + ``` + +4. Use the following command to delete the message received on a **Scaleway Queues** target. This is necessary to prevent it from being re-queued: + + ```sh + aws sqs delete-message --queue-url $(jq -r .QueueUrl my-queue.json) --receipt-handle $(jq -r .Messages[0].ReceiptHandle message1.json) + ``` + +5. Use the following command to delete the subscription: + + ```sh + aws sns unsubscribe --subscription-arn $(jq -r .SubscriptionArn my-subscription.json) + ``` + +6. Use the following command to delete the Scaleway queue (if you had a Scaleway Queues target): + + ```sh + aws sqs delete-queue --queue-url $(jq -r .QueueUrl my-queue.json) + ``` + + + For **lambda**, delete the function (if necessary), using the [Scaleway console](https://console.scaleway.com/functions) + + +7. Use the following command to delete the topic: + + ```sh + aws sns delete-topic --topic-arn $(jq -r .TopicArn my-topic.json) + ``` diff --git a/pages/topics-and-events/assets/scaleway-topics-create-subs.webp b/pages/topics-and-events/assets/scaleway-topics-create-subs.webp new file mode 100644 index 0000000000000000000000000000000000000000..f9aec9f4b7d090f7f17a9f5d99957656471ff9fe GIT binary patch literal 24710 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 z zo7WB?J~)I>U&3$eYshl3CB|m;_^O#%44EJ>pO4i0 zSy5Ed(Jf5hl(k*yKzOoZWHmVN`HZBL5>Yn0&s&WS-Ozdj%@*#c+wfMpB+($1H)vVi z8M<$?_R$eiae}O@?Lrs;NpR^=+5Vk~YQJ_lPzcqRK8P1r!Nc62e6l=Fx-auGGxKd! z!lZ%!;J-ix{|Ws6U-0qi|AG(xdtWXU{ML47*@&VW(R5>q?>sUrEa_Ml&?1M|i;}D8 zE~5K?g<-6#vhIKVq}*pf#p)X;K{vDQ@VNO_TKks&G`V)bM_<9U(5fa5;ye$0c1 z0S3KX^U-artpW*s^D|3esjk&kC3&+K$5fbt^%IHn1%a>PsUj$t~|T_zT7>42&N14~wm z?eX9{`up5M!IN@GgdZu_z7Uz~XlRbwd=4ZiAVpPfq0`3abqph|QrBDRg=HB7viZ+V z?D}O-Y84Cr<*v@n_`;TI2`j|ip6iRF(r$gSs@zx_@HY5Q;Qv4H;W<2^k6F%Q2DQ&RGP{3L>#13%GZCM74=q{#~~qG2&OskL6d z;czT!=)LQfk}IV z?T}FoH)CD(0Ru%ii1Yvy%Zj>hJaeTL2+%(Y}m2xgs|Zagd;G28zj0TGoGN&1e&`EA7@YSx8@zP}Xr7 zf<#0pjSiaFvOBUx8&3gK?GOMB5D+s9R=q;n4$&c@I5~6*_JCcg#)ub@7cHYrX7h`^ z#Cxj2sJ9at*@p&#K*-Xb*+inP4IjQLVr--92oP_1Yb}?B^fieU^(JvATn~nlco3~x zQ&IxR5Vb=MNEm^I(E79r^TbBJ@8#1-xu@Fw$ELW-{rajf5bFa`Gm4ht1YJEqNQcqL z;L(<90RPHx0}w*u0kmdqS-EKAsnT+yX;g8KW!JoydDx?)Et@F{o^RYZ>$EgLC5+}r5wMAv0h zMMt>mbJ8w>g<*uN8<(*eQ9fT_}X`jq6G;wlZ!2dSu5;_wF_{3`=ZTm&sj*;n{?dWK}V2>_5)<)Sl6XGx)`O^RPuZJ0Am%`Z}-;Stw+i zOv^Hw!xc1A>Z$T95k3=fXyn;X?p1doY*0RhF8u6r&GU&`+7w|+;^M(DGQPO`#~ysX z3a<9jZ_)KxkdsV*qM?GzJvFpnwCYl;* z_gpur3NWC82S=JF!5lGYW>7R~zAJnzM#G`5;i|M=A?*xSOF=9(wr8QoGfgT$lSYG= zW>uOCa83FS>5GT4aM*ZPJ%Hf5A7i@BwJer&kZcq@hp^u3Dq10vvL-ljRyu3DJiLwf zU+lfpoAKXSEqt_KnfWQa=TGI8h&Ug=_XeMqV=!lSln92&J$I!6ey- ZPfE?oTlHIB9%;Fk{)7MEKltzM4-95iK864Q literal 0 HcmV?d00001 diff --git a/pages/topics-and-events/assets/scaleway-topics-create-topic.webp b/pages/topics-and-events/assets/scaleway-topics-create-topic.webp new file mode 100644 index 0000000000000000000000000000000000000000..7596cd2e1536081066660d43cc2a890f63d9197e GIT binary patch literal 44744 zcmY&;W0Yn+(CyQGt*mxVB1|&1GJJ5Kr z^(%J}Shm+BCQADRvQ7lQ>mCIWw8_mhyu5v=y7t?}(4=|tgO3%iP$tcJ&$N&UM;#p; zg|8WlV?Gw8>G-o&C>OHUL6!>M3t)GCZ6;)Az?^_USS!v`D(JXb&^IVpWAWk62>w3_WCKZ^bq5J!l4iVp zrWUP)1NC`{VfT2CO}qGAf4*xw>5J3*Y4QS`a(%b;99LOy{N3m58`B z;>N7#HSauV50-*WP^jmEUNM8MiadlDSWSy< z%N#t)!|}R!PZB=&)Foxuyg+FOS}AK$sQcHfIF@n*bJn&#%_4GGM6x0W6a7Gd2X+p{wyP?KAb zQ0}Os0UfbLU*1Aw;|aE#Elp>-uCuxR)}I}V-5GSPu6z97-_D#ZS-loBwrNa>O-1Bd z31*WibUH2nn)F%?bejow>86t`<912X@F@^2rjrf-hUs-uq$$=D%;M;ETIkjr%*GqY zWVE$swP#iQa&~XEWNzF$iz}{jE|?zs^k`bAvaW_Gr~WH?F0KE*C@&MyJuDGyaFNp} zR1dYp_l)7+(7Fcx%_LLfz!d(BV_G`T)RgNos<}B7?-abKjuB1{6Q!?^Q3)76!3lQA zA(IQsb_Y1bbZP)LF-Rgmf$z$s@KY z^Lk`oAuir+g`|gCg;{xeX@qe5axNQ{o;ot?wPVQ-DC@K&rgpBBE?C6#@=`P?F_li*$(vRtGMbxHt$o)SBB1-^*27 zZe{M_SEVmp_@1^*8jvc_RrH&>t_8iRfdfX6Ys0^7O}^B*_!cB%E#}L={a7MiH^?Fd zQCGXe)NKR)Q0cT|Qlo>4>>+kRP<7C! zwScN%KQNUNxaC3GL)3_rmq#uJ7w$%rnA|ua=!B5CJV|75n@3{V7g@53&Roqg!@xSh z5xg8=(dK~z@(PB$SeK+qy8~@LnsIf`L9j<|06{go_@g&B9e+C7jtG6~<>^6Vewbrw`HF<3k-unSP474swzLBvuQx>KccRxm-3%3RH z^q?c~0DL$@{zLvjARz zEH3I+h7uP)=pzjvfVhc;rH|o>R-|)u6au*7E0=YN!-s{bECy>dme}+e<10g*2Z4H#)V40PzcfcrjU@$|BmwhH?|Lz<-7_!Y z=oYz3NaMZyht`EB5_}?*MQ<6W7(YEiNG|v&!FVuWpuI*%d#SJh=IG~c^HJOh*;JwI z@@n=U6<>h~Gp?Y3Dw{!M4GyWl$R)v|)+zWm1!&B| zoXyTm2gk+53g0ZNCY_vcAj@J}^*C9CPVqD-hcn=dCz#j;eP=u8 zjNDsnXuCqjxkquMi@o6c1JZC1iy!zA5`63E;`W#to{BHcmxE3 z#>5A6pEBmySl=BIzG6DbPls(WyVP-xHmJ1PK9@wmaFw30AIx1LX}b{GJ-l;!_`G4m zEHyoJmCbcgGN?An7?sWAX;F^a4ddehfS?$M9zXF2sux>h6*3!j;D-Uto5i;~Cy*NQ z&QfY^f>KHVfGJia4~JNC0#~tnOX{z77MYcc`mMi{PulzZr^e?I%PoN=Ag78O`_z&f zs0#8z$NKw33v<@iYh?>rDyl@6M7YIUQ2k%;5GUgP&gycp!c=Ho?{r&ELr?6qOdi-} z8FhMIL~1{GSP$iECd5dC!Bf){0(#5K%LjgY$Wla*1pY|YKAUL>y2-Lq%OUIEz+cFD zQTZO>O=7&NXcN01dF>R%zo*6D_cC6o~X z0OTJH^EXGOzlTU*t&qopLM~%O%P9%3HArAv&U-IrL|3bZwry{lEv`<~ensokw!MqM z0vrd{b=oz06(ey#SOU!M2>Hk1Cq>BwFz(#d-M1X) zFv3PhW)UDn08w)TaeY%D{tI+I!~XSe|92tEYkrq5QtH|`yyaY}81PgT0u71(N8KT; z@oUblpFgXyuQ1SqMS9gut>#C~_8IL>Ur;Sgl_y$GRjNe6VQ^v5v@#~H=$Blw7Z!a(aM7W{kSNL$_t{;NeNQm8Nu*Q=I{Hg%DO5w8d7Qz z_|fYF>IW3D#!NHSK`bj}i}Ca} z$Boa(YKjVuEs}L9hHmcp*7Qn{0>c(W1AiMsc|S$TXwGe|?Se+lRe-I(WNLsmdwMX9 z8Vj^%ipC6)LL>8T;lyr$HTH5p(`H7!Z(-2Tiq*f0pwvQsFy|F^q?F-Pfs9e|*+mH< z3djM^kw?&J3&YH*g5+x0n7b;?;l#|-4Ht=x!Y8~^kS=sDYIWsQkH2E9=1rO{bTv_d zDS|+$fDbB*M_~(c@JwPX=o?cvYmW;4yVg5hYo=Jdbl(Fow9Oc=kWCpRCT71tZ9fNoXP+6;ZEaQC@{NHMcYVKIk^RpRp0gl^CftuY z_$flp+qqPVfKe~FeCpiVL=FnzVj1)HV^ps*`TJq3ofTpx0?Pl9M-$zq!_rpz&zQ~I zU1*qeQp7B7uQ{({C@Yu~Fct2^+88NJNTBKK$lYmk3$^Z3YF=IFB?-@!bK8_ZFyMdq z*oSd2p1G%xY!bohe-7afH152`E@F4Ee#8j^5L&iuBC`oLi*rM-RMl1n#;Nga6*&kI z_t!_goY>p_z;03dfxm8`5p?GOXU!B9(*96EG&os0f}R@%fmYS${%IA&eI+VzOhREL0#C;EXS?%*<&UK|0<=SKkK>6*`0+E61}>4k7>Q6ZnQafEYn!FUkcF6R2* zv6}%}F5&!#1uxLKMF^?py-KWxcB7@}$c_V&2(N6ae^Qqi8*#&dKae?g>&<;JXzLOo zH?U#KVX6y$g42_uFc_h@G~H^5Q~+hD1?8+R%Oy zCGf(b>?DFCTf5k^*X?8cyK1hQOPk~v))A z4P8T4DSLHL+ADFCQ2a6nL2eRG+v0El9`g9q(KO&XGlyX4qTcUv`vwX25lsq29=u9z znOs#4A?%=yt@tM^`&K=}lWQ1WAV3lKkgCUtozS^3z6}Lf33}!9IIxem&n_wJLS+>N z!h6A{409)&h19bx7n5|MfCZMpLFQ&7A`d9jv+cAm3Y#fcD&}I4>#hBF1?LVKS&4(& z5>LCXFLiKBCL1@yL=edM!LWDey+mflu7sY6+VjM3C1QviwXUQ|$#&xG7BtuWM3I^_>mEK%#C(D=r2#SQY*}%4FMwP; zU2>Efq{+pMi=;O}@TDD>h!SjcK|%taq18wRcm;9&A*4s_3Y;StsQr9u!(JUuB}0A{+C$8v1PTCPK*G@gX>J+JfA3uE ze^ZVFpdk!N#3+TZ;6dbQ?Rh~4NG&Ay$83;=3S!_9m?geZMfJ@k-$8=w$vLBPVhBsQ z7Rn@aq9u0-IC)N6tl3XmPRop1yVy6_m{3GBh>F=$V0kv~Au{U%K!jRoCiRNI>f1i{ z3TR9(D-jEFel?LY{sRDzkV1v%Tluq`@+X=XQ@vDxIOSK$^RMtQNTw!*ITa#Rb`9_HSTpFDG?On=;gD)I4T2XMADJ(CL|2TF*0=>0OehZ(Bi^LfJub%);)ssY zch3-El+Q1e7f2$8znf48(J=*-6njp&miJ3`mIadwr8kDZsfi|vjrd}vKO|B}4?aF3 zyZ`{u_QQ6_5+o}p9EoyGxEkb~5^LR^MuXsU?GL$tKwX^D&m<6tDlq<1ypFG9F6*AZPCxT z1{NQ>2UJ-(R~N);IHYSOR6w5Q-I9IjV16<`Z0H;ab|Bq#lPDtH4eD>13S^-NpPb6# z&0{^*4OjRsoDwS+@~Jtg4;moJe&V&eM&cX-jWr20Uz%X+!f)$**a3XrAE54$5CCWNR5^7H#8j&Wm_Tsr<`=$8_s?<*9su%#Hlnwj+(0XPSr}wum&XWr9dj^Iw*+LT{o`RYDE%70yG?l^gcFV?iUk7i1QCVz*X|j zJxAzD`O`a~Gg%xT>Vfg76dN$6v?Qx8K@$yb(M~$56bWT8LM{g_)NXqdU0JG2LfwG0 zz`crNTN>g9P$Z*kUCX(d{lzV~FvYq0hfl6W7?1}nU+i~Vl*nikG0dc{v^Vp)7vl%? zVaTZaX50_{Ktn*58Xn`f^3N9blZaEcU$^u(#*|BBSLC)6oE3&gDHXT}KvEso45MQ0 zDU-f5ty(pB0x-ac@PF8qT5AjZy^{)nrHr#e5vLMIR)hr>_iZfdEu;-a1(MCMKK3Ur z1Ma>mb=o6djhMj}{zeAK#Wjxoi@V;JC!{oD!EjQHHvxc&wCyaK-=lfJb-=Copgx)4 z005xaS62HX;f=iOAu`YH!6U5#1^`eQ?wsy9`_D|SM}Yu|tL??psc~zKw45+QX>-zB z1+@?Wl8}T+IM2!j(6BNs@?4;5A4UKy=%dOUn?pQV19hqyE894GzxNV6&S`6E zl2AZElb#0QGI-OC&~|;Pu{_A{*}nf=f)fgS%2-(AcMuPpXu9%YUlFtS^t`TV*PaY>?s*&pkP&RbMSg;6w@*(o%AR0>RPcI_8l z<9Jj2;s=9B!1G9S?%|Ot*)zp37h#Dq_23d(V^OnYiqXO3t9SFG52=EPYX%%Os2|H0 zC`athIDql^zaQv@+oeB*OWNAUjlz#geg#u!E^*m8(dfemK1Bn~D|>Tb>bJw~+B3j==NmnFKf zi4~p;NI}=+k4;1@qqEQ~3W?x7S7=HB79HPvNu>n>Q$F8vhkLxzk!1|xZWwi5aek$3 zV~M4&ESGM02##vual~_)k-nWzDSY)Z0~7ZxW@-bzz=ss`MA?63a_?lVC9$ z^e%=o5A!&4Mxw%fTI_qU(u>Yaoc&=;V%GEXkm%O~l<-Bj z84h8U<-5A@E`Kv6eSF?qB7bj_C~-`gFC#>@_xOrqBM-J#zoe>w z68}n&6pRiG zsY6w8mS!@qYRSuU7Al84f>^8}Zz^GH-lbNkAp;-g$@Y+do_C9%K0xPK2(|aqzvYch z3q*M6S0?T0PwO_>Nay40kfM|O3B;NxglC^D3L*I0@@30Yq+e)o3_8^tt+^haIvx1J z=q(oQWboHjDuYU@uA%0%g!mRv9nf}cbMjJu#|WUwxH6hNcV$D*KLM%1hJ@z?X-7X-O6}aRA5z+#-B&IFCdMp zP^LX--yR$A083t6wKzmWs}@pX!6@)52!J1F<%2hy4%NH|_^3_|^?oa&3|IV^JI&m# zl__>_$#RIrTd|uWG74gBmgrUEFehESYg_QtC{^KaQ(Hmqd}A({C&W&%8Y#2(X`dR*JGd_ z-1VFmvZ6AdO$B+>4S~cqmu@wd{{+>MSM=L92(3<^-OZvh_cAbAdX$UzrptC;eqZ58 zp6suQ+(LZVdU|6r5`UE_KB67d9K_aJ4@uj6O9QX=yY&U5`7UxfUh=$&0$=OkeLuYV<*>olPx@(CVqPUJ2mmiKjlCJxD z4^ROn{7}1vYjRg!GoHw6DM?ZN_pi;7C21h?qm?Km6of z!jQs)2^?~sQd(QmZ{dhO#QaL37!lpAe}*o0ysFT0Yf;MSVV$+G3|gOtY-W`&$g9G;R_2w`2URx+mvQ#w9ka&l$9QYzjez+e52{;mIMGVki+?89xa?y@+hEtOra0w%@>lD!gXkB~{s^{N<+lelC>1ih zEvIC>r=p(;SdQ6AhzbknO2(|)bPK&7*ffHJcWdY12kf8MERWpKumrUF2(9-E)y-|4 zlHohU@JbdID#fG75L}7;)$N;sH?xYg7Xj1Dp3!O{fq>n-7?&##0wSI}hPUqZ2Xh7t zWarzfm2wD7cV~Fp`P_3YpLJsFugG_7O_VpHW>Vy<4JweIx}zkQb2@4n}102ygKIRTZC*OQUI# z6hVw3E3BmXnW{sxP`szkJcY%&a8L%j^9`mr!`*(J+)#Y#Jv!bevlhmWrzXx9XV4#I zZv1U{r@tq$|8;kz@_=sPrA$YfdC-8J@c<~!#5$_sDoc4+aa`t}IM5--PSWRT=1T`hdzD(Vkzsh-|cx!Q9t>J~@@gXxX#@Us`qGCb=K7_nB zQ(SeS>ZX&HS)d*R@p8;$tsX>L(6hyA@QI5DKND%?vKD55V0YKv$+rrnGe-UtWyJG@o zWA$0^83u%u=6D8Ti1!YaWeGVqG}&BXF`U!@pOALFq~C_=P2OIbep~XTN8_TCO$)|m zM_W1%O;_K{#on(Net0lC1Ht-=VzOUnBfk}tK?P<&;@Q|i^EhSFgKhw5i`PUx-_L5yE#mb&}$|JoFtvGcKx;C=H&>t%B73IO9g%-RZf zjyUUR!~iN7Y3A6n0&pciS^2$9Xtlga^yO`MJjaYmDQc}K+u7c){W>q2sOL}3f01IJ z^6i5zP@pXao7Xr@B|J+D>-wU#anLdo0$_UF#B|_)ob5Mjo{BgC{a5{}vq2e8_fOi_gUiDD#x%@N=OnF~AR7^;RfFAN3S7C^=MXA@CmxRr zvk^2H)$s|AJ;cmtV>ETlCU1SOTp|Lp;qpX;8tWecqV#oIJNTyO7~~amqI0>KrjS6Y z=p9QHIhhG$p$Xj;aI|o=0lFSS?h7%&_P=IDzrg=E)P~!uIrNCCz@(! z8}0uc?FX||=Ul7))+MCvB#6(yExy)5tDO^rAMKF~0d5lS{pNQ{Z4FJ-d0BCcI_ds1 zA;|vYm8>|X^5wv-9CGU-tbOcel^A7Xp6nO6APKUGV2J{H*hOtzK_FEQwubx1hzo%a{zT%tJ`&< zgZ3kAY-S$CH|LmFwa?_Z9TR?(;MdZAKIqLTf!(K{f&z}4@Xf#&Y5os?NIVxI9j6{J z>hC1#gO||jEgt=%*B9)J8gMLH_B4ab|iN`O8!z0I8u-DKNBZX~Dd zHfj>Hw^pSOZ2k%qJA{Ya51Ly zaT!s4!14Nhic;>K0%Dfd$;4*NX0UpV_*12t(tR6jG(@86RwzJJ@_Pg*6^R3?m^rBf z2P10^TSfee;#9?|{a;G4?djWR@4fz|YYRUqar^D&G@UXEt=-)7t3B*j4;X;>wqd=+ z3)S9GEgV4czx$^lJ^T8%fbP(wl^g^Td-%S$OX(RB1aNzztLHdxFKGnD>4xq(f6m3h z3X}f81G1(^jvJ;cQ%R>3BPK}ir3*YujBeNRr>E(CS2Ldj)|l*1X~Q3Oy_O)skG1Jh zMgNE!tfJX&T1!H)0d#NO*~!|3^&}3SCL9mdnVsia>$~mN7Zufp9=izRdC?mT?vr6r zG~fa7qgVcyzv3ypi2zFwo-=qR5d|%0+e50El%v`DDZj7QawzVCK}SUAoqNTozT%|F|}&%_PhVCI(DY=0WXhKt0%;Ihr?q^VdOytNZvt^E=#w9?nwzrc;_ zjqzIOF;4heS;@WTx1ijDjy@%S_rsFUcR!Mra|==e5Va_Olr*Ur@GzN zAli@2E2i{?so+(LZg1Y;)}Nmyxqgv=y>mNLbhG_wjlNK>!|Y;HtYZl#``E)kc1*lU z^zeoO6FY!;L4TZwLE2)Ofw{eQiNY@)XpuTx!|>Z$O1dLOkN4IL0EnxuXla(iNsz2X zD&Zk1aET3>3_-s_{H!OD1mSB$d7e?3Coaye(9yY74e#X@ndC~S!f!XAm=iL%1+BrGiwB9-Auw}DeH|0_O>DRSMjoT5yGOP%VFWA`Eh+ly-y zS)b2*<)Qf?J6TrM7$CT7H9m@wQ8x1g9N}@nMur^^ewe{)I^D&LK&e6W!8P@a15 zk#%0VnT^iB+rxJ(sJ2Y3@0=ICa9{Qt`%iACe;~g>gT$aI#eogm=%G0aY{=f&J#qne ztPc!tM~cd(wrUGl#v#IO=D4dHq$8{l$TagUnY!z*E!?iP{_y8{PQKXw_{RZ&P}9p4 zZvw))fy0(D5`^ohXvBB;H>8CWKvzuz3Um(&hy?hKy{Q^9gBI#x!dX+Cl>Ky^D>fj) z@cI2cOlV(a)U{32Tx4wd{iYCz^zGBka^S-#_Yq=A$qsgZ;#RGn7HSfay_rxeKKI1*yH87(_Jg3+_!YU z2l=@$ep?DX@eOIYi>f=Lw7_10HkmzEg_9E8rsenSpjas4vK5iE%MomW?@t8y7{upu zLp0Ni;Re}rj!kglk;#Swkga)$+2BpIK)U1*TbSv6h7+L3JdH`-R1aAtW8kgTLy(4a z(QlysQh84CuEw)9Nzi^dKTQ0KZ?EPEyOO<1YHZ9a&>N+j;-;RiVV@+HKTw&HJ=1tz z*DCn{8A+zoM3$+Lu6@&j2Sn>!@^1qQl+^53>26GLvy#9x`dqBQ<0+#D;Zp%}FlO1? zMjw4R4_6*_^NIIHy3FB+$9NJ||UVbh&4DK{l-H)!e=;Cq?rcqfgQk9O)FaL_#0d>QR)d z!gr_A%#})(@!xS67KVx?SUM^&gK&V?Zd-o26OBs$mK6c){iq2L0K@4-R;D9rU+r*q z%IG_2IHK8;dd}oy(OZn-Wmt|@=^}H73O|dwtMEeEq?(-O*k+F(GD#yNxvajLZ+nSjj(o>&o+MD#&1Hd0l)(#2j6=j1HG&YUNI)gqYJAC!GTsPU zbY)DbPWdc{#YzWZ2p%w_i4g$r=fFX*G3-Gn8(?%NqtOu*#TN15CN68f~?hj{pP@wHUMuXqwZd)DWcCDye(%mf1jbWm% z(p&M!%rM$jS(-!?$)m$HVS0u3`;*f=53Dd$%rZmxCOxIC3fr>_HutMNM92gg}kF(?=Vc45yD$mcxm}8vWoU{{qCKN#S)&6m+ z;RcP-TRf$%)w8qZvKrwbQ98_7Y2F*7t+!>0QnRe*&8aHIT>VENN~17%D?*7&2@pM z;N+yEyM+TKSj(UXvsE0%e6s+hez5m!@XgaQo>M(V(Gx1leAuOW^J<4Src)(2Y@*3NTpWgVBqu|hVJ5t)tj-n59tznuC!Bo z{ljX0ksbjMzQ1n0Tsi&Wo$2~BE6gcwSkPWR7t+g#rtYf#-ca`^>@AZJHAdF?)t*1d zu&jOYL|v2h^!(QhDTJK5&_laU>0-gp#^%m<4m0b9UbSC_PWKit+Gej%Cd@aUh|Jjs zj&nNW%!JN}Td`P^#{#XbBtmVT%%&>B#xy{U1oiXBX=%bWV9Pg}%KkDNO0YIDG^+&RG zzwl~7)^0TC!i31~Uk?p5z6^7N$VFxPYRGey771Ep5JNhl~ z?gtKv!}_$32P9_NyeYOLHVe6cWqq*oo6)ShMqDup1k81LnGKa)cRoLDYpzs_lTPSx5&`ot?Nj*LU_(W0 z2)v2>V1@ME8^Ca1T|Tif7e8s9%HLQmoVkkPE5GzlHoroo*59@$Z4;ZZZVo5V=_I!p zx+snpYH0%F{oX%Za7A^FumHhMwgh6BxP4ekg=RByYFWc4a~mzL0M?gv}@MN%8;Y`J@Wz`n| zw5lFIBD;XQwfBMKDY}+4Mkw?dlW_GCjwPbw)XTBVh0L|xf{O_{*S-%yrR8ahT%sw9fj?Vk3d{gT$4#2a$ z&3MymOCD@ez2QRH1oR|;^~#gbSMw>8A|vo6#XL3YjWnHA1X@ZD@SjVf#f z`%c#7;!ClV{D z+TTyv;qq2VSo`-M*>CPe|0X;NUorvNziB0DPxJZzrA<)&UyUzE{vIy-c34u_aFyQ{ zG4_?Ze*ueYTtW$HmD|5oZ&hq*r}xKsv|tu*3VkiB3pa7@?7D9H<2T*Q3;C!?NSHDc z()`j|%g$yr(`J@|x?4a2kbzQ_65k%Ega64)cN#L%KeQk9)+$>1BpW_@$sX#=8pT6y zXmVbb8!1lk%xq$cWkb-U^8gJ3F_nclvFL*Wu|rK`CIl~dw|%>Ny&*6wkTfY;3Hz1Ej3{}kDg^=KQj(_ah#!7rrolfl9PTdW32s9FbXhw=t+?sVk9^&#Y(Y%5!SNf zU1Zz)h$L<5p9b{BPsE01UAa*6iEF9yO8B03&Md>+5DO%3k)XbH$HLjk4dAO^ZzSFv ztGUy&;Pb8SIW8%^_Ta5~T|+^=HUVRlZ(LfpTi&Ig5b1VNRsYg74;s=`UD$m}*H=6A(zUr&GR`u# zVQ^Ts4)5{zR*;*#us{-RuaAspXhF(heyB~JE6)z$ z#x#FrP-jTetH525o=3RY4XB<{v14IfM2p58^dy(8JW2>@s#F~lSP!nu>@0^jh;0r2 zkMoce`cJas0M$QSZ0t)fRko=v(ARr6CoNzPSheu>ADtt~X8rCi$BFXml`87FepWlQ z^Czsx4!wgz*{-8JHB|y-K{McCTrR73|4!ARgsvi4NvrN<14%w@KC+okQe<^$>EoI7 zLxlfJ2nx$AiFGnS7A6f7kjJ4Ho*;@`RJW3IeCB!L0(*?+A&;&)8O%Zhx1#^v51tL( z5JGsRC(tKUbD-;i-Y|oQenJJ1sz+<43)Udgrw&1Asmh2q^HUmzIN)8J?xCqpfiY9X zxaximV(l<7+nx#|PdTDc{_z2dD5^plL1d<$Zyg9I)cqnEufH4&UQs{ z&8bSCK$H05 zryjGHa%AMZ(1*vH6@ms6{}3DeL|BaQeJ9CgS>PR|0S8)7LKpQ+bu-=V9JXRVA>tY< z1#J1Ge56V5KR)SOQLTxBG0uWAs?TGR0+q60&DfVEU5WG8@@{MX%Z{~R96`iFvhePq z?BDasoXpkkPk-LZV{k*u94M1eTC6B8Q4gy>HWj2y$v?gv`JwbjNdhX1!)6ht;L810 z&@z&rh^?gZUI6c&{naXn=ut*JkAn6CQKmixAZ-ke$NFjz+tJE6s#~-*RnE-1i(ixd zz(V?{<<`srmh1|f`?r*jujcOt!H*z?Wil>Ut@h)xzRZOQb99G=WN{Dxuj{v4BYNg4 z{(_;kuZlLgRM<1wuux!-)8y|9nltlg-P#LX$K#~${qIa29CcO@#+@~;vjZk=kKzh2 z2Z8yQuGol4rldQaPjwx}@?cLGiBJZQPH$E^22qep$JOthtV2ZJdOOq7?iB}vg86xl z-sgX-dH5v1xS8SSxCIZL;Z07pMB9$7w50Olcf0ksAMuFg-_@3s<8|2SRgF0egdTKE zWOtg}ER6YO9dUC)t|tWP_p0~#Q}UU7QFHM3HTF`~?#{H##%C9!*ysK(;Ga)e91U5M zM3AG)5I)=@P>_i6^QDBH-c!)CZPma}jS-)rGqD<@|n`=4uLt1=nUk4o;N+Nt2LB$8Y zJIW^bqdV!!FGOB z*+~9EBphQS3+J~F9ph6u-WVyi-=}g#P*+FN-|r|_WhT2w8b#I0oa284IZr(YNLp0g zH*5}{$#Fs!owh%}V;T4R`1hAOAn}@aeS9LkluYkEXTNvg-4(*uIGGM-bY2+E9#w>c zje=~eAV2J4-{aOCN9}$zzhzc?7m8fP3C-@;*5aNZrkstv-G0n>vf(qCTA(0D0y1}R~g72 zUtRHl`Odi?u9nl4bNxK+3gV6?9w^~3dMQIQ;=rPWo6KiZK!JFt&7=U!r8Zzj&!h5o zmq1Er?Kp(I->`40dq=p1Qp*>l4o2zTq5@EW-YFjR>e!BNKyUOSy6_-` z!y&(jgMb2g#VQr2V&h6=mR@@a9Hm9s6{FxAx1DhNxWMo1B*I9QJKNg3hN*?K;5r#V z`2cOgO(erxu>}_i(d`6ru&iZ}6Jnw3R$Gu4Kr_=c$*N#OE|DgXVMicx4RoD+YZ zY{OC&Je(bn-7fvW9xvHqz5N|kB`F4m$$0$P?KGt*W4-u3p9>iUrAboZ7Km>YP#_Vr zZk+|mGz^M!ywGkelVdZP9O_5LYYx7`Bl`g~VxJ&KHn>Y#jx+u^k^*cqG&G5SVqXua z;BxENGVfr?majtE{+H7Y40F^Et*5UOi$3 zP@&6{PNQ!@voF@O1dc>wgH#O;Az`Vi3)Mk&y5u%UfW0QR#FZRg1oDUY#V@%8XbU!R zQDsq-yL&gGpGVQ`?N@Ctn)Tr0_)sBg8vd_n-u(Y7cy665ymG4cJ z7D32VGn6;wj_7b#u;n3nR&E`1yY;cGe+b}L~Nc_|U# zK!fsgNq^knsJFPhh88_#pWQ;ej$h;jqF^wUIpOr7!Kvm&GA?Z8BX||<8w&DLi2nMR zF0`vY)B!pOz12R|{|J#G2D+n7;}Uh~ec*!0D=VN~jCjpJhA12S!*jW}FpIGOLwDWn zHp60Tig;}e{Cx!c-C$ToATElBY(Q!ZMW|~z1qmSjVV6~I6kHV63|AGddp%2_3yQ~| zdYq6+0I&yn(rcndf!P(6qXz1T*H!$}>Tp2?PP#?~o->p+(zN%p%449ZAvHcux=-os zBH2k$J&VY4E}sj?xcGnP3ix5kq7$&IC`_kzDM=g5*?#PCCu&9UI6h~*Q|HP{TkX~nQyA0|O$OL2gFVDNu8!oYTzKbf6 z`WPY(4Gp7E6iJNpOoN}UDwV!}o%;q#zc9r}zbyZjCj0~b8!}xswEkw0c&lH|;paX- z1z1>1q3w~(4IemzGz1TVBIdPaO%#vgijIwn^X4DhBi;nH4%~JAO}OxmZKqLVvteV~wr#sf8t&MQy<^*rZQHh; zp8TJ)&b!_(aIgC}GuOhqt z7S1qRcwQrX`jdt^HH3vw5R@%U6kG9$dOM8)@-|>bh&(Ck`}K3wrX6C*5GO3`LSUxJo*Z(~hAjTkR$J z+IB?AN&LUyTd-v}yh?%qaCN$gDSeVXgz$VBcjp=@R=&4@drfR42QG5EWBv}GGDpC} zAsU?urTD1yTs?}+8`yG`#F|<-JWy-PO>drm=%#`9P#F_wZSNaf2+i_Soko|aN>PG2 z--&>^uFh?N@V9HgKgcIg(obU3W^ccNi5;73+@#u=u>KMq@P`;XTVkLGp%fyKx_t%?yt{`J!Tv$r%zgHtK1d2H!xRD#<#6J-tVIPBkKju1 zTEk4lKqD`>5XtRZcFwNff*t>JvLCs95&ww~#=!Vz785g|bkXT=_$}1R#FI5t0OV=g z#8{*Q9K7a~zBPsZTJ~Ykz-z*{R7hX9dTUWBOwr8rjBy69VAA7d&)XKQf_iL&lmS9= zW?Tyxw%xL}l7q$95~RNNa>SinlNQtWEQ$$5IJ&n|mTNBFqqI&=*M_4!uPqfL|JP5bqWFgTM1l#xuN_32@UZ*Pr!WqW3m>>klU}+fP zH5s$4y;y8Xz94@{S3q<>(zT$Qt$UACXm1<8<6qB|J<~VX6hHxgnE@=@ue9_rqs@rYsuro}8sICnfN&dr#tbK)T3VZcpTHO* zrgxtZP&9GZ5*ych`9krYp0P|;Dhzl@08*W|K6%`}J}4pN3oAqA6HZ8EmzO-p`e`ue zwCFkRDUl#5y@c~R_xi+-$HvFUT+&r9R~}c`lzn1F6~3%Sz1aaFrCTR@>Ve&0QxFMk zPDCANWLsQ1k6!ECsgP7XGGiA?VhwvnPV)uJ#*DE{7fBy6wyZ7dvOPS02-M!(FP~Z%b}-JP-!>1fp&{ewkn60g|9# zsgi~8tB=9>rX1jWON>7)VR~qr@W%4Ye$l8BmEEI5L85}a1ksvgqGZSL!x2xD+4rW( zYHHiY(&Q7y%9z-T!F980@1v!&-jK{v$qf6hq3^-6TM%|V-Bn*B7_n2# z0-f;;2F;>NY*GhwafBqKa~krb-)-<4pB0m}c>G=RUTdkz%6h;szy!ip! zsG@4yK4B?+d2Or4UDNzQDfaX7sNWY8BFXv8JYEtEdqIMT!`~q&L{x`?w)3O9||xeJe60_b+=q{B%ueLF%kHs94Ea9HER@f zXb>YQr#BK&pO=56r+;SWcSE?*PV6E2tyn9%AWPox!F7_4uAlIRcdqQWM(y|kkT^2Y z4n2r?;yZoh=ftkW)qW2K$5oAyk<7Ga$pzRR7e0#OAuX_*5AliHj_2S_N6@#;i7%Xp zBpqEI+_#BG{i3dufEsF+Q=pc=bWB?SI|}5ii8JM7kn8=b2Hg>(0OdfYhu?l&0X2;K zdx#-zEdB}Tps`xMUKO1rv9c=7)VAMKKNm1D!Xn0Q`SVr^$aWTFe@4cb+ zLsE7E70lWn=8cDVkp*dyCE}i;=%N!SD0sL>-;3i%n>6QwQtaD(oY*y2^4)b-G(x&? zE8b91pMi*btYX*ziWnV8(L`K-A`_N~tGw12apiIBJx}?Vl{CE%;eTQ?n>O3*o`^NQ zN;;@d_D!nS8~@hvBHKj~ZJM>EC|Aqw54t~z-OG01869jW}t z!DP1U^^W5vjS0!Hy5SVgE1X9-sNM{}qDIR@&8MH@Id}^FZ?DfKlvh8}b5`cA=bOhR z1cdsEL$UhJ_ReGKptyWg#_4fIgcfEy)`lCyLig<}FhixA;@Ybt5hFDRqk6sksBCU- zEfvlyTE&(&h1WKXmW{i>D|-E`JptRb_ZOO{2rB-wyw|+sw?SnBxV4+w;m0Bxcz|=^ z9-rMIf08_r*3Dg2UQ3RF8-VN>5ikm_uO2#HVm*1g2Q1O4UC~9Ry_}{-1M`7W8{{H> zmzU!%tX1(U64*<2&24iX0Tt5a(;Pm{4R-hzx1F;sdv(a>KZnK%R-2d~yrE<6Q;%*I z=A2jQAMF1Ti?^+mo3LA=<6rlD5A)Gl)^c@lA5<~m^m{S;6@+xd_s$oaLEVX^t%O|} z>ApS{<*H z@ugvMMHm)3>nuY|z5u^Mh{o;a6A_w6rq5%L>(Xb%uup{%w!_>HKB!=(Xef`$Ui?s% zQ7=Lp=%JXB=`Xl(X+FCa%f)s}JH&;L>15OVjXzMCx&)jdZP!b4j9Bt)EZ%)zHUxfS zAk`}QXzKu5O&xe-GXI+5p0-HQ_c4Rua5hd5p0NqQz9z)jEOge8_by-3m<23l5J?F8 zUjMnlnG%43n~(jI_AGn6UE8Z7U9+E;^ftO572&%EbmASy=rtj(Ag>jo4sN6mmh5-U|<2K3L8KldZz_p2J9z#Y6@?1Dq)^_QHX3#sz;^r9^z^$Hu z>C9MtxzMKNPRarPDU+Jj#aS%xct8QhTaLNA%gP`ETuf+nWKS*UcRjX_j6DH*uD~L) zMZX&Q@q~x=CrBv$k?&5ar`O0p!a{r8Ko94lB-SAU0x(X9TCH%VPZ3-k@t?LWSlINo z;4To1S;W3^gR>yyE1o--79ET*?@4lKautvbCvy%C-#CfzAZ98|zB0&_RrNBYAzHfA zWo)982K4(%E?mNlp!IX)B*q3j1A=@8KOzmb+5yJu{XE92S7+3oo2guXrFVf#+bn;r zXu`RWJhG(j1Be`po^Dn(`g$@dqjkrLt82Z)y7B3ZmnrG1M0f7`*u za^e4s=l^lWT7SGpq{oz%(zskH(P*s7ME{s?`(jEEKGI%TtD}X2TJTB#IQCK> zS8G-%#N`(WIqRd!ig7qu9wgg1(MvX;xIgTil(5{_2VXc@K#Rr~w)5Gf3ZfitI>#+= z$ixI2Uf&}B+Vv^8+^myl(i`ONAl>blQt2f^`}J3yU;2HDEvnetd~6qiOb9^pYV(0N z0o{%DZ!h*%6#$^E@?0K@s#UpbYbf{6chpP$9hTMwD|4hY0>tD?@S`dTPK-J7T~h>i zv2u#c_LiMV*D%&`{Rg+cg;gml8lP&Q0TMu^Q2*t^aD6x9AY4uwiteEzJtA4{y@%9qGjDk?0P zA~l79RAkJcb9^YgOS_iKJ&(`f)Q1|s3-hu<1~lPLx!F0US^_J6D`U(m8nwE6#QS-n z1Ki8H*bUMfOUQu^aF6==y<|{ujGT1ol{iN`nu_|1!)Scya*5_0#|e-CuBnx`${y+j zVq?@KrAY!9R>mPe06=ZiM=i`;@K66}IKG)q)@gt7)7ynr}Q3SHL+JZIM(|GN)K zfOE)&Y@Z-kR#BCZ#tPZL*E4wMolYxkfV(AQ2E9Gcpo%G0(pQ?%mf!4M>3GTg-{K-& z$E@xyK&wcER#}xCK%%2%zw?LVR}{|B{{+u0A)Q`OvbJ8eS?*%$%Eb!Df25YeSFeU`2bp7WYe>{hRHQ|tlt{`}=2leews!&ysuG8(U5 zF!eQg_IuItbd&c)Pv~|hHTMU!46-XMsggu&7sJ&$`v)6I5OYn2>9i)2RgA5Sh&+@J zlhRIVW3{O`kZ7a}LlsZ5GuEq+3bmBYxUb7wbR=B`vz}0Nxy0svF8bkx)GfsfnY2cb z1Zn6(1G%?kn%;$PEjQqytQ5v)<9xeV2NZG|KqCF;h#B)&_OqrD?DZSB~lU2=A$fXFRH3S@5o@4Nkx z2ioo=adJhn-C&C;fk$1*!=^v~S=SLU!}n_u4()W2oksD;abZ71Va-goE0;@mXtvb( z;lvKg)At-fcphfaa4tQ0=Q`6%C~9J)5Fwd{Uuqt>+0^Rzb^fFrc+C?_Z8U!9Z>r-H z-Lje-7+=*XpLN^{$wPx-zvM}%9+w)CinGQ>s@AhCzy1-x*awdvlhh&v2C$mbg0PbH z4D9(DMz5N0#N!mMBCWRBn&94L-m5wI%&wTOo#xJ%|8=8>l6Nmzq(e(mDzfYwn*W*+ znX+Y^qZJ?sp1cF)!8W%}`6 zD9exmI8R(OsD*~q3bipJI#QA+dcbcrMVASX`=9c$+1GUgCnm~8YqSN$>M6=M zTFO*fn2Fe!1r!u%>~y5|rRdTTW_Al(O*!eOL9%ywMvKYq=ybC5KfgNUEGh?Q8mm!- zKK?^vsziR|ikKuKQbWiOiHT+|m!cuJM}}e&?V!-aAEd?bZj?wVY=8D{D4@e+E^ReM`UKVCtC-BFAhKuaqA|_ z68*61;W6nR*PWCodFaygV%DmzX)vlU(HocPF0#nIx)3BcIuVZvSKdWrXD|1GUklKI+oS_8@ zO0m+Bx(b)>()%b-(G!rvIc7YzMUJZ^k<9dx>i|-+E?(~3(L*i=f3bu2Zhq9B8|V_7GhUI z_72;S0Ck#wAF)s3fQPRMoVaFq;h??}7MGv_8cjNmx`{>_etNDVAd3Wi>rVJ$JkC)ul#W-`L?P>^uyHes#Ztf2x>C;5-4KPu;(R_W!bpq|Bu6{W+=tv!C*W&r zz{HCCq{$7=2v2j2Evfl&X-JFTm&ZlpYun=G=}2kSJV-FRM`v|bOy zxA0VZB@F`76|#lOerK?v5hWIzuo{tBl^(F9kun!M4(9MB82HmD@-aWfHG^Y($RMI> z9Z3*mY1Eam+%acdr~ecmg$$2=C={BIO=#2ZPzmW7TxerpU6l@P{C`FH8G@ahU3;om zsz#w-VV&7VGPP3UNa}fHE5LYi0Zuz)eR!&^s5$2+;c9xWyYYd`Fo2_{u0z{|FBkR3@XkXK!J~P?U1Q9yH1l)potbj8NDw=WDD> z5~R|?rxllxVjbI?OTw*>saVoGTlqor2Z>=k;TSN1yt3&_{=1jP8W8|RAL_{@4g;BR zIifh5__d{Kv*-p^&|$sZg9YD3mJf9w#h&to>SWK_$)V()fl%7=R!vv_Ia5g0n1}u^ z;ZSY}iYrrs4H}hWF`#+;=WA)`BF&RS(AhLoIQ+~hZ|%EN)CL%n5w}H8lEVYRK_4ii zNHhn=wi?_M$qul!*`KED|Djf2DQ?>{?ridkl>S5nDqp?*;!>3UbuI4>%SJ%E(CD-% zmH^ypRXUQ}8m&tX+(cDQN_%nq4FYkGtBR7&UeDbXPU5{Zx=He z{j>BE#LaCE1c|Mki4V7itS_2HbmawEKT4 z2K{INq`_()QlfAh8YXFpGd%-!h2c!JpUP>0MJMXEC*lL63 zbWLR&M}Zl7d*Xr-DHPQYQ!9lZcA*P@5FD4Cs|7};7tZN1?80ZrlB%@2uhB$~=&-XK zc{aYasxIxQK>LY2M?WF|!T&R&fGhsL4B`B%7#p)GLuePwVxP8K)l7@VtmP=OEL~KK zdDpYIa7;hGTV&QqnbwU+1kI#XE_4XyJOzF&2AM3k!?97BWmW-IE0bywv&8f@>d9_K z6DVKzLoq5P!88ShJVg!1f$pv$fTNG&>Kmy&pT}Q#j4}BOQk~@D4NJBT5hIVJS{@$i z`7y;=3ews~XBVUrF)5$@&dy>Y@Eb1hFWaL8^|?V-I*T!VaX!(FIp89{8$lX+E%_cJ zki&w{dlyhN=Q;+QNBWYQrcwS|^j-XeHs8-2t#>M86V3e~{$LL(zl=)F_0kM54ix$B z)>9R9sY&d=Qw(d^0u3imicPFdO=6dBwYj7q=`|GsoN@f(-Tk)#Er(2p48|prux2swmdyP#`K0oMY0=s*v93`yOXV4*FwO5K zT|Ljr3sZYxZK7pg*B|6k_{;-6IBn`%kz-hTF+NS*(S_Xch)+eSryVh)h>s)XftMxT@^nURk$ELAMic|Y}mwf_7&JHfE zX}8wHfF#HDrvY~0AO8&g8uV`hTa?;Uon?WQ^v&z!5u{O>GMi9iM;{_I0DvJ=akbtG ze#7tblgSf^@^6E$$cBeQeg@?Qi(U$%|C*NmYAcI7vKqKdV20SJ&I6(joLoFA?ew)X z%Wd?6a;b+7b>@vrOYiJJ1~A?Zz8?|RByqqSqAv71LyHyTtkWVB%e@2PqGWlq1HudY ztit=2{Tes0{WTR|f8|-45M_KcQ1>#>dc9yd{n$r;*T9lN_o?)E?nB|5U=mEhdTd8(+tn#Cq1e*lgrb%x`pjX z{r2QZkWIPypaV;N%e~>iCuzA*rCe(1gVM%SPf@t~!n%#vG5S+_3VJN`^nd7_z(TND1>D7bL>SCf|tBw+eLrvb@_HTVi?F7w#7r+;HQ zS-&l|O={Pdh8oq$;6Pj7l&NW1v4DV0c?As!sGU^yqQ}5PQ#fi^i&Lv<*4QSTg!y%; zm;d(!^v0L%#Uy;Bh2ZVK7-7cN**Lx;*Gx$C=XC+{knAX!(j_G{af7Xu1@ZmZQ+mOP z<)A~*VUt1t?ciHr?F)9Jrgh{DMvB7Y6qk~ut7)`Upd`t%R?~8^H_fVN>o!~EJ!!Pw zVbU1vj9~w@;l6+4zhpsop@$gs8^NHdrpu?+E{K8JDoa0jchNe#b40T*jUF4RU(0bE zX_vHgt@_l64zfJCj9JV`NA#-sAzmEs>{+k%{CVPonlB4H%~-wU{{oe&dR_N80+=F&7vxv;q>?EwL$ds($I5F z3i-tgSiNGNB<~j)96yoL!L-A&`iBz+k>_4$kp=MIYi4THVg}fa9LY4Bgg*4Rs=GO+ zCyoW4Igns|V>fp^TceLKuG|3CpEh3Rpp46QDSHC-hmjQT%px|x-_)lhCo>bV!8io; zh=t>Sghdu4s1TP+wHg`}~?d6$=?-(@09x9wehs3WcIxdnlw!{VNXo zW2Re7k=$Qg85Ark#f_FQPk07(Oh2p?3a_#j?Qo3f&heaqe>b^?kw;A zl+4~o@!FzIHoFBBo+oHn$<#43Bl0Pe5&hCenGu4*^ZdKMmwjj_OczxWb(z718GRUW z#XH83f$M=9M*;|dW>uM2S{Zhd$sL1r?L6tOYShzmpM5S!p6o%tR;x^_@i$VFbKU3-Vzbvtn0}hZL$KJx&x(~@AC4RK{?nAI|!Cpz*;2@>}F@PgDWQ(6qjk9CWkWnF9<6<8+)T{Cn)FZe#MH^l-xz z#E!{6-=KPK@5|YD&K3?Zx8`zg<@?qWpD&PTFxV`RR@iw#2h*jO#}6w0A@xFiw#}-> z9*%oz`f##hSmW?(3yLluf$=!|>*n38E0IG*>b|>U+I7meCVC47Kppkf3N5K=Dp7XJ zPASXSmD6sH;3!#Dz+7J^+581~2jyCr-k22O@~)dq+z*41fVM1d=$2%oJr6sBeP+EN zghvoh5OB1rs(aQE^Xye1pR}(U9OErk^+zDDseRG7MzVLJR%Nhq!WBi`OwTS|SCjT> zDRnDA1upjVv$ZekMFYwkpIml4OVX$YusMz8h0}0iqhH3a_KoRZKu+};X(hv%_&Ruv zOx8jcGFGtVmurLjBI-j}1@;i?@l|Tt8U+5&?lBprC`aZ%+^GseKct6}a{p<~%$N!^ z4OJkMbFB^Z_=_UmlN$u#)WEZD^e>5*T3S#V%G9`vb*)OfP?)}gJ)q8Au|lfjB%@Gr zaKCG$fuaX7Ll8KXmmmA6ln#>r(YvlRZ&rJK(n+^@e^DibP%^RT`{ZweHt@b?+XD1l zbrF7>+%GUQ#(m@r5PIWx)9e#fg;jhK1l6wX_jJ+`xWry76!+*{8y+mtMxONgxO6+M zSrUqXwU@ztOD>=jST%;pXeyVx#a(;fdn+=Gv3|%2Mm1HH2uwa*A=_5yzFbkIvd8UBcYj zHkc~n#NOp|E{eNwdO7npmGZ-xKL!N3U6>qn_7M;A@?Frc*^;DAQu7a1Fr_Ac9Np5e z{C1U%?vldzzwuyMzA;g^p}sCifD~*HLxX8ThvsWyPEg^NBKLo>KGf2}oHq4fo$EYH;Nayv zJ!b}cCNZ1VEA_RuI>g82(02l{Z7<*Yyyg9i{cX>}Z?S4Nb^7y;c-Z-XzndR{!o4$o zR3pFpw7p1}E_1U;-a7Ky@$!}dcuYSDigq;W9(%pfake&mk9vS7YG+FbEe zTWQl6ML@ZNi1%&g7Rl;*yBYEi=^$`%@j4K9!u+NasKuzs5x@}Bu+5kZKGVN5sY5}K zg)C-ep=M76BlweJD<4}XkhM2$iL%cpW*|U;Px-M_f0RSNv#wkWd56VLhXU-Bsc&k@ zEq-#)-?ed57|Kco*oD#+#EW!FNCAXhGeEqhu;4j6&Ls;Z1^k^-q%1N35}8|09ypu9 z{=XEg?cXvPfel6XHdpn)^_GdY@^7mDUls=a4Sx-N+!uvG$F8Uqoz)H^F*0h%VmB)8 z>3}54i4NX=pOHnTi6mO1@hnz~!)O*N^W5SwN#IQ2Z94NtWc_K8$)CsN4u2H96S zUBd|F>Advg-49MiOIDZ_+w+K*g_E4xjz2@dapJb`hzJNv$lefH39pG=u4>J#_W?-u ztLmmLYTZ7sWlYo^A`|LfY`AAB8p@gcF=J+8(%SXS{QRz+n2<5xEf{%EnJS9eJJ7l=EDfAmz1V{kd|9eiP|CcFR zA8a%#5)lu%G5fD7Q9s893M5jXyfG8YRblFJ;NGIu_4Ht(KL=_@NcI~fgVAI6sYpRa*G)5Ap2XHmJ!?h7r$RBD#V%Y6LYJol1BS@2>!}lT;JGN za^8{1F(l77#6p6A{o{+Lc<8bZOA0wJVLABaE-yQIu4U)kC|E#gCAVz&&-31RK#dJkDyR2?K;}5V*FpE%a_lIk z!zw8-jx7BY0}EewssWF^aSF4w);HxFZNsJeYc(6$i@i+k?(bTdApQfP#iqUFxCr^MMXyaCZzO+onY6ZjkA{k4j0K+JAv=~_#)AL44j{U}W_Mn9}V!!>uM~@*` zV?noyc8V{dsHaTj#Ojnuq*{3gRFt`);7w>WDV0dgQxn2h_${-lzXW80H?<~lS~%>Y z^dzWf%>WG`Zzu-Oo*9TuX0df;P4ojR?keIi`qwBCF0+#iL#Ojv0gZ^ah79j9c@5kA zkuLk93XORYN74CUS47cIYefKMVq$Y6U?7oUVrPVAg@QUhQ|K47qVR7@wn_VsyG>%H z);z_^Z$OpBrlYS1|E(ndxk#S8kqD1r+ z8Lk76wQQt`DOn@vq^#Hpzk|^+Wz* zqNZ_SDxZZIJEPX|Q30*8@gmwKXo_8~Q4Fkfa*@#(XXAvhODF{lCJM3qfV@UiZk~RSEN` zT&j-ohcU~R{SAdD7SlI3al=U7Z3YD&Z_e0B<;B^Fcj8dqT1zZiiw;OUfq9{Opw zlx>a0@F%aM+Hpq)QtNK;d>utS>x}+f{4hH-&p9UtMn2 zERv3>b@$}k)7bQT z%8xi$5vw8f>^7yt3Ex*A&QCb;CD}DrPYvnN9oTB@Iu}i?sv#GPE+tJk*WUm<)m?KUb^Y<${8mGI)V*@nznA=t%_y zjbt6FX}R-YdN^~8k#vP%WP$HWQG0hbe`8@n0&}p`tOH#HoA8thS~NKJ2a5fkU!aVf zJ3E>8M^hBbo-WIfJ~phC47Q8!I-U1loGN|JR4|5B+NJwX_G3mp)I#K^NlU^5NgJZs za!194A+%X~4eY@M2UAYhBMB!}gTdBNn!3s*YivJ9i}un+ZYeD!B)BDP?z`Q)>2{x} zY7VbJQ4WfQ-wsJQ1)a?U5-6K9T^BocphTF|lOiVU6+EpuBA|u#XTOuvS={J+mv7NR zsF#K!@~^z2#LcJ-Y>nG@;Rh5 zv3g}zvwM60X)hpYac8H(-A#aVR#EK_hm<`gF3y&GtZvC*g1~_w(8Z*8+LljaHb)#` z{JhvXPN=9dW^2USut%xr7ah)@HE*iV@zf#)cOh^wG2zx(_tn;9avPGrNPW}R(>LG6 z03rE4^_5Dn*ad%9a6Me~hjk1_FI?9Mt9yB2(LqLgqMW5?oU8Y_btu)(%Up znB>#-l?d9gYsq<+Y*&hPpRSqeZ>k+z3{-J+1$Gklan-=AlVS_@VLCSPBsv?P9L(ft zjLBmaL~P}4riq%XK}s`bTU_+=D*sBgF9znG>tXP*Pq!>dKfk_kv8qA4)H;trdDdrPTk5 z@E$!pY>MrM-L_olE;R^p2!&3}9f7Q8gF$kZ{x>)OGc|1_-j@Bw13Sx84|Kuf+_B}C zH^@%Sm+>4F*V)HkEM?s>%e3&&DK|)B)*|X~KOmh=>XCilDSzzwU{eO9pH#6>QG=N! z(FxGf7oNG;o$M>Mtg~d~Lq`U}EI@tHZ7GWXtpBQfT;2a{%v0)N7Vbv_u;?CK;Xgw5 zE1tz>3+RBCrEzhp6CQfJW_c2j(qhVT9)7(JY!#H%(&(;IwL81jzlb_bVOT7N(vbq{?CSa z9usv4S+OVGT`kGq(PZ0ZTi`k4Oaf&Iyoldd6LN!urqq^qW-MHAKhcDa#s80LfmL@9_x7w)Tf(t71y8F*il6%XR@VTw^$+YFLBfsI!zmb+MXTd@ zVb?dalm;9M!nL$w|DA$F&-(`EY+8r~1LRxv-5QcUL=XSvTETb#hoQSb?k_^?kLf!L z89}u#L>8zY4yzxTNpkrMuEG;OEKMFQDJ-zY|2Lr1%3JUkPU% zG{7VsyM(x5lab{b$7gdhjF&2Ac64Tgp^cq+^ZmX|P{GL$N2h1xUz||}jZD4cRpFEu zv<0g6=OO@IU7^iP`4_tOY$~Z_uDK3XBMmQBMaEqW_hSNS4~`F2%b}-z?LIA6@y>J% ztFyq?5v|z2*(mni<^P_THAIcRXx)1u=*+p-^JzBHfJf$PgAi8I|h z>$wX|#r^i^7Gq|s3VL416w&tt+FVdwXb0`131d`QvTr{hN5FecJpLRrYk9JUEbETg z824c47mcNcdz5f!!pV94Iv&HoercB~ZT8;V==1&AGfmX+`T8CF=3~z@8< ztS?5<`jNlP@*)BsJREWspPi34+rlsMZZNeVL9j#>-dJ#;rx<4O9VXnBMEQ8^Ro1;= z^&r%)!?Nd7ngz9%mO6Zyxw5({Zj}P!md?cv9fbRf`$R~@$jADvY4L=`<6~x|0-{su z8-W?^OpvNS&j!)1C|0~+C)nj``I~h31z9;L>S4`O`ZqU0HB)-%4 zVTK-9#CW+LnZ99saAC-PGpFfcz*`47$hR)iNw+=_o$;BF2J3o680FM(8|F3tN|tKg zY{ork=jL#4wTEWojU!B7!BU%E6>BOB0Y6AAv|IWrQ6K=~n7mwdanlpN;uDATjBnGe z$K=4LeXld9qMzyD7m&KflWz?b`6$Z~(2`I9sBz{lM-h)?l;X-dYRf%<;qOiVZ5ms~ z#MIa0{=pdt$Ek?B<-aaQ%mO?$w z<66`1k6`A4D0|h~nLgU2n9Qp(Ac(qLlnP) zu6yViN$+842U6lQ%9JHpV0N3`y{*n?W)kG2p;N!Z(V(rdrk|0LY8+7v-`uZZKX1Hy6+q9xARE9 zo{V;G0tN0;A;4Ds6e75wJ|2GWGCQ57&c^}nZ#9-U8Fit)Nb7N~J`m|;|6+aZX)dTX zvVdWmfTjvI{Jq`3DABdq|N3}HC)e%F)E@nW5BN`0MTl$`l3}5AXY!Mt8ix{ifP)=< zZaWV=k{}5^DxELdcM|TcpGxH`e|=(KLHY6(kD{hFnGA-VH%6RMY6g8JJ{wWZCirVs9+0p$ zaXIc6d9VRD&E%JY?xlFEYx0ND0ia4aIp1+gi+$a=LR*S*_Wl$*YqZMNVnsTo@k7Vh zj#c>>Pf?L%Pbs}sFSGH3@>Tceeisygt{u|y>&T+IZ;OVJMgD#f0%ArF5XwTH`_#re z*vXi|n`By;3%fzHd3zQcaPXA~`jZ&e*S_*~)=sK*gOLxSKXl#i?NblI{gt);?QmDq;#$ZFlco+1mb&mu6u`E=He zYL_01m0f0mp@ss#_qZMFXmX=Wk$$&dzRZW575JsHc#FJ57$h(~&p#o40v@yE(GLvfgn9YxN7r56iNKyQBPz>pV_#fI->_s2B!P=h1 zmxAK>Ur~FbJblEi^ed}62v*G&57ujXxf=F)g*rvWMokfzqsBY!+k6hNkbK%Yy#;7B z0o@k-kqmaF(yJe1$;3|d^CI!rs=sJRfg~lKq{w;l70@>84{~5OE6~7LGS0sc7rjz% zI-K4!n)j z&bxp_EFynP3?FYWuU1NROoWQf{8AD@_jmaU%kR`4qnjX^6rzskG=C!CfV*YAdgeY1 z1o`sGarP(j|C5ON(;=kX zI{I(J@{%0#aIQVbmtmb5b|Kys4OY|kb2_PG`&yS3w(fzVXmvu5!!wpOs(13!opugQ ze(yV$E!Fvm1y3V6(Us(0)1_w~k;kp$P4Nti!DG#ybcY3xc9ixv|r0HnW6(Y}n7yfn~OJvo}K@kf??=SjF z@R*hh&_C40%3jVDTCv^eDBff+J?&(Z*V?OJ+Mr~h+Qn~YWWq>`OL9z4UG01)KCmNq zQr)XwF5)f{YAS^`Z*2_}XOh(pN;Y1Mj{-Zd{`0#-!X#&WhXYWFuk&pH)==VA&lO`Pqn3(x{FyKw4hQ`J7zDF z;f6TNQI5vaeD)_yb4>ijgaqXHASHu2(oeqK{&ee7mXNsM)`F~;o}*q2tXpk&A0~yU z0PA->f4k`lNw(}0&BmosW#y(#w+eA*AkfH0tv<0pL$GPLw7O^u5tOdvdo`-At_~dz z<6Ty2YZp8|WZMmFKO4W+p08~9VtG`Lw8fI45&w4wQ794*IHl6+b+~uAXRsVZG~Kv- zB3D3d(@QTkHUpm+(yeam8HDXDQk#iX>x#ov%=EzL$b^d|rKTmi>;Iv-2T7>&)Q0CU z#8q`?9Dzz1Wo$kECW==m*;&6aKbvIAK$+fhtj@O^YDK42`Tai^U|#t3Wb33O={{}c z+3(7*r#3*IFM!u5JkR&B?8p0t1#W6BB0UUkPGGtWtO5`QU9ZYE{H>dyJ-!}X@*l`` z%F}ZQ)aN1uNj?sQZ*X9(26=OGP>Z)ADB1W1kUwD1Hb+Dm6g7)-CBF=#Y8cT{{&z^9 z^?J|L%#ScFna~KfTqE;v%*Dq6Zb_!i zdT!KS7-X`3OrW4-B1oz1ySz%nhlPN7bg58FQiNa>b9y$R@d7@O^oV--<8q zrGoWx{ehHE&p?k6y%{>dt6ghI^b}tan~X#%(6*|&_NYle`^am#D}Qw1jR9PMbOmfx zp6cSXb=I$?H$?;A=O8?X61q)czO4W!-t+#k1PoOqq6~F!NBYe%)A06RtHwuamDyk* z73%?uiHVO!UMTPIGXg`FDZD*2NnCQAFyn`d0|L};MJfU~_ng}ji92An^I%d+=1-`BjLGqij=P=vbzLQ(mQV%whslzdABQ_{YTI)drK1cM|e;6R0m(>&J{a~*bm^p4t{07 zRk?i~I@`k^ou}d!1OI#a+U7`hl!RV|ep@BG*z`!?qWLqcdhRPd0~1Osu1!53R}_#t zA%R9M{ywkx#ZOPh<74?rhQ|D92ZvM{mCq zP=Ih{8(EShbEL5Ln3w==X{<3HC}|0t!WvvS?jkRZ(h_i!M>v{Av+MUCUONxB-iT=| zvve(sB8fb?<{NBtyYyT968q}7<3eIjVX$$^*^hcY_82n*WC%{-vAAXkzNt|ha>8>UM zFq&H>vkholQz-eUCBw;ucmnFrh1w;yM~VPO4Pcu*T|Kdj`rjcKJgYvq5U zsq5}vJMkST5mYLx#j!iX(5m1}%9y?%a*z*>K){7y0XQ`YA-N$6DQoAwr0#2cpjbzu zJmI-~_s@aZqWwQreRFgjVfXco8#iujtFhJCYS5&y-PpFB#gPo{+u8+-N8#)ia@Y=@@6>fo#&TH@RW&{? z_NmA){TId%UtY|1m$K5u3(bn`10K`c0nQp714lQHx!d0YA#|QPOP3w*Ce=17WF~g` zVOXc^_y?1*pGr=Z$!Vr_Mh->#KSM0j3oPVBhLLpx>@H%V!1mMj=ufRuzO-5%OabL3 z>{~eByd)ZG`lTugem$s)*9Bqh5+FUz&2&ihSkFF#JI)NBNis|otnj5qoBD9gcvkTf zrCi0`e#Y}fs64w$O@RsrrdK4>npJ77&R4DzmBu|leC9Kp+lI}CmCMo+x$W_UQ`gqO z#?OGaifb2MF2&{B(b~s+pL7Q0q_=x;ZU_T)*ME8T1Nv#N(Y&oHy#{DnUiP*%ah{9? zOeH@|P+9x0t*PZQp~Lj1oZA$`VbwOPKj!@Se^e*402McuKbV}c_!%2?jBNe5>a3_} zF)VS36x6=O*G?M(!?-2CTDyFYPHQT+pUO6(hcntZk*8;V-poJem}#Ol*vb$?3sS(0 zI2A$Hk+xVN?#Kxb9+*br=;iXarr@LWkydD1aNe)wAn0c#paTZ_>%E z@~O47r`f?pzl2xT+k}5_*_%wqQ?7b^;_?V5KCRe`#$d;U}GBxpw@55553&d6`z7mbWftu4K+k8w#}YLi{V|G?i-N z1*-lGF&gkqHNXB&c1)$)jpBK%~dCC#YdNdKV_ZMK%tZ;|SfP6>M!mo?@hpz@WU zPI@O5jRsQKl~VF%dX9GyQIkPOpxPBSfa!~t`jA}2-8)zL1gW#(viEb!gZWvZwPpqI=Jxl= zpevD2M=CHj!F@r&iV&vqa7qnEC36a$5Pwt0m9`Ym5_45yZK;P*fu?ec&<)A|7{GMs8OqfpM%6yH`m>J}nsu2%9@^ z*ve`{dOy+D0-0%BlPslmBbuZ3gYF0Up}3RDG_y=c&Dk!gCyZW zJaT2-SFsoeWV}N{LIQc-+9(hS(Q!a-mw5z=Y1u**QT3h(s3hr>^k|f?hUR;9yzh&m zk3Fgf^&XQA~<{`>ta4otl1fr6Q#Z_{(ISg#N3OER0TD1Vw@!BnY zMS5;7!mz(mvOIkls4?snL^+SDAsyT&DFuW`J+vB-)(#C?-d_cflQweK^9qj4D7#Y}U_M;W^{eTqm50exX<6V*|f9l9rTW~b?$ zQv06w6FxCj=O?vp8>lykyE?B;B{0Ifx8b6K;>|r60vnNFZzFXBOgaF!-MdWikmbhd zD3)`wF`#aVYeG324<991`J9(}N|wL50I3Y+Ln-bkqccK48>_ZF2_QrJAd?mb-8TGm z{Pu$2iA^`DgVjZ{sp**HhUktpL4tGHxK$#tY~CUm*oHfQkQb5zMvR8Y7Vk*-k*2_o zj@`+7Zsdc>v4RsrQp`VJf+VApi!7X{H__r)sh%R+Do~u>c5}Ww)m}|h(+0b#Hf|~J z6WaSN%~S%mLulTz>IiID45Ef2a`~>>x^=hi!}zqo{);25pT73bf^)1JVhiW@y=dO3 zP@$+w2bWf=Oe1}ggE7q1Cswd$@N`|RaRntpC;DDjVX)x#wUUQ&i`H3bpC|h(uga5X z(3yvu1a0dDz{}dJesA7j1I~!tTj+!=&hD{6kj(#k+#)XboUg=3Xciu6$LEyPdkusL zXLHlxk#eO*BgHPR&Y9q+CTah*_2ix(|&6xA}uS;FpR`4HAfjJImI-B2k%r5Rx5JRb_OS(=@t5*04a@TWfo))7YpvgEStfw_l%Qe-d zgIH}Vp@Wx1(`q^8cAoH|7YMRc?D~_#o3TJ8_h2!b##r{Z~a3#ENfF)4Lh+7fB#W9^Y zYS1-Gn~zSDKBq?!+pT9a-G0{=g&3qfc*HXEkfHS7{2+{`Qu!X3(Cl7MK{4(CXh!70 zfEmw1VVbFQ3_rH{0sGX}m<0`o)@LbQmS;2ih-8g*#CUM+;p*=;67mitQ-HE@c9t4_P zV_oFTH51)B=;yrd*`ko4MZ^2!G93<8Mb%(4tW9&Q#!&)nV{^c;%5NM^Hf&kxIY?}8 zZIfQ=Wyjpn4aZ3XBxOk-OGuI@zD}x%Bye~Jq?a0B17CFH^HM(}sDNKgIovA>2bY+7 zT`<4UeO+s;%kU}tW@|{W9!}4pZ`w7;nugDo*!C|@tW;N2s!|pJ__v5LG&Vvb@Mk^b zxyn&%WFuU5rD<0j+YbC=&xfrwmnV)=+@ur{2>{)zNfh4&e#e|Aa&2eKa8Yq>5hI`9 zGT*tG>e&A=CaT@hq>ydM9|^wG=5dTJk^R$t@gJ*@&1D$){mt=>LR89@8iWFTAsvgZ%{|l5Z_|--MV4&0daYHCl#|aX1@vui5qn(C(hq_T zVok6tG5UgEBF(>23zX<9E-o{8lbexwv~F4O!9=}z);PDVRWLs!0|q`xDGR$Z-f;8g zq5h0Gm_0vpP#U+U&LkUo=PFZY=ehee59IpE`f5Q!=EJ~I;D&%*r0MriKS~h|X&=)j z9es=VaBQOwB|3V1WI8DAiHuD!$!ZMOzwH;2oQnEob5ug1c1iir>tsoj3M?qEU!Y!@ zo7f_7Bu#IS-;+7%Jo;!JIW^1WK;=(x>1rR#I;zaS%-CKLuzN_DY@|Untz4*Xl6>%I z%?QrMepQhJ3`ffU0o~<0wkF&*A3mpf;%`*S1tq8R4!e`cGZT?ljuh!D`WS}$=uByn z&^Mh8sn~K(+PB31NReJO`jzy);SjOd%|wT#i#kz>s38l7!yP3B*MnwWY3v^Pso5@421g?B3fiNyt34VdPZsYox8)|wuaNfh%Q|d zs4Ln|{QB1z!4v&uU1#5-n`-(94+aov6RFIIP+rSNf-37()od?Q@o^G+G1all*QXtw zlBcU`#_5Ls=5ahiJOgvQzxp8^J{jP!NaI76Ml3Uw!{5vPBHpezUUFrtP68;6dY?3F z94TbtzpLX`*U5S4*&FBC?aPUwKJl$k^V+q;xU{2%NkR+rcrp*|e93{8iyJ(I7K9(01DC*pmF@ z5{}sK3bxkqbB#MLJ_YxeKN>sTna(SCvj*hd^1crl>0!;>s+Bg3>ZU=8{|B@bs_()KN?x|`VIPDy_?1gD9Ndz zXfVM0kEd2Ac(TIIaf^iI9vaqb_3!$2Cv%+;xPDh!1m7IVS}K01qNht&^ZypqC*(ZE znM|`-El)}RsS=%VyZTx?jy)p*2!%?=utxBS2MUu3rX}ZQfF_zxN{{I2bYGBHG zqs>I`lm#Evl1$+p_cZp}jbPXd8cGZ)jwb9C zWMHZHYe$I%Ko|W?UQO`)^LhF{KuFW3cRn!7wmLfQFS%Myy|<(~6_f*+m?PC?2Y4P* zjRrgMck*M%9nxm<9aXvj(Z%L`^dU-`x%*?6Mv@Cb@e1O>?!eq2q@&nq=A7hguo3f_ z=-r5q!uMTr>Tll_*WWCV?M@{eL**Lz-;O}!FI}dAIk9CJVLdJf019rrzi*iK1O#{L z$Rn#5xIAe2so-5I9n!uv!oIuN`IXHj*dHPrDPOqu0_8FBv91U#XC8kXUZ$wT5hipq z8Op-VZ}I=&GHaLM>ANy5rqEE|`-2sVKjx0xaUg3Q?k%F?IxL1PF{PSU0a-9#l@B)R zlAmYU!G#3?wyW{b&B(-9w(=@xx&s|QVq7nRV~h{)Y;a!lH_q8`1((HUly4^Uuyv#p zv$fg0)NKoo6CLp;J@0oRDpmg7atx(`?VV}6JxZ&US;`V6tyE-$rI2VO@&^%Z`xXtb zoOA|*G~xxt#ALf?VAxLyKGf6WimbMj0N*A zfm<`vIaHjr;|g(PG9U0i{O`Sb926d4tk-Esl0RqALrr+t$MPse+@cJznaRd+lGzFb zvh#6{^)ZqQ3U&$E*m+kh`bb(`9S5zP^0k}(2eOt~>J$vpAiI-o3TAM-ZG1P+Q!z1C z6vq7WKTr{t3(z3)(5oHqH^raxgL@%)m&Fc_HJx+lCRX#X35DLp|E7ySp?93WyxwZ* z*tJVMAa%8%dZ%r4iJpQ-{jPr&Na8!{N-%Of!Hj6DeK}5Kbi%~DV~m$pwIyDm`r@ul zj5PAGpx0dp8HuS=zKH=dubgo? zgOW4AcWcVLX;iyjo57}AAddShWJ}SVhFN_@lWjX^yxenj;;J&5^AMZ|%S*%r47D$( zTRA!g?u~PkjogKoN+&;??WRV1z!ZXu+Ff|?h_8926;ZS#*dM$92ERF|RXhfnQ<;ZX zeS>E{|AK8|i>W%7kE93w<{;3j26a2`FV7wao#}H&&-=#NXI|Cpu)?iAs(m_;wbA(@8Hj1Q_DKTSw_ffu(w0>>(mB)@u`&$ zgwwJQ&I6A)>R?AFl2M324W*X)5&MA%eMpfGS3x~>*Ra0ssNOEFhL;@3TDgcit+bIFyfY*z|tr#~wVuu!96f}Lk{?Z*u67WQaFqBYnnpLQuUX!y*-iwC+3_)3Byh~Ckt zHVH@PN79d7*I4AGG~uY=Np`a$qAp6ym%&+=&HkO-xASm8#^5cLoN2 zR*lW>bRF~kn||!ya=sHFVGCoqdijexoi8D7kAw$0!SwEDhnFF@6k4~q^GH^CGf_nJ z?)j=Fop4?LroZbtl5CWUH_z=guCU16HHp@kO>7o_fthtm+m{qPrxE*;?8>!uF05Q%D5WD~<1h_`!i1w+(dSggnF!$Xi_t%KWQ9cvUt zE8l|UdfE$y-<%&Y)y=g)E~`DRBveA!1vJPRrl+HG(eOK__4 zQ&&bt^f!F-_$vTuF%i3QBBrJz$Bd{Q1pc2qK7x=(QxdM>z_7%n4Hp~K(!8F`DPQ(q z@(QHwI{30MMOw;N-F&WW3>^mGkQ!NjUH`n25o=6ot0H?H{)N+*;3D0MY!uOKN^bc% z>xdI5AOs78rC`ZxT<%!cNu`iU3h*rA$tse%i4V)J6|jEVEo`PwB6P}d=JaLio>BPx_bakKO2me|o z58W)zRogs@hSUe$%zb#1P}&*8?U}4OhU?sY+W$0wJ@qRg0KjLo>X^*y>e6Xe=6E-p z{b2e#v+q|EMuBr=1`XPkv9(ZE&_Oxt@q+EL@VzeVPLZVFv5#k|50gD0SV=>cUMq z9gCObhaxf0P6{O(5|gaA)eV!Rrf?2)g7S3NQqWOhz@~rog6$NWmuKTCp)i zZ+|ti2`P$(B`=6o2H{Gjq7+fX9me38CP{8 zX%?-u$7yjnLScuOTVsMfC$*ywE2cwnd8va*=~3dfx-bxdN@A@UL+$2nO^l^1Jy-PI z@{+I|QAoDA`Xb-}$Qw9+6!V9rgyHw(ee3+xNw3}FB94sK_@b{mET1wemDoXtg4vxL z*OzP=wkd8@s+9-5Nt3`8;+lWtd_T8J-p2A%n@4g_$h7m>av~z#f0K3E|aL#anq zOii_~7OKGn)!#)2_y3VAGqa==B@*Ax;>CW4Dk>b%p|JT{+4reE5xhzW=2^4|BXpya zR7{I=iJox|87`JP8yN2pB|Nd&MN3V#vC|vJ_J@!t7!-jZJXKL-9>0f?7{Ki41(}A9;g^;9_!#Dur>HkK?R|unB zo6EJS>5<)P^<#W!F~Qt87~15Fs*E(C`DZ#y_XEq}PKwrY0tTi-s|xZ=n>msi{ZqIh zQrNyc9gIh_iZi`7K#cr2MI6irNn}iZw$sJPp0XA18?Pq%eM8YGC-uOI&a*7)Gen|K z;3`Yf|5k3R329t*E`hzFw1-^5Hl`q7owtzvg%e|&+xjJ=c)C~SgHu&x%9yvo^?qW~ zfPX7(v)-Twxm<6X*MJ3Cq(es8bW=e7yn>B3?_j=}UE2o#n$~(!z4zB#yfQMmdp$L3 zFe`H(;a}mNfK4|eSjAfs!RC~HKRVT#VN#cJPHXg*VY!TDL==cgqpfb>cIN5% zPd@+K7-$1uBq;1=(*m)$LMVkzNB?y!rdi7MK}0oy9q%;k)+`l05?|9z!@>a8Jt9^A zZi1d>?}hG9c* zzixDPaRa0{3X7#S6&#saPsTPNz~^M483E!frR3w=vpCa~xd>N2$3h5~lRk*uy5O0F zY&aSJTP2HWsp6g0MuhIB;s9&(>25(n%I%RDx=?2OS=IN znj#{xZ;i`H-BDMq+1~RmuWKju$of6@*ui{nH&t6>OQsJN&LdA#I6wh~*OSw%yn{V2 zzV`Y$uMg^A53iq?!7~CXn)pQI~4$ey&MJ20P|f$D@rGGfMpa z?+R4Cc|ee4)uY{jR>$kJMharQ`&F_++S9g{BDw2m*T*}gLf7cEb6OwI|!R`vYh1DdJOB1&-)7xoj5skgC0V&r`Se(>qm+2`-twQ zq!oq7e5p51j);E)SDn#=+DEw6Z9d$`cNeIaa7NaRvR6?3g;$%6xlie52v3=qvpa8P zC<3SKtCMPl;L|@&3+@`m4^f>EmKn29s`wZ-u~yr;QQX~WM)RC~Oa~8ShkT%#20{Za zri2*X>bxDYjTTN@h-<7LPUp^Rh(~7R^tF6UxX8CoCt@{jb>CBfjsg-xS08A}d0Iv{ zoXmp3La5S2q%=E0 zQy}l+v4+?&-y?o_(9xG(^P6n_r-rLTA1cmBUy(TBhF@q~u#wF^FYd2XRfKPzZ#|Wt z){-2L0+!C7h%DKAVfZMLO^d5Op$B{`*>*D@KPU1Iy8RC#X0mqF?- zvzu8yG$8{HM;qsr|l|<*1E`o*kjlmm%zU%L4hUATnBSaxU?TCC%L{s(m7T@%z-sBbZm!8{2 zJ7DKo6G6PX49efYO;V6+`$dR0JQ-*B@puifI+Sp^`#jaVdyk`;3qCUD-QpBT{T27WT*+eerTivLU#8g~ zO%_mFWMIiCz;27aQ9e5xuR)%EbZa@luKcMH726v6Gsl;$DQ!b9bf~q>&>`;ws0D4` zU{hw_^tbVh4G}LGhe$49{S${|cgBkP^!tL)W4maCL|E9IB%8>Lm7FYmBW_jP0|+cg zCocC*_)D=Jk>|Vca)QAT>le^*-??1~jVaq4q^rk+$wtX4A@p=?Bg*UT)INEuvB9M8 zhvzJF)Cx2=0;k*i)6G+Mk$a0=v1k|0rZQH6+m4yO>C;IVmh{RgU#?nAgwAHdni z;l}5VJdkw|;o288mx*)9h`gRSliE2c_o5Pz&y|WL`z-Kwv*`!=$n>E6p^$fxKpL3? zN<`k<^1*xXC3e|TrOj-z;Uu^}K;nQ_63g^)ot}FFb*;J4$>$oJtu5czNJyKqsuc4a zc;>Jg?nZBqQu(q!(A&ee88F;^oQDonhy9gA3x5QD?<|9B4P&A18=7fA)vZlM8Sm>f3)L8d5#5CxBS4Yw?AF{>hhrEj^%s`R$SQ6#o zE>k+`U+WsyH*Y11^U%*7p{4UiozKCUNLk{XPre`7rw~e`7t827w0aSd{(|H-P2T;! zPt5LJXo0NjR1WV~LX_~I00609S%@TTg{dcNzNQ^{Uel;;px-`}ktCmowIxkmd%KDd z-I))Y?%VBPv1$kIZ9Q&9M^VqeIGlTT?`W*->26Q!Q z+Q2dBy?5+;&uA>)Y5Phgd^SGalB@Aqe9B}ylm&LkBYXe(^Wvo=?M(0&r>_-Po_^7j#BLi(5|@wGn&3c zb|AWg+f}>Mx35rzBiGnr^_sFXnHc= zq2N(GBhP(6ZVbh5QRT}A4`w~XHcuU0;r3qu4kn3QOSc!_kMt-qh3+zdJF!A3x?Z?H zcgeWi-us@`4s_<0QO|t00W|1>83HD|AS*pO=A#;xgRyW+fS=~j>ia^M&v(E6qB?M{ zM_!7Sr^fF;PVI~#ptaDUvf)`!47I+TzL$JS)bsi3eit~BF=PN@;$IrtJZS?bqc=CI zHjl9D3CA8Qd=`(c0n@n`(M!500DO+lAy3MI1j?VB0 z$>3%cbYAx<*bm(wj;&ttK)BGanU*ml89rB$*Wv()M?9W`2uVQTRP_tPHSBr~C4dfv zWVg^E7_@Y1serk&OJsh}3x8IaK|gLK2@WC~-S%>X=x$-HVlr!mP?}!Ei=VDytpi0` zxI(}$*~@cxVxj%ak(0@Qkj!>jS$w=?i~Ut)&&&0d*-pYC%D zC*Q^V@puF9ce+UHXxX3Rs43p-#QNTi?Ks7L+sD^x?QHpY)^+tp2=i?-(u6ri^vc<- zaSs`brU1v!?f_&4GbKhyUmJ>O=5!pz`SEaBH8VQIfymV{|6E<5A)(019RK zjFl)WU8PW8+X1DGZg$7+&G@u)!T`d9pp6X}=*b;qxaP#YO-~GD$;6Vy*gV_X)zbo-YB6B6 zVk2nAHYgExKArK(IbLZ7fKCgBP!sLu39ygggvNoUQjkcV@XZolXLFYXX^?@B0|IS! zAT@%J;;G)|DIfU{rDOsB!RvX#PLRg#r;+I=2E!aOAIxDofqzf1tH*xbF3=m(gUsJd zi8X4`9AK;rN!H^$up0zye@MxK`iz|i9erabgbGwJbxhLxR!~)AB%(K}9~s>Kq_BVK z2YSoIKEU|$94^$*k>4!N!uGJ1Cm`>H26reK)OAB)ly-JJ(5lmut~%iz#KrW`lJgw2 zA+U+qCGJ$~owYnuG#Ph?EdFi~dqf?HJ@=SLa%XA7cykzPS+zDzBnbQ z=xtkHEjczQjs9~yVfJxnTVwB@A@R0aIR?OI(m<*fI?yKF6S>DSg)uC}F`gKsXu%@~ zN~(K1ag7(j6?(>xUg{d)7iI)qG=6~JS6`AdHW~cXw0*G~-1gj_5lNp?L$~-;M6_Sg z7pH_2J#9~>1)e|ccew^-)&coBPq#YXTL9O&%7)dV+}5uZd%9DCg`HMP!p%;+g_pH% zlC?fBw9g0177AhzR+%c7zbLGl-KYiLGD02LF&MO5=p;K3)(*Qq+|L}LB!1h01Utl< z9tWy&eAA!bl~nxo3p_SC{tUf6)ZN9#LJ^y|2tA+e(e6ZdeCarlv~S>wdE-~K0}7WY zQPG1NoN!La*g6}0DIEh-&$Vw1+4$jA5%2r?+Y52sd)w8P2mk=jo<);CNDwrscY8?a^;)5thS)dq9xDc97{297V?pm7LL&WNM zIiX(eRdPFy{55AFF7RTCEQ|sWu zW)K$BeYn?v26i2*G49W8Mg|+U6(~teF%ru}xX#LE=``22!{e*}^l@Wxs{QxFKQm?) z78Z$#2ZWvU`i@x4(h_^$i3wSyEUOHrOt6eyadUI`D{B@}TZxHSyiew|iHT^FW|7p4 z4D`K8StN^f^U(0iLHbgC#`SSR7LlO@vl5*}^PeFxF)@M3Qc`1LZr(HYY|$*jAX|+= zEOHPt0ZT>D5SM{>*F2L}7W)1g z(<~(rYr%{vH*uZ7RkCp62C)pS&Z%sBI(IbBXfw{j$YyXQA^BB!u65VVz)VKFBPTN3 zuzqONc5v(7@^weB+*NYaPhk}xTL;@_5v3Aj`{In479gR<43)zp?q;xQTZAdxO{HS^ zW&j4T#d`Do_CZ$* z_g}3`(RZbP?!C=y&M~$wtLMwZU-Ln>I_m3HHbnSH3tSM)L{ouoEdnRv>)(>fSMYMs z>DnUFpn{+)A+Gbzjp&sgp|h2TmUYIe4x3-!ES9rT^^k@|gaGDVa)9rt0;VNi?;B}g zxi9Ss#}8FdL<5FG=kT#-%45E)>F2>2c5g--o@bYBMQ)DH7f zNso;lNtfQn2r0z1jv;My-&s>5(QaMtf)X(#L{UuixuqLo=a9;C%f5ukl!Q7$^*8db zSi5tpA!%9|If2!RhPjdnNaoXrY^EEZ93k`O_vuhOQZar{^O7r?_S^4{`lK(L4WDc8 z>#l9A9KPoOQ%8>^lnP)mh9L(KX0T4!bs#=PfT%6pyYMFP4gDXGN8zi8jJ7)I-t`Bw zzu@8eK(2LShNj%TrenS;n~nm8h&S=eB8nAoeML|(M*Bu%~DCl)|<=9-WZ>if@BS4^7(quD|`uApSLb0U( zk@xA#9gK9KwOZwBKlvk%kdDO7DZF!^!^ROr^=o$Bs?z3dKZlM273Ej?K~#c6Mg)h66!TK zr<_26C1Pv&a}gE{P5W}SWB-{{-RTZ>9OG>KagM_r4hTP&Wm@%h1lTfuBaBEDILKll*xTLdI&nSi zh9+@ncCEU>xORq6Rq=ZcAa0{A>x#`=59n2~o~~LUYc1%iHI{d*m958X*h4cf5^9fG zGY%B;DhWFQH8gz*u<(2F%B(`5STBGPsO!jky|=sYkfjZzI&X2Z7w7z^*pqckU(VUQ z0|uvbl1WK6Z!^WKgC7IJ&UNP+Wy{dEGetmR4yibf*f1k=rKe$x2e9)=83c%&Yrci4 zPHLg?-_$lTuGYFpL(UL#m;0V`&$|^M5{CDfY}Gp4x5Rm|Ky1y2xa!pWO?&TR2gQ&Sn(thT1b5He>C|m< zY~wa9)ez(GjtR1^SxWxD04wR&^m@+dvBwyOR`Z}#zZ6zZ#ShO0Rlg9jH0$%^_n^cP zZjneeLvqi_p5e1(BfCwMaF%G^dBmKm$64*IX1zlbXFFHK!`R%u3o;c>Sz5pF5&}-LBXQsSR1Piw$Ka;*YmaDq$h9X1vG{nR8+f= zzf7oL0lp4-u^%tr=#cQ5g9!}ovaGnG&vXEMC%@&#LpZw`?ya+Psa`~Zcb+EFaI(qn z17_x+$~@J=Qt-3^a|PiWCbS?%3Wg@4k z6pS-tFVT)@+U5In1}vAep0j1B$aFRa#fZAoND#K~Yhj4%j5FcP3rR38dK4u;64Ro1QYK$%nF!q4}dIF0%SPSiDaAi_^sMw$3m9&*Aq711Lm{@0{Dyb9N`Z*LRUK8_CW~pm5o> z{U?wX*IoZ{gzC!E=-=yWhk+hQmN5V`yXR3 zfJ3Cisc3ao1|S$bkq(ce5Z^we!D~aa4TFk$vC3;jDIMzQMzB^~{>po@?9}^(0v@0e z!$qkmYN)8_YF*AEJ4psHv!>}yk3^fGfJxII;CUNdPluq3*L)v$-(2HtN%&#%+_%jd z+M-13a1*CY4Gh$4JQ$L|ODr3ybCt~P1vOJMx-B)^{Hb8J$?TWb+jc|(4^Lu(J8A!3 zxiTsd=x+DrpQ(-kG3nW%go7TORR9XmylgVhKmbF%G0FM$tZPo*S108k6`y3Lq5=af zF{Sez%wLplJ=LiUlE-yO0HV%^B~i&fHO9O8ky%!S3p>?jr0Qw-!c-5o>akN`a2pG+)Ka!=LqHAzalxHz90w<;nLmGwy_=HA}@` z*?(}BxyVH%#CGE@t<5LGu50m`pkMit5xDQQpJJVJ>zSa zQvVb9cmBkj6F}EdT>60s7)iKi&Gdp7wX~bFPKE_2+pmcZ0|69g9^KZc=!MP=FWW%@ z5|}m#5*xm{bt9_K7svjL*Uxu1Rl7&rZ~)1=;9}`gAkd96xF{pQ4s2G*H8Ma~N}lEs zNI-fC#BV#3E8)E(wL5D1IW1h3!Q7Re0(G1SC%#tH~5dU*aN zPB1CVCxK2W4UVZh$L$FO*lFRSIlcP@0mzd$xd4akt`z!9f-}$2e`sD`m0qq8{yXSu z{zTxGxj!S+Tdl)+Xwaa@ydahD9=CR_*gh&hQl&BzSGM1X}fMXH? zt3-M^{g8Sct`g65>j8Z$*?hpc=oA-m1V|7*J^@u1ySMd8yeo9%Z{3=;U{JMgKP;%> zUs1=FnIM9f=lGU%v9R@Ex)vGh6KwK7Jq{4u;XE$Mep zn@9He_>Ge^GsX81z%M_qYjODD_wg(B+f@Y;2(u#h1TGq!SQivshz!MMKa~^YTKXux z8dqspjUZ4S*&JPB;a+LV_yjfbC+}-%{@pvrQ0x$3XW^#2qzNa#cYQqzF(Fclk3`r1 ztv#h+89b##m<(T8UCSa@VCTLYCtp(}X*O;0H!qgq-spde42fv&Qn77j<{s`?Sk3o9 zhy~lVC{45flcXEYRmX8ONp!=M%_S1M=nCrT?lh8N$`ecwGd66SUxyVRm@W=b^8{79-(M&AbEamPn|lZKS8>Ncv*LBgefV-V%CK+j*4+v|PM*opD$g zVF>)NFfcJev}5Qp&#eI+xs%xZN?-M;NxvtpPFA z{wcS=|0{8?kA@BV@uvE&xO^u!6fa9yJ(=a~Qk+#K8Xs^f0hB4CW%^m ztiAalQ_jM3_{7k zY&krU!!DS>>>|z$n{IeDn%K(;@WzxA=8Zm7*2QOc`~a6_C5&+7|kZlWf%ThO@13sLGtrUb*lefewR!uQsw02ubH`VaB6^1li&2v9V5p-%FhnpVG^8` zVSa|i_8Y4Zf2-}5apHp^Z{g^)UDa2$y6+V5i^J@LOZ_iCV*^;uJe0tO7zv4Q(EYNi z&A-N_9>9&~cTa!q+_ZWUCkK9QpY5>f*=e4Ylgbnh0K;EdwwSIVvdY3}S1*t7D+)$# zCS$$z69vOonvX$vInNTh%Z&4wD6On#r3u9dMuJ#ONpzfM3T7TiDZ_4%<-o0bJ`Qn$ z(yNAB!WolKoZzs)9mncWF1JF!GkK^y+VLB}1A)aV7Vez(PV7hwlBK(KdvvnLXJ5{+ zjP3v70=3<>ARn0D)l$HvHThCnBJP@+98G`sdV-polVjU?j)aqpZ_CSK1xo~0d?`5X z0c?%L_~m(BJa{Exk~t$oi@`bm=%yJP1@G9+_;7?}arRD@Byc#uj+rC6lCLJ~Kxy$5 z#B(a`79}8Kx^_rPMQUc9Q7#g5kT|hFwDI8ehG7xM|A+FS`snz%K6z6(gQJO{wo)+N zpfDPTV+INPQQQyS=>MI4s|k-SJdudzmGj%-d%sN6zO8ZqZa8MPvyGj1^|h+dN{Yy*cA+CW9{}i?ojf*M;R}+ zEo5}&HF@X=DmX*!5`Y>SEVcW+_eJ@eY*mHHSsY8YG(_^awT?NK{ch*hh#oBGCjm%6b>IJ4Y@zx(MXCY z7KXq$%|F$l?tWVH@x@EK0Z8LD?)|^(x*QuTY8sB>w!M=0r1`8&$8z7kLZ%8K-FooK zp$u=V%jAJ3?8djo`EP%;knYnv%lOqO42o?sn5~>(*r{oI_UT20Pnk zdBE^`EdUQ}m6s}(3K_nr~bRjeZg=~dvsg`dy#OSJa{OZ^O)-%aj(-Q{Oab0$+A zn6)j-!bk~oD2EW7fX_}+`&ZNa`>~vzRzW@%!c26-Hjbg{z&^lU^kD0u-m$axygxQfo-dEaza=fv!>q4xUZp_rmhC z$7c^O_t3?|&&M}au(9YQpHQ~f=sG_dfwO_UmUvEA`P_vYIEz0r>%b*aOptmdG z-OWMj@9?#qCcdZbb-KA=*Ooy?^H}fK<6B_=fa9f63_Qp2zWZ&>9(t#8s>)^>hdW`h^4%jz8WC^IOkc2FN2uYDB1OWBnbgh3jZEN_EbB2&Rj}LUjqdI~R0x zG)h#zRWzj808V7>J)(V2WP`6UBM8xwJO%Dd)C@j1&)5urflAS5IIDE~GS0k>?;^<` zEtpz}al`$WZB_{Y7(hVXRQOk+8eVF2P3=5HHCVr~Aotp_v&l3+Hy3D z8s6xXs+$j=$fDG@?4nF$c7ZogacN+u?s`TAMjEfkqjIZ)ieiU{_NhAdshgqq0I6K< zqxoYerTUA}^BTFPf{xp699q=bj5GqtAM!1!t#shNir+DK^rlILO z+fzyeQO9I{a(p2P`6q8j=Y#GnV}_cWzT{L$%u?O+u?)Y88*camXwSJB!iB19v^bgC zj%k~BsjFD;H`3-F1e{v&^WnBKj^{- zs^@my&?~d6j@Da^cN-qJ*2Gwr7&;i1iw}-Od!s76Pa>_+1fsEPrg=e%UldCp+F`XJ zD~@&NhX7W|7)y6dbY}3ZHPinUkda#OHyuTF^7g< zP+fVbeDtZ4mBJ+*Lll(OlcWbBqNxnTqc!zRt~m-*Ho^XJIpId4!D1Ml z`7rG2pnxupuF)#^8IMEc5~KGl;6P}GFt7JG(1S1@(n{96>MaOR-}Z=#jMf6x^q0t6 zkZ6z?$LKxu_di5?qhpcm{nysBvUcT|SZQ{mNZbG1p*LW--#$mF;_K803u9ueC-Gg> zz5q4L^;g^0n*>~>D`jTiX*E4*o)Jmaz0Oor-m#D`O+65pP7gRp!RuQUK;>7-3aZlz z1|{yc{e0BOhK1#R-~6unuv;Ih3h_!-I%)Q7$qDZ2Z29srxs>IGtIc~KGBCI>Ptq@v z4yfFV3Ba1OtlK}#&Z2c8Pxh9jB<##nTh#ZzhzJ?YK^JoGV@`tZO_q-$)ahPP4Jvw= zmwxo=d;P^>dY{T-q~S7})Stp?QqXQ^%KReyr!8?~G{vSsZw&u=LrO7U^|wkdI&9N| zjc-jRM1)li+I`-shw|S!_iC`Gmdnq+)Pg>?h4{~#g{Dfr%A^@SBWgL)ln0Xa%OGFr zI+Md<#5p<-hI&B5!A99GLuiR-b^4vOUP8XgtYb`Fnt1#{3Cik%X`z3D3N2}4lWSek z_o+Xa389rIZC0)%I~q@nm}FA9{@>yIS5zF2C&3OwCVA)AUI!F^_$B|mn-bgBDCR_e zw4N=z-SYch2k>kv9Vc>kV*bi^{#pv6?(@oKk|dKt*=-h@q=pAnx1K|}P~TUZrRap9 z-z?U=r1+zvuuwesBgXvXz35sBJMa>%??p4RP0rn?4)tEk41tc8imbK#zbA@78UJu zew39>hk~~rd%qmESeIMbIun9=&3A5a*Z>KkZlt!&UsE|i?w~;I`a!Huxm(??)y{ae zPu4+;)GesUw#R^R^ul#In(*S@-Sd&!XeN!`UpawpGgVDVO2@+70}1bgi?H}@vvqcA z-C7tgqUgJd&_P!yR!EFlxq-%v0}V*9R~W19P-h$PH7}TO#ldzklq%0f*=~wKqoZ_7 zOl;or-_V~k{!!sI`s`|uit&HTj_d{?g3pPLT-XF#{l1Y=R_HO&nvle?+EZv8=Fwg# zM`!GCChc1GOjqTG|OW*=XXe1Oq>gWOR>I4<7YcgFT@gzJ+?8dWLnsBEf+RFsxUS@3NiXA0SN$bZq7+-Q>l zv$Q%_ku~S~ls9`~)m2uZ;(+O4VYltk{P|6)7U=PY<1A{%ie+Qr>P>zcU@*SJWqEKv z21|!D+oyVZpxnHaajh>y;`h`!&8nu;LX}#znZa z!1R1hM#mLKm0ZbG2NbQN&@UrEQD|7tgN6U&bT1Gi3N%7-Op$gP7cY&!9ZVBh^!QGD zSc2k=$bD*xVGxB#HX@O%6pmc5xzVZ<{{&$vZV=p;eP}pMHnV{mlxX-C^86Kw5-I zZHvPNjoC?Y<)td+CsK$+AWgfnyI>(Xr-okHcTf4-n(oiK+pTpA36efBypP>O>CXiZG*FK5tS`(x6`bPLIBT(3}GG4&<9G816C0_&h(AFKluSYJ&#QzV28 zFzj8aWjb-qHbESnc^o+_x}&+IVGe|{c1ad5-4}a|4S6RY1c5!_sT5C+Dtwz2?deE` zAS6%jU{<9DZ5uzJj|$9NJe0Uq5rOnp&lcOHxC8lD>koJ;m zjf7pTRVUc6WMYa6wYITL+j7J3kz~z0wOly=N!H>j9J}fmN;RpeR_XGKHO)_^Ww7(* z3$td{bmw<;-K0eD>X|9Mi`t@diOOZ`q%O*~sRJxM;^FPGpky%P?3WkQ1V3jKMR?Aq z74zh@THvVB!Co7GmAL0n94>cqcjTupcornVg9!4pd#Mr@!ZA0^ikja9ipeh0=FtQ2 zHFV#}`-`^R2wX5U=A1njwaUFv@PK=RuyJ}|I~!$`FZS7_4OEi)Fqj`G3(U!u%B2R) zXVaZfJPO;?A*wKPy&P# zOQHQB_BPye#o7LjY-rxy(uF7l6Vu%LM7*(2L<;@6g{8+C@)rN*+_P zRb2I-V5!m>Rr+$W%n@`kNcElcdl@#OVK6bU&Y6Y^Z2mJg*2g?cAI*#djc6|})UsSD z00FIDqc=JmXXO@tpK&OUsuFY}IaKX;DZeAQ*-W7IQ%oye4qy(9S7tea08lj}$u$ui zml#jbn9w7aX;fH68+6V`UzpE{F z-~~iMk0gXG!DS`f5xkHha`w}EYjiG80e6fhbS$~mNCrs|LBT&$*?MW0-}D>)%j}Pd zu4iF!R}Dll>5&Q}us*^3N#Sly8u(!b;xNfGMdh)_CPd@ZdFNuiw2UuZKpaB6AYv~u zSejPGw<*ONYMlyqI>&_zV_97oX5;BMAd2}?2o^XJ%ys)bv=-smvP#OO(G8|;g_lt^ zfU;di?M?0D;_;fgkZpRXUksvq%UMEwLrGJ&*uF`9fdOow^|YwvL28YsDL!5LB2_Zr z5&ZZ-N~5G*?K7Q>flQ)5JO(>zS^>3xX6P+}*Yis!WzPI!T$U~_)KXuZQ)p(|m>k_x`+ z@7Djha!W*ED)7*?+&Y##Q^4}f_hXZf#Ro}rskmW{J)X*1v-k&Re1pWnV6jCsy*6&6 z6(P+w<2V-Vgu}{G`2HydIDbT!H%75li~s%LoZ8D>5E^raWO`^ob#Wr|Fs4?uRZ<88 zl9%Nf`NFjYWLZ`*?7#;P?{Z3jP5jmfz$HNi*K^n0K&z0rX^I+8shoJF6sX$sW<0B; z7g?@i4U3qz8S*2x;U(ULa&9ZLC*BNgJB2@v>bl*cV(;IP0sz_o018}yC&2%aRXyS# zA&>ZME-k_p-WOL-F-ogn3??QMQ4{R;>8ihDWDMg={48VjJ3OD-Wkh@|Y%VTg4D^X~ zyZy`#bjmS?Fes12YT+^&N3jx+fe`ZMUCeybqE7a&dXYU=w(26&_wru7B4BV!J)mc^ zON?r#ESG=VvULriOodJ)>eDPN45$3%1$R<2M60mOPn60xEie6q0K!D z>wtW=$sw6Ij0T)zyc~*ZE)-?vzThD8u%=`LVAbJU6JbBF9*IA%cgk|~0iBu=r+qNC zMHnw$Jk5hus_~4Kja>`3vGB@J`8Y3zaN%kJ$Noeja?jKz7@w2;u=XB)Nj zNc@nJ@n(WEd$pO~VUmMp#~o>}Lk0?+!Ag}t@QzzA*HKMu)@VDzS_&ojLkp@ij2#zl zuLTg)L@Yy2HV;Z2|0KSGk9 z^_kqVX_j7uh=IjX3~XruB7DeNKoa*bja#Sey7|CYGp8A6a{%8F0}*RuL%?|&Mu1_z zdOa5X99~6Jz}7WjiU()e&^E+qR-{)mKmr(r<;EHUHrNd5hb4K9Z$6tVU8F+vnIc8s zP@5Z5Mms5C+~ktCAiiy(gGkpTQ>*_GcAV@bxQ2(@F95p5SoYz79Nv#pv_zyUz=?7)N;V+gK8OvW*_1bu z;>Ns!Q@ZsO$t9GJUpeEpfySrOYw9;)0moc-3vv3;?7j(<(vCox>{R$D0jLZU+y0Z9 z(;QVfOh!D(b+M$nU%|sR^`I;Vt;Z<{Pqo#hoG^4ElM7SbWMjng1@fn^BW&z?uO33R ziVDsKyLH7FO^iU@9$yf$02H)d_)^^@>pjyCDkSZph5GO8gfo@fzgL~0QJxCe8xhsb z)OkAtF2@BR)lQ|}$6u0=>H#iTs0TFVnXGaLTfVd%bQx#bwbtsHZL1sCGOY&re~bZ5 z46?KEFUI>8^A4PflTgMcoDvDxQ}wp#{A})v2rM7tqfz!AyVk(`sD+6CYw9=y|6QS? zi?w$%8{&xOJBA=&x;!7Q~Rp?Qu|6`Z+epaRjZ;P!3Y4R zoK!O&*fRESH|PtAXXj0kmmEZ+hWB7&ROi`^1*Jk%R0 z;Z5h7)xLmq##n;!;UwqrD#yMGnxH4sST&Tx;K23D%OK__Q4^GM(3u#zlW^lJ49NN$XNfj92mNnO9hX95a7b5a{Pll~ zA%Dy?<1ocfkde&Ku#;M6q|$l4!W&V0_jM{+#8W?P=L<#<_t~tq8*=+ZIzzYakQo54 z82_yO8P=&Hq9GZKHTIuU{4&xh9t9@6n3-3?o^b>q3R=}fBjMYk$YZt;)TzE)yxJu7FHRu%jTwIAZL2)Od5w1X{B(uIbSLLeAVjjP1Jw$JsO*L1U zIs5D>XTkrEf4}1H2o~C7@K+Ld{GF=tFN#fwYU0S9A(U5T1P!F%(S*tapX4vDmGHkm z%{8mjewRHQ^V2icCblSRVssN!L*xKLbEHg}Z;ZCMtDY33tLfG_r5=Z$a{o3-$h#T( zsxni^8b&AvK@n&gqX>!RuM0RE;ZBop)TD6Mb`qbBA&nd6aqUU{7Zc?({+<<@R*vJA zI@x;>SIi&oCzD*QtW5?tj}f?dctG+zxWdBi078$HEfcn9A+5Is{((A%+%A1fHf9Nx z{yZ_ume2{&&*+(f(49*V$4O0iINGS9736pJCyVn*O|l5MzM->gix}BTT?h3F3ym?b z1GxLmVublQo3DZp=Dr6iCl+;HuK305>z5P>@|l5ibNE(*^S_U4#G%`wThjgEFCIwI z>TIkbaKD;O&}kh#dcfJ7G3EfUeYp0J^zDW zh25>Ky22c}w$oLfzupjHKnHl>s~CGduL|cr%*@dMfyuvFmw|d6d>?&L%fq4yi9`+# zguEv{P}WV7KH!Nq74Sdzh7#ZX8jFAfee37&@0xKU}j1c0VB7XsP-aWL3=*U z%hs9vv>6@2O{;3XEH1AUZeSy9PJ$7@xUxK*OOhb35k~JH7p2z1;jpg4>;xxT#(pik zgdkgPLY6xb&E7+mw^ur_za`!+81HsIF%i5)um_KHky*&OlGZf0_FkYzDP1*8&L7CO z$9biJpAs6bDxV;-v5@0r0s)F?i`)JvfC_TOdfw)wZqjGQf=5JZcU(q96oW?EmSYNE z!k}#BlCJ#$Z7x}C>4d@LW2Gf-DcAaOx~>HMhM{9o3QH?%B!GT+K0FbS7y3Z_aAtAW zyFr}bSda!-fW)Z-NVI4>wrkbzlg#if4(IKb6c5ibbgo@yC=|N`GN2!nRuTjCfZTA% ziVDSrHC$T2pO@6*oRPNv3zeXuHGxDwo^#t|!5Eltoiz(iF`lC9DT;D+IJ9XHzNjKw zyxT9};pnGvYA-y*Hlw?1jG5!X2@z@NcK%hA#Xggg19YOY2`X|GC3-Rhc_tz{a~4w1 zPWQx-?V(}171y#rvsfLpv$4+%L&ZTAdqYQ40Q-BU%2Cid3Z^wtow$s_=I`Ez2g)!` zRv)oQOQF@%-52BMeQ!`^IVnBSw+KN%}>_-K#6V|Mh$~NRaugEfJrS zOvVmOIxs^qIy3Yo_68^KkE@~+iEQdz8=Gd!qIbFA-LTu_e|1>#-UO`I=bnof^r$|E$R8fVR{~wmp8ofmiO_n5AWe9&n2r^g{ z4Q{11NVR2?PgM#66;N!_LI9?p_Fp55agv@j^;7ta#TU+_y6@C;NIyq*9;qqO?nbpv zU3*gfk*lA%LPicFCOyMQJJ=Jl2Nu3(56K@!;!;0ZI_qRBA)j{2T5+-oAa;w_8HEd})&m)x_qgjvHzq3X}9KOb#0?C4oj8=34AN zI(-J$#tOVgw4`TXL(ZSqk>r#zLpEl{| zin;VWcHO}4m=?q1Ik!>v(PiZ}#23m>%ELa~1=g1I0NS*g;<8r6`NSh6`=+D{XFHSu zH2dBaeDvGR_h%Rt8T-9zK{Ti2{3 zbq|lyS`h^aD*)L4!&MMyyQSJi3yMID68TnTrC*)gM+C^jWA!JRgu!-I%+=w?6EMp& z-x;VQpmZv=wOTGALAL_`#A4d9X=MDOoT{EEUhhg)EeND26{~GC_<8{_oL=(Gv+=jd zd+Av=CyB3N!pm}Eir*^yBQ1Ti?){s+W?%L9p#)dSUsDlomUp3ex9r1(`M0kSD!Et+ zS03`Jku?!(UVkdx2bamC(*eU;udi@5W5x6vBz@Z1?9Yv5>dS0(s{vE4=e_fH0K=Jq zT1ZR1lH1{TUY~D=2qt3Sd#|7WxRRFijYvQ2KgX zY&858lE-1ElI&Egb+{q8x45*LjBz#eeb9l-Bl*bU{uFr>-&UZcZQ_un)LA5v`l`tqQ{q0gRw6Sd=fG2* z^0{)y|1y7~k=JVaPkGq8Yem`5)jqLMIjKBk|8~j(9JXhg)wO81A8L5gC4d1GIS}#& z>wlN2O%EpyBb+$py`4II=Jewo%&CD?MjwQ|<%8l}Xl2CcbVT*g& zNslY&K~+wJVj_R3tejN|Ux_TZ0Z>7Nc|E4kj`q_qR3ho`+p&6OcE1$1pVe+6hlqZ= zn-41Y8^@(*LSvetclo=&!~!cPkqlF@jzh)4ZGSXOSASZ%ZF@X~!}iC9^uq?gDo4JN z%{AG`@czOw+Gl-iw|Je~=f%T!7&y!IsWYSLK#ea@{HmhwsVHL{*trnOh@leEQ)2Dd z+S*FQ3BJHoLkIczEh=D6leFnG?n-^Zv3jqC)!Vz?v3Xt1L+Wb%n!{*a-s!M;YX3)8 z_Nl9Oa;zuwCBLP?kSTd*mQ!TZ{O^`Wj^#o-I`i-{`foj4bJ&h6v;hTjjIlC^gp`KD z%@Wp1 zq@a302BkA{K0ZDat895M5$!AEu<(`XsOSeVTBCYdL_N5|9&8*!{8CQAV^$oUY?ApA zw))w__{LTXR7mZeR$gI-q(?PU{}B19BakFAbEHc5Zov!LiiFFaCVIt;A$k?<)#7-r zP&qXlt(&STKd|kr@a3s81@%L(DB?93;i=S9x>(DFqVQ6u9`}dLFT*N(Xj_em1<*CA z3D^=7-qP31msdlKw=`99VrxkXs6$YfQG0F;2;{9Q(+>(JNViMv^biiu_#cu=E-F)J zGT5G^TT>xb9kQ8BBTBO>v>1I9%}usCBCx8rp4nF<-Xlp|RT71Ve<8oppnPgp(_YB` z?nnnRYqAg9cp*rZJyE^qv09j8ETclS92+p*hM^}ISrjA^UJ6?~q~BNxYRX?k*cE9N z#&E0LnjOzHs9L`^arnF|RWX$(7Ulb8F4nX~wYyVB)~Jb(k^Bd0G+``~qKzJJwzoQ4peTnCbkz`prMg9=W6~%? zVexxGZ}OO$0F{oZ5(qnF+={%)A*Nm>S?J_FROMG;LV5=|oCv3>vyY2F4$zGim;HU3 z{bs`m(GU0M+5Unm_G&;xwF|7e-kSC$7v}yy)LG%Jwj+#^T(|4EkZVh38YW0ug}-Q3 z^zWIAHIV4O3FlK!J4ml2%Ydl{gD0|n`L;I%18kF5#NakEhP-)mr!nMMmVoWIp$+kKFNDU1Oao$-fCH#Z5*EkCVjruEtE>}Ft^FyYwWT3YEk_1G&-HKGuqjtgTZJ{Q zRtvu+r+3MyrStPheXRMGtM{jsshBB{e%9AesC}JGxcu*_HJ?^aGPd(MC+^^c@286J zp&>2M9{<=Z|uE7H?dr=SRRgrQejK1hfbwY7(tn9&-DX9lT(`nkzi4y_vy=+;qE1tIYV*7v4)k7|A&@5H_a99BgR5pN)*> zgZE5RgaV&ok9EW35QNoJwlW~i!TKb!gU1X(nVmf1p(O`8}0psl|(`Q`Poa~oRYrs_?|JgjYf_{u03lq-3oOETG=xqxP(pxvz z5ng@5>3JpFKSZViw_GBCV_|H>Ff#~6Q!#v?mPObJCShk)D4-K`h6ZzW+Cuv`%kKm2 zk?1ItXj=Hgp$1yEtI2me)=`Fg9Fpt*VZ^`aU}8BQaxJ8NP%iECL^@v!O-U@C)zPUG zaD~%{B(Ks?O-dicdL}9aQQ}X!0yN}L%<8j*Q*Hm_aYJ0eAYi$q7;2jSnsn}XUCP4T zpoYRT59k7Z`h`wu$=DC*?uh^T`#n?SjKj(j1lBcSeojPM{r_yQ>H4DLw*18 zEc}n$u5ru4g#<-ve9U}clZ-;YN=C&u<;XFF7m`pWj9E9R91H(%{RdTxVT*JnGFOF} z^kAQ+TFQ24QilONlADXZHFt!grYdkhfA_UD5)f}=f8&uUZ*ycrC&!Q$|F`l85%Okc zgqJxJE{5NuY<*P2-(^NPt zREOR@#lK(3&J=lr1h)1IlnHO$RR4txVz{KAm@OW{$_>QEl^`cGe1^s)2Ie@q3d9X9 zi3dPYunlo4_uh6QC;2jlw!pDEQCnxmBV-VHMj4^;)`UB0g4XKyevkB0vZTDGRGw`6 zbl5MI5sCv_xSj}R)6p0>i+3kQJt6@El$HEwPHUE5F4}lf=6{s&?mb8jy}W2Mf3Sf3 z!D0?L!arL5vG)PM91IzpDf}z+$F@Hq^(jF~VIyBliOvJs&_`D>m7Gk%9^DUmZcol# zjeSfGU+kIm?>gM;QoT=6GW6RDK8!$=hK+znF3tG)01r=@5p~ebEUR9Ri@M}V z%}*=M(r+VdtF86}b;$ifuRkCNGG9hN{C)IOxr6VM1cv<&k6(prXdE>mY^A`+xI+xK z-s)5VB7$dl$0Pi-I$Z?W7^pzLxN#SA_Yp}*JAWJnya4eU54GM_c-YIt(4D@>xU3V@ z{-vuH7Q0Ry(F&o^OV=BSWkMSXis^Bv07h6dX2NV^Z?N7Hxl5Y>SWQr6w?KpDs&k* z1=>W#@KLO(J=4|RnmxbiRGJ)cL`uji=zz=Xh>AN-W8mf;cE?KmH&zrcyM~uEx7G~{ z&O}`7S2*Ry1C)4#Z?q5B%Qd$*8z;`q5tky0`7Kd22Y-IhdqEGYjaNO;x{O*aqK3neQ&P&%K!h^`oKl8re zYZ4}4{{KEUy^lrXc&Hb9tn!^i{HY9C9sIA?ELp9)o`s*_f`EZH5wnF_C*V05_)v9=XiVts^Yz;0NafPJgpA5G;DeQ%$(+f-V1_ z6r@X3>!8Z?mXwa6>8HrBv;c||)}k+ot5w21;5np4G`}Ai<~AiMq&^Mx3+6oFD;a*o zcnKjJ`U7*KvyJ~W$umR06m(kx1XnM*PND!o@;@yF9cX2L-S@WVr;x$g${5r{gZ{r~ zH4X=(n4XP9!6t2agtJulwD2RUc^xYf-UN{^(tJ+MRCcLZLGE31bczIdYlb-4GU53Z z@>n9T9PiRDjx7#1u?K=3)|}Z`BfTYd7>{5@QT8-z(&3|0GGfY96n7bH2Cmns$q1&}{U>^T z?un>s6b%*$*;uBvM=}D=j0Vj<~|F8{Anj=81IEy$3uQguC}SV&%5{U#vS z&(!~t4=^kk7qv*SF-wKj`ZoA>Dx#XpNcjJH#nMo`Aufq6{e2;5k#&;1_J1yzkt`vuq!Z z^o6-=)?0D$DXV50$J95wYtkLGd?kM2MvqImu!C5LZ-LiDC+nPgXoDi(#IVMDb=+n( zL$Z#R9`KfJe+N(ejX;`A)D|aWMxc3)1KD8~{hV$AjfwQ{1Y5wL+$%r4AK%CLsBfAZ zCnO%TxwF{0$TIO)h@M$&X`CzsPM*+C8!G_oImbVDV`=y|OfN3%ykNyX3Y=N0BK*sQ z9V0JH?fBf!?-wPeAI=PPh|1FHtI!vc0)uV1Kg`%m|Gas8WIKHDseh0$EC5H}3+CT- zlt*5Q4x#n9v{R$GCPeZv`feeLO!;ESDge$FZbGSD@XlWZlqXnb?!8jzwd{1u?ygA) zX~xA)D$%Y>uWx$;Nzcs+O|_YZ@HKU zDKQq^!;TmjafIx`OI-wv05~EaL?q=B+3d(q+z92LkKo|qKax~+G?0`4hqoKwGKJe< z09a0KPs_PoK|TFo0D6YlYTUw{*d{Vx}B3DdIqO+am)OjP1{wCSE%)5mqw zO|rTOH>Mp*;Em9$3e)0wR4qSXOG+ComqY1NGJnbLNboC3x2M8tOTgBT{;BOW0lZfG z41sm9p%SK>RoALcOEzV+)%@!ivW=IAYwEyPVIRtQq`wKjQYzXxW80KZ#c#P)b~w{<4IOoo&AL2=@A(iE5jT zuoFLl@+l>HK1r6T z3(`=TS)t{nCf*Xd7tF>3!feiGsELTwo09CQ7lO@HG7Dq`vJ>&!OZIO{Di2yy5P>n2 zcg@tz?F|uR-zaE|K82V3=Z)ajgA-Ca)sO&sNeS&c8}||Mqjq7p+rbjfGTe}X$;Huu zkWLt;5i4cdod&vFHDn+>goY|=cblz~M|_kN591B7M^O51w(zmz$wVrxd+A!~qh?z~ z3zO@#@BlxajH}ma6HnX$q3(q!X*|OAQ-TV5xoh8JpL1GTZUVL3LRyx2N7yROfWu2*^{fSGR z=zu{83mJ6l{1ES#diXD(;8~=*wE)k3Q?eV5x?|6%o-FN*g5tNdXG*nR61b3!)OVuL zEff<(kVITv6n`*FHmdVT!xT@C7=dZDXy-MDCm$HtrtzHDk%^*9deR#nF&Z3*j*Ey3 z;)tonzmeuoaE)ggyTX+pM4R1jnfpK3+@|l3E3KX@RxN;IHdR+)S*xEGG;6ps7hhzR z3@{cb)QL9q-1vHxxvpA}plTA04U3j8j$xJy#Z7cOU3XyD&vXMB=JgE%Tp&x$-V2Mf z+1{i^BsnLPr#gdgJY;4uXPo+5jLEoQR;y(O=#XHgocZs8l@u0>RhO}WAsXhJ!SEk|Z(YFZFgDeIoJ)DsGB{lE_LQF!2ta-|(u)k=976VrTTgAm*o&?sTa$m- zWm^_Q8$;x~zN@0=QOf%Ofe*A3geSD|FG<5LTIz?^UU?)QUTOSmcuw%~F3VGn>hNu+ zXMjvh#im)@FA0@(VB9eXb2EQC<& zNENFPWJga=q5h@vm59>Czjwe_=jh`}KGkx?47FUj>SSRD%m`!8b)p$;7}_gOlrKNg zTr<^rlWE9}b6{Mt?zE4(x4V)-&ZZIgxN~lHk$hJI`LTU_?I_fB9Qo<c<^XsFj%uSBqKhEWDNaIV^_&mRDLAuCcCyHbL`?=;|3QmEIHQvWv!BmT4 zh_%_Eae&f}=_>@F$1|9b3v|C$K+8XJRSM+i(7m^)h}5l_b+{H&-7^}Nxa>itZPqd> z8M@y9>B9R+E+A+8rx}4E;H=3~6gr{dW(SzB^exN%2nD(8Gd6rkAo4S(e|>2)9c60g z61kVG=DV}Eu*HokHxh$bF0ar{7upBnbw#%02|HKGf3R^*z`dI68+Ognkh7*~sMe`Q z{8O%|{eqm(yzPn`onob5?a#N~;1?~m;{kLB14}`pktVCC0B<(4N>2)%*UG_uDr}u( z5(h&1K)LMI>=VrkS6zo)YYQZ&#ekO>^P+nD-*Z#RUlQyh8VQkYN_5i|9s@H6Q;aD< z*n>4w=>Zx#u~;#EpqN8AMLuwx?kS_e$jZg|PLP2c^c?oXQE$Y}q9Uuf;ewS(D*CDA z1oFuz#b%cv?30?cR~^#c#qS}jO6T0hhjO3;Qc=u6eEfdiMlB#8j6vAWgfr?CHU6#{ zSK9mg8&d_&aDSMbs6m0tit282H(raO&^XiNDK&dRu>&KmPVt8bP*7USzF||c&_>kC zx)LP|cXGyoVh8Mc8nOVuADhhv>%r{D5>^oYw-eE=zne}SpHVM&;JA2sKh3S(MQwKQ zGav@^wAGz2?`kz!tramLFR4uTiW~DcL=&>^nBxB){Ty@^;$$F8e}W#47VZC~$9vw6 z$F%(}NNAf!2NXA}xq+pvJdZEon`%wFwRYyFqLI!&UDw|`@Na+%BlA|n4Ir1V7~m*u zF;oN+doXn zf?|TzdUMNwfI`TV&fpRpR{Pe>nVN6_u5GDn;9d(*!2}0*?trBgRW|CZc&5iKX3D|e z4U)6%38ifuDuO>DE-|c_mQJeeBvs#{m*Yc?&@b&)WwTiZdiIy~dZ&#{`r8g-s589~ z7=oBkf0bAV@l67s*kEGq{?0R{cXQGlx)TiyQ!KLGg&bTmu+_>|Y|m;xS}P0LTAGhTABGnqv3Ru7Y@YJ{*xd#rn+@oW^Sa(?lBY>1CL<5;*M9P0QcIoTav~t z5Eqk2$`=OWot_Y*;)2i8r&N|ubFmo-gRv8~t85$>9)w-=V4titqA0(ZLKH07+(Ev_ z^o{&6%;k4fJS?v|5fPKZB&U3u?p%jM#nMf%WimJ{!(>AHJzni8Ki_JW7$SCrVX*>K zh0?*8k^`nIJQZ&UZnCwp|AA*Mz#`r>W!`iHHCH2j3lWgY<$PdOT*Za*j|mNke>ucyJ3wYWH$4xY>qH%Tj7W3^tFey>+ba5_>b= z9N4ch3`pK;9r-7qyX5dgrwE@I;>_;A2x+MC=xHK{eZ+6SM9o2lqaj{F)+bOtN8N!R z82&W9s)gHO)tyatFF0GJ2GSt@>l8lCSty81#`Xq5+fr>?z;Tq4TP5zAm&*wvVQnha z-k1PM0W!b;Nm$rC6=GvYJP_m*D6BXhPH`_%0)knl;fr6pz2$uE_1- zLGiI?HRrtfxL$;uMsMp>6Z_h!TS3ogBl>(E`t+VQf5O)&b>Z(Zzps1k22l~}yr}Qa zdHGv8({HeNkQOQ+iiZD>lU}R#+Q<8=mmko5efX>W(NYDA zQAk(1{ksXMLAyVsis+@xq~|DE6R)yo{no2tZ5rmQLNl~elU-*;b2DtqHpzy!?&~?r z+%Ly{)X7fy-o=>Jt0g>Z@ddsfndv!>nj1PD`qkmnR*S&50x9*b)HP#^OldpImr|zKg`qT{5u%O`}RaM1na|MJ(<^R^3Ayffatp&<+Fun{~%nv!K>6c0C>P{93mXi z=6?H!Hb7t5<5?AYV6yb?;4AD@DC=`KH5`Y(;Oj46fCbG2|6RIxlB4$MNt^JYGO|Of zh{TzsH6C$UQYqoqz-fQbX#1`JmAPtFaEJs@nNx39UZA5*ZB{M<0a$IrmEh*0by%oy z_x5T}J6Y%vkb_8pVQ>ueFG;_4qyIvwEpZGX2a`5n3n|opZ1?vEW^=}^2Nv^VTC;A} zR#)pb&5?R_?$PRCrj_#7SR&WZop}UCmVnC4rW%{XM{%}4!nK`Kn{GZ^6X&0u&~8+q zgOC-uPuH+&nX~JymuxnjDJTqAxn4JR}J3hnFZq>|NE(6;NkmR!~-s3=wv%_^!;`_mp>>^Y`G=mpC_&R z{Pv|MO8rZdoU&@^H>dY!j#7fBMAF)E9ZQc9$3x5J=Zu$(*1&{b(=VSW{1^i8Bo>IlZl=o0f{kn2r<)L>Dngi&n79c~w;Bm2AnW>&icl zf4%xc^Z9;mpM_+Tq8^-0D-HR`(ysF8nGMI$_klJGgp@YV0&a5&*$ZI=Tkbg}ZZVe) zWkz_1T6O{|z{`5>bb zQ~3FB`U!1NhVOqiCGnn8S0ajfCf?kW+n?%kb2f93y(@H*oh$l<+pd7#V9g~WX+N6a z?DpytF`e-!x#grwGg!>C>3OuVeM_x4N6rJeb?YW=-2)%J!tr9qRm(gDfU7{(bif0l z8JzeY^oygHx|0=qVZ@Tn0l=0JTqQov!{2f9_N9*Zz4H399$AqT4NGX<(RzJ{tpWYzs@qp4#msS;<38-B+wwT-igQQ!4U}mn$@) zO;p)Gs(XuYQ_uMKIPb^6!d}f7x9m{Q9J2dPj>;Alq;g81-q-l@I8x8SP;6cw%J+^* z|HHSJ#>uN6#Xd^UxC%@KWNbgpI|G74p@VpK3ny7#M%4zsa)VhW4{$*#8WOLbZBEb7pR#T6w~0 zOJOkMiyplHj{2_A#GEIupY?QdxbZlFNnIMNTljQJ7=<@op@6U)BRl>~uxY{g>d?Ca z!ab+5AQcMX{lbih>w%m9CJOjaS$Bx)AkLgmb*Spld~%(xXDQl-ZX6+nUJl1(d0I0` zqFq-2V_K$iTKl?`2G8HArWL4r3ZdVb2LpR`|0z-!BVEolTJ}{AYu^f#goXO`k)Wh{YhKfGdUMldOn~jq9SG4w!EL4u~e-u`2AMRW_Gkpx5{*~$(HVw z#Q1B?g}ZHTG_=Y^y++qtj)i)WCGm7F<}>w<%Ex}U zhXccXN9U@YwqMSD_6Yw|8);QVhvnRO+?e5kjjh(3|0&EL%%0>=iQ*4IHplTIg?9K$ zeeQKJ@EL9DREU^h_`mSLkv2b1^=D+ax?cDl$9z7=3O&jE!il})*`AraJhM@bM=Tic z&;~lGzNMqR8l#t|*aehcGYhvPIk;s2Q_036`VV55qV-WMjb=w2_>uAURm(dxnulBS z_B7}!vbhsJXQ3iCtI-Px6Pxi}Pvh7Hg`hh|)w)~k*tY9ItY@3qvhg z*s3aUNn@j)fe0kG=Trtu0QPe}{=I%aX(Fn_SssCT3E%UHvhSiv{1@&o4X70PFiNc! zs`I8cCeU;EONAbqB5?BKqT-;zM0{Y|(6+?#U{$Z004Tw$p44Bb{8rLjfr}muV-kyp z8C)%!)%iKI^_C&>t1~4{>*kO8t?_Vo&4E9sZ8QScrQT}1Q&JB3uUlim8j-Z00a!b( zS3QqadT-xGSz2&A7_={aLsg$1DIVPKR1-$6zkOaUFav$ao{4Dg)6IUYk|C_xLkOMQ zOK8k^xcw1k+x6YNukLu(ew*<8i1)G3R7fm(nt_R(%RQ~U3?2CkpsG-R5-VEv-tl?( zo8qKf{#ZDefC)8e!?Wd*D8L_&$|<`OUsuyw(pmzI5=`LLZ06kLPlFU~#XVA| z#hY+@4e!LJ5ZG^5XG9ToHSOM>5paMbHhIC%TQ+LHoDyWrCvbK8p#Ja29x?4FDRlB| zr#dFm&E^h<*Ax06%y;+JFPq}(ud417U+(ao1(rAbj+kk5_FqrCMV_ zIKY|)XQs0+n_JZys+K}O!Lt7-?{|gDnI7B_$uBZNt$c9a*_%@zLlY*Ge}h*-d9W`vXKON3&&SDrNRDEQH+Ox9Jp5y%_wYsbw`3WD)z^I}Pv@P= z-S-ofsfwSkOEO!FgB9{#+7pNXIG`J^p4nx4T$|=uor}&{+AB|W1*-=7>x&l2m)aK1 zZ?aP3N31vF@7=Em1#{&oPYdO$5ewx2q=m}i_EM#)|9;s2@;E!Hyk^x5BctvGiS?|5-cQaD1V8YlO(p zjVIFh_m1h!{(YlNllQl7hwiXCzfJ3kOi5pvk;ydw?wl-hB-+gOi;;(>i=xzD`&Hay z56_qZvVZ3JNb&R1f`$3Tyb#!I5NXC>bmsXY`*{Wt+MJw?MamXs43 zJ+~i1qJ+QbvTYA!Imt^$3pG?6n@h?*vF1ye_^V8ioW<(L4)ei zhVB&M$;+>pnKE61;a=uVG|`3?KrLtBHBmj|AYLG+t6UHN>RZ4_1svDkHlyBWTBo^K z`Nl{WfkK|Xeph*9`_im^sHI89psc9=TrT|<4l+HJjCYJeVkH(S1f&+gHI*kyH6e2A zc)*DD?hC3(&;BX4Cp*TlpD!@oPui>*#W)yTVdPZK&5*hfEb*BFu%yfkljrZ!6O;fW z{HdWeI&oAjG$-E)23C$dNQ(-A?whRtOaX|`yCy6Wd^Z@2`(*C=!Wqf(atjG_RXvjE z+VHEz(bs07dHe#Ev-2Ki8(MK#WDEW7g^Gt=J4T~{7bb)(o?_j#Fjc*aO$}@L3u*5P zWxNK}`BQ+ma#*z@V%;L6r1Mbu6VTijODy9>RXumJW9pmrrnU9nuKMK{OGP9~*YK!A zoe*`n{Flvc60K4_1Aw{cDilt;?#<7*`hfn|N3+n=KpUIh6sa(A^j1x8vXKp>S_LDM zl6x>DS&pvG;*MP2VVNc-)5WiWfbx`TuljNA3{X`*6 z-riB33jw?q#wcU1rVer9W{@PMkWE?~B0P!&IL8N)r183RXQE7d#r#FuOY&5H{9D3^ z4qi34$NX1axTD^OGfCwQB@E#q^ZI5{x?CsrCe2Kn8F!1)ss0DKy|B^Dvow}#muknA ziCmu|yyvM5-$gwAk?2jJ0i|qZBxdR3J%FwaO%pE$u^Pw{(M@f)ZLl}2im5f;%zs8B z%98~IK)JE%{+eI;sus*pH0^kv(m-5II65;Us!C^3%an26bJcTTvzYbZc?4q694+DK z-jI-AO}esQ^OGFzuT|o7Inbxg0{Z4BNwvv1N^VVYiBwqHKJXmll{hf8ZqhI#C(4pT z3D2ZSuTv~m=-mqUx)Q_m#uL@cz~~n9CNRo07Cvmv%atv_OFIMQ1MW{=V0Lp?kLql+ zS$2bdy$0>W8(mdq@_Zv1iYZWr83*9kDMNxxXxEXB9TPH>c zrpu>;{`^(Ar=2eoa#ft>Q^*y*af7%?j7I6QUYVzed~am~^NujYF^>fp?RuH=SLjdJ ze4{m~KRtMcz*%)*ohn2+=i~$!o>-4($8IVd_aS3_{BoR@sJ$q2Xae}U9OH{0EVW%3 zjgeMNTb;d8a>jSsA}V-UEF-+Ks%CZQO{t`?<8$0EjT535<9e4uN2ykeeolR ze8JXa=V2yXnCy4qI3TkXoROM_FK@Ajk|lThC=;_QBJP&ISQfKg$i|FN*8a&|BV;(` z>y5-Cu#4w}tw~dMd*D*hoYcDoe22nIMib#AqVj+08{q;aHyX5>Cvn?x|JGf)LV0!F#9r=!@;9%AZ zeer{CWiTer`)E&w^Lx+#DL1OT;S(51IbK#NdxzEju#WUhiN!08o*B_ApYS_r4UD-` zf9DIYU2B*0l&d(w6rMeC7Lag0)%^bTG%eyUWMHBJm^963&Ue5Q-cMUL12arW$?hsw zc`P4po>9|_KW%_5439-HParD5iUYUn$t_o4rkTRd5Q(s z+nRmaV)UXpa_KaWgx9g}*;0eeVehJSoiGq^H8QtFw>hJU(c+(mIDgUV?RFj^o(7(z z@4%`fhB!~7?BF{4rCM3QU#Ye!48zJGpN`B+GJZTFdMF2VX{w}3p6xo_nlt!5Xao%6g0hc-MCsYVYSs5x4-${tWv=ft4DbpP? zMgL}%XYG5f?x06%rLEkbn#?!()+8bL99lw?@qy|22I~###OlEwcP~%iCG`CQ(Ed)? zr&sjG4@1~w+$IZHPIw?`$ZVpyGl+mxTvaAf_2B?~u1u>@hv#1LUs}UQP5ajHPNOT* za%RgxigvM(&LdG)3|oKd<0u7pruMS>)H{Oa;OOyx3D}CSM+TB*H4=Qk%X2vXO!^R5 z8XsC&b>@q1oqu>8qw5)1x=q%a(9EAW{At7YN44O_r@C+WDP(@W_<1$p_ouEZ1LoI@ zt4wiPhJ3fwsEMAFwMdc2^?_TS6Wpf%oG6O?w|1_P{hHTBCLaZL(S0~<_?K4mX8i6| zYiQhV&^5x%hB&d0=!q;xq#cRrheJZ;T(9k46G@E*-z=G zodWhtvEtfJRN%=IB_smIT|+>exRuPcs9dwP1_}^jbrU>og<#TSV1PBaPiUl0$3uO> z+D=P#qPz;>k$I}!Qu3i@1iMdKLP=pJ7DW1Frsmnf+@JI3s{L0)+CQ541!hfZrZ+`vRn z*Oyty@3bB!auCrjdu#5Igm~O`)8J50@QC4}U`M+jSx6OhE*?cc>(Nnqw9~pl4u^DH z5A=-(ns_*Yf1ry3WhSyhJ12$6O?aw_J7-1E=4hNrWXngSjOC<1Y`2*X!S#03Bt+VH zt(6ISSYm6L0W|J&XS*GKfXTRB^Hm7jN1F4vp*_m4O2$3wi7E6(#s*fmol%L28%lGF182hF#R)48vCCx>F36MWi z=<3QHM>LSqb!L@*GO+4RmIpQzM5VFo{!2Gy_ZIvqO1$qAymBlKr{;n5IT zZowhcV^6G&y9PB$$*kl$=lhZBp^ezcwGCI;%AmF1pKpyos^5@zJjMUR$=#(A;%}OU za1BK_&@lsNOyXJI@hHa+Yp30T3@I(^N@;beDvk@0Oq8X`ueANRZj(#JQ%)73Wk~E_ z{Kvy}+vfG+4=PWHr~GdJC7SnmgJi#<;=MG&lDu#xQ!?caf8bO5>h4SrX_|O%8S(>76Qu( zim+T*`^H)-|y3#GsG!)3~X$u~st&$y~GJ%VIeU$$VejdhYMc_73?w#nKn zdZZM|w)nEI?Th>Qav{UlFJ))rAcv#MMm%d1bm!ZKrbnW;f1RX$d~<07u1137LiAN2 z+O=b>M&6zfapp+Fsxzg2K%tdNbKE$u- zrhk~eKNmZrTQv)kbUx5{&JH+yS=%E>*mznG6(Ye67`myu0ZrU##io*~tU8-#%+%)D z4EvWCdmm+ z&uQhGp_NURp`O&S8KZuPzwnH}z(I%F+!_UT4>>y8nJ+#cg&Xw*nz zPE$?K;w`=h6xlh~mw}A=1s!KZl&~bkI9DNRfcaQLUBVSG$p_6J1!g8tS&;hXmYP1p z*`d(~$2o{a3~Wox9RM5qA^v`SAAqsZ0x7LB>LjSFbvxIiN7$MD#fz1U{vEn1^uxT{4JO@O>dj{q&e(AB~iwj;$G$Z#E{nL2z3e9eKy%J z%jlE_zo9pmTC|!}Efo>}S6Bvrh#M=+gf<{6#uL}=3@lnpkn!|{Wb1;18Q^N+WjAR# zA^g9+I zDA;x{#!1Y!d2H3q1>1Fs_TBo>x}cUEOOYOI%KMbI%cIoYuxk!GN3CsykHLB~a~Q9# zo#v(TCAXJ2+5WQou){Bq0u#w3(d_B34OYXrudn{a5J+c}bj&K#8VFWp&Nx(nRA;pB z`Q+h|LYjaI0%>RTNF^hoE*Z6IHL{Z=vj^3+XDfLg*%*gO8BUefpa+tU!AtGU)LPpT z4W(+eJ{1r_pNNijVSj}^7__d_*w^Oz>_xff$k1g`L)aTo>A!krNw>$E{#n)}(Z#f! zc1z3+!Cp=E+Mw`d248qb6Lv-3brHANTQkRrqb2wEFb~w+f20}JWI7sp{|vf!d&@h{ zIL76w2FqdjKZBEG+t8qZ4vp|$p0)OV@P&-mD zo6hW5P;oc$Yr$2z8!lIAN)?%&p;CuHq6e-(O0K~qa=Q&KwJh)zO3jjhOLLV~{O?aTjNiR+yH;uVNKk;ybgos>fSKFNgAKdS z|8x*CQZ+!!O~bMfQ2#5sl@^BvxE@t+6(X0NeFd;xA%8M|K`GgDPU3&dD*|rpidXq z(rFGV$S~kITw}nr28kL++}HqyMNAIMONqMO)exl&6(&B8{DEzC6|=t4r8Xf*5@Kze zd`s(I2|CJ-Csm>Lez?_mCYwzjdK@8@q%~5=f984t4v3(D^tV4TqY_aqU*Vg zcR>b{3A$e(%TPYK5bxpd5J^mq)$`rr)wQ5bJe!B#TUt32l-fz@lthmfxplu@7yd5W zUfE|twlZPJJitRRSLtbzM7_d8-FL}N5agW%rQo1Uw;RZI_K!sUkt->L;KoQg6?Mv| zlNgpEfd`R(7mD#q^5qJ+BeM|DkIj2yP8z<|c zbe3~E3WABEjrEUhOs+|MmHNx`oqCP z>&92iv+%->sVpvkLEJnY?bf>uQ!Sy<3{__=TnJBlpy9g?I7(62q#QBF0_@v+Y=Jku2N>wgKFnx;Cife=%2pVy3BGzvMCb)hOm z6p?!3{%E(!tgfD`M+?P=#5h*ws^rDsrrvBs4n==T(M{&Gv2`1)$jCo;Kt7nbC2i4H zpQDkUx+&fAq|yf~;FMTBV9fQs)?l$#JM;h}K_Ho=b5U}-@H-fLs6t!p+UqUs6jeIM zbL|H3rB+)ck0_kb%b${0Lu)EEGgz)prkSZo<1}2`0Z?R@mQLOIS=ONt}w~Wg6 zW=F1>31+H{lU+rM&M98m$~p5YWEhh#caThZYFl#q;}Zrc)`fKp_%Vm$!ikhJaNWQs zls^=IV>ke(T+wy#19zPheede98wSSi*5$%p#b~(=f+<2~Pdlm25+aM0uN)HuCX-dw zq*JzM>l`B_ljL)wZeEbG9<+a=zZYm(_@FK&l2%M3u(o>k)f|>yYIQ%g*D7EnqS@TM z$leO?-`^R2*&ALPU9BC=GUE6)xF0KdCed`D>j0azS7Ta;iv&4^O|FXsLH`2VJY4W* zjb^*ZL=~%B3@tA}xH{6(;C^Yu#)S9%H=?1j(V)-g=TL)1i61Cf$uY4zfk4;gh%K7R zYJt`gs_@A;nk_3kYbAZCIV<#;4F+eCUIhe~>OHySI{yo$@SyWFWI*pIMR$Nrjy{SJ zdt6&jcJ?z@UuJ!VXdHUiTjSCkB1O7A$e=Zr9E2h#@jDTXT>)+l;x+;Y2^PQ#7syh3 za*E=MvfiRpl@X-wOmF-5$AM=Q4abDQ2zK=N9RxTihcX7AQV`A;C^|&y=q>tN*)px& zV!uESDBGVbihqazeU5@4jZD;V9^ehpoMSL^FnR$KC=ae#Us-mI&!aeCC@3c??z~IH z1s@39X_p&}eQulFG9TRVIoW$g7>i5ml=wpF)fUEIsa({ett3mf67xS`XL?7zo~Vi3 zsO$@M!Ujy`VhI^oZQJLeUnm0Ge{pYinzpwh_SI7`x%Jj6y8tIW#Bd_G`X_|a4NZ7B zzduu}y0#vc|JlfcQ|vShwg=_h>=XQNYV&E%IE2d%4!FWbyHq)|U^EWtTs4$@zG$Y= z%$;2{7$g7!#%?ME?xo8~Gmz!qtVsD>#uw+C%$e$6v<$4y-s%vPcN8JF6n%?Wdw%oc z6LD1b#iJrP>(y-dd>^C*5CO+s#RGo;pJmiyDl#W86w3j>|*HaT2qWd%ziRo9b2{J z7PsBvGG^0V9NRTQce)~Hd=MC(AP>{c&kT?cvmnJB_TN^qc^SWW{*yRk_}y4FiLytx zP!RC8ih4zdc-2jwyq>8J?!tDxw$oQLFxq;zXV6%;t$3Id6x0hG_}glU6QHVOjJ`mk zaD~}z-WkV@JWu~xV8F`@{J%Xqx^RVPO*c1bcw>~d$kUHZU=`^O`%_I$4oI==sCTJA z1qIJieA%=4a4uMnyn_zx1&B=0VQdq@F=QzVf*0=|Y29I@Ic@o@gulMjn4cqKDc5+WQur9!WEvB4j_CkdJ@Ma}8cIH13+H#DGz$TzBL* zThhZQMUUW4nM)E2YhiPU^>6@;5M4`ixn z>MNe&I{hmER=^Yfai zEmn&an3QMJ&|Wlt?WhT;V|4%VhPFAN^_W$xJpMwJdCkHPQHIGJYct)G<59G|#0?0F zG+lnV^R9TB0Awm^?4at(JErf8P=bI2PpEXA#EC6g1c~rK(#iBW9(o*#~A??>!822F}{adezxzIwzciQ`6 zv&~|t81GBXGkI2RMS|Xq&NM>XHf~hluQ4i4E_CB4rbeLDWy9Stg-N}-`>Lb4p1plx z38^z=+Xs@mXkRrrpvd?_61vyS0N^Om*o+hLxlJIfD{QTLV(@wh6;koBt>>1G(haT` zESBFz7J(Vi)H8=rJ;UY|K#&meO4ziFKinq-bua7J@|3SZ#OUn8T=xt_J#2Z8274j^ zGQTmzBZJmsvRS#|qUIMR*(O`NNIxu-`FwSlRx1^Q_*k0jM6ItYX>#_s_ZUEk~&DUEqwt7`RsTMxCu-JozkOoRe07Se) zhrwL`w}OL3g!}*lA%^~${jXlk!sg#K5>0f!B2+4MCV+PTw*>qvu9sqZ5|$jIWjQdSD0;K`aj>uk-g@bp(vdxf<;vvl{Dotx{- z^(8}VK=Z7)+!)H#!tO5O7C=+U_(>tn3{Um7u)vw-;x8Gn=qp=g#{-ifCZTL$+!oTI zviE)xz=O9sIHA_?y-~`qrXh-+k6(kgr}#{K77YE7<-3WJ>ap+P>J%kRS{`$mWPGmb zvOX*Nx^q!fdqq`+FK{jxr85;zYDw=(4Im85lfQW(mGW7b2H*Kk6Y-|eY@^E$ACX+1 z1tq{8yRo-qB|U+HV&Y0uSJ^gpnql3ubf6J&b{UME0ET8(6g!Y4WSP9RBsy(h4B zq^n{Il)newsglIxwwX7|$=t4(B?r&`vhnY4>b6Z(W^* zE15-SRNI-a$u($nQGcdq$FU%M<;45Av?ckUIT~~HS0wKw0v$;PCaS>jdC*X&N?O|u z9RKr7EwLogZ;whGfc!m;&uTUjP~L9`anOx^N51b#SrC;lWNimlH{-Q?^!uI zwXjJ>hJD5UaLFH?B3;IAjiJ4B$N?6jK0G-iNjBO`Zvo^D`X_KeCa*pvHd& z+L>M?twAb$P!L;9lXGdJN9&sSn)$p6SpHFcIwEF+ZOT3{$Xj;-u_o0j3RKYwD|O~? zIaQQw@s961_u}YXn+*)CLFJ~K5|5MaeM@7~3T|jwYfT0l>U}#C{ z?(XjH9FUHoyF(*LfUAX6EOt-5@1N`8$Fm{GT^lN5Bs4XU}b? zBGrUH6UiQKAcQYcNN5P<5hY*l>&*ogHk?JjDGi3fA-h1&uKCL1?SS?NAT5<^JJOTb z#7Gyk*!p}J*JUT=ybE!*^rtIDOQPxhSg&(1fQr;YMNXb_lnSeXmM{DNH>FEfe(Lh~ zbdT}PRHgaIb40@>YzVe)ak*zabc*feR&&44EB8Ai_v$e8U{UwtS5yilYy&0tOv$7k z;`t<=V&C@Ewfq!#DxnN|#Be{k=)wWitX?lLkZg=#+0Dk_6vYupFfr@ zq0eiWW38#*W-H)s*HB#{}i7Kc*ptXHz52WRWv z=VHsvCIgw&h*R=~(>0t=Gi4?B8-;JG3(ryD(MhX;rvh9a!8x-1E1)aTK+&gJnx=9m zdfPF38izSPc@@NDeuy3%o3gA>zkVH1M8!8;y?iupn@gQpP<40~i?=D%@dlic;DkTk z5VqgQe^V`eCD)Du5UWP(NONfGWbb#I>n!QaM8wpSb!EQK_=t|f-!F}$HV>aDm8lY{ z#c+@MCwK9B%~x>G2@U^ua)|nvOPFtj)mm2|=NE^}A08yx6>k%-yoI&;1l##6g}6Az zLfn2qSyQ%{WmpI8>D_+YcVDgV@?tk1TWr-Z^S<`ch-eMs+^&uaUQin)m(Z`IEm+c^ ziD1%~A|1f-_h;^R`;O!jg~O>f1eXrgsCmIP_Z)+}Q9p_^39H1W4%`JKC(Jc$1Gk)+ zQF2-e7OJlB{su;t4R_6*^P+QAEDmg!{7MOg@x-KXY6>5b+r43C9?g&!wMVgCk8B7H znR*nV)>LduY;C1sbo#V%T8OVH%f#|8e4#9f#0M#WU(yu|>=0x!u*P55N-Zf;yJ?{g8d^$yJ^=?}J({Zo59XKECwDeN^e3 zr|lapL}o8yLaqlLq{(k!+8&=KoPXfn(0ZOk>u)Ci!+Opk8rc+!ARURSj;3jcN208% z+L(Xkws(B26HDqYND@VQ?*08scnL@l>>AO~0y*8*qScF@j}in6eXf+nHM87wS?(T3 zx1L_A_W07~w#r3+*i|j^pz-zLAM6IqKQBVzQ#Ay*3I~pR7+f7;(G$|EsE0{Mr6zwU zZGi~6c4lsnDm-C(U+y{MlJQ9_D-yKD=2RzCBjE)X-?ugZob10E+aNWjdY#Wr5tpi$ zEAY)zYKhm6b^p_%I(o=#d)+2t7P2~AQoJ5{Qs{N4+InB_AJSJGE}qM;J2`adb-ZwM z1Nsaod_im3Jzk(Gq|Kq?wAmv7_tvN7+}*8xb; z3t1euO*LYQTG_3V{ip#EbZEfu}Q4^$`C1=~>Fy`|1401`KzUG@B*|5i}!* z787U;i*>2>ZszHYCH}44QCAR#qVb6D2};d;zCv_E)fF6wg1L9H)H`5Th(3SoH-;MC@P_oc)TU z?ONxCn!PcpEQd=c7q>Lj42>A>pYY1IAb!5OGqb01*WWrl4v5ds3Xr}XYo*{;5vLAV>O7dE#X6s!hc8x+)=8a7NZ4Tp1M9SZf5ErudE2`$ykgqF|x0x9!i< z=uHLk>Z`IJhbAnsW`WaHzpm$pVW`~HnXe>0`JryQp3F7oCxMY~*Fwn#?y1Utt+?-c z@ml{3m|ycm_g+QlM(Z0HRk;1ia)$b6NEqghn38aJ1sQlY)xa-um5a_DEInWFXm0o) zMF-QrJj-4`F6MM7_~Gjs8?w-Tga8Dj*%(>x_=BFavRLNBm(?{Gbal@!Ra|=mkEkwb|;&H^GJ} zqf{oVO`CuxZr^uVFQB!AxF<#Ct97oiVrOc){9GlD(bKRz`#MxNmoM>HbG0xm8E`q7 zLC)=CJ6UV#_#)j0>ADJs4P%YnD|9KkL`VC0^^*gS!~scD*&k zw-RO#-mb=Yni6`#beIX@dOEsu?!83oSge>C?%XxD_rVnm_d_NDv(e9GpW!$7Wh=(7 zGh?0v;~*YWjrAP_>y$}~1ZF)^j>gHUL=>E_@98rvg|9O?M!sfrMAFaEm?q>m8>>CMIMT2d})viXs&5p9S()>Yu?7Gc& zjT_w-e+iGWVR{I$2Q$_n=_(m|Z1xyIh0DRiYvRW44`IM969L_b^7K&cWf`?)bc|;M z#N1x-FH$ydi5)0hl-=KAAQ`teFAosO`cA&gx>kJocdj{Nf(Iyp;E9Ides?+bN=U8YsNJ0VPP~N|RxZtli zI6;hpfs3}u2(?@;FrK3cS*a{audBi@((}mE&=Dc+-scpZfXCJCHr2S6-Ed#7EN| zr1Yfe0r*@lNG@7uMJSxgEPh)geMl}>P4|9{+B~d~WKYbx1m%+nXi&OKww$u{Et_=^ zU1rZE4Hu)b0<_mQcm-#+%bU+rfe(o#_phWg<}jb>HLbjS2 z>SFFEK};05y`aWPSENe_bNHN}PM~oYsRqG6VGo3P*0FWZ#ftulFAF@?n7aV^23da& zu`KO(2UqIj zBk50h6V5hA(YYQa$MaUllQ#i4E_{`r$OW`(xw!`$9lSUGY#MuCDCM)GveHiifE5h$ zP0Pr>9cof0jtX+UoP?j>023@t`zJcUubAsTX-lX1(T&wO8I_l%-Q_OxC=#P9U$`oa zo(1QykL!efy=lT&-d)Hu<71=VqWW}2p{>GnmQ3yzdI9vE%hORLPi;;s$UNN!s|H!` zOK$WSZ`y~;56^6E{ieP9lDB3-1R4JaFHxSYIm#ok_uZHAMAT{5Jr7ZP$dEMoh`BF( zG)^Yohw$B98D%eX+XNfR=K-;1{W!&P3f1V18KWP%RABKByIBTsods-$vLwf0xrV-_ zACNm0w7oCwm0r^2w~aCBC2k`t)R$83n6xslzR5ObgT^$TzjkR=!Pi-H^8Z=T@P&fq z@k5GNQR*`S3nvovvg@JI1>T4-d13-d;#1)=8M!={eilZ#Y8qLIl^-n=<~@zfLX@&f zHi(R#*J~Y`kUz6MlBE6zuf&7e&a_5{3U~&2^F%snZhD0B?lSps-H7D}&a5P!$d&v? zIl_!yl3@#sf2?Z5%+c~E`j2d4BPSc> zYu(5^*pxQ6Pl{2qsfz%8*0Y)m3C5llpA219PFEcdqkT>rDep~ro81>Z=3+u8$`l$2 zq)q&#FiF}}MY^ID%**mX_@d1}rVJr5vU}Vzy&gK`oHl*u=Euu`b>?_2uXD&CKgPyp z)E~ksZ>P#?0h@!Go!ZN1iK-4pk*ktl_by^>ImQQix+LVN^)(?T)95nsJ5-B!rSoIA z8MFSAhuI4GjH$(>KbBbHYpJXQ%vE!^WyPx)-ng0UdQWnXd@XX3F!X(-F?g-otmSZ& zfXQ&!`mnC>mGe%uc&emuV?J$o6nnUu=Br?#^{p8!l*6sG!0Bb#d3i-9srI3G<9*O1 z#R_7!&0~$GO1E@xfx5!q03>S9aHX$FoMV?DI9EhEH`Z9+dC)`=8kc<)VaM{c4RkbJ zu{4JsaYl&5`6cR$Qh|Ht`Oek6NA)hN+9hK~MRxX72fOV{JX!g73p&j}BmF`6)5GMB zS9WZIXiF@HpoqM!^OB4OO~|0SA+_GZ+5sDW8jiVi;jH|$yU6}Wb5;yl$y`3Up9uf7 zS>=qwW(vVnii$NlI?yD^s}MJVMu82jZ;V09_IIYA03kH)Wjf znrkYvZqqY)`W&6L&Ko`6Xh;HmWy&wZa>l(}#y7Hm)3W$unP6^)m}bQ9)S9^Sy7tG9 z2L7hmfL)!)&`KCTKnJVw{ZwugFQUqhg?k}odp9c5;{HpqwUH8x(t?D>v#OUCu3NU( zbBZ54tHvmAIKk9Ezx{sE+0yUUpnUN?NbaF=v%%+sb=^{kWghf^licMjZ1r> z0{A#A3+Q*DCc`p*RYtgTjeB4gf$x{t<7D5unGhnCT&`Ci0C~lVNQp3aCeDf0)pB1r z*XnIYtcFDeRuiKOt3jCkeS^olUe~q7_#YKK<@*2t literal 0 HcmV?d00001 diff --git a/pages/topics-and-events/concepts.mdx b/pages/topics-and-events/concepts.mdx new file mode 100644 index 0000000000..061970e68e --- /dev/null +++ b/pages/topics-and-events/concepts.mdx @@ -0,0 +1,91 @@ +--- +meta: + title: Topics and Events - Concepts + description: Understand the core concepts of Scaleway Topics and Events. Explore fundamental principles for efficient message handling and service optimization. +content: + h1: Topics and Events - Concepts + paragraph: Understand the core concepts of Scaleway Topics and Events. Explore fundamental principles for efficient message handling and service optimization. +categories: + - +tags: messaging topics subscriptions events +dates: + validation: 2025-04-10 + posted: 2025-04-10 +--- + +## Content-based deduplication + +Content-based deduplication is a setting available for [FIFO](#fifo) topics. Enable content-based deduplication if the message body is guaranteed to be unique for each message. A unique hash value is generated from the body of each message, which is used as its deduplication ID. This avoids the need to set a deduplication ID when sending messages. Read more in our dedicated documentation on [creating topics](/topics-and-events/how-to/create-manage-topics/). + +## Credentials + +Credentials give services and platforms access to Topics and Events, enabling them to connect to the host system. Credentials for Scaleway Topics and Events define whether the bearer is allowed to write, and/or read, and/or manage topics and subscriptions. Refer to our [credentials documentation](/topics/how-to/create-credentials/) for more information. + +## FIFO + +FIFO stands for **F**irst **I**n **F**irst **O**ut, and represents a type of topic where the exact order of messages is preserved, and duplicate messages are not tolerated. As well as these specificities, FIFO topics support all the same features as the [Standard](#standard) type. Consider using FIFO topics for any use cases where the order of messages is critical, such as e-commerce order management systems, systems where one action should not happen until another has been completed, or first-come-first-served ticketing systems. + +## Filtering + +In a [topic-based](#topic-based) system, where topics handle the logic, filtering is similar to routing. Messages are sent to defined topics, which can be thought of as filters, as subscribers can subscribe only to the topics they are interested in. In a [content-based](#content-based) system, filtering is carried out more directly by subscribers, who define filters for messages based on the content/attributes they want to receive. + +## Message broker + +A message broker is a piece of software that allows applications, systems, and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer and transmitting them to a consumer. Scaleway Topics and Events is a message broker tool based on the AWS SNS messaging system. + +## Messaging and Queuing + +Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](/nats/), [Queues](/queues), and [Topics and Events](/topics-and-events/). + +## Publish/Subscribe + +Also known as "pub/sub", the publish/subscribe model provides a pattern or framework for the exchange of messages between publishers and subscribers. It contrasts with the [queuing](/queues/concepts/#queuing) model. The key feature of publish/subscribe is that messages are not sent to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. + +## Region + +Topics and Events is available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for Topics and Events. + +When creating topics, you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. + +## SNS + +Scaleway Topics and Events is based on the AWS SNS protocol. **S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. + +## Standard + +Standard-type topics represent the default topic type, and offer an at-least-once message delivery system. Unlike [FIFO](#fifo) topics, standard topics provide only best-effort attempts to deliver messages in order. At-least-once delivery means that it is possible under rare circumstances that the same message may be received more than once. + +## Subscriber + +In [Topics and Events](#topics-and-events), a subscriber is the entity (e.g. a queue, function, or URL) that messages from topics are pushed to. Subscribers can filter messages based on their topic or content. + +## Subscription + +A subscription is a connection between a client or endpoint, and a topic. By creating a subscription, the subscribed endpoint receives messages and notifications published to the topic. You can [create subscriptions](/topics-and-events/how-to/create-manage-subscriptions/) for HTTP/S endpoints, Scaleway queues, and Scaleway Serverless [Functions](/serverless-functions/quickstart/) and [Containers](/serverless-containers/quickstart/). + +## Subscription protocols and endpoints + +A subscription protocol refers to the communication method used to deliver messages to a subscriber. Different types of subscribers require different protocols. When you create a new subscription to a topic with Scaleway Topics and Events, the following options are available: + +| Protocol | Endpoint / Client | Note | +|-------------------------------------|--------------------------------------------------|-----------------------------------| +| HTTP | The URL of a service or web server that can receive notifications (HTTP POST requests) from Topics and Events, e.g. `http://example.fr` | - For security reasons, we recommend using the HTTPS protocol rather than HTTP.
- HTTP subscriptions must be [confirmed](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | +| HTTPS | The URL of a service or web server that can receive notifications (HTTPS POST requests) from Topics and Events, e.g. `https://example.fr` | - HTTPS subscriptions must be [confirmed](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) after creation | +| Serverless Functions and Containers | A Scaleway Serverless [Function](/serverless-functions/quickstart/) or [Container](/serverless-containers/quickstart/)
| - It must have a [public](/serverless-functions/concepts/#privacy-policy) privacy policy
- It must be in a [namespace](/serverless-functions/concepts/#namespace) from the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | +| Queues | A Scaleway [queue](/queues/)
| - It must be in the same [Project](/organizations-and-projects/concepts/#project) and [region](#region) as the topic | + +## Topic + +A topic is a communication channel used to send messages and notifications to subscribed endpoints or clients. Publishers send messages to topics, and those messages are received by subscribers. Subscribers can include Serverless Functions, Scaleway Queues and HTTP/HTTPS endpoints. As such, topics decouple the publishing and the receiving of messages, allowing for flexibility and scalability in building loosely-coupled systems. + +## Topic types + +When creating topics with Scaleway Topics and Events, two topic types are available. [Standard](#standard) topics provide at-least-once delivery, while [FIFO](#fifo) topics offer first-in-first-out delivery, and (unlike Standard topics) guarantee that messages are delivered in order and without duplication. [Content-based deduplication](#content-based-deduplication) is only available for FIFO topic types. Find out more about creating topics with our [dedicated documentation](/topics-and-events/how-to/create-manage-topics/). + +## Topic volume + +Topic volume is one of the factors affecting the billing of Scaleway Topics and Events. Topic volume is calculated as the total sum of the sizes of all messages sent from a topic to its subscriptions. + +## Topics and Events + +Scaleway Topics and Events is a product for creating managed messaging topics based on the [SNS](#sns) protocol. Previously, it was part of the Messaging and Queuing product. diff --git a/pages/topics-and-events/faq.mdx b/pages/topics-and-events/faq.mdx index 9d0fe5fad9..6c4af903bd 100644 --- a/pages/topics-and-events/faq.mdx +++ b/pages/topics-and-events/faq.mdx @@ -1,46 +1,34 @@ --- meta: - title: NATS, Queues, and Topics and Events FAQ - description: Discover Scaleway NATS, Queues, and Topics and Events, and get answers to common questions about the different protocols available, compatibility with various services, and billing. + title: Topics and Events FAQ + description: Discover Scaleway Topics and Events, and get answers to common questions about the different protocols available, compatibility with various services, and billing. content: - h1: Messaging and Queuing FAQ + h1: Topics and Events FAQ dates: - validation: 2024-12-04 + validation: 2025-04-10 category: serverless -productIcon: NatsProductIcon +productIcon: SnsProductIcon --- -## What is NATS, Queues, and Topics and Events? +## What is Topics and Events? -These are three distinct managed message broker tools offered by Scaleway, based on the NATS, SQS and SNS protocols respectively. Previously, these products were grouped together as 'Messaging and Queuing', but have now become three separate products in their own right. +Scaleway Topics and Events is a product for creating managed messaging topics based on the AWS SNS protocol. Previously, it was part of the Messaging and Queuing product. -## What are NATS, SNS, and SQS? +## What is SNS? -NATS, SNS, and SQS are all messaging protocols used by the Scaleway NATS, Queues, and Topics and Events products. You can find out more about these protocols, and other essential concepts, on our dedicated [concepts page](/messaging/concepts/). - -## Is the Scaleway Queues gateway compatible with my application, framework or tool? - -We currently implement the API endpoints listed [here](/messaging/reference-content/sqs-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including KEDA and Symfony. Note that you need to specify both regions and URL to ensure compatibility. +**S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](/topics-and-events/concepts/#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. ## Does Scaleway Topics and Events support all SNS features? The following subscriber types are supported: - HTTP/S clients - Serverless Functions and Containers -- Scaleway Queues queues - -For more details on supported and unsupported Topics and Events features, see our [dedicated page](/messaging/reference-content/sns-support/). - -## Can I configure Scaleway NATS via Terraform/OpenTofu? - -Yes, check out our [tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) on how to configure Scaleway NATS with the Terraform/OpenTofu [NATS Jetstream provider](https://registry.terraform.io/providers/nats-io/jetstream/latest/docs). +- Scaleway Queues -## How are NATS, Queues, and Topics and Events billed? +For more details on supported and unsupported Topics and Events features, see our [dedicated page](/tpoics-and-events/reference-content/sns-support/). -Billing is based on: +## How is Topics and Events billed? -- For NATS: [Stream volume](/messaging/concepts/#stream-volume) (the total sum of each message's size going through the stream) and [stream persistence](/messaging/concepts/#stream-persistence) (the total amount of data stored * duration) -- For Queues: [Queue volume](/messaging/concepts/#queue-volume) (the total sum of each message's size going through the queue) -- For Topics and Events : [Topic Volume](/messaging/concepts/#queue-volume)(the total sum of each message's size going out from the topic to the subscriptions) +Billing is based on [topic volume](/topics-and-events/concepts/#topic-volume) (the total sum of each message's size going out from the topic to the subscriptions). For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp b/pages/topics-and-events/how-to/assets/scaleway-topics-create-subs.webp new file mode 100644 index 0000000000000000000000000000000000000000..f9aec9f4b7d090f7f17a9f5d99957656471ff9fe GIT binary patch literal 24710 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 z zo7WB?J~)I>U&3$eYshl3CB|m;_^O#%44EJ>pO4i0 zSy5Ed(Jf5hl(k*yKzOoZWHmVN`HZBL5>Yn0&s&WS-Ozdj%@*#c+wfMpB+($1H)vVi z8M<$?_R$eiae}O@?Lrs;NpR^=+5Vk~YQJ_lPzcqRK8P1r!Nc62e6l=Fx-auGGxKd! z!lZ%!;J-ix{|Ws6U-0qi|AG(xdtWXU{ML47*@&VW(R5>q?>sUrEa_Ml&?1M|i;}D8 zE~5K?g<-6#vhIKVq}*pf#p)X;K{vDQ@VNO_TKks&G`V)bM_<9U(5fa5;ye$0c1 z0S3KX^U-artpW*s^D|3esjk&kC3&+K$5fbt^%IHn1%a>PsUj$t~|T_zT7>42&N14~wm z?eX9{`up5M!IN@GgdZu_z7Uz~XlRbwd=4ZiAVpPfq0`3abqph|QrBDRg=HB7viZ+V z?D}O-Y84Cr<*v@n_`;TI2`j|ip6iRF(r$gSs@zx_@HY5Q;Qv4H;W<2^k6F%Q2DQ&RGP{3L>#13%GZCM74=q{#~~qG2&OskL6d z;czT!=)LQfk}IV z?T}FoH)CD(0Ru%ii1Yvy%Zj>hJaeTL2+%(Y}m2xgs|Zagd;G28zj0TGoGN&1e&`EA7@YSx8@zP}Xr7 zf<#0pjSiaFvOBUx8&3gK?GOMB5D+s9R=q;n4$&c@I5~6*_JCcg#)ub@7cHYrX7h`^ z#Cxj2sJ9at*@p&#K*-Xb*+inP4IjQLVr--92oP_1Yb}?B^fieU^(JvATn~nlco3~x zQ&IxR5Vb=MNEm^I(E79r^TbBJ@8#1-xu@Fw$ELW-{rajf5bFa`Gm4ht1YJEqNQcqL z;L(<90RPHx0}w*u0kmdqS-EKAsnT+yX;g8KW!JoydDx?)Et@F{o^RYZ>$EgLC5+}r5wMAv0h zMMt>mbJ8w>g<*uN8<(*eQ9fT_}X`jq6G;wlZ!2dSu5;_wF_{3`=ZTm&sj*;n{?dWK}V2>_5)<)Sl6XGx)`O^RPuZJ0Am%`Z}-;Stw+i zOv^Hw!xc1A>Z$T95k3=fXyn;X?p1doY*0RhF8u6r&GU&`+7w|+;^M(DGQPO`#~ysX z3a<9jZ_)KxkdsV*qM?GzJvFpnwCYl;* z_gpur3NWC82S=JF!5lGYW>7R~zAJnzM#G`5;i|M=A?*xSOF=9(wr8QoGfgT$lSYG= zW>uOCa83FS>5GT4aM*ZPJ%Hf5A7i@BwJer&kZcq@hp^u3Dq10vvL-ljRyu3DJiLwf zU+lfpoAKXSEqt_KnfWQa=TGI8h&Ug=_XeMqV=!lSln92&J$I!6ey- ZPfE?oTlHIB9%;Fk{)7MEKltzM4-95iK864Q literal 0 HcmV?d00001 diff --git a/pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp b/pages/topics-and-events/how-to/assets/scaleway-topics-create-topic.webp new file mode 100644 index 0000000000000000000000000000000000000000..7596cd2e1536081066660d43cc2a890f63d9197e GIT binary patch literal 44744 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 literal 0 HcmV?d00001 diff --git a/pages/topics-and-events/how-to/create-credentials.mdx b/pages/topics-and-events/how-to/create-credentials.mdx new file mode 100644 index 0000000000..a308d758ab --- /dev/null +++ b/pages/topics-and-events/how-to/create-credentials.mdx @@ -0,0 +1,49 @@ +--- +meta: + title: How to create Topics and Events + description: Learn how to create credentials for Scaleway Topics and Events. Securely manage access and ensure seamless integration with this step-by-step guide. +content: + h1: How to create credentials for Scaleway Topics and Events + paragraph: Learn how to create credentials for Scaleway Topics and Events. Securely manage access and ensure seamless integration with this step-by-step guide. +tags: credentials messaging queuing key token +categories: + - serverless +dates: + validation: 2025-04-10 + posted: 2025-04-10 +--- + +This page shows how to create [credentials](/topics-and-events/concepts/#credentials) for Scaleway Topics and Events. Credentials give their bearer (e.g. services and platforms) access to your service. + +Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. You can create multiple sets of credentials for each of your Topics and Events services. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. diff --git a/pages/topics-and-events/how-to/create-manage-subscriptions.mdx b/pages/topics-and-events/how-to/create-manage-subscriptions.mdx index ceb665f831..7a1f092568 100644 --- a/pages/topics-and-events/how-to/create-manage-subscriptions.mdx +++ b/pages/topics-and-events/how-to/create-manage-subscriptions.mdx @@ -9,23 +9,39 @@ tags: messaging queuing subscriptions sns topics categories: - serverless dates: +<<<<<<< HEAD validation: 2024-10-17 posted: 2024-02-06 --- This page shows how to create and manage [subscriptions](/messaging/concepts/#subscription) with Scaleway Topics and Events (formerly part of the Messaging and Queuing product). When you create a subscription to a [topic](/messaging/concepts/#topic), you are effectively signing up an endpoint to receive all messages published to that topic. +======= + validation: 2024-04-10 + posted: 2024-02-06 +--- + +This page shows how to create and manage [subscriptions](/topics-and-events/concepts/#subscription) with Scaleway Topics and Events (formerly part of the Messaging and Queuing product). When you create a subscription to a [topic](/topics-and-events/concepts/#topic), you are effectively signing up an endpoint to receive all messages published to that topic. +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) - A Scaleway account logged into the [console](https://console.scaleway.com) - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +<<<<<<< HEAD - An existing [topic](/messaging/how-to/create-manage-topics/) +======= +- An existing [topic](/topics-and-events/how-to/create-manage-topics/) +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) ## How to create a subscription 1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. +<<<<<<< HEAD 2. Use the dropdown menu to select the [region](/messaging/concepts/#region) of the topic you want to create a subscription for. +======= +2. Use the dropdown menu to select the [region](/topics-and-events/concepts/#region) of the topic you want to create a subscription for. +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) 3. Click the name of the topic you want to create a subscription for. @@ -45,7 +61,11 @@ This page shows how to create and manage [subscriptions](/messaging/concepts/#su You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. +<<<<<<< HEAD After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +======= + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) @@ -54,21 +74,35 @@ This page shows how to create and manage [subscriptions](/messaging/concepts/#su You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. +<<<<<<< HEAD After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +======= + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834))
Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. +<<<<<<< HEAD You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to an topic. +======= + You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/topics-and-events/concepts/#region) as the topic can be selected. + + You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834))

Choose **Queues** to create a subscription for a Scaleway queue that you have created. +<<<<<<< HEAD You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. +======= + You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/topics-and-events/concepts/#region) as the topic can be selected. +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834))
@@ -82,11 +116,17 @@ An HTTP or HTTPS subscription will have a `Pending` status until you **confirm** 1. Access the subscriptions listing page (from the console side menu, **Serverless** > **Topics and Events** > **Topics**, click the topic containing the subscription). +<<<<<<< HEAD 2. Click the icon next to the subscription you wish to confirm, then select **Confirm subscription** from the menu. A pop-up displays, with the following message: ``` A subscription confirmation message has been sent to the subscription endpoint. Retrieve the SubscribeURL value from the message and enter it in the box below. This is a necessary step to start receiving messages from the topic. ``` +======= +2. Click the icon next to the subscription you wish to confirm, then select **Confirm subscription** from the menu. A pop-up displays: + + +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) 3. Retrieve the confirmation message that Scaleway Topics and Events sent to your endpoint (delivered as an `HTTP POST` request), and extract the `SubscribeURL` from the message payload. @@ -102,7 +142,11 @@ When you no longer want a subscribed endpoint or service to receive messages fro 1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. +<<<<<<< HEAD 2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the subscription you want to delete. +======= +2. Use the drop-down menu to select the [region](/topics-and-events/concepts/#region) containing the subscription you want to delete. +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) 3. Click the topic containing the subscription you want to delete. @@ -115,5 +159,8 @@ When you no longer want a subscribed endpoint or service to receive messages fro A pop-up asks you to confirm that you understand this action will delete the subscription. 6. Type **DELETE** and click **Delete subscription**. +<<<<<<< HEAD +======= +>>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) diff --git a/pages/topics-and-events/how-to/create-manage-topics.mdx b/pages/topics-and-events/how-to/create-manage-topics.mdx new file mode 100644 index 0000000000..30cca7bab6 --- /dev/null +++ b/pages/topics-and-events/how-to/create-manage-topics.mdx @@ -0,0 +1,61 @@ +--- +meta: + title: How to create and manage Topics and Events topics + description: Discover how to create and manage topics with Scaleway Topics and Events. Enhance your messaging setup with this comprehensive, easy-to-follow guide. +content: + h1: How to create and manage Topics and Events topics + paragraph: Discover how to create and manage topics with Scaleway Topics and Events. Enhance your messaging setup with this comprehensive, easy-to-follow guide. +tags: messaging queuing topics sns +categories: + - serverless +dates: + validation: 2025-04-10 + posted: 2023-12-27 +--- + +This page shows how to create and manage [topics](/topics-and-events/concepts/#topic) with Scaleway Topics and Events. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a topic + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create topic**. The topic creation wizard displays. + + + +3. Choose a region in which to create your topic. + +4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose a **topic type**. The following topic types are available: + - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. + - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/topics-and-events/concepts/#content-based-deduplication) is only available for FIFO topics. + +6. Click **Create topic** to finish. + +You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. + + +Remember that you need to [create credentials](/topics-and-events/how-to/create-credentials/) in order to access your Topics and Events service and its topics from an API or CLI. Sending messages to topics requires that credentials have the `can_publish` permission, while receiving messages from topics requires the `can_receive` permission. You can create separate credentials if you need to isolate these two roles in your application. + + +## How to delete a topic + +When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/topics-and-events/concepts/#region) containing the topic you want to delete. + +3. Either: + - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or + - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. + +4. Type **DELETE** and click **Delete topic**. \ No newline at end of file diff --git a/pages/topics-and-events/how-to/index.mdx b/pages/topics-and-events/how-to/index.mdx new file mode 100644 index 0000000000..68efa2c53a --- /dev/null +++ b/pages/topics-and-events/how-to/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: Topics and Events - How Tos + description: Topics and Events How Tos +content: + h1: Topics and Events - How Tos + paragraph: Topics and Events How Tos +--- diff --git a/pages/topics-and-events/how-to/manage-credentials.mdx b/pages/topics-and-events/how-to/manage-credentials.mdx new file mode 100644 index 0000000000..fe2c64412e --- /dev/null +++ b/pages/topics-and-events/how-to/manage-credentials.mdx @@ -0,0 +1,58 @@ +--- +meta: + title: How to manage credentials for Topics and Events + description: Master managing credentials for Scaleway Topics and Events. Follow this guide to securely update, rotate, and control access to your messaging services. +content: + h1: How to manage credentials for Topics and Events + paragraph: Master managing credentials for Scaleway Topics and Events. Follow this guide to securely update, rotate, and control access to your messaging services. +dates: + validation: 2025-04-10 + posted: 2022-08-11 +tags: manage credentials messaging queuing permissions update revoke +categories: + - serverless +--- + +Credentials give their bearer (e.g. services and platforms) access to your service. + +This page shows how to manage [credentials](/topics-and-events/concepts/#credentials) for Scaleway Topics and Events. Credentials can be updated to change their permissions, or revoked. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [credentials](/topics-and-events/how-to/create-credentials/) + +## How to update credentials + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/topics-and-events/concepts/#region) containing the credentials you want to update. + +4. Click the button next to the credentials you want to update, and select **Update credentials**. + +5. Make the required updates to your credentials. You can modify the name, and the permissions. + +6. Click **Update credentials**. + + The credentials are updated and you are returned to the product's **Credentials** listing. + +## How to revoke credentials + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu/ + +2. Click the **Credentials** tab. + +3. Use the drop-down menu to select the [region](/topics-and-events/concepts/#region) containing the credentials you want to revoke. + +4. Click the button next to the credentials you want to revoke and select **Revoke**. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +5. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the product's **Credentials** listing. + + diff --git a/pages/topics-and-events/how-to/monitor-topics-cockpit.mdx b/pages/topics-and-events/how-to/monitor-topics-cockpit.mdx new file mode 100644 index 0000000000..fa585c3d2b --- /dev/null +++ b/pages/topics-and-events/how-to/monitor-topics-cockpit.mdx @@ -0,0 +1,41 @@ +--- +meta: + title: How to monitor Topics and Events with Scaleway Cockpit + description: Monitor Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +content: + h1: How to monitor Topics and Events with Scaleway Cockpit + paragraph: Monitor Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +categories: + - serverless +dates: + validation: 2025-04-10 + posted: 2023-09-07 +--- + +You can view metrics for Topics and Events via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your topics and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: + +1. Generate your Grafana credentials +2. Access the product's metrics dashboard + +These steps are described below. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to generate Grafana credentials + +To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). + +## How to access your Topics and Events dashboard and view your metrics + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **Metrics** tab. + +3. Click **Open Grafana metrics dashboard**. + +4. Enter your Grafana username and password to log in. + + You are directed to the Topics and Events dashboard, where you can view all your metrics. \ No newline at end of file diff --git a/pages/topics-and-events/index.mdx b/pages/topics-and-events/index.mdx new file mode 100644 index 0000000000..1b7abebfd6 --- /dev/null +++ b/pages/topics-and-events/index.mdx @@ -0,0 +1,73 @@ +--- +meta: + title: Topics and Events Documentation + description: Explore Scaleway Topics and Events. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. +--- + + + +## Getting Started + + + + + + + + + +## Tutorials + + + + + + + + +## Changelog + + \ No newline at end of file diff --git a/pages/topics-and-events/quickstart.mdx b/pages/topics-and-events/quickstart.mdx new file mode 100644 index 0000000000..f728b64530 --- /dev/null +++ b/pages/topics-and-events/quickstart.mdx @@ -0,0 +1,147 @@ +--- +meta: + title: Topics and Events - Quickstart + description: Get started with Scaleway Topics and Events. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +content: + h1: Topics and Events - Quickstart + paragraph: Get started with Scaleway Topics and Events. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +dates: + validation: 2025-04-10 + posted: 2025-04-10 +tags: messaging queuing message-broker topics messages subscriptions events +categories: + - serverless +--- + +Scaleway Topics and Events is a message broker tool that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. Topics and Events enable and simplify microservices application development and allows you to build highly scalable, reliable, distributed applications. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create Topics and Events credentials + +Credentials for Topics and Events are granular: you can define the level of access that they should give. Credentials give the specified level of access to all topics that you create in the region they are scoped to. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. The **Topics and Events** dashboard displays. + +2. Click the **Credentials** tab. + +3. Click **Generate credentials**. A pop-up displays: + + + +4. Choose a region that these credentials should be scoped to. + +5. Enter a name for these credentials. + +6. Select the required permissions for the credentials. You must choose at least one of **Write**, **Read** and **Manage**. You are free to select any combination of these permissions. + +7. Click **Generate credentials**. + + The credentials are created. The access key and secret key are displayed, and you are invited to copy them. + + + This is your only chance to view and save the secret key. Make sure that you copy it and save it somewhere securely. + + +8. Copy and save the credentials, before closing the window. + + You are returned to the **Credentials** tab. The name of your newly-generated credentials, along with the access key and access level are displayed. + +## How to create topics + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create topic**. The topic creation wizard displays. + + + +3. Choose a region in which to create your topic. + +4. Enter a **name** for your topic. The name must contain no more than 80 characters, and consist only of alphanumeric characters, hyphens, and underscores. Alternatively, you can go with the auto-generated name suggested for you. + +5. Choose a **topic type**. The following topic types are available: + - **Standard**: Ensures at-least-once message delivery, where the order of messages is not preserved. Supports Serverless Functions, Serverless Containers and HTTP/S subscriptions. + - **FIFO**: Provides first-in-first-out delivery, where the order of messages is preserved without duplication. Supports Scaleway Queues subscriptions. [Content-based deduplication](/topics-and-events/concepts/#content-based-deduplication) is only available for FIFO topics. + +6. Click **Create topic** to finish. + +You are returned to the **Topics** tab, where your newly-created topic now displays. The topic's URL is also displayed here, for use in your API/CLI operations. + +## How to create a subscription + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Use the dropdown menu to select the [region](/topics-and-events/concepts/#region) of the topic you want to create a subscription for. + +3. Click the name of the topic you want to create a subscription for. + +4. Click **Create Subscription**. The subscription creation wizard displays. + + +5. Verify the parameters of the topic that you are creating a subscription for (name and type). + +6. Choose a protocol, based on the type of endpoint or client you want to subscribe. Click the tab below for further details and full instructions on each protocol: + + + +
+ Select **HTTP** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via standard HTTP protocol. + + Note that for security reasons, we recommend using the HTTPS protocol, rather than HTTP. + + You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. + + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). + +
+ +
+ Select **HTTPS** to create a subscription for a service or web server that can receive `HTTP POST` requests from Topics and Events, via secure HTTP protocol. + + You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. + + After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +
+ +
+ Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. + + You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/topics-and-events/concepts/#region) as the topic can be selected. + + You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. +
+ +
+ + Choose **Queues** to create a subscription for a Scaleway queue that you have created. + + You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/topics-and-events/concepts/#region) as the topic can be selected. +
+
+ +7. Click **Create subscription** to finish. + + The subscription is created. If you created an HTTP or HTTPS subscription, you will now need to [confirm it](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). + +## How to publish messages + +All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/topics-and-events/reference-content/sns-overview#further-actions)for more information. + +## How to delete a topic + +When you no longer want a topic, you can delete it. This action is irreversible and deletes the topic along with all its associated subscriptions. + +1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/topics-and-events/concepts/#region) containing the topic you want to delete. + +3. Either: + - Click the topic you wish to delete, and navigate to its **Settings** page. Click the **Delete topic** button in the bottom right corner, or + - Click the icon next to the topic you wish to delete, then select **Delete** from the menu that displays. + + A pop-up asks you to confirm that you understand this action will delete the topic and all of its associated subscriptions. + +4. Type **DELETE** and click **Delete topic**. diff --git a/pages/topics-and-events/reference-content/index.mdx b/pages/topics-and-events/reference-content/index.mdx new file mode 100644 index 0000000000..fcfcdbe04d --- /dev/null +++ b/pages/topics-and-events/reference-content/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: Topics and Events - Additional content + description: Topics and Events additional content +content: + h1: Topics and Events - Additional content + paragraph: Topics and Events additional content +--- diff --git a/pages/topics-and-events/reference-content/limitations.mdx b/pages/topics-and-events/reference-content/limitations.mdx new file mode 100644 index 0000000000..c5f693efc0 --- /dev/null +++ b/pages/topics-and-events/reference-content/limitations.mdx @@ -0,0 +1,22 @@ +--- +meta: + title: Topics and Events Limitations + description: Learn about the current limitations of Scaleway Topics and Events +content: + h1: Limitations + paragraph: Learn about the current limitations of Scaleway Topics and Events +tags: messaging limitations +dates: + validation: 2025-04-10 + posted: 2023-01-04 +categories: + - serverless +--- + +## Usage limits + +For the usage limits that apply when using Scaleway Topics and Events, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of topics, and consumers/subscribers, as well as to message retention duration and storage. + +## VPC + +Topics and Events are not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/topics-and-events/reference-content/topics-and-events-overview.mdx b/pages/topics-and-events/reference-content/topics-and-events-overview.mdx new file mode 100644 index 0000000000..8a5bf65026 --- /dev/null +++ b/pages/topics-and-events/reference-content/topics-and-events-overview.mdx @@ -0,0 +1,62 @@ +--- +meta: + title: Topics and Events Overview + description: Learn about the Scaleway Topics and Events messaging system +content: + h1: Topics and Events Overview + paragraph: Learn about the Scaleway Topics and Events messaging system +tags: messaging sns aws queuing publish-subscribe message-queue topic notification simple notification service +categories: + - serverless +dates: + validation: 2025-04-10 + posted: 2023-01-04 +--- + +## What is Scaleway Topics and Events? + +Scaleway Topics and Events is a managed messaging service that facilitates the sending of notifications or messages to a large number of subscribers, including email addresses, webhooks, and more. Topics and Events leverages the SNS protocol. + +## What is SNS? + +SNS is a managed messaging service developed by AWS and leveraged by Scaleway Topics and Events. + +SNS (Simple Notification Service) was released in 2010. It enables users to interconnect their applications and systems using a [publish/subscribe](/topics-and-events/concepts#publishsubscribe) pattern. Many publishers can send messages to [topics](/topics-and-events/concepts#topic), while consumers, e.g. applications, can subscribe to topics to receive all (or a subset) of messages sent to this topic. Scaleway Topics and Events makes it easy to migrate your SNS-connected applications by providing a dedicated protocol gateway. + + + Some SNS features are not yet available with Scaleway Topics and Events. Supported subscribers are currently limited to: + - HTTP/S clients + - [Serverless Functions](https://www.scaleway.com/en/serverless-functions/) + - Scaleway queues in the same [Project](/organizations-and-projects/concepts/#project) + + Refer to the [developers documentation](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sns-api/) for more information. + + +## Topics and Events credentials + +You must [create credentials](/topics-and-events/how-to/create-credentials/) that give your applications permission to connect to the Scaleway Topics and Events service. + +Credentials are scoped to your Topics and Events service at [Project](/organizations-and-projects/concepts/#project)-level. You can choose to give each set of credentials the required level of permissions: + + - **Read**: receive messages from queues and topics. + - **Write**: send messages to queues and publish in topics. + - **Manage**: create or edit resources (such as queues and topics). + +## Topics and subscriptions + +You can [create topics](/topics-and-events/how-to/create-manage-topics/) and [subscriptions](/topics-and-events/how-to/create-manage-subscriptions/) via the Scaleway console. + +## Further actions + +All further actions such as sending messages etc. can be done using the AWS CLI or AWS SDKs. Check out our documentation to help you get started with the [AWS CLI](/topics-and-events/api-cli/connect-aws-cli/) or [AWS SDKs](/topics-and-events/api-cli/python-node-topics-events/). + +## Topics and Events Resources + +The following resources may be helpful: + + - [Official SNS Documentation](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) + - Further information on supported API features: + - [SNS](/topics-and-events/reference-content/sns-support/) + - [Creating a simulated CPU monitor notification system with Scaleway Topics and Events](/tutorials/sns-instances-notification-system/) + - [Official AWS CLI Documentation](https://aws.amazon.com/cli/) + - [Official AWS SDK Documentation](https://aws.amazon.com/developer/tools/) \ No newline at end of file diff --git a/pages/topics-and-events/reference-content/topics-and-events-support.mdx b/pages/topics-and-events/reference-content/topics-and-events-support.mdx new file mode 100644 index 0000000000..5847a314a9 --- /dev/null +++ b/pages/topics-and-events/reference-content/topics-and-events-support.mdx @@ -0,0 +1,279 @@ +--- +meta: + title: Topics and Events - Supported Actions + description: Discover which SNS AWS API actions are supported by Scaleway Topics and Events +content: + h1: Topics and Events - Supported Actions + paragraph: Discover which SNS AWS API actions are supported by Scaleway Topics and Events +tags: messaging queuing supported supports sns aws api actions +categories: + - serverless +dates: + validation: 2025-04-10 + posted: 2023-01-04 +--- + +This page lists all actions described in the AWS SNS documentation, and states whether they are supported by Scaleway Topics and Events. + +- **Y** means the parameter is fully supported +- **N** means the parameter is not supported +- **P** means the parameter is partially supported (see associated comments for more details) + +## CreateTopic + +CreateTopic requires the `CanManage` permission. + +### CreateTopic Request + +| Parameters | Support | Comments | +|:----------------------|:---------:|:--------------------------------------------------------------------------------------------------| +| Attributes (map) | **P** | See supported attributes in the [SNS Topic Attributes](#sns-api-support-topic-attributes) section | +| Name | **Y** | | +| Tags.member.N (array) | **N** | | + +### CreateTopic Response + +| Elements | Support | Comments | +|:-----------|:---------:|:-----------| +| TopicArn | **Y** | | + +## DeleteTopic + +DeleteTopic requires the `CanManage` permission. + +### DeleteTopic Request + +| Parameters | Support | Comments | +|:-------------|:---------:|:-----------| +| TopicArn | **Y** | | + +## ListTopics + +ListTopics requires the `CanPublish`, `CanReceive` or `CanManage` permission. + +### ListTopics Request + +| Parameters | Support | Comments | +|:-------------|:---------:|:-----------| +| NextToken | **N** | | + +### ListTopics Response + +| Elements | Support | Comments | +|:------------------------|:---------:|:-----------| +| NextToken | **N** | | +| Topics.member.N (array) | **Y** | | + +## ListSubscriptions + +ListSubscriptions requires the `CanReceive` or `CanManage` permission. + +### ListSubscriptions Request + +| Parameters | Support | Comments | +|:-------------|:---------:|:-----------| +| NextToken | **N** | | + +### ListSubscriptions Response + +| Elements | Support | Comments | +|:-------------------------------|:---------:|:-----------| +| NextToken | **N** | | +| Subscriptions.member.N (array) | **Y** | | + +## ListSubscriptionsByTopic + +ListSubscriptionsByTopic requires the `CanReceive` or `CanManage` permission. + +### ListSubscriptionsByTopic Request + +| Parameters | Support | Comments | +|:-------------|:---------:|:-----------| +| NextToken | **N** | | +| TopicArn | **Y** | | + +### ListSubscriptionsByTopic Response + +| Elements | Support | Comments | +|:-------------------------------|:---------:|:-----------| +| NextToken | **N** | | +| Subscriptions.member.N (array) | **Y** | | + +## Publish + +Publish requires the `CanPublish` permission. + +### Publish Request + +| Parameters | Support | Comments | +|:-----------------------|:---------:|:-----------| +| Message | **Y** | | +| MessageAttributes | **Y** | | +| MessageDeduplicationId | **Y** | | +| MessageGroupId | **N** | | +| MessageStructure | **N** | | +| PhoneNumber | **N** | | +| Subject | **Y** | | +| TargetArn | **N** | | +| TopicArn | **Y** | | + +### Publish Response + +| Elements | Support | Comments | +|:---------------|:---------:|:-----------| +| MessageId | **Y** | | +| SequenceNumber | **N** | | + +## PublishBatch + +PublishBatch requires the `CanPublish` permission. + +### PublishBatch Request + +| Parameters | Support | Comments | +|:--------------------------------------------|:---------:|:-------------------------------------------------------------------------------------------------| +| PublishBatchRequestEntries.member.N (array) | **P** | As with the Publish action, the MessageGroupId and MessageStructure parameters are not supported | +| TopicArn | **Y** | | + +### PublishBatch Response + +| Elements | Support | Comments | +|:----------------------------|:---------:|:-----------| +| Failed.member.N (array) | **Y** | | +| Successful.member.N (array) | **Y** | | + +## Subscribe + +Subscribe requires the `CanReceive` permission. + +### Subscribe Request + +| Parameters | Support | Comments | +|:----------------------|:---------:|:----------------------------------------------------------------------------------------------------------------| +| Attributes (map) | **P** | See supported attributes in the [SNS Subscription Attributes](#sns-api-support-subscription-attributes) section | +| Endpoint | **Y** | Note that for lambda, the endpoint must be the Scaleway Serverless Function public URL | +| Protocol | **P** | Only http, sqs and lambda protocols are supported | +| ReturnSubscriptionArn | **Y** | | +| TopicArn | **Y** | | + +### Subscribe Response + +| Elements | Support | Comments | +|:----------------|:---------:|:-----------| +| SubscriptionArn | **Y** | | + +## Unsubscribe + +Unsubscribe requires the `CanReceive` or `CanManage` permission. + +### Unsubscribe Request + +| Parameters | Support | Comments | +|:----------------|:---------:|:-----------| +| SubscriptionArn | **Y** | | + +## GetTopicAttributes + +GetTopicAttributes requires the `CanReceive` or `CanManage` permission. + +### GetTopicAttributes Request + +| Parameters | Support | Comments | +|:-------------|:---------:|:-----------| +| TopicArn | **Y** | | + +### GetTopicAttributes Response + +| Elements | Support | Comments | +|:-----------------|:---------:|:--------------------------------------------------------------------------------------------------| +| Attributes (map) | **P** | See supported attributes in the [SNS Topic Attributes](#sns-api-support-topic-attributes) section | + +## SetTopicAttributes + +SetTopicAttributes requires the `CanManage` permission. + +### SetTopicAttributes Request + +| Parameters | Support | Comments | +|:---------------|:---------:|:--------------------------------------------------------------------------------------------------| +| AttributeName | **P** | See supported attributes in the [SNS Topic Attributes](#sns-api-support-topic-attributes) section | +| AttributeValue | **Y** | | +| TopicArn | **Y** | | + +## ConfirmSubscription + +ConfirmSubscription requires the `None` permission. + +### ConfirmSubscription Request + +| Parameters | Support | Comments | +|:--------------------------|:---------:|:-----------| +| AuthenticateOnUnsubscribe | **N** | | +| Token | **Y** | | +| TopicArn | **Y** | | + +### ConfirmSubscription Response + +| Elements | Support | Comments | +|:----------------|:---------:|:-----------| +| SubscriptionArn | **Y** | | + +## GetSubscriptionAttributes + +GetSubscriptionAttributes requires the `CanReceive` or `CanManage` permission. + +### GetSubscriptionAttributes Request + +| Parameters | Support | Comments | +|:----------------|:---------:|:-----------| +| SubscriptionArn | **Y** | | + +### GetSubscriptionAttributes Response + +| Elements | Support | Comments | +|:-----------------|:---------:|:----------------------------------------------------------------------------------------------------------------| +| Attributes (map) | **P** | See supported attributes in the [SNS Subscription Attributes](#sns-api-support-subscription-attributes) section | + +## SetSubscriptionAttributes + +SetSubscriptionAttributes requires the `CanReceive` or `CanManage` permission. + +### SetSubscriptionAttributes Request + +| Parameters | Support | Comments | +|:----------------|:---------:|:----------------------------------------------------------------------------------------------------------------| +| AttributeName | **P** | See supported attributes in the [SNS Subscription Attributes](#sns-api-support-subscription-attributes) section | +| AttributeValue | **Y** | | +| SubscriptionArn | **Y** | | + +### SNS API support - Topic attributes + +The Scaleway Topics and Events API (currently named the SNS API) supports the following topic attributes: + +| Attribute Name | Support | Comments | +|:--------------------------|:---------:|:------------------------------------------------------| +| ContentBasedDeduplication | **Y** | | +| DeliveryPolicy | **N** | | +| DisplayName | **N** | | +| EffectiveDeliveryPolicy | **N** | | +| FifoTopic | **Y** | | +| KmsMasterKeyId | **N** | | +| Owner | **Y** | | +| Policy | **N** | | +| SignatureVersion | **N** | Version 1 is always used, version 2 is not supported. | +| SubscriptionsConfirmed | **Y** | | +| SubscriptionsDeleted | **Y** | | +| SubscriptionsPending | **Y** | | +| TopicArn | **Y** | | + +### SNS API support - Subscription attributes + +The Scaleway Topics and Events API (currently named the SNS API) supports the following subscription attributes: + +| Attribute Name | Support | Comments | +|:--------------------|:---------:|:-----------| +| DeliveryPolicy | **N** | | +| FilterPolicy | **N** | | +| RawMessageDelivery | **N** | | +| RedrivePolicy | **N** | | +| SubscriptionRoleArn | **N** | | \ No newline at end of file From 6ed67d3c4e38eebb994c935aeed43e022f1c214b Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 14 Apr 2025 11:59:54 +0200 Subject: [PATCH 06/15] fix(links): update links --- pages/faq/index.mdx | 14 ++++++++++++-- .../additional-content/organization-quotas.mdx | 8 ++++---- .../reference-content/cli-reference.mdx | 2 +- pages/serverless-containers/concepts.mdx | 4 ++-- pages/serverless-containers/faq.mdx | 2 +- .../how-to/add-trigger-to-a-container.mdx | 10 +++++----- pages/serverless-functions/concepts.mdx | 4 ++-- pages/serverless-functions/faq.mdx | 2 +- .../how-to/add-trigger-to-a-function.mdx | 10 +++++----- .../reference-content/configure-trigger-inputs.mdx | 2 +- pages/serverless-jobs/faq.mdx | 2 +- .../api-cli/use-webhooks-with-sns-topics.mdx | 8 ++++---- .../transactional-email/how-to/create-webhooks.mdx | 4 ++-- tutorials/create-serverless-scraping/index.mdx | 2 +- .../index.mdx | 4 ++-- tutorials/large-messages/index.mdx | 2 +- tutorials/nats-rdb-offload/index.mdx | 8 ++++---- .../sns-instances-notification-system/index.mdx | 2 +- .../index.mdx | 2 +- 19 files changed, 51 insertions(+), 41 deletions(-) diff --git a/pages/faq/index.mdx b/pages/faq/index.mdx index eff2398f3c..955d4d5399 100644 --- a/pages/faq/index.mdx +++ b/pages/faq/index.mdx @@ -180,9 +180,19 @@ content: /> + + You can create triggers on private containers, but to update the privacy of a container from **public** to **private**, you must recreate the existing **Scaleway Queues** and **Scaleway NATS** triggers after the privacy change. We are actively working to make this operation as seamless as possible. @@ -44,7 +44,7 @@ You must have at least the `MessagingAndQueuingReadOnly` permission in the Proje Refer to the [permissions sets documentation](/iam/reference-content/permission-sets/) for more information. -[Queue triggers](/serverless-containers/concepts/#queue-trigger) allow you to automatically invoke a container using events stored in a [Scaleway queue](/messaging/concepts/#queues). +[Queue triggers](/serverless-containers/concepts/#queue-trigger) allow you to automatically invoke a container using events stored in a [Scaleway queue](/queues/concepts/#scaleway-queues). Only queues created with the Scaleway Queues product are compatible with Serverless Containers. @@ -72,9 +72,9 @@ You must have at least the `MessagingAndQueuingReadOnly` permission in the Proje Refer to the [permissions sets documentation](/iam/reference-content/permission-sets/) for more information. -[NATS triggers](/serverless-containers/concepts/#nats-trigger) allow you to automatically invoke a container using messages sent in a [NATS](/messaging/concepts/#nats) subject. +[NATS triggers](/serverless-containers/concepts/#nats-trigger) allow you to automatically invoke a container using messages sent in a [NATS](/nats/concepts/#nats) subject. -[Scaleway NATS subjects](/messaging/quickstart/#quickstart-for-nats) are compatible with Serverless Containers. +[Scaleway NATS subjects](/nats/quickstart/) are compatible with Serverless Containers. 1. Click **Containers** in the **Serverless** section of the side menu. The containers page displays. 2. Click the relevant containers namespace. diff --git a/pages/serverless-functions/concepts.mdx b/pages/serverless-functions/concepts.mdx index 445438926a..f9c4b7477d 100644 --- a/pages/serverless-functions/concepts.mdx +++ b/pages/serverless-functions/concepts.mdx @@ -107,7 +107,7 @@ Functions in the same namespace can share environment variables and access token ## NATS trigger -A NATS trigger is a mechanism that connects a function to a [NATS](/messaging/concepts/#nats) subject and invokes the function automatically whenever a message is published to the subject. +A NATS trigger is a mechanism that connects a function to a [NATS](/nats/concepts/#nats) subject and invokes the function automatically whenever a message is published to the subject. For each message that is sent to a NATS subject, the NATS trigger reads the message and invokes the associated function with the message as the input parameter. The function can then process the message and perform any required actions, such as updating a database or sending a notification. @@ -122,7 +122,7 @@ Refer to the [dedicated FAQ](/serverless-functions/faq/#how-can-i-configure-acce ## Queue trigger -A queue trigger is a mechanism that connects a function to a queue created with [Scaleway Queues](/messaging/concepts/#queues), and invokes the function automatically whenever a message is added to the queue. +A queue trigger is a mechanism that connects a function to a queue created with [Scaleway Queues](/queues/concepts/#scaleway-queues), and invokes the function automatically whenever a message is added to the queue. For each message that is sent to a queue, the trigger reads the message and invokes the associated function with the message as the input parameter. The function can then process the message and perform any required actions, such as updating a database or sending a notification. diff --git a/pages/serverless-functions/faq.mdx b/pages/serverless-functions/faq.mdx index 614596c689..0f3f681d62 100644 --- a/pages/serverless-functions/faq.mdx +++ b/pages/serverless-functions/faq.mdx @@ -188,7 +188,7 @@ There are [several ways to deploy Serverless Functions](/serverless-functions/re ### How do I integrate my serverless solutions with other Scaleway services? -Integration is straightforward. Serverless Functions and Containers can be triggered by events from [Queues](/messaging/concepts/#queues) and [Topics and Events](/messaging/concepts/#topics-and-events), and can easily communicate with services like [Managed Databases](/managed-databases-for-postgresql-and-mysql/) or [Serverless databases](/serverless-sql-databases/). [Serverless Jobs](/serverless-jobs/) can pull data from [Object Storage](/object-storage/), or output processed results into a database. With managed connectors, APIs, and built-in integrations, linking to the broader Scaleway ecosystem is seamless. +Integration is straightforward. Serverless Functions and Containers can be triggered by events from [Queues](/queues/concepts/#queues) and [Topics and Events](/topics-and-events/concepts/#topics-and-events), and can easily communicate with services like [Managed Databases](/managed-databases-for-postgresql-and-mysql/) or [Serverless databases](/serverless-sql-databases/). [Serverless Jobs](/serverless-jobs/) can pull data from [Object Storage](/object-storage/), or output processed results into a database. With managed connectors, APIs, and built-in integrations, linking to the broader Scaleway ecosystem is seamless. ### How do Serverless Functions namespaces and Container Registry namespaces interact? diff --git a/pages/serverless-functions/how-to/add-trigger-to-a-function.mdx b/pages/serverless-functions/how-to/add-trigger-to-a-function.mdx index 5dc53a82af..8cbc1fb164 100644 --- a/pages/serverless-functions/how-to/add-trigger-to-a-function.mdx +++ b/pages/serverless-functions/how-to/add-trigger-to-a-function.mdx @@ -26,8 +26,8 @@ A trigger can be an HTTP request, a message from a queue or stream, a CRON sched - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - Created a [functions namespace](/serverless-functions/how-to/create-manage-delete-functions-namespace/) - Created a [function](/serverless-functions/how-to/create-a-function/) -- [Created credentials](/messaging/how-to/create-credentials/) for Scaleway Queues -- [Created a queue](/messaging/how-to/create-manage-queues/) +- [Created credentials](/queues/how-to/create-credentials/) for Scaleway Queues +- [Created a queue](/queues/how-to/create-manage-queues/) You can create triggers on private functions, but to update the privacy of a function from **public** to **private**, you must recreate the existing **Queues** and **NATS** triggers after the privacy change. We are actively working to make this operation as seamless as possible. @@ -45,7 +45,7 @@ You must have at least the `MessagingAndQueuingReadOnly` permission in the Proje Refer to the [permissions sets documentation](/iam/reference-content/permission-sets/) for more information. -[Queue triggers](/serverless-functions/concepts/#queue-trigger) allow you to automatically invoke a function using events stored in a [queue](/messaging/concepts/#queue). +[Queue triggers](/serverless-functions/concepts/#queue-trigger) allow you to automatically invoke a function using events stored in a [queue](/queues/concepts/#queue). Only queues created with the Scaleway Queues product are compatible with Serverless Functions. @@ -72,9 +72,9 @@ Refer to the [permissions sets documentation](/iam/reference-content/permission- -[NATS triggers](/serverless-functions/concepts/#nats-trigger) allow you to automatically invoke a function using messages sent in a [NATS](/messaging/concepts/#nats) subject. +[NATS triggers](/serverless-functions/concepts/#nats-trigger) allow you to automatically invoke a function using messages sent in a [NATS](/nats/concepts/#nats) subject. -Scaleway [NATS subjects](/messaging/quickstart/#quickstart-for-nats) are compatible with Serverless Functions. +Scaleway [NATS subjects](/nats/quickstart/) are compatible with Serverless Functions. 1. Click **Functions** in the **Serverless** section of the side menu. The functions page displays. 2. Click the relevant functions namespace. diff --git a/pages/serverless-functions/reference-content/configure-trigger-inputs.mdx b/pages/serverless-functions/reference-content/configure-trigger-inputs.mdx index 5739222e4c..ebc77a6ae9 100644 --- a/pages/serverless-functions/reference-content/configure-trigger-inputs.mdx +++ b/pages/serverless-functions/reference-content/configure-trigger-inputs.mdx @@ -18,7 +18,7 @@ categories: This feature only allows a maximum of 10 in-flight requests. Functions that are configured with more than 10 replicas will not be used at full capacity. This limitation will be removed in the future. -Triggers get events from an input, such as a [Scaleway queue](/messaging/concepts/#queues), and forward them to a function, which will scale up according to its settings to accommodate the workload. This process uses back pressure, so that no new events are read if the function instances have not yet finished processing the previous ones. +Triggers get events from an input, such as a [Scaleway queue](/queues/concepts/#queue), and forward them to a function, which will scale up according to its settings to accommodate the workload. This process uses back pressure, so that no new events are read if the function instances have not yet finished processing the previous ones. Triggers only keep a buffer of the messages that are in-flight, they do not drain all the messages of the input in advance. diff --git a/pages/serverless-jobs/faq.mdx b/pages/serverless-jobs/faq.mdx index ef803d7f46..cfbc15021c 100644 --- a/pages/serverless-jobs/faq.mdx +++ b/pages/serverless-jobs/faq.mdx @@ -94,7 +94,7 @@ Serverless Jobs are billed on a pay-as-you-go basis, strictly on resource consum ### How do I integrate my serverless solutions with other Scaleway services? -Integration is straightforward. Serverless Functions and Containers can be triggered by events from [Queues](/messaging/concepts/#queues) and [Topics and Events](/messaging/concepts/#topics-and-events), and can easily communicate with services like [Managed Databases](/managed-databases-for-postgresql-and-mysql/) or [Serverless databases](/serverless-sql-databases/). [Serverless Jobs](/serverless-jobs/) can pull data from [Object Storage](/object-storage/), or output processed results into a database. With managed connectors, APIs, and built-in integrations, linking to the broader Scaleway ecosystem is seamless. +Integration is straightforward. Serverless Functions and Containers can be triggered by events from [Queues](/queues/) and [Topics and Events](/topics-and-events/), and can easily communicate with services like [Managed Databases](/managed-databases-for-postgresql-and-mysql/) or [Serverless databases](/serverless-sql-databases/). [Serverless Jobs](/serverless-jobs/) can pull data from [Object Storage](/object-storage/), or output processed results into a database. With managed connectors, APIs, and built-in integrations, linking to the broader Scaleway ecosystem is seamless. ### Can I update Serverless Jobs resources (vCPU and RAM) at any time? diff --git a/pages/transactional-email/api-cli/use-webhooks-with-sns-topics.mdx b/pages/transactional-email/api-cli/use-webhooks-with-sns-topics.mdx index 20527bf145..f64af9a4e3 100644 --- a/pages/transactional-email/api-cli/use-webhooks-with-sns-topics.mdx +++ b/pages/transactional-email/api-cli/use-webhooks-with-sns-topics.mdx @@ -15,7 +15,7 @@ categories: A webhook is an automated message sent in real-time from one system to another when a specific event happens, the message is typically conveyed using HTTP requests that are sent to an endpoint of your choice. -You can set up webhooks for Scaleway Transactional Email and subscribe them to [Topics and Events topics](/messaging/how-to/create-manage-topics/) to have real-time event alerts sent to your endpoints. +You can set up webhooks for Scaleway Transactional Email and subscribe them to [Topics and Events topics](/topics-and-events/how-to/create-manage-topics/) to have real-time event alerts sent to your endpoints. @@ -25,11 +25,11 @@ You can set up webhooks for Scaleway Transactional Email and subscribe them to [ - Added [SPF, DKIM](/transactional-email/how-to/add-spf-dkim-records-to-your-domain/), [MX](/transactional-email/how-to/add-mx-record-to-your-domain/) and [DMARC](/transactional-email/how-to/add-dmarc-record/) records to your domain(s) - Have the necessary quotas to use Transactional Email Webhooks during beta. You can request quotas from the [Scaleway betas page](https://www.scaleway.com/fr/betas/#email-webhooks). -1. [Create a Topics and Events topic](/messaging/how-to/create-manage-topics/#how-to-create-a-topic) with Scaleway Topics and Events. +1. [Create a Topics and Events topic](/topics-and-events/how-to/create-manage-topics/#how-to-create-a-topic) with Scaleway Topics and Events. 2. Copy the ARN identifier of the topic in the **Topics** tab as you will need it later. -3. [Create a subscription](/messaging/how-to/create-manage-subscriptions/#how-to-create-a-subscription). Make sure you enter the endpoint to which you would like to send your Webhooks. +3. [Create a subscription](/topics-and-events/how-to/create-manage-subscriptions/#how-to-create-a-subscription). Make sure you enter the endpoint to which you would like to send your Webhooks. If you do not yet have a webhook URL, you can use the tool [webhook.site](https://webhook.site/) to generate one and receive your events on the interface.

@@ -37,7 +37,7 @@ You can set up webhooks for Scaleway Transactional Email and subscribe them to [
-4. [Confirm your subscription](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). +4. [Confirm your subscription](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). If you are using [webhook.site](https://webhook.site/), you can refer to their interface to check the incoming requests and confirm the subscription. diff --git a/pages/transactional-email/how-to/create-webhooks.mdx b/pages/transactional-email/how-to/create-webhooks.mdx index 4b358dcb22..091bb8ce35 100644 --- a/pages/transactional-email/how-to/create-webhooks.mdx +++ b/pages/transactional-email/how-to/create-webhooks.mdx @@ -17,7 +17,7 @@ A webhook is an automated message sent in real-time from one system to another w They can be used to track and respond to email-related events such as deliveries, bounces and spam. You can also trigger automated processes or alerts based on specific email events and sync your email events with CRM systems, analytics platforms, or other services. -You can set up webhooks for Scaleway Transactional Email and subscribe them to [Scaleway Topics and Events](/messaging/how-to/create-manage-topics/) to have real-time event alerts sent to your endpoints in the Scaleway console. +You can set up webhooks for Scaleway Transactional Email and subscribe them to [Scaleway Topics and Events](/topics-and-events/how-to/create-manage-topics/) to have real-time event alerts sent to your endpoints in the Scaleway console. Currently, webhooks are integrated exclusively with the Scaleway Topics and Events. Billing for webhooks is based on the Scaleway [Topics and Events billing](https://www.scaleway.com/en/pricing/managed-databases/#messaging-and-queuing). @@ -48,7 +48,7 @@ You can create only one webhook per domain. - Select an existing topic. Existing topics are displayed based on the region you select. - If you do not have a topic, you can [create one](/messaging/how-to/create-manage-topics/) with Scaleway Topics and Events from the console. + If you do not have a topic, you can [create one](/topics-and-events/how-to/create-manage-topics/) with Scaleway Topics and Events from the console. - Choose the email events that will trigger the webhook and send information to your selected topic. diff --git a/tutorials/create-serverless-scraping/index.mdx b/tutorials/create-serverless-scraping/index.mdx index 48c76efa74..8225e0108d 100644 --- a/tutorials/create-serverless-scraping/index.mdx +++ b/tutorials/create-serverless-scraping/index.mdx @@ -140,7 +140,7 @@ For the purposes of this tutorial, we show how to provision all resources via Te If you do not want to use Terraform/OpenTofu, you can also create the required resources via the [console](https://console.scaleway.com/), the [Scaleway API](https://www.scaleway.com/en/developers/api/), or any other [developer tool](https://www.scaleway.com/en/developers/). Remember that if you do so, you will need to set up environment variables for functions as previously specified. The following documentation may help create the required resources: -- **Scaleway Queues resources**: [console documentation](/messaging/quickstart/) | [API documentation](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sqs-api/) +- **Scaleway Queues resources**: [console documentation](/queues/quickstart/) | [API documentation](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sqs-api/) - **Managed Database for PostgreSQL**: [console documentation](/managed-databases-for-postgresql-and-mysql/quickstart/) | [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/) - **Serverless Functions**: [console documentation](/serverless-functions/quickstart/) | [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/) - **Serverless Functions triggers**: [console documentation](/serverless-functions/how-to/add-trigger-to-a-function/) | [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-triggers-list-all-triggers) diff --git a/tutorials/deploy-laravel-on-serverless-containers/index.mdx b/tutorials/deploy-laravel-on-serverless-containers/index.mdx index 5c65f2ce8a..23d21c8c70 100644 --- a/tutorials/deploy-laravel-on-serverless-containers/index.mdx +++ b/tutorials/deploy-laravel-on-serverless-containers/index.mdx @@ -25,7 +25,7 @@ This tutorial provides a step-by-step guide for deploying a containerized Larave ## Why Scaleway is suitable for deploying containerized applications -Scaleway provides a seamless environment for running and managing containers, offering features such as [Container Registry](https://www.scaleway.com/en/container-registry/), [Serverless Containers](https://www.scaleway.com/en/serverless-containers/), [Queues](/messaging/) and [Observability](https://www.scaleway.com/en/cockpit/). By combining the benefits of containerization with Scaleway's platform, developers should be able to easily deploy, scale, and manage their applications efficiently. +Scaleway provides a seamless environment for running and managing containers, offering features such as [Container Registry](https://www.scaleway.com/en/container-registry/), [Serverless Containers](https://www.scaleway.com/en/serverless-containers/), [Queues](/queues/) and [Observability](https://www.scaleway.com/en/cockpit/). By combining the benefits of containerization with Scaleway's platform, developers should be able to easily deploy, scale, and manage their applications efficiently. [Serverless Containers](https://www.scaleway.com/en/serverless-containers/) offers significant advantages when deploying Laravel applications over [Serverless Functions](https://www.scaleway.com/en/serverless-functions/), as it provides the flexibility to customize the runtime environment according to your specific needs. @@ -33,7 +33,7 @@ Scaleway provides a seamless environment for running and managing containers, of ## Creating a queue -Laravel applications make use of [queues](https://laravel.com/docs/10.x/queues) to process long-running jobs in the background. As this feature of the Laravel framework is nearly always used, we will configure it and leverage the [Scaleway Queues](/messaging/) product from Scaleway. The [Scaleway documentation](/messaging/quickstart/) provides clear information on how this managed service works and can be configured. +Laravel applications make use of [queues](https://laravel.com/docs/10.x/queues) to process long-running jobs in the background. As this feature of the Laravel framework is nearly always used, we will configure it and leverage the [Scaleway Queues](/queues/) product from Scaleway. The [Scaleway documentation](/queues/quickstart/) provides clear information on how this managed service works and can be configured. 1. Create a queue. In this example, we create a `Standard` queue (At-least-once delivery, the order of messages is not preserved) with the default parameters. This queue will be the default queue used by our application. diff --git a/tutorials/large-messages/index.mdx b/tutorials/large-messages/index.mdx index d86bf8ca86..0b797e45d4 100644 --- a/tutorials/large-messages/index.mdx +++ b/tutorials/large-messages/index.mdx @@ -15,7 +15,7 @@ dates: posted: 2024-01-22 --- -In this tutorial, we will build a simple architecture to store and automatically convert images to PDF. The focus is on transferring large messages using a messaging service, specifically the [Scaleway NATS](/messaging/quickstart/) server. Our setup involves using the [Object Storage](/object-storage/quickstart/) service for image storage and the [Serverless Functions](/serverless-functions/quickstart/) service for conversion. +In this tutorial, we will build a simple architecture to store and automatically convert images to PDF. The focus is on transferring large messages using a messaging service, specifically the [Scaleway NATS](/nats/quickstart/) server. Our setup involves using the [Object Storage](/object-storage/quickstart/) service for image storage and the [Serverless Functions](/serverless-functions/quickstart/) service for conversion. We show how to provision all the required Scaleway resources via Terraform/OpenTofu, but you can also use the [console](https://account.scaleway.com/login), the [API](https://www.scaleway.com/en/developers/api/) or one of our other supported [developer tools](https://www.scaleway.com/en/developers/). diff --git a/tutorials/nats-rdb-offload/index.mdx b/tutorials/nats-rdb-offload/index.mdx index c5759072fe..2e6acc5143 100644 --- a/tutorials/nats-rdb-offload/index.mdx +++ b/tutorials/nats-rdb-offload/index.mdx @@ -35,15 +35,15 @@ To properly follow this tutorial, we recommend you [create a dedicated Project]( - A Scaleway account logged into the [console](https://console.scaleway.com) - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization - [Installed the NATS CLI](https://github.com/nats-io/natscli) on your local machine -- [Created a Scaleway NATS account](/messaging/how-to/get-started/#how-to-create-a-nats-account) -- [Generated NATS credentials](/messaging/how-to/create-credentials/#how-to-create-credentials-for-a-nats-account) +- [Created a Scaleway NATS account](/nats/how-to/create-account/) +- [Generated NATS credentials](/nats/how-to/create-credentials/) - [Created a mySQL Managed Database](/managed-databases-for-postgresql-and-mysql/quickstart/) ## Create a NATS stream -Refer to the [dedicated documentation](/messaging/api-cli/nats-cli/) to create your NATS stream. We recommend keeping your stream specifications as simple as possible. There is no need for replication or specific parameters for this tutorial. +Refer to the [dedicated documentation](/nats/api-cli/nats-cli/) to create your NATS stream. We recommend keeping your stream specifications as simple as possible. There is no need for replication or specific parameters for this tutorial. -When your NATS server is up and running, check you did not forget anything for the Scaleway [context](/messaging/api-cli/nats-cli/#define-a-context) by running the following code in a new window of your terminal: +When your NATS server is up and running, check you did not forget anything for the Scaleway [context](/nats/api-cli/nats-cli/#define-a-context) by running the following code in a new window of your terminal: ```bash nats context info scaleway diff --git a/tutorials/sns-instances-notification-system/index.mdx b/tutorials/sns-instances-notification-system/index.mdx index 39d1331cda..37ace3274e 100644 --- a/tutorials/sns-instances-notification-system/index.mdx +++ b/tutorials/sns-instances-notification-system/index.mdx @@ -222,7 +222,7 @@ We continue to add to our `main.tf` file to create the subscriber and publisher } } ``` - This will allow the subscriber Instance to immediately receive the [confirmation link](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) to subscribe to the topic, and not wait for the retry policy to confirm the subscription. + This will allow the subscriber Instance to immediately receive the [confirmation link](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription) to subscribe to the topic, and not wait for the retry policy to confirm the subscription. The confirmation step is done manually for the purposes of this tutorial, but it could also be performed with an HTTP request. 5. Create the SNS topic subscription with the subscriber Instance's endpoint: diff --git a/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx b/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx index 8d1f8e3009..6d24b97f35 100644 --- a/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx +++ b/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx @@ -25,7 +25,7 @@ In the [previous tutorial](/tutorials/transform-bucket-images-triggers-functions - A Scaleway [Project](/organizations-and-projects/concepts/#project) dedicated to this tutorial - A source [bucket](/object-storage/how-to/create-a-bucket/) containing images - An empty destination bucket -- A [Scaleway queue](/messaging/how-to/create-manage-queues) with credentials +- A [Scaleway queue](/queues/how-to/create-manage-queues) with credentials You will now learn how to deploy Serverless Functions and connect them using triggers. From 0217f484a4a87df10c6330c16b9a02431d3aa539 Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 14 Apr 2025 15:23:12 +0200 Subject: [PATCH 07/15] fix(mnq): changelogs and categories --- ...uing-changed-increased-messaging-nats.mdx} | 4 ++-- ...ing-changed-increased-messaging-queues.mdx | 21 ++++++++++++++++++ ...ing-changed-increased-messaging-topics.mdx | 21 ++++++++++++++++++ ...and-queueing-deprecated-sns-namespace.mdx} | 2 +- ...-and-queueing-deprecated-sqs-namespace.mdx | 13 +++++++++++ ...-queuing-deprecated-api-v1alpha1-nats.mdx} | 2 +- ...queuing-deprecated-api-v1alpha1-queues.mdx | 13 +++++++++++ ...queuing-deprecated-api-v1alpha1-topics.mdx | 13 +++++++++++ ...uing-added-sqs-supports-json-transport.mdx | 2 +- ...nd-queuing-changed-messaging-and-nats.mdx} | 10 ++++----- ...d-queuing-changed-messaging-and-queues.mdx | 15 +++++++++++++ ...d-queuing-changed-messaging-and-topics.mdx | 15 +++++++++++++ ...uing-added-messaging-and-queuing-is-av.mdx | 13 ----------- ...euing-added-messaging-and-queuing-nats.mdx | 14 ++++++++++++ ...ing-added-messaging-and-queuing-queues.mdx | 12 ++++++++++ ...uing-added-messaging-and-queuing-topic.mdx | 13 +++++++++++ ...uing-added-sns-subscriptions-creation-.mdx | 4 ++-- ...uing-added-sns-topic-creation-availabl.mdx | 4 ++-- ...uing-changed-messaging-and-queuing-sns.mdx | 4 ++-- ...ing-added-sqs-queue-creation-available.mdx | 2 +- ...nd-queuing-changed-messaging-and-nats.mdx} | 4 ++-- ...d-queuing-changed-messaging-and-queues.mdx | 21 ++++++++++++++++++ ...d-queuing-changed-messaging-and-topics.mdx | 21 ++++++++++++++++++ ...uing-added-queues-subscription-queues.mdx} | 4 ++-- ...euing-added-queues-subscription-topics.mdx | 15 +++++++++++++ ...uing-added-messaging-and-queuing-nats.mdx} | 4 ++-- ...ing-added-messaging-and-queuing-queues.mdx | 13 +++++++++++ ...ing-added-messaging-and-queuing-topics.mdx | 13 +++++++++++ ...10-changed-messaging-public-beta-nats.mdx} | 2 +- ...0-changed-messaging-public-beta-queues.mdx | 12 ++++++++++ ...0-changed-messaging-public-beta-topics.mdx | 12 ++++++++++ .../2022-09-07-mnq-added-sns-sqs.mdx | 12 ---------- .../2022-09-07-mnq-added-sns.mdx | 12 ++++++++++ .../2022-09-07-mnq-added-sqs.mdx | 12 ++++++++++ menu/changelogs.json | 12 ++++++++-- pages/faq/index.mdx | 22 ++++++++++--------- pages/nats/api-cli/nats-cli.mdx | 3 ++- pages/nats/concepts.mdx | 3 ++- pages/nats/how-to/create-account.mdx | 3 ++- pages/nats/how-to/create-credentials.mdx | 3 ++- pages/nats/how-to/delete-account.mdx | 3 ++- pages/nats/how-to/manage-credentials.mdx | 3 ++- pages/nats/how-to/monitor-nats-cockpit.mdx | 3 ++- pages/nats/quickstart.mdx | 1 + pages/nats/reference-content/limitations.mdx | 1 + .../nats/reference-content/nats-overview.mdx | 1 + pages/queues/api-cli/connect-aws-cli.mdx | 1 + pages/queues/api-cli/python-node-queues.mdx | 3 ++- pages/queues/api-cli/queues-aws-cli.mdx | 3 ++- pages/queues/concepts.mdx | 3 ++- pages/queues/faq.mdx | 1 + pages/queues/how-to/create-credentials.mdx | 3 ++- pages/queues/how-to/create-manage-queues.mdx | 3 ++- pages/queues/how-to/manage-credentials.mdx | 3 ++- .../queues/how-to/monitor-queues-cockpit.mdx | 3 ++- pages/queues/quickstart.mdx | 1 + .../queues/reference-content/limitations.mdx | 1 + .../reference-content/queues-overview.mdx | 1 + .../reference-content/queues-support.mdx | 1 + 59 files changed, 363 insertions(+), 76 deletions(-) rename changelog/april2024/{2024-04-25-messaging-and-queuing-changed-increased-messaging-resou.mdx => 2024-04-25-messaging-and-queuing-changed-increased-messaging-nats.mdx} (75%) create mode 100644 changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-queues.mdx create mode 100644 changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-topics.mdx rename changelog/august2023/{2023-08-31-messaging-and-queueing-deprecated-sqs-and-sns-namespace.mdx => 2023-08-31-messaging-and-queueing-deprecated-sns-namespace.mdx} (91%) create mode 100644 changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sqs-namespace.mdx rename changelog/december2023/{2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-to-be-mig.mdx => 2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-nats.mdx} (95%) create mode 100644 changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-queues.mdx create mode 100644 changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-topics.mdx rename changelog/december2024/{2024-12-05-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx => 2024-12-05-messaging-and-queuing-changed-messaging-and-nats.mdx} (64%) create mode 100644 changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-queues.mdx create mode 100644 changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-topics.mdx delete mode 100644 changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-is-av.mdx create mode 100644 changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-nats.mdx create mode 100644 changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-queues.mdx create mode 100644 changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-topic.mdx rename changelog/october2023/{2023-10-24-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx => 2023-10-24-messaging-and-queuing-changed-messaging-and-nats.mdx} (77%) create mode 100644 changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-queues.mdx create mode 100644 changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-topics.mdx rename changelog/october2024/{2024-10-08-messaging-and-queuing-added-queues-subscription-availab.mdx => 2024-10-08-messaging-and-queuing-added-queues-subscription-queues.mdx} (82%) create mode 100644 changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-topics.mdx rename changelog/september2023/{2023-09-21-messaging-and-queuing-added-messaging-and-queuing-metrics.mdx => 2023-09-21-messaging-and-queuing-added-messaging-and-queuing-nats.mdx} (64%) create mode 100644 changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-queues.mdx create mode 100644 changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-topics.mdx rename changelog/serverless/january2023/{2023-01-10-changed-messaging-public-beta.mdx => 2023-01-10-changed-messaging-public-beta-nats.mdx} (94%) create mode 100644 changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-queues.mdx create mode 100644 changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-topics.mdx delete mode 100644 changelog/serverless/september2022/2022-09-07-mnq-added-sns-sqs.mdx create mode 100644 changelog/serverless/september2022/2022-09-07-mnq-added-sns.mdx create mode 100644 changelog/serverless/september2022/2022-09-07-mnq-added-sqs.mdx diff --git a/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-resou.mdx b/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-nats.mdx similarity index 75% rename from changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-resou.mdx rename to changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-nats.mdx index 4d18377368..8b07ee452c 100644 --- a/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-resou.mdx +++ b/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-nats.mdx @@ -6,7 +6,7 @@ author: url: 'https://slack.scaleway.com' date: 2024-04-25 category: serverless -product: messaging-and-queuing +product: nats --- @@ -17,5 +17,5 @@ Scaleway Messaging and Queuing is evolving. We have increased the limitations on This update empowers you to handle larger workloads and enables more robust communication. -For detailed information on the limitations and capabilities of our Messaging and Queuing protocols, please refer to the [Messaging and Queuing documentation](/messaging/reference-content/limitations/). +For detailed information on the limitations and capabilities of our Messaging and Queuing protocols, please refer to the [documentation](https://www.scaleway.com/en/docs/organizations-and-projects/additional-content/organization-quotas/). diff --git a/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-queues.mdx b/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-queues.mdx new file mode 100644 index 0000000000..5e1e7024a3 --- /dev/null +++ b/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-queues.mdx @@ -0,0 +1,21 @@ +--- +title: Resource quotas have been increased +status: changed +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-04-25 +category: serverless +product: queues +--- + + +Scaleway Messaging and Queuing is evolving. We have increased the limitations on our resource quotas, meaning that each Scaleway Project can now scale up to: +- 50 SQS queues +- 50 SNS topics +- 50 NATS streams + +This update empowers you to handle larger workloads and enables more robust communication. + +For detailed information on the limitations and capabilities of our Messaging and Queuing protocols, please refer to the [documentation](https://www.scaleway.com/en/docs/organizations-and-projects/additional-content/organization-quotas/). + diff --git a/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-topics.mdx b/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-topics.mdx new file mode 100644 index 0000000000..bc18584646 --- /dev/null +++ b/changelog/april2024/2024-04-25-messaging-and-queuing-changed-increased-messaging-topics.mdx @@ -0,0 +1,21 @@ +--- +title: Resource quotas have been increased +status: changed +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-04-25 +category: serverless +product: topics-and-events +--- + + +Scaleway Messaging and Queuing is evolving. We have increased the limitations on our resource quotas, meaning that each Scaleway Project can now scale up to: +- 50 SQS queues +- 50 SNS topics +- 50 NATS streams + +This update empowers you to handle larger workloads and enables more robust communication. + +For detailed information on the limitations and capabilities of our Messaging and Queuing protocols, please refer to the [documentation](https://www.scaleway.com/en/docs/organizations-and-projects/additional-content/organization-quotas/). + diff --git a/changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sqs-and-sns-namespace.mdx b/changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sns-namespace.mdx similarity index 91% rename from changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sqs-and-sns-namespace.mdx rename to changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sns-namespace.mdx index 4ed05e6db9..71e0e170da 100644 --- a/changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sqs-and-sns-namespace.mdx +++ b/changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sns-namespace.mdx @@ -6,7 +6,7 @@ author: url: 'https://slack.scaleway.com' date: 2023-08-31 category: serverless -product: messaging-and-queuing +product: topics-and-events --- To pave the way for the new Messaging and Queuing API, it is no longer possible to create more than one SQS/SNS namespace per Project. diff --git a/changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sqs-namespace.mdx b/changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sqs-namespace.mdx new file mode 100644 index 0000000000..44f721d4e1 --- /dev/null +++ b/changelog/august2023/2023-08-31-messaging-and-queueing-deprecated-sqs-namespace.mdx @@ -0,0 +1,13 @@ +--- +title: SQS and SNS namespace creation +status: deprecated +author: + fullname: 'Join the #messaging-queuing-beta channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2023-08-31 +category: serverless +product: queues +--- + +To pave the way for the new Messaging and Queuing API, it is no longer possible to create more than one SQS/SNS namespace per Project. + diff --git a/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-to-be-mig.mdx b/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-nats.mdx similarity index 95% rename from changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-to-be-mig.mdx rename to changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-nats.mdx index 18f70b84ac..e86ad7eb5a 100644 --- a/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-to-be-mig.mdx +++ b/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-nats.mdx @@ -6,7 +6,7 @@ author: url: 'https://slack.scaleway.com' date: 2023-12-04 category: serverless -product: messaging-and-queuing +product: nats --- Effective December 1st 2023, the Messaging and Queuing v1alpha1 API has been deprecated and its resources and endpoints are no longer available. The v1beta1 APIs, available for Messaging and Queuing [SQS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sqs-api/), [SNS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sns-api/) and [NATS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/), must now be used going forward. diff --git a/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-queues.mdx b/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-queues.mdx new file mode 100644 index 0000000000..cae9c4b4ce --- /dev/null +++ b/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-queues.mdx @@ -0,0 +1,13 @@ +--- +title: API v1alpha1 deprecated in favor of v1beta1 +status: deprecated +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2023-12-04 +category: serverless +product: queues +--- + +Effective December 1st 2023, the Messaging and Queuing v1alpha1 API has been deprecated and its resources and endpoints are no longer available. The v1beta1 APIs, available for Messaging and Queuing [SQS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sqs-api/), [SNS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sns-api/) and [NATS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/), must now be used going forward. + diff --git a/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-topics.mdx b/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-topics.mdx new file mode 100644 index 0000000000..33aba22349 --- /dev/null +++ b/changelog/december2023/2023-12-04-messaging-and-queuing-deprecated-api-v1alpha1-topics.mdx @@ -0,0 +1,13 @@ +--- +title: API v1alpha1 deprecated in favor of v1beta1 +status: deprecated +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2023-12-04 +category: serverless +product: topics-and-events +--- + +Effective December 1st 2023, the Messaging and Queuing v1alpha1 API has been deprecated and its resources and endpoints are no longer available. The v1beta1 APIs, available for Messaging and Queuing [SQS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sqs-api/), [SNS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/sns-api/) and [NATS](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/), must now be used going forward. + diff --git a/changelog/december2023/2023-12-19-messaging-and-queuing-added-sqs-supports-json-transport.mdx b/changelog/december2023/2023-12-19-messaging-and-queuing-added-sqs-supports-json-transport.mdx index 7be6727a04..d9dfc5f621 100644 --- a/changelog/december2023/2023-12-19-messaging-and-queuing-added-sqs-supports-json-transport.mdx +++ b/changelog/december2023/2023-12-19-messaging-and-queuing-added-sqs-supports-json-transport.mdx @@ -6,7 +6,7 @@ author: url: 'https://slack.scaleway.com' date: 2023-12-19 category: serverless -product: messaging-and-queuing +product: queues --- Messaging and Queuing SQS now includes support for JSON transport protocol 1.0, which serves as the default transport for the latest SQS SDK. Feel free to upgrade your SDK to the most recent version. diff --git a/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx b/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-nats.mdx similarity index 64% rename from changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx rename to changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-nats.mdx index 9ff2ba4b64..eb20681990 100644 --- a/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx +++ b/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-nats.mdx @@ -6,12 +6,10 @@ author: url: 'https://slack.scaleway.com' date: 2024-12-05 category: serverless -product: messaging-and-queuing +product: nats --- We have redefined our Messaging and Queuing offering into three distinct products: -- NATS (NATS) -- Queues (formerly SQS) -- Topics & Events (formerly SNS) - -Learn more about each product in our [documentation](/messaging/). +- [NATS](/nats/) (NATS) +- [Queues](/queues/) (formerly SQS) +- [Topics & Events](/topics-and-events/) (formerly SNS) diff --git a/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-queues.mdx b/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-queues.mdx new file mode 100644 index 0000000000..1fbffe8240 --- /dev/null +++ b/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-queues.mdx @@ -0,0 +1,15 @@ +--- +title: Messaging and Queuing split into three products! +status: changed +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-12-05 +category: serverless +product: queues +--- + +We have redefined our Messaging and Queuing offering into three distinct products: +- [NATS](/nats/) (NATS) +- [Queues](/queues/) (formerly SQS) +- [Topics & Events](/topics-and-events/) (formerly SNS) diff --git a/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-topics.mdx b/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-topics.mdx new file mode 100644 index 0000000000..8bc4fa9767 --- /dev/null +++ b/changelog/december2024/2024-12-05-messaging-and-queuing-changed-messaging-and-topics.mdx @@ -0,0 +1,15 @@ +--- +title: Messaging and Queuing split into three products! +status: changed +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-12-05 +category: serverless +product: topics-and-events +--- + +We have redefined our Messaging and Queuing offering into three distinct products: +- [NATS](/nats/) (NATS) +- [Queues](/queues/) (formerly SQS) +- [Topics & Events](/topics-and-events/) (formerly SNS) diff --git a/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-is-av.mdx b/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-is-av.mdx deleted file mode 100644 index cef915cbf3..0000000000 --- a/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-is-av.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Messaging and Queuing is now available in the AMS region! -status: added -author: - fullname: 'Join the #messaging-queuing channel on Slack.' - url: 'https://slack.scaleway.com' -date: 2024-02-22 -category: serverless -product: messaging-and-queuing ---- - -You can now manage your Messaging and Queuing resources in the AMS region. All three protocols (SQS, NATS & SNS) are available in the region. For more information, refer to our [Messaging and Queuing documentation](/messaging/). - diff --git a/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-nats.mdx b/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-nats.mdx new file mode 100644 index 0000000000..b91c3873f0 --- /dev/null +++ b/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-nats.mdx @@ -0,0 +1,14 @@ +--- +title: Messaging and Queuing is now available in the AMS region! +status: added +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-02-22 +category: serverless +product: nats +--- + +You can now manage your Messaging and Queuing resources, including NATS, in the AMS region. For more information, refer to our [documentation](/nats/). + + diff --git a/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-queues.mdx b/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-queues.mdx new file mode 100644 index 0000000000..2f7bdb4855 --- /dev/null +++ b/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-queues.mdx @@ -0,0 +1,12 @@ +--- +title: Messaging and Queuing is now available in the AMS region! +status: added +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-02-22 +category: serverless +product: queues +--- + +You can now manage your Messaging and Queuing resources, including SQS, in the AMS region. For more information, refer to our [documentation](/queues/). diff --git a/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-topic.mdx b/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-topic.mdx new file mode 100644 index 0000000000..133b4721ff --- /dev/null +++ b/changelog/february2024/2024-02-22-messaging-and-queuing-added-messaging-and-queuing-topic.mdx @@ -0,0 +1,13 @@ +--- +title: Messaging and Queuing is now available in the AMS region! +status: added +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-02-22 +category: serverless +product: topics-and-events +--- + +You can now manage your Messaging and Queuing resources, including SNS, in the AMS region. For more information, refer to our [documentation](/topics-and-events/). + diff --git a/changelog/february2024/2024-02-22-messaging-and-queuing-added-sns-subscriptions-creation-.mdx b/changelog/february2024/2024-02-22-messaging-and-queuing-added-sns-subscriptions-creation-.mdx index c002a44912..93fc750bb5 100644 --- a/changelog/february2024/2024-02-22-messaging-and-queuing-added-sns-subscriptions-creation-.mdx +++ b/changelog/february2024/2024-02-22-messaging-and-queuing-added-sns-subscriptions-creation-.mdx @@ -6,9 +6,9 @@ author: url: 'https://slack.scaleway.com' date: 2024-02-22 category: serverless -product: messaging-and-queuing +product: topics-and-events --- You can now manage your SNS subscriptions [directly from the Scaleway console](https://console.scaleway.com/messaging/protocols/). You can subscribe to HTTP/S endpoints and Serverless Compute resources (Functions & Containers). -You can refer to our documentation to find out [how to create and manage SNS subscriptions](/messaging/how-to/create-manage-subscriptions/). +You can refer to our documentation to find out [how to create and manage SNS subscriptions](/topics-and-events/how-to/create-manage-subscriptions/). diff --git a/changelog/january2024/2024-01-05-messaging-and-queuing-added-sns-topic-creation-availabl.mdx b/changelog/january2024/2024-01-05-messaging-and-queuing-added-sns-topic-creation-availabl.mdx index ced4284684..b8a9347b10 100644 --- a/changelog/january2024/2024-01-05-messaging-and-queuing-added-sns-topic-creation-availabl.mdx +++ b/changelog/january2024/2024-01-05-messaging-and-queuing-added-sns-topic-creation-availabl.mdx @@ -6,9 +6,9 @@ author: url: 'https://slack.scaleway.com' date: 2024-01-05 category: serverless -product: messaging-and-queuing +product: topics-and-events --- You can now create and manage your SNS Topics directly in the console. -For more information, you can refer to our [How to create topics documentation](https://www.scaleway.com/en/docs/messaging/how-to/create-manage-topics/). +For more information, you can refer to our [How to create topics documentation](https://www.scaleway.com/en/docs/topics-and-events/how-to/create-manage-topics/). diff --git a/changelog/june2024/2024-06-25-messaging-and-queuing-changed-messaging-and-queuing-sns.mdx b/changelog/june2024/2024-06-25-messaging-and-queuing-changed-messaging-and-queuing-sns.mdx index 3409232b64..71a9ec01bf 100644 --- a/changelog/june2024/2024-06-25-messaging-and-queuing-changed-messaging-and-queuing-sns.mdx +++ b/changelog/june2024/2024-06-25-messaging-and-queuing-changed-messaging-and-queuing-sns.mdx @@ -6,9 +6,9 @@ author: url: 'https://slack.scaleway.com' date: 2024-06-25 category: serverless -product: messaging-and-queuing +product: topics-and-events --- -[Scaleway Messaging and Queuing SNS](https://www.scaleway.com/en/docs/messaging/quickstart/#quickstart-for-topics-and-events) is a fully managed pub/sub solution for sending notifications and messages between cloud products. It is natively integrated with our Serverless ecosystem. +[Scaleway Messaging and Queuing SNS](https://www.scaleway.com/en/docs/topics-and-events/quickstart/) is a fully managed pub/sub solution for sending notifications and messages between cloud products. It is natively integrated with our Serverless ecosystem. It is now in General Availability, ready for your production use cases. diff --git a/changelog/may2023/2023-05-12-messaging-and-queueing-added-sqs-queue-creation-available.mdx b/changelog/may2023/2023-05-12-messaging-and-queueing-added-sqs-queue-creation-available.mdx index 66f8888e5b..4a46731609 100644 --- a/changelog/may2023/2023-05-12-messaging-and-queueing-added-sqs-queue-creation-available.mdx +++ b/changelog/may2023/2023-05-12-messaging-and-queueing-added-sqs-queue-creation-available.mdx @@ -6,7 +6,7 @@ author: url: 'https://slack.scaleway.com' date: 2023-05-12 category: serverless -product: messaging-and-queuing +product: queues --- Creating queues is now directly available from your SQS namespace in the [Scaleway console](https://console.scaleway.com/). diff --git a/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx b/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-nats.mdx similarity index 77% rename from changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx rename to changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-nats.mdx index 84924b37f3..e34dc120ac 100644 --- a/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-queuing-is-.mdx +++ b/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-nats.mdx @@ -6,7 +6,7 @@ author: url: 'https://slack.scaleway.com' date: 2023-10-24 category: serverless -product: messaging-and-queuing +product: nats --- Messaging and Queuing is Scaleway's message broker solution that allows you to send messages and trigger events between your cloud resources. @@ -17,5 +17,5 @@ The Messaging and Queuing features are available via the Scaleway console, the C Your existing resources will need to be migrated, as communicated to all beta users. -Find out about Messaging and Queuing in our [dedicated documentation](/messaging/quickstart/). If you have any questions, reach out to the team on the #messaging-queuing community Slack channel. +If you have any questions, reach out to the team on the #messaging-queuing community Slack channel. diff --git a/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-queues.mdx b/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-queues.mdx new file mode 100644 index 0000000000..5c191434fc --- /dev/null +++ b/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-queues.mdx @@ -0,0 +1,21 @@ +--- +title: Messaging and Queuing is now in General Availability +status: changed +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2023-10-24 +category: serverless +product: queues +--- + +Messaging and Queuing is Scaleway's message broker solution that allows you to send messages and trigger events between your cloud resources. + +The service supports 3 protocols: NATS, SQS and SNS (the latter is still in Public Beta). Messaging and Queuing is serverless-based, so you can run it without worrying about provisioning and you only pay for what you use. + +The Messaging and Queuing features are available via the Scaleway console, the CLI and Terraform. + +Your existing resources will need to be migrated, as communicated to all beta users. + +If you have any questions, reach out to the team on the #messaging-queuing community Slack channel. + diff --git a/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-topics.mdx b/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-topics.mdx new file mode 100644 index 0000000000..7fe0a6781e --- /dev/null +++ b/changelog/october2023/2023-10-24-messaging-and-queuing-changed-messaging-and-topics.mdx @@ -0,0 +1,21 @@ +--- +title: Messaging and Queuing is now in General Availability +status: changed +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2023-10-24 +category: serverless +product: topics-and-events +--- + +Messaging and Queuing is Scaleway's message broker solution that allows you to send messages and trigger events between your cloud resources. + +The service supports 3 protocols: NATS, SQS and SNS (the latter is still in Public Beta). Messaging and Queuing is serverless-based, so you can run it without worrying about provisioning and you only pay for what you use. + +The Messaging and Queuing features are available via the Scaleway console, the CLI and Terraform. + +Your existing resources will need to be migrated, as communicated to all beta users. + +If you have any questions, reach out to the team on the #messaging-queuing community Slack channel. + diff --git a/changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-availab.mdx b/changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-queues.mdx similarity index 82% rename from changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-availab.mdx rename to changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-queues.mdx index 563182ac3c..b3e2f5a74d 100644 --- a/changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-availab.mdx +++ b/changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-queues.mdx @@ -6,10 +6,10 @@ author: url: 'https://slack.scaleway.com' date: 2024-10-08 category: serverless -product: messaging-and-queuing +product: queues --- You can now subscribe directly to queues from your topics, from the [Scaleway console](https://console.scaleway.com), and via the [API](https://www.scaleway.com/en/developers/api/) for standard and FIFO topics. -For more information, refer to the [Subscriptions documentation](https://www.scaleway.com/en/docs/messaging/how-to/create-manage-subscriptions/). +For more information, refer to the [Subscriptions documentation](https://www.scaleway.com/en/docs/topics-and-events/how-to/create-manage-subscriptions/). diff --git a/changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-topics.mdx b/changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-topics.mdx new file mode 100644 index 0000000000..55f03b0c9d --- /dev/null +++ b/changelog/october2024/2024-10-08-messaging-and-queuing-added-queues-subscription-topics.mdx @@ -0,0 +1,15 @@ +--- +title: Queue subscriptions available for Messaging and Queuing topics +status: added +author: + fullname: 'Join the #messaging-queuing channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2024-10-08 +category: serverless +product: topics-and-events +--- + +You can now subscribe directly to queues from your topics, from the [Scaleway console](https://console.scaleway.com), and via the [API](https://www.scaleway.com/en/developers/api/) for standard and FIFO topics. + +For more information, refer to the [Subscriptions documentation](https://www.scaleway.com/en/docs/topics-and-events/how-to/create-manage-subscriptions/). + diff --git a/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-metrics.mdx b/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-nats.mdx similarity index 64% rename from changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-metrics.mdx rename to changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-nats.mdx index 10664d49de..9354755bb2 100644 --- a/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-metrics.mdx +++ b/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-nats.mdx @@ -6,8 +6,8 @@ author: url: 'https://slack.scaleway.com' date: 2023-09-21 category: serverless -product: messaging-and-queuing +product: nats --- - Cockpit integration is available for SQS, NATS & SNS. Refer to our [product documentation](/messaging/how-to/monitor-mnq-cockpit/) to find out how to monitor your Messaging and queuing metrics. + Cockpit integration is available for SQS, NATS & SNS. Refer to the documentation to find out how to monitor your Messaging and queuing metrics. diff --git a/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-queues.mdx b/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-queues.mdx new file mode 100644 index 0000000000..b6959567de --- /dev/null +++ b/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-queues.mdx @@ -0,0 +1,13 @@ +--- +title: Messaging and Queuing metrics available in Cockpit +status: added +author: + fullname: 'Join the #messaging-queuing-beta channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2023-09-21 +category: serverless +product: queues +--- + + Cockpit integration is available for SQS, NATS & SNS. Refer to the documentation to find out how to monitor your Messaging and queuing metrics. + diff --git a/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-topics.mdx b/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-topics.mdx new file mode 100644 index 0000000000..adb759f503 --- /dev/null +++ b/changelog/september2023/2023-09-21-messaging-and-queuing-added-messaging-and-queuing-topics.mdx @@ -0,0 +1,13 @@ +--- +title: Messaging and Queuing metrics available in Cockpit +status: added +author: + fullname: 'Join the #messaging-queuing-beta channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2023-09-21 +category: serverless +product: topics-and-events +--- + + Cockpit integration is available for SQS, NATS & SNS. Refer to the documentation to find out how to monitor your Messaging and queuing metrics. + diff --git a/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta.mdx b/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-nats.mdx similarity index 94% rename from changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta.mdx rename to changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-nats.mdx index c83b4991ed..e5d4701b20 100644 --- a/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta.mdx +++ b/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-nats.mdx @@ -6,7 +6,7 @@ author: url: 'https://slack.scaleway.com/' date: 2023-01-10 category: serverless -product: messaging-and-queuing +product: nats --- Scaleway’s Messaging & Queuing is a fully managed message broker solution for sending messages and events between microservices. Fully managed, the service supports many protocols (SNS, SQS, NATS) and simplifies the development of microservice-based applications. \ No newline at end of file diff --git a/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-queues.mdx b/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-queues.mdx new file mode 100644 index 0000000000..2a5f8418f7 --- /dev/null +++ b/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-queues.mdx @@ -0,0 +1,12 @@ +--- +title: Scaleway Messaging & Queuing is now in Public Beta! +status: added +author: + fullname: 'Join the #messaging-queuing-beta channel on Slack.' + url: 'https://slack.scaleway.com/' +date: 2023-01-10 +category: serverless +product: queues +--- + +Scaleway’s Messaging & Queuing is a fully managed message broker solution for sending messages and events between microservices. Fully managed, the service supports many protocols (SNS, SQS, NATS) and simplifies the development of microservice-based applications. \ No newline at end of file diff --git a/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-topics.mdx b/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-topics.mdx new file mode 100644 index 0000000000..f8110746c7 --- /dev/null +++ b/changelog/serverless/january2023/2023-01-10-changed-messaging-public-beta-topics.mdx @@ -0,0 +1,12 @@ +--- +title: Scaleway Messaging & Queuing is now in Public Beta! +status: added +author: + fullname: 'Join the #messaging-queuing-beta channel on Slack.' + url: 'https://slack.scaleway.com/' +date: 2023-01-10 +category: serverless +product: topics-and-events +--- + +Scaleway’s Messaging & Queuing is a fully managed message broker solution for sending messages and events between microservices. Fully managed, the service supports many protocols (SNS, SQS, NATS) and simplifies the development of microservice-based applications. \ No newline at end of file diff --git a/changelog/serverless/september2022/2022-09-07-mnq-added-sns-sqs.mdx b/changelog/serverless/september2022/2022-09-07-mnq-added-sns-sqs.mdx deleted file mode 100644 index 5a8200ecd0..0000000000 --- a/changelog/serverless/september2022/2022-09-07-mnq-added-sns-sqs.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: SNS and SQS available in private beta -status: added -author: - fullname: 'Join the #messaging-queuing-beta channel on Slack.' - url: 'https://slack.scaleway.com' -date: 2022-09-08 -category: serverless -product: messaging-and-queuing ---- - -SNS and SQS are now available for Messaging in [private beta](https://www.scaleway.com/en/betas/). You can create an SNS/SQS namespace, generate credentials and use them to connect to the system. Find out more on the SNS/SQS [documentation overview](/messaging/reference-content/). \ No newline at end of file diff --git a/changelog/serverless/september2022/2022-09-07-mnq-added-sns.mdx b/changelog/serverless/september2022/2022-09-07-mnq-added-sns.mdx new file mode 100644 index 0000000000..f6c7332f15 --- /dev/null +++ b/changelog/serverless/september2022/2022-09-07-mnq-added-sns.mdx @@ -0,0 +1,12 @@ +--- +title: SNS available in private beta +status: added +author: + fullname: 'Join the #messaging-queuing-beta channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2022-09-08 +category: serverless +product: topics-and-events +--- + +SNS is now available for Messaging in [private beta](https://www.scaleway.com/en/betas/). You can create a namespace, generate credentials and use them to connect to the system. Find out more on the [documentation overview](/topics-and-events/). \ No newline at end of file diff --git a/changelog/serverless/september2022/2022-09-07-mnq-added-sqs.mdx b/changelog/serverless/september2022/2022-09-07-mnq-added-sqs.mdx new file mode 100644 index 0000000000..61aa239541 --- /dev/null +++ b/changelog/serverless/september2022/2022-09-07-mnq-added-sqs.mdx @@ -0,0 +1,12 @@ +--- +title: SQS available in private beta +status: added +author: + fullname: 'Join the #messaging-queuing-beta channel on Slack.' + url: 'https://slack.scaleway.com' +date: 2022-09-08 +category: serverless +product: topics-and-events +--- + +SNS is now available for Messaging in [private beta](https://www.scaleway.com/en/betas/). You can create a namespace, generate credentials and use them to connect to the system. Find out more on the SQS [documentation overview](/queues/). \ No newline at end of file diff --git a/menu/changelogs.json b/menu/changelogs.json index cd11ae9d8a..bb096acdb8 100644 --- a/menu/changelogs.json +++ b/menu/changelogs.json @@ -118,8 +118,16 @@ "label": "Containers" }, { - "category": "messaging-and-queuing", - "label": "Messaging and Queuing" + "category": "nats", + "label": "NATS" + }, + { + "category": "queues", + "label": "Queues" + }, + { + "category": "topics-and-events", + "label": "Topics and Events" }, { "category": "sql-databases", diff --git a/pages/faq/index.mdx b/pages/faq/index.mdx index 955d4d5399..3b5e2dc8e1 100644 --- a/pages/faq/index.mdx +++ b/pages/faq/index.mdx @@ -184,16 +184,6 @@ content: url="/nats/faq/" label="NATS" /> - - + + + + Date: Mon, 14 Apr 2025 16:18:57 +0200 Subject: [PATCH 08/15] fix(mnq): continue correcting links --- menu/filters.json | 12 ++++++++++-- menu/navigation.json | 2 +- pages/queues/api-cli/connect-aws-cli.mdx | 2 +- pages/queues/faq.mdx | 2 +- pages/queues/quickstart.mdx | 2 +- pages/queues/reference-content/queues-overview.mdx | 2 +- pages/topics-and-events/api-cli/connect-aws-cli.mdx | 5 +++-- .../api-cli/python-node-topics-events.mdx | 5 +++-- .../api-cli/topics-events-aws-cli.mdx | 3 ++- pages/topics-and-events/concepts.mdx | 5 +++-- pages/topics-and-events/faq.mdx | 2 +- .../topics-and-events/how-to/create-credentials.mdx | 3 ++- .../how-to/create-manage-subscriptions.mdx | 1 + .../how-to/create-manage-topics.mdx | 3 ++- .../topics-and-events/how-to/manage-credentials.mdx | 3 ++- .../how-to/monitor-topics-cockpit.mdx | 3 ++- pages/topics-and-events/quickstart.mdx | 3 ++- .../reference-content/limitations.mdx | 1 + .../reference-content/topics-and-events-overview.mdx | 3 ++- .../reference-content/topics-and-events-support.mdx | 1 + tutorials/create-serverless-scraping/index.mdx | 2 +- .../index.mdx | 4 ++-- tutorials/large-messages/index.mdx | 6 +++--- tutorials/nats-rdb-offload/index.mdx | 2 +- .../sns-instances-notification-system/index.mdx | 4 ++-- .../index.mdx | 2 +- .../index.mdx | 2 +- 27 files changed, 53 insertions(+), 32 deletions(-) diff --git a/menu/filters.json b/menu/filters.json index fb8e7ca89d..ea1c95c040 100644 --- a/menu/filters.json +++ b/menu/filters.json @@ -101,8 +101,16 @@ "label": "SQL databases" }, { - "category": "messaging", - "label": "Messaging and Queuing" + "category": "nats", + "label": "NATS" + }, + { + "category": "queues", + "label": "Queues" + }, + { + "category": "topics-and-events", + "label": "topics-and-events" } ], "category": "serverless", diff --git a/menu/navigation.json b/menu/navigation.json index 8deb49cb9b..099dbf70c2 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4414,7 +4414,7 @@ "slug": "manage-credentials" }, { - "label": "Create and manage queues", + "label": "Create and manage topics", "slug": "create-manage-topics" }, { diff --git a/pages/queues/api-cli/connect-aws-cli.mdx b/pages/queues/api-cli/connect-aws-cli.mdx index 4fdf16690f..6443985f01 100644 --- a/pages/queues/api-cli/connect-aws-cli.mdx +++ b/pages/queues/api-cli/connect-aws-cli.mdx @@ -126,5 +126,5 @@ Now you have installed the AWS-CLI, you need to configure it for use with Scalew Use the `--profile` option if you want to test it using a different profile. - Check out our dedicated documentation to find more common commands for getting started with the AWS CLI. The [Queues guide](/queues/api-cli/sqs-sns-aws-cli/#getting-started-with-scaleway-queues) walks you through creating and listing queues, sending messages to queues, and more. + Check out our dedicated documentation to find more common commands for getting started with the AWS CLI. The [Queues guide](/queues/api-cli/queues-aws-cli/#getting-started-with-scaleway-queues) walks you through creating and listing queues, sending messages to queues, and more. diff --git a/pages/queues/faq.mdx b/pages/queues/faq.mdx index 40bcbc91f9..24d22d1636 100644 --- a/pages/queues/faq.mdx +++ b/pages/queues/faq.mdx @@ -24,7 +24,7 @@ Scaleway Queues is a product for creating managed message queues based on AWS's ## Is the Scaleway Queues gateway compatible with my application, framework or tool? -We currently implement the API endpoints listed [here](/queues/reference-content/sqs-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including [KEDA](https://keda.sh/) and [Symfony](https://symfony.com/). Note that you need to specify both Regions and URL to ensure compatibility. +We currently implement the API endpoints listed [here](/queues/reference-content/queues-support/), which makes Scaleway Queues compatible with the AWS SDK as well as many other tools and frameworks including [KEDA](https://keda.sh/) and [Symfony](https://symfony.com/). Note that you need to specify both Regions and URL to ensure compatibility. ## How is Scaleway Queues billed? diff --git a/pages/queues/quickstart.mdx b/pages/queues/quickstart.mdx index 298744cf64..498bd53fa0 100644 --- a/pages/queues/quickstart.mdx +++ b/pages/queues/quickstart.mdx @@ -79,7 +79,7 @@ You are returned to the **Queues** tab, where your newly-created queue now displ ## How to send and receive messages -All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/queues/reference-content/sqs-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. +All further actions related to sending messages to queues can be done via a supported CLI or SDK. See our documentation on the [SQS CLI and SDKs](/queues/reference-content/queues-overview#further-actions) for more information. You can also check out [our tutorial](/tutorials/create-serverless-scraping/) on creating a serverless scraping architecture with Scaleway Queues. ## How to delete a queue diff --git a/pages/queues/reference-content/queues-overview.mdx b/pages/queues/reference-content/queues-overview.mdx index 16787fb224..50b7c05a6a 100644 --- a/pages/queues/reference-content/queues-overview.mdx +++ b/pages/queues/reference-content/queues-overview.mdx @@ -44,7 +44,7 @@ You can [create queues](/queues/how-to/create-manage-queues/) via the Scaleway c ## Further actions -All further actions such as sending messages can be done using the AWS CLI or AWS SDKs. Check out our documentation to help you get started with the [AWS CLI](/queues/api-cli/connect-aws-cli/) or [AWS SDKs](/queues/api-cli/python-node-sqs/). +All further actions such as sending messages can be done using the AWS CLI or AWS SDKs. Check out our documentation to help you get started with the [AWS CLI](/queues/api-cli/connect-aws-cli/) or [AWS SDKs](/queues/api-cli/python-node-queues/). ## Queues resources diff --git a/pages/topics-and-events/api-cli/connect-aws-cli.mdx b/pages/topics-and-events/api-cli/connect-aws-cli.mdx index c668b41f28..10762a2a4e 100644 --- a/pages/topics-and-events/api-cli/connect-aws-cli.mdx +++ b/pages/topics-and-events/api-cli/connect-aws-cli.mdx @@ -7,7 +7,8 @@ content: paragraph: This page explains how to connect Scaleway Topics and Events to the AWS-CLI tags: messaging sns aws-cli cli aws sdk python boto categories: - - messaging + - serverless + - topics-and-events dates: validation: 2025-04-10 posted: 2023-01-04 @@ -124,5 +125,5 @@ Now you have installed the AWS-CLI, you need to configure it for use with Scalew Use the `--profile` option if you want to test it using a different profile. - Check out our dedicated documentation to find more common commands for getting started with the AWS CLI. The [Topics and EVents guide](/queues/api-cli/topics-events-aws-cli/) walks you through creating and listing topics, sending messages. + Check out our dedicated documentation to find more common commands for getting started with the AWS CLI. The [Topics and Events guide](/topics-and-events/api-cli/topics-events-aws-cli/) walks you through creating and listing topics, sending messages. diff --git a/pages/topics-and-events/api-cli/python-node-topics-events.mdx b/pages/topics-and-events/api-cli/python-node-topics-events.mdx index 29a76340bb..843460d910 100644 --- a/pages/topics-and-events/api-cli/python-node-topics-events.mdx +++ b/pages/topics-and-events/api-cli/python-node-topics-events.mdx @@ -7,7 +7,8 @@ content: paragraph: This page explains how to use Go, Python or Node.js with Topics and Events and provides code samples tags: messaging boto3 python nodejs sns go topics-events categories: - - messaging + - serverless + - topics-and-events dates: validation: 2024-10-18 posted: 2023-01-04 @@ -61,7 +62,7 @@ func main() { -Once connected, you can use any of the SDK's available functions. Be aware though that some functions are not [supported by Scaleway Topics and Events](/topics-and-events/reference-content/sns-support/), so make sure to check the link for more details on these. See the [official SDK documentation](https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sns) for more information on getting started with the SDK, or keep reading for some code examples. +Once connected, you can use any of the SDK's available functions. Be aware though that some functions are not [supported by Scaleway Topics and Events](/topics-and-events/reference-content/topics-and-events-support/), so make sure to check the link for more details on these. See the [official SDK documentation](https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sns) for more information on getting started with the SDK, or keep reading for some code examples. ### Create a topic (Go) diff --git a/pages/topics-and-events/api-cli/topics-events-aws-cli.mdx b/pages/topics-and-events/api-cli/topics-events-aws-cli.mdx index a61b719a4a..3f585d9d53 100644 --- a/pages/topics-and-events/api-cli/topics-events-aws-cli.mdx +++ b/pages/topics-and-events/api-cli/topics-events-aws-cli.mdx @@ -7,7 +7,8 @@ content: paragraph: This page explains how to use Scaleway Topics and Events for creating topics and sending and receiving messages with the AWS CLI tags: messaging sns aws-cli cli aws messages subscribe publish topics categories: - - messaging + - serverless + - topics-and-events dates: validation: 2025-04-10 posted: 2023-04-04 diff --git a/pages/topics-and-events/concepts.mdx b/pages/topics-and-events/concepts.mdx index 061970e68e..5f3cfa90bb 100644 --- a/pages/topics-and-events/concepts.mdx +++ b/pages/topics-and-events/concepts.mdx @@ -6,7 +6,8 @@ content: h1: Topics and Events - Concepts paragraph: Understand the core concepts of Scaleway Topics and Events. Explore fundamental principles for efficient message handling and service optimization. categories: - - + - serverless + - topics-and-events tags: messaging topics subscriptions events dates: validation: 2025-04-10 @@ -19,7 +20,7 @@ Content-based deduplication is a setting available for [FIFO](#fifo) topics. Ena ## Credentials -Credentials give services and platforms access to Topics and Events, enabling them to connect to the host system. Credentials for Scaleway Topics and Events define whether the bearer is allowed to write, and/or read, and/or manage topics and subscriptions. Refer to our [credentials documentation](/topics/how-to/create-credentials/) for more information. +Credentials give services and platforms access to Topics and Events, enabling them to connect to the host system. Credentials for Scaleway Topics and Events define whether the bearer is allowed to write, and/or read, and/or manage topics and subscriptions. Refer to our [credentials documentation](/topics-and-events/how-to/create-credentials/) for more information. ## FIFO diff --git a/pages/topics-and-events/faq.mdx b/pages/topics-and-events/faq.mdx index 6c4af903bd..d4af5d0fce 100644 --- a/pages/topics-and-events/faq.mdx +++ b/pages/topics-and-events/faq.mdx @@ -25,7 +25,7 @@ The following subscriber types are supported: - Serverless Functions and Containers - Scaleway Queues -For more details on supported and unsupported Topics and Events features, see our [dedicated page](/tpoics-and-events/reference-content/sns-support/). +For more details on supported and unsupported Topics and Events features, see our [dedicated page](/topics-and-events/reference-content/topics-and-events-support/). ## How is Topics and Events billed? diff --git a/pages/topics-and-events/how-to/create-credentials.mdx b/pages/topics-and-events/how-to/create-credentials.mdx index a308d758ab..7a5d697264 100644 --- a/pages/topics-and-events/how-to/create-credentials.mdx +++ b/pages/topics-and-events/how-to/create-credentials.mdx @@ -7,7 +7,8 @@ content: paragraph: Learn how to create credentials for Scaleway Topics and Events. Securely manage access and ensure seamless integration with this step-by-step guide. tags: credentials messaging queuing key token categories: - - serverless + - serverless + - topics-and-events dates: validation: 2025-04-10 posted: 2025-04-10 diff --git a/pages/topics-and-events/how-to/create-manage-subscriptions.mdx b/pages/topics-and-events/how-to/create-manage-subscriptions.mdx index 7a1f092568..74b9403cf9 100644 --- a/pages/topics-and-events/how-to/create-manage-subscriptions.mdx +++ b/pages/topics-and-events/how-to/create-manage-subscriptions.mdx @@ -8,6 +8,7 @@ content: tags: messaging queuing subscriptions sns topics categories: - serverless + - topics-and-events dates: <<<<<<< HEAD validation: 2024-10-17 diff --git a/pages/topics-and-events/how-to/create-manage-topics.mdx b/pages/topics-and-events/how-to/create-manage-topics.mdx index 30cca7bab6..7b73e75ca3 100644 --- a/pages/topics-and-events/how-to/create-manage-topics.mdx +++ b/pages/topics-and-events/how-to/create-manage-topics.mdx @@ -7,7 +7,8 @@ content: paragraph: Discover how to create and manage topics with Scaleway Topics and Events. Enhance your messaging setup with this comprehensive, easy-to-follow guide. tags: messaging queuing topics sns categories: - - serverless + - serverless + - topics-and-events dates: validation: 2025-04-10 posted: 2023-12-27 diff --git a/pages/topics-and-events/how-to/manage-credentials.mdx b/pages/topics-and-events/how-to/manage-credentials.mdx index fe2c64412e..802513024c 100644 --- a/pages/topics-and-events/how-to/manage-credentials.mdx +++ b/pages/topics-and-events/how-to/manage-credentials.mdx @@ -10,7 +10,8 @@ dates: posted: 2022-08-11 tags: manage credentials messaging queuing permissions update revoke categories: - - serverless + - serverless + - topics-and-events --- Credentials give their bearer (e.g. services and platforms) access to your service. diff --git a/pages/topics-and-events/how-to/monitor-topics-cockpit.mdx b/pages/topics-and-events/how-to/monitor-topics-cockpit.mdx index fa585c3d2b..6a4a45c209 100644 --- a/pages/topics-and-events/how-to/monitor-topics-cockpit.mdx +++ b/pages/topics-and-events/how-to/monitor-topics-cockpit.mdx @@ -6,7 +6,8 @@ content: h1: How to monitor Topics and Events with Scaleway Cockpit paragraph: Monitor Topics and Events services with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. categories: - - serverless + - serverless + - topics-and-events dates: validation: 2025-04-10 posted: 2023-09-07 diff --git a/pages/topics-and-events/quickstart.mdx b/pages/topics-and-events/quickstart.mdx index f728b64530..38758adf77 100644 --- a/pages/topics-and-events/quickstart.mdx +++ b/pages/topics-and-events/quickstart.mdx @@ -11,6 +11,7 @@ dates: tags: messaging queuing message-broker topics messages subscriptions events categories: - serverless + - topics-and-events --- Scaleway Topics and Events is a message broker tool that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. Topics and Events enable and simplify microservices application development and allows you to build highly scalable, reliable, distributed applications. @@ -128,7 +129,7 @@ You are returned to the **Topics** tab, where your newly-created topic now displ ## How to publish messages -All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/topics-and-events/reference-content/sns-overview#further-actions)for more information. +All further actions related to publishing messages to topics can be done via a supported CLI or SDK. See our documentation on the [SNS CLI and SDKs](/topics-and-events/reference-content/topics-and-events-overview#further-actions)for more information. ## How to delete a topic diff --git a/pages/topics-and-events/reference-content/limitations.mdx b/pages/topics-and-events/reference-content/limitations.mdx index c5f693efc0..23f99e12e0 100644 --- a/pages/topics-and-events/reference-content/limitations.mdx +++ b/pages/topics-and-events/reference-content/limitations.mdx @@ -11,6 +11,7 @@ dates: posted: 2023-01-04 categories: - serverless + - topics-and-events --- ## Usage limits diff --git a/pages/topics-and-events/reference-content/topics-and-events-overview.mdx b/pages/topics-and-events/reference-content/topics-and-events-overview.mdx index 8a5bf65026..4b2a92f65f 100644 --- a/pages/topics-and-events/reference-content/topics-and-events-overview.mdx +++ b/pages/topics-and-events/reference-content/topics-and-events-overview.mdx @@ -8,6 +8,7 @@ content: tags: messaging sns aws queuing publish-subscribe message-queue topic notification simple notification service categories: - serverless + - topics-and-events dates: validation: 2025-04-10 posted: 2023-01-04 @@ -56,7 +57,7 @@ The following resources may be helpful: - [Official SNS Documentation](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) - Further information on supported API features: - - [SNS](/topics-and-events/reference-content/sns-support/) + - [SNS](/topics-and-events/reference-content/topics-and-events-support/) - [Creating a simulated CPU monitor notification system with Scaleway Topics and Events](/tutorials/sns-instances-notification-system/) - [Official AWS CLI Documentation](https://aws.amazon.com/cli/) - [Official AWS SDK Documentation](https://aws.amazon.com/developer/tools/) \ No newline at end of file diff --git a/pages/topics-and-events/reference-content/topics-and-events-support.mdx b/pages/topics-and-events/reference-content/topics-and-events-support.mdx index 5847a314a9..31e41bedc2 100644 --- a/pages/topics-and-events/reference-content/topics-and-events-support.mdx +++ b/pages/topics-and-events/reference-content/topics-and-events-support.mdx @@ -8,6 +8,7 @@ content: tags: messaging queuing supported supports sns aws api actions categories: - serverless + - topics-and-events dates: validation: 2025-04-10 posted: 2023-01-04 diff --git a/tutorials/create-serverless-scraping/index.mdx b/tutorials/create-serverless-scraping/index.mdx index 8225e0108d..0c5798fce8 100644 --- a/tutorials/create-serverless-scraping/index.mdx +++ b/tutorials/create-serverless-scraping/index.mdx @@ -7,7 +7,7 @@ content: paragraph: Learn how to construct a scalable serverless scraping architecture with Scaleway Queues, Serverless Functions, and Managed Database. Dive into this Terraform/OpenTofu-based tutorial for step-by-step guidance on asynchronous data processing. categories: - functions - - messaging + - queues - postgresql-and-mysql tags: terraform scraping-architecture dates: diff --git a/tutorials/deploy-laravel-on-serverless-containers/index.mdx b/tutorials/deploy-laravel-on-serverless-containers/index.mdx index 23d21c8c70..9e296692d7 100644 --- a/tutorials/deploy-laravel-on-serverless-containers/index.mdx +++ b/tutorials/deploy-laravel-on-serverless-containers/index.mdx @@ -37,11 +37,11 @@ Laravel applications make use of [queues](https://laravel.com/docs/10.x/queues) 1. Create a queue. In this example, we create a `Standard` queue (At-least-once delivery, the order of messages is not preserved) with the default parameters. This queue will be the default queue used by our application. - + 2. Generate credentials. In this example, we generate the credentials with `read` and `write` access. - + ## Building the Laravel Docker image diff --git a/tutorials/large-messages/index.mdx b/tutorials/large-messages/index.mdx index 0b797e45d4..8f0fe01442 100644 --- a/tutorials/large-messages/index.mdx +++ b/tutorials/large-messages/index.mdx @@ -1,12 +1,12 @@ --- meta: title: Set up a serverless architecture for handling large messages using Scaleway's NATS, Serverless Functions, and Object Storage. - description: Learn how to build a serverless architecture for handling large messages with Scaleway's NATS, Serverless Functions, and Object Storage. Follow our step-by-step Terraform/OpenTofu-based tutorial for asynchronous file conversion using messaging, functions, and triggers. + description: Learn how to build a serverless architecture for handling large messages with Scaleway's NATS, Serverless Functions, and Object Storage. Follow our step-by-step Terraform/OpenTofu-based tutorial for asynchronous file conversion using NATS, functions, and triggers. content: h1: Create a serverless architecture for handling large messages using Scaleway's NATS, Serverless Functions, and Object Storage. - paragraph: Learn how to build a serverless architecture for handling large messages with Scaleway's NATS, Serverless Functions, and Object Storage. Follow our step-by-step Terraform/OpenTofu-based tutorial for asynchronous file conversion using messaging, functions, and triggers. + paragraph: Learn how to build a serverless architecture for handling large messages with Scaleway's NATS, Serverless Functions, and Object Storage. Follow our step-by-step Terraform/OpenTofu-based tutorial for asynchronous file conversion using NATS, functions, and triggers. categories: - - messaging + - nats - functions - object-storage tags: messaging nats terraform big-data diff --git a/tutorials/nats-rdb-offload/index.mdx b/tutorials/nats-rdb-offload/index.mdx index 2e6acc5143..afa736add0 100644 --- a/tutorials/nats-rdb-offload/index.mdx +++ b/tutorials/nats-rdb-offload/index.mdx @@ -7,7 +7,7 @@ content: paragraph: Learn how to construct a pub/sub architecture to help you manage database load. Dive into this Python tutorial for step-by-step guidance on asynchronous data processing. categories: - functions - - messaging + - nats - postgresql-and-mysql tags: terraform scraping-architecture dates: diff --git a/tutorials/sns-instances-notification-system/index.mdx b/tutorials/sns-instances-notification-system/index.mdx index 37ace3274e..61fc0da9a6 100644 --- a/tutorials/sns-instances-notification-system/index.mdx +++ b/tutorials/sns-instances-notification-system/index.mdx @@ -6,9 +6,9 @@ content: h1: Creating a simulated CPU monitor notification system with Terraform/OpenTofu using Scaleway Instances and Topics and Events paragraph: Learn how to set up a simulated CPU monitor notification system with Terraform/OpenTofu using Scaleway Instances and Topics and Events. Trigger alerts based on CPU usage with ease. categories: - - messaging + - topics-and-events - instances -tags: messaging sns monitoring terraform +tags: topics-and-events sns monitoring terraform dates: validation: 2025-04-30 posted: 2024-03-08 diff --git a/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx b/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx index 6d24b97f35..9c7ba80daa 100644 --- a/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx +++ b/tutorials/transform-bucket-images-triggers-functions-deploy/index.mdx @@ -7,7 +7,7 @@ content: paragraph: This page shows you how to create and deploy functions to transform images in an Object Storage bucket using Serverless Functions and Triggers categories: - functions - - messaging + - queues - object-storage tags: serverless triggers sqs queue dates: diff --git a/tutorials/transform-bucket-images-triggers-functions-set-up/index.mdx b/tutorials/transform-bucket-images-triggers-functions-set-up/index.mdx index 6281754b19..17b8f88dde 100644 --- a/tutorials/transform-bucket-images-triggers-functions-set-up/index.mdx +++ b/tutorials/transform-bucket-images-triggers-functions-set-up/index.mdx @@ -6,7 +6,7 @@ content: h1: Transforming images in an Object Storage bucket using Serverless Functions and Triggers - Set up paragraph: This page shows you how to set up your environment to transform images in an Object Storage bucket using Serverless Functions and Triggers categories: - - messaging + - queues - functions - object-storage tags: serverless functions triggers sqs From 38079311fd8cc27cfe19ce58764622841a52c5bd Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Tue, 15 Apr 2025 11:38:56 +0200 Subject: [PATCH 09/15] feat(mnq): add info about independence from sqs and sns (#4842) * fix(mnq): add explanation about independence from AWS * fix(faq): fix * fix(mnq): review from devs --- pages/queues/faq.mdx | 6 +++--- .../queues/reference-content/queues-overview.mdx | 14 +++++++++----- pages/topics-and-events/faq.mdx | 15 ++++++++++----- .../topics-and-events-overview.mdx | 10 +++++++--- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/pages/queues/faq.mdx b/pages/queues/faq.mdx index 24d22d1636..b14882983d 100644 --- a/pages/queues/faq.mdx +++ b/pages/queues/faq.mdx @@ -16,11 +16,11 @@ productIcon: SqsProductIcon ## What is Scaleway Queues? -Scaleway Queues is a product for creating managed message queues based on AWS's SQS protocol. It allows you to implement your message queues without the hassle of managing the infrastructure, scaling or updates. Message queues are ideal for facilitating asynchronous job processing and communication between microservices. +Scaleway Queues is a product for creating managed message queues, using an in-house implementation of AWS SQS protocol. Queues allows you to implement your message queues without the hassle of managing the infrastructure, scaling or updates. Message queues are ideal for facilitating asynchronous job processing and communication between microservices. -## What is SQS? +## What is the relationship between Scaleway Queues and AWS SQS? -**S**imple **Q**ueue **S**ervice, or SQS, is AWS's distributed message [queuing](#queuing) protocol, that supports programmatic sending of messages via web service applications. +**S**imple **Q**ueue **S**ervice, or SQS, is AWS's distributed message [queuing](#queuing) service, that supports programmatic sending of messages via web service applications. Scaleway has developed its own service based on AWS SQS protocol. Scaleway Queues does not have any dependencies on the AWS SQS infrastructure or offering, we use our own stack which is fully self-hosted and developed in-house. ## Is the Scaleway Queues gateway compatible with my application, framework or tool? diff --git a/pages/queues/reference-content/queues-overview.mdx b/pages/queues/reference-content/queues-overview.mdx index 50b7c05a6a..bb2204055f 100644 --- a/pages/queues/reference-content/queues-overview.mdx +++ b/pages/queues/reference-content/queues-overview.mdx @@ -16,16 +16,20 @@ dates: ## What is Scaleway Queues? -Scaleway Queues is a managed message queuing service that enables decoupling of components within distributed applications. It allows applications to send, queue, store and receive messages between each other asynchronously. Scaleway Queues leverages the SQS protocol. +Scaleway Queues is a product for creating managed message queues, using an in-house implementation of AWS SQS protocol. Queues allows you to implement your message queues without the hassle of managing the infrastructure, scaling or updates. Message queues are ideal for facilitating asynchronous job processing and communication between microservices. ## What is SQS? -SQS is a managed messaging service developed by AWS and leveraged by Scaleway Queues. +**S**imple **Q**ueue **S**ervice, or SQS, is AWS's distributed message [queuing](#queuing) service, that supports programmatic sending of messages via web service applications. It became generally available in 2006, and is a highly scalable queuing service that facilitates the decoupling of software systems. -SQS (Simple Queue Service) became generally available in 2006. It is a highly scalable [queuing](/queues/concepts#queuing) service that facilitates the decoupling of software systems. Scaleway Queues provides a gateway that enables you to connect your existing applications without having to significantly modify your code baseline. +## What is the relationship between Scaleway Queues and AWS SQS? + +Scaleway has developed its own service based on AWS SQS protocol. Queues does not have any dependencies on the AWS SQS infrastructure or offering, we use our own stack which is fully self-hosted and developed in-house. + +Scaleway Queues provides a gateway that enables you to connect any existing SQS-connected applications without having to significantly modify your code baseline. - Some SQS features are not yet supported. Refer to our [dedicated documentation page](/queues/reference-content/sqs-support/) for more information. + Some SQS features are not yet supported. Refer to our [dedicated documentation page](/queues/reference-content/queues-support/) for more information. ## Credentials @@ -51,7 +55,7 @@ All further actions such as sending messages can be done using the AWS CLI or AW The following resources may be helpful: - [How to create a serverless scraping architecture, with Scaleway Queues, Serverless Functions and Managed Databases](/tutorials/create-serverless-scraping/) - - [Official SQS Documentation](https://docs.aws.amazon.com/sqs/index.html) + - [Official AWS SQS Documentation](https://docs.aws.amazon.com/sqs/index.html) - Further information on supported API features: - [SQS](/queues/reference-content/queues-support/) - [Official AWS CLI Documentation](https://aws.amazon.com/cli/) diff --git a/pages/topics-and-events/faq.mdx b/pages/topics-and-events/faq.mdx index d4af5d0fce..07ab4874d9 100644 --- a/pages/topics-and-events/faq.mdx +++ b/pages/topics-and-events/faq.mdx @@ -12,20 +12,25 @@ productIcon: SnsProductIcon ## What is Topics and Events? -Scaleway Topics and Events is a product for creating managed messaging topics based on the AWS SNS protocol. Previously, it was part of the Messaging and Queuing product. +Scaleway Topics and Events is a product for creating managed messaging topics, using an in-house implementation of AWS SNS protocol. Previously, it was part of the Messaging and Queuing product. -## What is SNS? +## What is the relationship between Scaleway Topics and Events, and AWS SNS? -**S**imple **N**otification **S**ervice, or SNS, is a [publish/subscribe](/topics-and-events/concepts/#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. +**S**imple **N**otification **S**ervice, or SNS, is AWS's [publish/subscribe](/topics-and-events/concepts/#publishsubscribe) notification service for the mass delivery of messages. SNS acts as a single message bus that can be sent to a variety of devices and platforms through a single code interface. It is also possible to adapt message formats to the particular needs of each platform. -## Does Scaleway Topics and Events support all SNS features? +Scaleway has developed its own service based on AWS SNS protocol. Scaleway Topics and Events does not have any dependencies on the AWS SNS infrastructure or offering, we use our own stack which is fully self-hosted and developed in-house. + +## Which subscriber types are supported by Scaleway Topics and Events? The following subscriber types are supported: + - HTTP/S clients - Serverless Functions and Containers - Scaleway Queues -For more details on supported and unsupported Topics and Events features, see our [dedicated page](/topics-and-events/reference-content/topics-and-events-support/). +## Does Topics and Events support all AWS SNS features? + +For full details on supported and unsupported AWS SNS features, see our [dedicated documentation page](/topics-and-events/reference-content/topics-and-events-support/). ## How is Topics and Events billed? diff --git a/pages/topics-and-events/reference-content/topics-and-events-overview.mdx b/pages/topics-and-events/reference-content/topics-and-events-overview.mdx index 4b2a92f65f..621eff0f56 100644 --- a/pages/topics-and-events/reference-content/topics-and-events-overview.mdx +++ b/pages/topics-and-events/reference-content/topics-and-events-overview.mdx @@ -16,13 +16,17 @@ dates: ## What is Scaleway Topics and Events? -Scaleway Topics and Events is a managed messaging service that facilitates the sending of notifications or messages to a large number of subscribers, including email addresses, webhooks, and more. Topics and Events leverages the SNS protocol. +Scaleway Topics and Events is a managed messaging service that facilitates the sending of notifications or messages to a large number of subscribers, including email addresses, webhooks, and more. Topics and Events uses an in-house implementation of AWS SNS protocol ## What is SNS? -SNS is a managed messaging service developed by AWS and leveraged by Scaleway Topics and Events. +**S**imple **N**otification **S**ervice, or SNS, is a managed messaging service developed by AWS. It was released in 2010, and enables users to interconnect their applications and systems using a [publish/subscribe](/topics-and-events/concepts#publishsubscribe) pattern. Many publishers can send messages to [topics](/topics-and-events/concepts#topic), while consumers, e.g. applications, can subscribe to topics to receive all (or a subset) of messages sent to this topic. -SNS (Simple Notification Service) was released in 2010. It enables users to interconnect their applications and systems using a [publish/subscribe](/topics-and-events/concepts#publishsubscribe) pattern. Many publishers can send messages to [topics](/topics-and-events/concepts#topic), while consumers, e.g. applications, can subscribe to topics to receive all (or a subset) of messages sent to this topic. Scaleway Topics and Events makes it easy to migrate your SNS-connected applications by providing a dedicated protocol gateway. +## What is the relationship between Scaleway Topics and Events, and AWS SNS? + +Scaleway has developed its own service based on AWS SNS protocol. Scaleway Topics and Events does not have any dependencies on the AWS SNS infrastructure or offering, we use our own stack which is fully self-hosted and developed in-house. + +Scaleway Topics and Events makes it easy to migrate your existing SNS-connected applications by providing a dedicated protocol gateway. Some SNS features are not yet available with Scaleway Topics and Events. Supported subscribers are currently limited to: From afea6e3d27fc474808f32bebfb24561e2e396e07 Mon Sep 17 00:00:00 2001 From: Rowena Date: Tue, 15 Apr 2025 11:45:24 +0200 Subject: [PATCH 10/15] fix(changelog): update new mnq changelog --- ...essaging-and-queuing-added-undelivered-message-queue-f.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/april2025/2025-04-01-messaging-and-queuing-added-undelivered-message-queue-f.mdx b/changelog/april2025/2025-04-01-messaging-and-queuing-added-undelivered-message-queue-f.mdx index cfbf68b78c..06e7c8d0ca 100644 --- a/changelog/april2025/2025-04-01-messaging-and-queuing-added-undelivered-message-queue-f.mdx +++ b/changelog/april2025/2025-04-01-messaging-and-queuing-added-undelivered-message-queue-f.mdx @@ -3,8 +3,8 @@ title: Undelivered message queue feature is available status: added date: 2025-04-01 category: serverless -product: messaging-and-queuing +product: queues --- -When creating a new queue with Scaleway Queues, you can now configure a dead-letter queue to receive its on-hold or undelivered messages. Read more in the [documentation](/messaging/concepts/#dead-letter-queue) +When creating a new queue with Scaleway Queues, you can now configure a dead-letter queue to receive its on-hold or undelivered messages. Read more in the [documentation](/queues/concepts/#dead-letter-queue) From 3e2e4a9291574fb2f5061a2f726df0ed22ccabeb Mon Sep 17 00:00:00 2001 From: Rowena Date: Tue, 15 Apr 2025 12:08:07 +0200 Subject: [PATCH 11/15] fix(mnq): image corrections --- .../assets/scaleway-nats-create-account.webp | Bin 0 -> 23578 bytes pages/nats/assets/scaleway-nats-creds.webp | Bin 0 -> 11736 bytes pages/nats/assets/scaleway-nats-overview.webp | Bin 0 -> 21068 bytes .../assets/scaleway-nats-create-account.webp | Bin 0 -> 23578 bytes .../how-to/assets/scaleway-nats-creds.webp | Bin 0 -> 11736 bytes .../how-to/assets/scaleway-nats-overview.webp | Bin 0 -> 21068 bytes .../assets/scaleway-queues-create-queue.webp | Bin 0 -> 16916 bytes .../assets/scaleway-queues-gen-creds.webp | Bin 0 -> 23600 bytes .../assets/scaleway-queues-create-queue.webp | Bin 0 -> 16916 bytes .../assets/scaleway-queues-gen-creds.webp | Bin 0 -> 23600 bytes .../scaleway-queues-queue-settings.webp | Bin 0 -> 19440 bytes .../assets/scaleway-queues-update-creds.webp | Bin 0 -> 30366 bytes .../how-to/create-manage-subscriptions.mdx | 54 +----------------- 13 files changed, 2 insertions(+), 52 deletions(-) create mode 100644 pages/nats/assets/scaleway-nats-create-account.webp create mode 100644 pages/nats/assets/scaleway-nats-creds.webp create mode 100644 pages/nats/assets/scaleway-nats-overview.webp create mode 100644 pages/nats/how-to/assets/scaleway-nats-create-account.webp create mode 100644 pages/nats/how-to/assets/scaleway-nats-creds.webp create mode 100644 pages/nats/how-to/assets/scaleway-nats-overview.webp create mode 100644 pages/queues/assets/scaleway-queues-create-queue.webp create mode 100644 pages/queues/assets/scaleway-queues-gen-creds.webp create mode 100644 pages/queues/how-to/assets/scaleway-queues-create-queue.webp create mode 100644 pages/queues/how-to/assets/scaleway-queues-gen-creds.webp create mode 100644 pages/queues/how-to/assets/scaleway-queues-queue-settings.webp create mode 100644 pages/queues/how-to/assets/scaleway-queues-update-creds.webp diff --git a/pages/nats/assets/scaleway-nats-create-account.webp b/pages/nats/assets/scaleway-nats-create-account.webp new file mode 100644 index 0000000000000000000000000000000000000000..2e671a0e5e043731325457381c4eb5fbd01e8c4b GIT binary patch literal 23578 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 a{7!_`No)z^Xf6BopRYXk!+#_I@c#hePv?dJ literal 0 HcmV?d00001 diff --git a/pages/nats/assets/scaleway-nats-overview.webp b/pages/nats/assets/scaleway-nats-overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..60be2e9401290d2ad9c68a8da906b1650951d0a7 GIT binary patch literal 21068 zcma&NbC74jmM#1%ySi-Kw(Y7e+cvvw+qP}nw(Y7eblJw&_s-0ldGqE@eCLmh6M5of zJ z%=W|0ecu{_isfp4OND3dy?VClHY3FD6|chg>et(Y(lN*k_BVfx-Ay(%|8wv6_st9a z*XVcQ_jlXum1~W7mG9fEMl8dR@2^c>+E1FV!%yy8wIRJ5-}PR6Z}N}8liWpL`_IM4 z{_n_-AHls6Us~UKZ}f`aDWAiiwJ$#{zH7d-zp)Q`2Wzi;``>}z4!_u+eF<|fJ&l@s zAM_r)1-;YWd_RBO>>hsGe4>3%eq(;&uf@*w4*G6C1HPQTetcb5?%wcV@#B88KZERH zzmdQG*ywfszT~(1`1(ryT75d%<9_3RiD~gkGbrsGJujLu1C1=D^-xJdfGz|6p^hdm zK$Qo{tFIvlsPH3r^fv(ot^fqCfVtM4yn(4squz+7cJQ)%mFv|_o}0dW4I&Wu)H?)a z#i;zeZf{>jzH_CUt}EkI@?u>hS(>oPRo?%3^7JxLH-Q!>b9Z{j*+DfSRqKxN)dU6F zGgd7>Gv+n24Z0+FSn<(ng)Qjs#craH0j-m&sFob2YF_SQj8{jK=cgio;L+C*0HgvC zJO>`XwMW>}6!1(V^_OYiJpB;|x2klS#k40BoscM$*K-qCuAwP&3T5&o6LpYS>=)X8 zMiuwx*t1Io2z}_PhLUFqvJa+7^FesN39T<6{r;dYpLCo6jpT7~C?g-x*Z-{UMD{%t z#8ZS++FXw)__l?pnO4{RA71zmC;dFuc}{J9{0Y?aPEwBm_t+SkEDr{4dK8B$5BmRZ zc>)ql83>{ZhJxTXFOy!RyZCM-O2LF;ySTJj-N*hKK#{Knq@kd^<42VhYI<~KqrxpP-Ttf$BR3tmc@ zT#Y3qJfzhE;ex>Ae9h6!RtiFrr^(fA*t6Uz)_bls5H@L=K}CMN)!wflto55{PU%F! zY98B3}+X8SN`~==Pi_d_<4!5hrTC&`qq>-VCiTh6NRR)>;#=x27W-`;-aDv0F_mTvs7U_7XtjmzVFQ6Qge{wll3SzY}3xm4GU3uQ%PCrDmOPVeZJ%aNzM@EN}es z+Urm&T);AW=;MwVoqH&TO`K6vbVN@rv>TZYxB4GkF-~j6J8@tZsKJ7RHJ-P(A`AYZo<8>cu>f(HKmCp z7R1@#?0oohfB*M{SYuvQa*s&TqStn{Z6S#+i`yM$BPV+jq+;3uOQfvo9o)smj698; z0XLK+aPHS|5hsCF#hyd%%aJ=VNJu)FZq7*?P)+H%--4~ot~H9~9Qm{GRx+Bm<`@$5 zQkr7=gHT~h23MDoZw?soYu_ViZjb&_;}M%Ib^cptDOc{ZzHITeH!9*)c4u?VJ^|xz zzl&z8Z(F}+bBgW3EL5l|H%Rm;eH{fD`O<|ON<&UDUzbxYw{X^zh*g2(&|G#iEHNhD z-x4y-zJR;XGq)Qsz3wWR39+gK85hTtsUzx`zLEAtE$Ga)Yz?D?wKCdx8mNa#P(HBw zk#E&_!{6OPx{NdOe`25+TD~RS2uzLzZsSF4HyWA#U+oi8?{-=wdnI!>YF`!N6Kc=No~7do7zirgXemM|kCtOd*O0?VtD8 zS*T!%9y6ml0|nu3*@fuym36xfQ~baz6I9v*{Rd#!z-IofQWRvRdiNnEV(}7ErSDbn z2NWxOpi;%|l`9$arn*N~0i*~l@%2^G(*JwC^!#LEz4Z@P2Ev9qS2po_lzjEqd@-=oXD=_U>jg!Jly5m}{ z3`pUk8r^$CLlw?BWXwxJ&-e_ydkgX}~yhmr@wouQ=C%{K_ zH89>7P?@F*5|Lc%Q~a81^3(Z$%=~wu!`H2t85tZ;gVGm`pdc36K&4R@H7&Oc4mk~O zqyf-TtKIisvzh=%YB5UIs(!%UlIA=l@yDa;^6Gb4(80)x!aGexmqo$;C%yld>XC#1 z(eIhOgWOdF6($iY5H|C_R(Tq!NSVCqoBvtXD7_30J&O)szR}U!%{zGdM1}&x`5YOj znM*(6yQrJ@H`~#lD5>KjR5(+}e+Y}uC>sv2>9!uiICpLTQ(rEDycv#BRpE^`EGq8# z%ok5%w;!fgRDzNz<~G3#Ma}LW{E)(a#vprkz#MzK76H!K|{6jhV(u3de)<5Z&IRZMj}mDvvEkwp;W# zp{``A@8hs>J#T}-;IfH2?lJn~||uRV?spc;t(PCKOF z!vbl9Abw?OY#^0nBcT*#Zbh#m8&Rtu9D38DoMKpm4jRmv_9k)yOd1IkNw5A4M8L`B zRo)+YUl?TxJbpJnB|>7r$qS-K%?AjSU)!jeuHfS}398KiF7<OUYQ-CfMzBqsj(Tnt`R1Y*Hur9O#!)Q7 zDxKmy`huD|?oe!DZS9f4o&3_6vq1YZ=POjK@RMhBN9q2Bj>Rc_zOtYEscFJu#qK>b z{cj-q*D|pN%j?K9iwWxI-o+uv|9Zms|Ak6r0l?RHe2`+oy;-U(u&QWk9smd_MY`!# z&kzA3P0THKA)vJ?{z?}D_znEZy#loffck}v^UK$e^no>ZFclEtJ;d=++RrS>yGnA0 z7ka9)jcRZbMEKO$LLbd}?9?!3@;eGcKEco<8cnOvrjNw&>*`ti1=-2npKtj~qIUnp zPP6|mo(3D;%MH(EjvvXTVECqp7c4wR z<@01@!olbA5Vi-y@Qm)cP=W8;jyMZbK zT(yQ!<%m(*NZv+IgYFe~XJn)o?ZCj%vLTgSqmHIfGyV|GctSf28PrDbKE;^rPFaAp zffh(s$IGdNe793rV9yX=laGF5sl_48GDXvj-nZd4S}`8?eAUW6jo0esjcn?ee%ORl zCpZtFE|2l1u2akSMt5=Clu3e4anqE!8{1X`D-mV!JKZW~OjYO^T?DuoO45_d7;@RH zy+2mNBeo#M?e_(oJ$net!{V)%GnzlJX>^MAq&MyUeC>aHR$*xesX<#6JeT2x$Ic$$ zKUQc!d%C`D#0n(k)@-Z;U)GoUZCWqa-Ob~(yD*Y=b+9g@T^dm=12JrZGflO?-Lu1S zFz&)NdOWUz3%Tx_1RSn_qob-E%dmJGrFP-`Sbdpwe|?I2d|T>wxh^ZDJ+)_PXsIg& zC720v6o#W?yn*4q9p-yri;!n&Q?Kw~&Y~GF3TjhG4k}IG*wz^u2uLGLFfKP3vX(>G z2}uDMGih8Z=jw1Rv^sk8mw$JPwnCZAUcSWRcR>wQmGgYm%MeeY=8VA-{jyjdApolM zyQH4*X8u~Q&ZY#Z_6%Q6X_RKEmv+iC4d&0dSp4NnK-iE;p6dCn`TANWk`G+k=ZaJW zR|xfq@C7kD@wvkRsUR4~2AMes9i?WswKAJK^l8Io?N|BOINL#Bvre`Tj^&pY2)6=- zJ6=0vyr1wM07}nWyn_faZ($sm?iioVKRwKWxkw44qF5E~WAQQ2;g#y4$3#jV5FaC_ zQU@A5M?JO`mEw|^piEo+$YJWVJn=aq?10F}^lCpLFmdQBtyu1PQ1k}x4iYSTI5{J9 zuV&C7%-K?53Y3}#y--rZEvHqL{e<6Ix|t9M3ryPnmaie#0T-vDRXbq7VC-+NxS z11f}Ih7q3z3_o>~1!QG2Li?=;SX4sJCRekm9){tvQrHtk7UNhFia?LSG>OF(dSe)u zGiV+25(6`Il*z;9$!|uv5*o_0A+Kvd>Z?QhQMiJRcY~OY@_-yA&ffJ25<@%{-)`at z0O7UhM-G}WOVw^#T7byd{|nWYm`iu{BO?NR!-2B7x0R`9t4_K^5AE=eLdyGSyL+Za z?&zZ}9c-|s7N!&1Llh3|+A8LpoI=8Zv{Hc9T)LvVK_K`&xai9q6^HtvfwQ$z zpJ4(2Jj-q>(8UI>iOgCNxR%qSgy6@+-HC^pmC5ID6p}p`KKqHhce@M7gbE9z6kx-n z(+9c-68ed?ntT+lr#A;vct@~$Oyk4sB<0ytnz%5+d<+-J*#+DpiQG93IOlnz7Q z_3qhg>!6;ir0g+890p%0NpF;%suvr;!rNz5Z^RXQI!qyC3hVwVhKEwB*%t{TdH zMiqTY>di`lP(*U{6?C{uh%qPo&^{xBrklK2uj28kl-PsXei4(e!)DPBds5k&9C%Hf zLum;^%#6`9- z4)%WO9Nqd_8haB?wVG$ku(XsIF!gf&X!L8_J8!5QRs+>Ye?Om?Xz<}?s5eY0&-`~ zjm794kjX8=!s1rRsG@||Yj*i)h9K_@nPKJT#nwuCH2VCzu((C!l9X1_P*eS_25Bw5 zf35Py<9*V-ewD-ku4q8h_#iIZYU>z(Qjs~9b;UZL!1Q86nBVev4K_M3!wm&Y-3{#BP+}2ASnm4adlZEywJ}Q9zx0QK-CTYGi$J)7(f!(l zbjvzC^(J`uBXvzzH0PrP(P!q{^qCttemO1Y$>(YIt`P zN2!xI_YO#9V0~sJl8V)Rd*(Ifw=r6KJ2f~nL*W3(OAZSL0BE2L zIe|c=53CRHZ_g;osdRS(BfS*jc+%`OAc|ez5VP9>*4zi+C`)$jZCE?fF2dD+iS{`g42{eTP%R}vX;n;jD8Y=Dq_kEl;FfVs*1OqYA}Lvmm9 z`rZhOPPfMmZdrXNM5<|zp%fiHVKd4<`dLqK;n@@^G5iB8{DhVp9(Z3G4G0TZ?#9K| zp0I*ZeTtw+{cb^TN(btDS_0LIc!Nn*f*0GF{3QuN+ITESjg#xG_&u#i-6p+6I) z?QSVvyv&tnsTk3DP^l}s8YT|9YR_+->XD(~B?pG9#vKAdeYELyv71zPu4dKouZ(I8 z4Y3E3fM6&+Mdc2`Bj6Sg^KQ)YUfAW>s4N!#v%iw^Ji~3+8&0RR5aN&Nwa@CAx}HOP zbR_(9osKi6qyMJ(U9I1^fUj1fBdQwJA>}+Rcl86#)iWOCY1bI;s)PNp>jgN)4Fye# z5(-*)hD0J|pD?OF-CerP{haukgMMxGH+@~ATWE9E<}dfY103P7dfUmK0!zG{E&>xJ}4gQ$81h}$EP zG(BIC?7Fz+SYIJu$%p@TY12NbC*+^2a&++*5+iq**gg$z@K~pD;o=SS;tyI!3UJCJ zssTi1PjtKTjj8@I!JV7yuchbkYqiczTH#%ql1!L-pISw5fAlxgBE`AYl#CRyz!Vlo}xCZh5!J6y(nklM=~ zFbHQ_oTeVZB>CS9+_K}NFY|lwtE6`C&9jd#1WKZg-`ESX2B^Na!3#ZwA|Jbdaz>~r zT9t~2&-r|L+4sXN9A?u446me-bb=>*UrjX8`jCBC48Bfh&`a!gdNI7gGqU;019+(1 z@YtnG)j^&0*2Tu?2HV1xvZ-#^75lPD-#3D6Qn@kH&G5_iFw>Y_-g3aGgXZBHdcpFJ z9zdB5ug=Ly)Ul{S1SE&pLPs40kcwtYGIUZikU!#*eVi}vKC{t)N*{NjHN_6Y3G2v+ zD~cG7X1ICX&H^r z-S-qK59(Q0QF>Z3Qd4ai=fDwwv3x4+6(srN=R%{izxw?Y<8DhApZp;KAPDO;nX-`; zh6T-ugk<7NtM(<#l2e8SL30W^X(c39T^pzKgz1Gw^u||x`jIG)zsirQ!VlU&X=Iz; zQ}R^6is3mIfsOKUnXx199lDK7jcIhxFa-9=qSwNE34gBZ%h5;vH0yyTvvPY;X00Ly@nTBw=*b+_E?+MxS6n`WTWb9Ua8If(;zPcp7&nZO$_ zTPzN7jC}^D26hkm%TP`3)B_HfA@142=WJscH8>sEirmcuhS1$Oh5^{6A*Fbl178R8 zSVGhPuwGxobA1uj5t38F=wiFHh%*f+_reG5+1JfQccVpr{6Kb+TI08VP~*p2Z&`se zJ3A7&`$OmO%T_UOnlt?Gg{kxvF*! z8o4eimUh=HY)Npn)v(J#EdkNNERV%iEO-?67+nPLq~Hxq3Xz|&IG!(eb@*A`PE^fQ zt}S&)Xg#=q&aHj`|0Aq!UH+on@1sLZ-VR1pzR(ka)8>wS;8P%uL2Ej2lac~@_>&$K zGxpG;TVz9BzD#bPX;fw;f>l6cwk3hIDT%?yQ2+#^y4Y9#$Zf%ZeQNH&$cag`98r zpS+oqr;GmfWYk+aQs2Kq6rWB|vLz_kp-hH|6)s9tKY=wa!zo za@d5oO}aOc`_0;GMu|kYka2jW*MNLef$M4rAKMLr0%_j@buJzWNSwNx?E9rScCrUaH*9h41Xj`4?w|Oo;agOAg|X26(>DF!Ko^2^R_)Uxk}P9ss~LU>J(rGssWX>laKW$>e_EZd^&>A4gr}`OasmKP?TG%(o5tgS{$jFJ`hpKu$eo?Zt*66XpJ#x~s zDM-LVmyMu9Lx1O_#2)kJu~@KLd_x)qrneGoPMP$BN9Y<66jw?+dw?8g+_>I=#Cj^@ zssFpjkdi1a<`*&gNlqQ|*yY<0LW(j^(k7itN4tUagoxII9Pc$IP-q3ERaPG_MrbF~ zuN|Ke&0rb3G4ijLA#BhA??0!Wc*CUlXFOmk_~ZAr*SjK}V=HnLWv-9Pdf23Bb40(- zaVJU8Bd->1@kAr_&`pA& zF;U0VClr#pgdqd;+_2}z1%TQ=xPHhyRJQFO!Rkf^jJ#Iz9+dAPW@!VRO|-TL5oSLa z)1G)Oy@5y0k6vfLeD!oWoG&_KhY}|Hh2`$z<}4hyY;5XoerbH4V0BiKO;7!dMdxxB zDa0ODtT&ffHKoH7JMn0LDvA!kcKg9a zMcb=xEsg6cCJg{*@G;7ei*igUp*zZgwlHdnJXJzF<+~fr8;Z>{NJERJdH?8tOxjOX z7Y^l>FoKeMP3%QUZ#+ZfVXQI1Xa{sNxB|@4aCfinF_rvEAe}V_O48Y`6xNxv;QUvz zR0I?4JA1hl9=t_DVJa5TmTp5EbT;{{=pxY6LCY8`+E=`(pVWiOFkK(oVF;hKMd+EK zVgFQ0d#0?{gXx{duq?6*F%3uGJ~+H4jW3M`Wi5VKrtdN+6$gJ=DS$*>@PpDSSrp~2 z7BYd)AwSZ5XYmq>(;Y;Sq8Uu#*ORfJwbEIyP4)=fnzEyl84^`8nc)+D5*-TgiL&s*gOMMN?*;+IhZ&YEu)>mJ#z|T|-3@=c1z0HgFec>)=f?z~!G_f!X zQGjAZij^XK|GB}Sojg|~$O8PL+cIn;2$eZAm}D z6xl&@SC!98jQOEk*xbEnvAVae)k#U9jcE<^26|Vut+vv)`bv=S%7*W-s*Sh>G+6Ob zJ`{b=qaSKoe&F?0)3SWStjiIc{(#< QgAl8Q4U@C!$CgLgCc**D?#^Ni5Cj6)Q| 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 a{7!_`No)z^Xf6BopRYXk!+#_I@c#hePv?dJ literal 0 HcmV?d00001 diff --git a/pages/nats/how-to/assets/scaleway-nats-overview.webp b/pages/nats/how-to/assets/scaleway-nats-overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..60be2e9401290d2ad9c68a8da906b1650951d0a7 GIT binary patch literal 21068 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 QgAl8Q4U@C!$CgLgCc**D?#^Ni5Cj6)Q| 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 I000000D_UY6951J literal 0 HcmV?d00001 diff --git a/pages/queues/how-to/assets/scaleway-queues-update-creds.webp b/pages/queues/how-to/assets/scaleway-queues-update-creds.webp new file mode 100644 index 0000000000000000000000000000000000000000..31f163670d318abd07b66646c909ff28790aac1f GIT binary patch literal 30366 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 a04957b37 (feat(topics): add separate topics and events doc (#4834)) - A Scaleway account logged into the [console](https://console.scaleway.com) - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -<<<<<<< HEAD -- An existing [topic](/messaging/how-to/create-manage-topics/) -======= - An existing [topic](/topics-and-events/how-to/create-manage-topics/) ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) ## How to create a subscription 1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. -<<<<<<< HEAD -2. Use the dropdown menu to select the [region](/messaging/concepts/#region) of the topic you want to create a subscription for. -======= 2. Use the dropdown menu to select the [region](/topics-and-events/concepts/#region) of the topic you want to create a subscription for. ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) 3. Click the name of the topic you want to create a subscription for. @@ -62,11 +46,7 @@ This page shows how to create and manage [subscriptions](/topics-and-events/conc You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`http://`) is not required. -<<<<<<< HEAD - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). -======= After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) @@ -75,35 +55,21 @@ This page shows how to create and manage [subscriptions](/topics-and-events/conc You are prompted to enter the URL of the HTTP endpoint to subscribe, e.g. `example.com`. Note that the scheme (`https://`) is not required. -<<<<<<< HEAD - After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/messaging/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). -======= After your HTTP subscription is created, you must confirm it. Find out how in our [dedicated documentation](/topics-and-events/how-to/create-manage-subscriptions/#how-to-confirm-an-http-or-https-subscription). ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834))
Choose **Serverless Functions and Containers** to create a subscription for a Scaleway Serverless Function or Container that you have created. -<<<<<<< HEAD - You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. - - You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to an topic. -======= You are prompted to select the **namespace** containing the Function or Container that you want to subscribe. Only namespaces in the same [Project](/organizations-and-projects/concepts/#project) and [region](/topics-and-events/concepts/#region) as the topic can be selected. You are prompted to select the Serverless Function or Container to subscribe. Only Functions and Containers with a public [privacy policy](/serverless-functions/concepts/#privacy-policy) can subscribe to a topic. ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834))

Choose **Queues** to create a subscription for a Scaleway queue that you have created. -<<<<<<< HEAD - You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/messaging/concepts/#region) as the topic can be selected. -======= You are prompted to select the **queue** to subscribe. Only queues in the same [Project](/organizations-and-projects/concepts/#project) and [region](/topics-and-events/concepts/#region) as the topic can be selected. ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834))
@@ -117,17 +83,10 @@ An HTTP or HTTPS subscription will have a `Pending` status until you **confirm** 1. Access the subscriptions listing page (from the console side menu, **Serverless** > **Topics and Events** > **Topics**, click the topic containing the subscription). -<<<<<<< HEAD -2. Click the icon next to the subscription you wish to confirm, then select **Confirm subscription** from the menu. A pop-up displays, with the following message: +2. Click the icon next to the subscription you wish to confirm, then select **Confirm subscription** from the menu. A pop-up displays with the following message: + ```A subscription confirmation message has been sent to the subscription endpoint. Retrieve the SubscribeURL value from the message and enter it in the box below. This is a necessary step to start receiving messages from the topic ``` - A subscription confirmation message has been sent to the subscription endpoint. Retrieve the SubscribeURL value from the message and enter it in the box below. This is a necessary step to start receiving messages from the topic. - ``` -======= -2. Click the icon next to the subscription you wish to confirm, then select **Confirm subscription** from the menu. A pop-up displays: - - ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) 3. Retrieve the confirmation message that Scaleway Topics and Events sent to your endpoint (delivered as an `HTTP POST` request), and extract the `SubscribeURL` from the message payload. @@ -143,11 +102,7 @@ When you no longer want a subscribed endpoint or service to receive messages fro 1. Click **Topics and Events** in the **Serverless** section of the Scaleway console side menu. -<<<<<<< HEAD -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the subscription you want to delete. -======= 2. Use the drop-down menu to select the [region](/topics-and-events/concepts/#region) containing the subscription you want to delete. ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) 3. Click the topic containing the subscription you want to delete. @@ -160,8 +115,3 @@ When you no longer want a subscribed endpoint or service to receive messages fro A pop-up asks you to confirm that you understand this action will delete the subscription. 6. Type **DELETE** and click **Delete subscription**. -<<<<<<< HEAD - - -======= ->>>>>>> a04957b37 (feat(topics): add separate topics and events doc (#4834)) From d76b00f3ed718dc3d5deb0b8b1ac579c37e7bae7 Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 5 May 2025 17:21:40 +0200 Subject: [PATCH 12/15] fix(filters): fix --- menu/filters.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/filters.json b/menu/filters.json index ea1c95c040..23922a5de6 100644 --- a/menu/filters.json +++ b/menu/filters.json @@ -109,7 +109,7 @@ "label": "Queues" }, { - "category": "topics-and-events", + "category": "Topics and Events", "label": "topics-and-events" } ], From 7fe61e71018783d43db189cd7377f152d6fbfe97 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Tue, 6 May 2025 09:16:32 +0200 Subject: [PATCH 13/15] Update pages/nats/how-to/create-account.mdx Co-authored-by: Jessica <113192637+jcirinosclwy@users.noreply.github.com> --- pages/nats/how-to/create-account.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/nats/how-to/create-account.mdx b/pages/nats/how-to/create-account.mdx index ba0e8b9dc0..887fb210eb 100644 --- a/pages/nats/how-to/create-account.mdx +++ b/pages/nats/how-to/create-account.mdx @@ -1,7 +1,7 @@ --- meta: title: How to create a NATS account - description: Kickstart your journey with Scaleway NAT. Learn how to set up, manage, and optimize your NATS services effortlessly. + description: Kickstart your journey with Scaleway NATS. Learn how to set up, manage, and optimize your NATS services effortlessly. content: h1: How to create a NATS account paragraph: Kickstart your journey with Scaleway NAT. Learn how to set up, manage, and optimize your NATS services effortlessly. From 6b52824f41e52104c1d10fb198258b47b5a75378 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Tue, 6 May 2025 09:16:39 +0200 Subject: [PATCH 14/15] Update pages/nats/how-to/create-account.mdx Co-authored-by: Jessica <113192637+jcirinosclwy@users.noreply.github.com> --- pages/nats/how-to/create-account.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/nats/how-to/create-account.mdx b/pages/nats/how-to/create-account.mdx index 887fb210eb..9232cadf90 100644 --- a/pages/nats/how-to/create-account.mdx +++ b/pages/nats/how-to/create-account.mdx @@ -4,7 +4,7 @@ meta: description: Kickstart your journey with Scaleway NATS. Learn how to set up, manage, and optimize your NATS services effortlessly. content: h1: How to create a NATS account - paragraph: Kickstart your journey with Scaleway NAT. Learn how to set up, manage, and optimize your NATS services effortlessly. + paragraph: Kickstart your journey with Scaleway NATS. Learn how to set up, manage, and optimize your NATS services effortlessly. tags: messaging queuing enable disable nats account categories: - serverless From e15970aa66aae9fbfda608f89672d1f66ecf47ba Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Tue, 6 May 2025 09:17:36 +0200 Subject: [PATCH 15/15] Update pages/topics-and-events/api-cli/connect-aws-cli.mdx --- pages/topics-and-events/api-cli/connect-aws-cli.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/topics-and-events/api-cli/connect-aws-cli.mdx b/pages/topics-and-events/api-cli/connect-aws-cli.mdx index 10762a2a4e..978e6714d3 100644 --- a/pages/topics-and-events/api-cli/connect-aws-cli.mdx +++ b/pages/topics-and-events/api-cli/connect-aws-cli.mdx @@ -98,7 +98,6 @@ Now you have installed the AWS-CLI, you need to configure it for use with Scalew ``` aws configure ``` -** 4. Open the `~/.aws/credentials` file you just created, and add the access key and secret key you saved when you generated your [credentials](/topics-and-events/how-to/create-credentials/): ``` [topics_events]