Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions solution/tech-solution/rabbitmq-serverless/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<!-- DOCS_DESCRIPTION_CN -->
本示例用于实现解决方案[云消息队列 RabbitMQ 实践](https://www.aliyun.com/solution/tech-solution/rabbitmq-serverless), 涉及到RabbitMQ实例、RAM 用户等资源的创建。
<!-- DOCS_DESCRIPTION_CN -->

<!-- DOCS_DESCRIPTION_EN -->
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.
<!-- DOCS_DESCRIPTION_EN -->

<!-- BEGIN_TF_DOCS -->
## Providers

| Name | Version |
|------|---------|
| <a name="provider_alicloud"></a> [alicloud](#provider\_alicloud) | n/a |
| <a name="provider_random"></a> [random](#provider\_random) | n/a |

## Modules

No modules.

## Resources

| Name | Type |
|------|------|
| [alicloud_amqp_binding.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_binding) | resource |
| [alicloud_amqp_exchange.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_exchange) | resource |
| [alicloud_amqp_instance.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_instance) | resource |
| [alicloud_amqp_queue.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_queue) | resource |
| [alicloud_amqp_static_account.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_static_account) | resource |
| [alicloud_amqp_virtual_host.default](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/amqp_virtual_host) | resource |
| [alicloud_ram_access_key.ramak](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_access_key) | resource |
| [alicloud_ram_policy.policy](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_policy) | resource |
| [alicloud_ram_user.ram_user](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_user) | resource |
| [alicloud_ram_user_policy_attachment.attach_policy_to_user](https://registry.terraform.io/providers/hashicorp/alicloud/latest/docs/resources/ram_user_policy_attachment) | resource |
| [random_string.suffix](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string) | resource |

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_region"></a> [region](#input\_region) | n/a | `string` | `"cn-hangzhou"` | no |
<!-- END_TF_DOCS -->
93 changes: 93 additions & 0 deletions solution/tech-solution/rabbitmq-serverless/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
provider "alicloud" {
region = var.region
}

resource "random_string" "suffix" {
length = 8
lower = true
upper = false
numeric = false
special = false
}

locals {
common_name = random_string.suffix.id
}

resource "alicloud_ram_user" "ram_user" {
name = "create-by-solution-${local.common_name}"
}

resource "alicloud_ram_access_key" "ramak" {
user_name = alicloud_ram_user.ram_user.name
}

resource "alicloud_ram_policy" "policy" {
policy_name = "ram-policy-${local.common_name}"
policy_document = <<EOF
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"amqp:*",
"amqp-open:*"
],
"Resource": "*"
}
]
}
EOF
description = "allow all amqp operations"
}

resource "alicloud_ram_user_policy_attachment" "attach_policy_to_user" {
user_name = alicloud_ram_user.ram_user.name
policy_type = "Custom"
policy_name = alicloud_ram_policy.policy.policy_name
}

resource "alicloud_amqp_instance" "default" {
instance_name = "test-instance-${local.common_name}"
payment_type = "PayAsYouGo"
serverless_charge_type = "onDemand"
support_eip = true
support_tracing = true
}

resource "alicloud_amqp_static_account" "default" {
instance_id = alicloud_amqp_instance.default.id
access_key = alicloud_ram_access_key.ramak.id
secret_key = alicloud_ram_access_key.ramak.secret
}

resource "alicloud_amqp_virtual_host" "default" {
instance_id = alicloud_amqp_instance.default.id
virtual_host_name = "test-vhost-${local.common_name}"
}

resource "alicloud_amqp_exchange" "default" {
virtual_host_name = alicloud_amqp_virtual_host.default.virtual_host_name
instance_id = alicloud_amqp_instance.default.id
internal = false
auto_delete_state = false
exchange_name = "test-exchange-${local.common_name}"
exchange_type = "DIRECT"
}

resource "alicloud_amqp_queue" "default" {
instance_id = alicloud_amqp_instance.default.id
queue_name = "test-queue-${local.common_name}"
virtual_host_name = alicloud_amqp_virtual_host.default.virtual_host_name
auto_delete_state = false
}

resource "alicloud_amqp_binding" "default" {
binding_key = "binding-key-${local.common_name}"
binding_type = "QUEUE"
destination_name = alicloud_amqp_queue.default.queue_name
instance_id = alicloud_amqp_instance.default.id
source_exchange = alicloud_amqp_exchange.default.exchange_name
virtual_host_name = alicloud_amqp_virtual_host.default.virtual_host_name
}
4 changes: 4 additions & 0 deletions solution/tech-solution/rabbitmq-serverless/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
output "rabbitmq_detail_address" {
description = "RabbitMQ实例详情页。"
value = format("https://amqp.console.aliyun.com/region/%s/instance/%s/instance-detail", var.region, alicloud_amqp_instance.default.id)
}
4 changes: 4 additions & 0 deletions solution/tech-solution/rabbitmq-serverless/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
variable "region" {
type = string
default = "cn-hangzhou"
}
Loading