pyaesoneaung / aws-msk-iam-sasl-signer-php
AWS MSK IAM SASL Signer for PHP
v1.0.0
2024-01-14 12:47 UTC
Requires
- php: ^8.1
- aws/aws-sdk-php: ^3.296
Requires (Dev)
- laravel/pint: ^1.0
- pestphp/pest: ^2.15
- spatie/ray: ^1.28
This package is auto-updated.
Last update: 2024-09-23 16:26:18 UTC
README
aws-msk-iam-sasl-signer-php 是针对 PHP 编程语言的 AWS MSK IAM SASL Signer。
有关 Amazon MSK IAM 认证的更多信息,请参阅Amazon 博客文章。
安装
composer require pyaesoneaung/aws-msk-iam-sasl-signer-php
用法
use PyaeSoneAung\AwsMskIamSaslSigner\AwsMskIamSaslSigner; $awsMskIamSaslSigner = new AwsMskIamSaslSigner( 'us-east-1', // region 'testAccessKeyId', // iam access key id 'testSecretAccessKey' // iam secret access key ); $token = $awsMskIamSaslSigner->generateToken(); // [ // 'token' => 'aHR0cHM6Ly9rYWZrYS5hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tLz9BY3Rpb249a2Fma2EtY2x1c3RlciUzQUNvbm5lY3QmVXNlci1BZ2VudD1hd3MtbXNrLWlhbS1zYXNsLXNpZ25lci1waHAlMkYxLjAuMCZYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPXRlc3RBY2Nlc3NLZXlJZCUyRjIwMjQwMTE0JTJGYXAtc291dGhlYXN0LTElMkZrYWZrYS1jbHVzdGVyJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDAxMTRUMTIyNTQ5WiZYLUFtei1FeHBpcmVzPTkwMCZYLUFtei1TaWduYXR1cmU9NWUxYzY4YzI5NDRkN2I2NjY0ZDkyMTJkMGJlMDQ1NTYyYzc5Y2U0NTZhNGJjZjg2YTQ3NTk3NDcxMjI3NTY3YyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3Q', // 'expiryTime' => 1705236049000 // ]
Kafka 使用 (php-simple-kafka-client)
针对 https://github.com/php-kafka/php-simple-kafka-client 的 Kafka 使用
use PyaeSoneAung\AwsMskIamSaslSigner\AwsMskIamSaslSigner; use SimpleKafkaClient\Configuration; use SimpleKafkaClient\Producer; $conf = new Configuration(); $conf->set('metadata.broker.list', 'kafka:9092'); $conf->set('security.protocol', 'SASL_SSL'); $conf->set('sasl.mechanisms', 'OAUTHBEARER'); $producer = new Producer($conf); $awsMskIamSaslSigner = new AwsMskIamSaslSigner( 'us-east-1', 'testAccessKeyId', 'testSecretAccessKey' ); $token = $awsMskIamSaslSigner->generateToken(); $producer->setOAuthBearerToken($token['token'], $token['expiryTime'], 'principalClaimName=azp'); $topic = $producer->getTopicHandle('topic-name'); $topic->producev( RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_BLOCK, 'value', 'key', ['header-key' => 'header-value'] ); $producer->poll(0); $result = $producer->flush(20000);
测试
composer test