pyaesoneaung/aws-msk-iam-sasl-signer-php

AWS MSK IAM SASL Signer for PHP

v1.0.0 2024-01-14 12:47 UTC

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