Skip to content

Commit

Permalink
docs(examples): add NATS triggers in triggers-getting-started
Browse files Browse the repository at this point in the history
  • Loading branch information
Bemilie committed Jan 8, 2024
1 parent 3b63d8f commit 82dfda6
Show file tree
Hide file tree
Showing 8 changed files with 73 additions and 18 deletions.
21 changes: 12 additions & 9 deletions functions/triggers-getting-started/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ locals {
handler = "handler"
}
}
subject_name = "triggers-nats-factorial"
}

resource "scaleway_function_namespace" "main" {
Expand Down Expand Up @@ -59,21 +60,23 @@ resource "scaleway_function" "main" {
min_scale = 0
}

resource "scaleway_mnq_sqs_queue" "main" {
resource "scaleway_function_trigger" "main_sqs" {
for_each = local.functions

name = "factorial-requests-${each.key}"

access_key = scaleway_mnq_sqs_credentials.main.access_key
secret_key = scaleway_mnq_sqs_credentials.main.secret_key
function_id = scaleway_function.main[each.key].id
name = "sqs-on-factorial-request"
sqs {
queue = scaleway_mnq_sqs_queue.main[each.key].name
}
}

resource "scaleway_function_trigger" "main" {
resource "scaleway_function_trigger" "main_nats" {
for_each = local.functions

function_id = scaleway_function.main[each.key].id
name = "on-factorial-request"
sqs {
queue = scaleway_mnq_sqs_queue.main[each.key].name
name = "nats-on-factorial-request"
nats {
account_id = scaleway_mnq_nats_account.main.id
subject = local.subject_name
}
}
8 changes: 0 additions & 8 deletions functions/triggers-getting-started/messaging.tf

This file was deleted.

13 changes: 13 additions & 0 deletions functions/triggers-getting-started/nats.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
resource "scaleway_mnq_nats_account" "main" {
name = "nats-account"
}

resource "scaleway_mnq_nats_credentials" "main" {
account_id = scaleway_mnq_nats_account.main.id
name = "triggers-nats"
}

resource "local_sensitive_file" "nats" {
filename = "triggers-nats.creds"
content = scaleway_mnq_nats_credentials.main.file
}
6 changes: 5 additions & 1 deletion functions/triggers-getting-started/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
output "sqs_access_key" {
value = scaleway_mnq_sqs_credentials.main.access_key
value = scaleway_mnq_sqs_credentials.main.access_key
sensitive = true
}

output "sqs_secret_key" {
value = scaleway_mnq_sqs_credentials.main.secret_key
sensitive = true
}

output "subject_name" {
value = local.subject_name
}
17 changes: 17 additions & 0 deletions functions/triggers-getting-started/sqs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
resource "scaleway_mnq_sqs_credentials" "main" {
name = "triggers-getting-started"
permissions {
can_publish = true
can_receive = true
can_manage = true
}
}

resource "scaleway_mnq_sqs_queue" "main" {
for_each = local.functions

name = "factorial-requests-${each.key}"

access_key = scaleway_mnq_sqs_credentials.main.access_key
secret_key = scaleway_mnq_sqs_credentials.main.secret_key
}
2 changes: 2 additions & 0 deletions functions/triggers-getting-started/tests/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
boto3<1.28.81
botocore<1.31.81
requests~=2.31.0
nats-py==2.6.0
nkeys==0.1.0
24 changes: 24 additions & 0 deletions functions/triggers-getting-started/tests/send_nats_messages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import os

import asyncio
import nats

MAX_FACTORIAL_REQUESTS = 20

# Credentials file generated by Terraform
NATS_CREDS_FILE = os.environ["NATS_CREDS_FILE"]
NATS_ENDPOINT_URL = "nats://nats.mnq.fr-par.scaleway.com:4222"
SUBJECT_NAME = os.environ["NATS_SUBJECT"]

async def send_nats():
nc = await nats.connect(NATS_ENDPOINT_URL, user_credentials=NATS_CREDS_FILE)

print(f"Sending 0..{MAX_FACTORIAL_REQUESTS} factorial requests to {SUBJECT_NAME}...")
for i in range(MAX_FACTORIAL_REQUESTS):
await nc.publish(SUBJECT_NAME, f"{i}".encode())

await nc.close()


if __name__ == "__main__":
asyncio.run(send_nats())

0 comments on commit 82dfda6

Please sign in to comment.