Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan otentikasi HTTP dan otorisasi untuk Amazon MQ untuk RabbitMQ
Tutorial ini menjelaskan cara mengkonfigurasi otentikasi HTTP dan otorisasi untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan server HTTP eksternal.
catatan
Plugin otentikasi HTTP hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.
Di halaman ini
Prasyarat untuk mengonfigurasi otentikasi dan otorisasi HTTP
Anda dapat mengatur AWS sumber daya yang diperlukan dalam tutorial ini dengan menerapkan tumpukan AWS CDK untuk Amazon MQ untuk integrasi otentikasi HTTP RabbitMQ
Tumpukan CDK ini secara otomatis membuat semua AWS sumber daya yang diperlukan termasuk server otentikasi HTTP, sertifikat, dan peran IAM. Lihat paket README untuk daftar lengkap sumber daya yang dibuat oleh tumpukan.
Jika Anda menyiapkan sumber daya secara manual alih-alih menggunakan tumpukan CDK, pastikan Anda memiliki infrastruktur yang setara sebelum mengonfigurasi otentikasi HTTP di Amazon MQ Anda untuk broker RabbitMQ.
Prasyarat untuk mengatur Amazon MQ
AWS Versi CLI >= 2.28.23 untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.
Mengkonfigurasi otentikasi HTTP di RabbitMQ menggunakan CLI AWS
Prosedur ini menggunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan. Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder dengan nilai aktualnya.
-
Buat konfigurasi baru menggunakan perintah
create-configurationAWS CLI seperti yang ditunjukkan pada contoh berikut.aws mq create-configuration \ --name "rabbitmq-http-config" \ --engine-type "RABBITMQ" \ --engine-version "4.2"Perintah ini mengembalikan respon mirip dengan contoh berikut.
{ "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "AuthenticationStrategy": "simple", "Created": "2025-07-17T16:03:01.759943+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:03:01.759000+00:00", "Description": "Auto-generated default for rabbitmq-http-config on RabbitMQ 4.2", "Revision": 1 }, "Name": "rabbitmq-http-config" } -
Buat file konfigurasi yang dipanggil
rabbitmq.confuntuk menggunakan HTTP sebagai metode otentikasi dan otorisasi, seperti yang ditunjukkan pada contoh berikut. Ganti semua nilai placeholder dalam template (ditandai dengan${...}) dengan nilai aktual dari output tumpukan AWS CDK prasyarat yang diterapkan atau infrastruktur yang setara.auth_backends.1 = cache auth_backends.2 = http auth_cache.cached_backend = http # HTTP authentication settings # For more information, see https://github.com/rabbitmq/rabbitmq-auth-backend-http # FIXME: Replace the ${...} placeholders with actual values # from your deployed prerequisite CDK stack outputs. auth_http.http_method = post auth_http.user_path = ${HttpServerUserPath} auth_http.vhost_path = ${HttpServerVhostPath} auth_http.resource_path = ${HttpServerResourcePath} auth_http.topic_path = ${HttpServerTopicPath} # TLS/HTTPS configuration auth_http.ssl_options.verify = verify_peer auth_http.ssl_options.sni = test.amazonaws.com # AWS integration for secure credential retrieval # For more information, see https://github.com/amazon-mq/rabbitmq-aws # Replace the ${...} placeholders with actual ARN values # from your deployed prerequisite CDK stack outputs. aws.arns.assume_role_arn = ${AmazonMqAssumeRoleArn} aws.arns.auth_http.ssl_options.cacertfile = ${CaCertArn} -
Perbarui konfigurasi menggunakan perintah
update-configurationAWS CLI. Gunakan ID konfigurasi dari Langkah 3.aws mq update-configuration \ --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \ --data "$(cat rabbitmq.conf | base64 --wrap=0)"Perintah ini mengembalikan respon mirip dengan contoh berikut.
{ "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "Created": "2025-07-17T16:57:04.520931+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:57:39.172000+00:00", "Revision": 2 }, "Name": "rabbitmq-http-config", "Warnings": [] } -
Buat broker dengan konfigurasi HTTP. Gunakan ID konfigurasi dan nomor revisi dari langkah sebelumnya.
aws mq create-broker \ --broker-name "rabbitmq-http-test-1" \ --engine-type "RABBITMQ" \ --engine-version "4.2" \ --host-instance-type "mq.m7g.large" \ --deployment-mode "SINGLE_INSTANCE" \ --logs '{"General": true}' \ --publicly-accessible \ --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}'Perintah ini mengembalikan respon mirip dengan contoh berikut.
{ "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-http-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73", "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73" } -
Verifikasi bahwa status broker bertransisi dari
CREATION_IN_PROGRESSkeRUNNING, menggunakan perintahdescribe-brokerAWS CLI.aws mq describe-broker \ --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"Perintah ini mengembalikan respon mirip dengan contoh berikut. Strategi
config_managedotentikasi menunjukkan bahwa broker menggunakan metode otentikasi HTTP.{ "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... } -
Validasi akses RabbitMQ menggunakan salah satu pengguna pengujian yang dibuat oleh tumpukan CDK prasyarat
# FIXME: Replace ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} with the actual ARN from your deployed prerequisite CDK stack outputs CONSOLE_PASSWORD=$(aws secretsmanager get-secret-value \ --secret-id ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} \ --query 'SecretString' --output text) # FIXME: Replace BrokerConsoleURL with the actual ConsoleURL retrieved by # calling describe-broker for the broker created above # Call management API /api/overview (should succeed) curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \ https://${BrokerConsoleURL}/api/overview # Try to create a vhost (should fail - console user only has management permissions) curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \ -X PUT https://${BrokerConsoleURL}/api/vhosts/test-vhost \ -H "Content-Type: application/json" \ -d '{}'