从 boto3 生成 AWS HTTP 签名
Generate the AWS HTTP signature from boto3
我正在使用 boto3 尚不支持的 AWS Transcribe streaming 服务,因此要发出 HTTP/2 请求,我需要手动设置 authorization
header “AWS 签名版本 4”
我找到了一些示例 implementation,但我希望只调用 boto3/botocore 使用相同配置 object 实现的任何函数 object。
类似
session = boto3.Session(...)
auth = session.generate_signature('POST', '/stream-transcription', ...)
有这方面的指示吗?
我还没有对此进行测试,但您可以通过遵循此 SigV4 单元测试来完成此操作:
https://github.com/boto/botocore/blob/master/tests/unit/test_auth_sigv4.py
请注意,这会使用 botocore.awsrequest.AWSRequest
助手构造一个请求。您可能需要深入研究如何发送实际的 HTTP 请求(可能使用 httpsession.py)
你检查过这个SDK了吗?看起来很新,但可能会满足您的需要。
https://github.com/awslabs/amazon-transcribe-streaming-sdk/tree/master
看起来它处理了签名:https://github.com/awslabs/amazon-transcribe-streaming-sdk/blob/master/amazon_transcribe/signer.py
与大多数其他编程语言的 AWS SDK 不同,boto3
/botocore
不提供使用“AWS 签名版本 4”签署任意请求的功能。但是至少已经有一个开放的功能请求:https://github.com/boto/botocore/issues/1784
在此功能请求中,还讨论了现有的替代方案。一个是第三方 Python 库 aws-requests-auth
,它提供了一个围绕 botocore
和 requests
的瘦包装器来签署 HTTP 请求。看起来像下面这样:
import requests
from aws_requests_auth.boto_utils import BotoAWSRequestsAuth
auth = BotoAWSRequestsAuth(aws_host="your-service.domain.tld",
aws_region="us-east-1",
aws_service="execute-api")
response = requests.get("https://your-service.domain.tld",
auth=auth)
功能请求中提出的另一种选择是自行实施必要的粘合代码,如以下要点所示:https://gist.github.com/rhboyd/1e01190a6b27ca4ba817bf272d5a5f9a.
我正在使用 boto3 尚不支持的 AWS Transcribe streaming 服务,因此要发出 HTTP/2 请求,我需要手动设置 authorization
header “AWS 签名版本 4”
我找到了一些示例 implementation,但我希望只调用 boto3/botocore 使用相同配置 object 实现的任何函数 object。
类似
session = boto3.Session(...)
auth = session.generate_signature('POST', '/stream-transcription', ...)
有这方面的指示吗?
我还没有对此进行测试,但您可以通过遵循此 SigV4 单元测试来完成此操作:
https://github.com/boto/botocore/blob/master/tests/unit/test_auth_sigv4.py
请注意,这会使用 botocore.awsrequest.AWSRequest
助手构造一个请求。您可能需要深入研究如何发送实际的 HTTP 请求(可能使用 httpsession.py)
你检查过这个SDK了吗?看起来很新,但可能会满足您的需要。
https://github.com/awslabs/amazon-transcribe-streaming-sdk/tree/master
看起来它处理了签名:https://github.com/awslabs/amazon-transcribe-streaming-sdk/blob/master/amazon_transcribe/signer.py
与大多数其他编程语言的 AWS SDK 不同,boto3
/botocore
不提供使用“AWS 签名版本 4”签署任意请求的功能。但是至少已经有一个开放的功能请求:https://github.com/boto/botocore/issues/1784
在此功能请求中,还讨论了现有的替代方案。一个是第三方 Python 库 aws-requests-auth
,它提供了一个围绕 botocore
和 requests
的瘦包装器来签署 HTTP 请求。看起来像下面这样:
import requests
from aws_requests_auth.boto_utils import BotoAWSRequestsAuth
auth = BotoAWSRequestsAuth(aws_host="your-service.domain.tld",
aws_region="us-east-1",
aws_service="execute-api")
response = requests.get("https://your-service.domain.tld",
auth=auth)
功能请求中提出的另一种选择是自行实施必要的粘合代码,如以下要点所示:https://gist.github.com/rhboyd/1e01190a6b27ca4ba817bf272d5a5f9a.