Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services python中的AWS polly示例?_Amazon Web Services_Asterisk_Amazon Polly - Fatal编程技术网

Amazon web services python中的AWS polly示例?

Amazon web services python中的AWS polly示例?,amazon-web-services,asterisk,amazon-polly,Amazon Web Services,Asterisk,Amazon Polly,我第一次尝试AWS服务。我必须将AWS polly与asterisk集成,以实现文本到语音的转换 下面是我编写的将文本转换为语音的示例代码 from boto3 import client import boto3 import StringIO from contextlib import closing polly = client("polly", 'us-east-1' ) response = polly.synthesize_speech( Text="Good Morn

我第一次尝试AWS服务。我必须将AWS polly与asterisk集成,以实现文本到语音的转换

下面是我编写的将文本转换为语音的示例代码

from boto3 import  client
import boto3
import StringIO
from contextlib import closing

polly = client("polly", 'us-east-1' )
response = polly.synthesize_speech(
    Text="Good Morning. My Name is Rajesh. I am Testing Polly AWS Service For Voice Application.",
    OutputFormat="mp3",
    VoiceId="Raveena")

print(response)

if "AudioStream" in response:
    with closing(response["AudioStream"]) as stream:
        data = stream.read()
        fo = open("pollytest.mp3", "w+")
        fo.write( data )
        fo.close()
我得到以下错误

Traceback (most recent call last):
  File "pollytest.py", line 11, in <module>
    VoiceId="Raveena")
  File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 253, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 530, in _make_api_call
    operation_model, request_dict)
  File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 141, in make_request
    return self._send_request(request_dict, operation_model)
  File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 166, in _send_request
    request = self.create_request(request_dict, operation_model)
  File "/usr/local/lib/python2.7/dist-packages/botocore/endpoint.py", line 150, in create_request
    operation_name=operation_model.name)
  File "/usr/local/lib/python2.7/dist-packages/botocore/hooks.py", line 227, in emit
    return self._emit(event_name, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/botocore/hooks.py", line 210, in _emit
    response = handler(**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/botocore/signers.py", line 90, in handler
    return self.sign(operation_name, request)
  File "/usr/local/lib/python2.7/dist-packages/botocore/signers.py", line 147, in sign
    auth.add_auth(request)
  File "/usr/local/lib/python2.7/dist-packages/botocore/auth.py", line 316, in add_auth
    raise NoCredentialsError
botocore.exceptions.NoCredentialsError: Unable to locate credentials

现在,对于我当前的登录用户,它工作正常,但是对于asterisk PBX,它不工作。

您的代码对我来说运行得非常好

最后一句话是:

botocore.exceptions.NoCredentialsError: Unable to locate credentials
因此,它无法针对AWS进行身份验证

如果在AmazonEC2实例上运行此代码,最简单的方法是在实例启动时为其分配IAM角色(以后无法添加)。这将自动分配可由实例上运行的应用程序使用的凭据—无需更改代码

或者,您可以从IAM为您的IAM用户获取访问密钥和密钥,并通过
aws configure
命令将这些凭据存储在本地文件中

将凭据放在源代码中是一种不好的做法,因为它们可能会被破坏

见:


请注意,星号pbx通常在星号用户下运行


所以您已经为该用户而不是root用户设置了身份验证。

我已经创建了~/.aws/credentials文件,并在默认部分提供了凭证。现在它为我的用户工作。但对于星号PBX,它给出了错误。你说“但对于星号PBX,它给出了错误”是什么意思?PBX是否在不同的用户帐户下运行。在这种情况下,也在该用户的主目录中创建一个凭据文件。最坏的情况是,在创建
客户端()
时,您可以将凭据放入代码中(使用
aws\u access\u key\u id=access\u key,aws\u secret\u access\u key=secret\u key
),但这是一种非常不安全的方法。感谢我用Python编写了用户配置文件,并将凭据保存在配置文件中。还成功地与asterisk PBX集成。
botocore.exceptions.NoCredentialsError: Unable to locate credentials