Skip to content

Commit fa16ff4

Browse files
yorklolshanye997
authored andcommitted
rabbitmq-serverless
1 parent 43be480 commit fa16ff4

File tree

4 files changed

+145
-0
lines changed

4 files changed

+145
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
## Introduction
2+
3+
<!-- DOCS_DESCRIPTION_CN -->
4+
本示例用于实现解决方案[云消息队列 RabbitMQ 实践](https://www.aliyun.com/solution/tech-solution/rabbitmq-serverless), 涉及到RabbitMQ实例、RAM 用户等资源的创建。
5+
<!-- DOCS_DESCRIPTION_CN -->
6+
7+
<!-- DOCS_DESCRIPTION_EN -->
8+
This example is used to implement solution [RabbitMQ Tutorial](https://www.aliyun.com/solution/tech-solution/rabbitmq-serverless). It involves the creation, and deployment of resources such as a RabbitMQ instance, and RAM users.
9+
<!-- DOCS_DESCRIPTION_EN -->
10+
11+
<!-- BEGIN_TF_DOCS -->
12+
## Providers
13+
14+
| Name | Version |
15+
|------|---------|
16+
| <a name="provider_alicloud"></a> [alicloud](#provider\_alicloud) | n/a |
17+
| <a name="provider_random"></a> [random](#provider\_random) | n/a |
18+
19+
## Modules
20+
21+
No modules.
22+
23+
## Resources
24+
25+
| Name | Type |
26+
|------|------|
27+
| [alicloud_amqp_binding.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_binding) | resource |
28+
| [alicloud_amqp_exchange.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_exchange) | resource |
29+
| [alicloud_amqp_instance.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_instance) | resource |
30+
| [alicloud_amqp_queue.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_queue) | resource |
31+
| [alicloud_amqp_static_account.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_static_account) | resource |
32+
| [alicloud_amqp_virtual_host.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_virtual_host) | resource |
33+
| [alicloud_ram_access_key.ramak](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_access_key) | resource |
34+
| [alicloud_ram_policy.policy](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_policy) | resource |
35+
| [alicloud_ram_user.ram_user](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_user) | resource |
36+
| [alicloud_ram_user_policy_attachment.attach_policy_to_user](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_user_policy_attachment) | resource |
37+
| [random_string.suffix](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string) | resource |
38+
39+
## Inputs
40+
41+
| Name | Description | Type | Default | Required |
42+
|------|-------------|------|---------|:--------:|
43+
| <a name="input_region"></a> [region](#input\_region) | n/a | `string` | `"cn-hangzhou"` | no |
44+
<!-- END_TF_DOCS -->
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
provider "alicloud" {
2+
region = var.region
3+
}
4+
5+
resource "random_string" "suffix" {
6+
length = 8
7+
lower = true
8+
upper = false
9+
numeric = false
10+
special = false
11+
}
12+
13+
locals {
14+
common_name = random_string.suffix.id
15+
}
16+
17+
resource "alicloud_ram_user" "ram_user" {
18+
name = "create-by-solution-${local.common_name}"
19+
}
20+
21+
resource "alicloud_ram_access_key" "ramak" {
22+
user_name = alicloud_ram_user.ram_user.name
23+
}
24+
25+
resource "alicloud_ram_policy" "policy" {
26+
policy_name = "ram-policy-${local.common_name}"
27+
policy_document = <<EOF
28+
{
29+
"Version": "1",
30+
"Statement": [
31+
{
32+
"Effect": "Allow",
33+
"Action": [
34+
"amqp:*",
35+
"amqp-open:*"
36+
],
37+
"Resource": "*"
38+
}
39+
]
40+
}
41+
EOF
42+
description = "allow all amqp operations"
43+
}
44+
45+
resource "alicloud_ram_user_policy_attachment" "attach_policy_to_user" {
46+
user_name = alicloud_ram_user.ram_user.name
47+
policy_type = "Custom"
48+
policy_name = alicloud_ram_policy.policy.policy_name
49+
}
50+
51+
resource "alicloud_amqp_instance" "default" {
52+
instance_name = "test-instance-${local.common_name}"
53+
payment_type = "PayAsYouGo"
54+
serverless_charge_type = "onDemand"
55+
support_eip = true
56+
support_tracing = true
57+
}
58+
59+
resource "alicloud_amqp_static_account" "default" {
60+
instance_id = alicloud_amqp_instance.default.id
61+
access_key = alicloud_ram_access_key.ramak.id
62+
secret_key = alicloud_ram_access_key.ramak.secret
63+
}
64+
65+
resource "alicloud_amqp_virtual_host" "default" {
66+
instance_id = alicloud_amqp_instance.default.id
67+
virtual_host_name = "test-vhost-${local.common_name}"
68+
}
69+
70+
resource "alicloud_amqp_exchange" "default" {
71+
virtual_host_name = alicloud_amqp_virtual_host.default.virtual_host_name
72+
instance_id = alicloud_amqp_instance.default.id
73+
internal = false
74+
auto_delete_state = false
75+
exchange_name = "test-exchange-${local.common_name}"
76+
exchange_type = "DIRECT"
77+
}
78+
79+
resource "alicloud_amqp_queue" "default" {
80+
instance_id = alicloud_amqp_instance.default.id
81+
queue_name = "test-queue-${local.common_name}"
82+
virtual_host_name = alicloud_amqp_virtual_host.default.virtual_host_name
83+
auto_delete_state = false
84+
}
85+
86+
resource "alicloud_amqp_binding" "default" {
87+
binding_key = "binding-key-${local.common_name}"
88+
binding_type = "QUEUE"
89+
destination_name = alicloud_amqp_queue.default.queue_name
90+
instance_id = alicloud_amqp_instance.default.id
91+
source_exchange = alicloud_amqp_exchange.default.exchange_name
92+
virtual_host_name = alicloud_amqp_virtual_host.default.virtual_host_name
93+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
output "rabbitmq_detail_address" {
2+
description = "RabbitMQ实例详情页。"
3+
value = format("https://amqp.console.aliyun.com/region/%s/instance/%s/instance-detail", var.region, alicloud_amqp_instance.default.id)
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
variable "region" {
2+
type = string
3+
default = "cn-hangzhou"
4+
}

0 commit comments

Comments
 (0)