2017-02-08 6 views
5

처음 AWS 서비스를 시험하고 있습니다. AWS polly와 별표를 통합하여 음성 텍스트를 작성해야합니다. 여기 AWS polly의 예제를 파이썬으로 작성 하시겠습니까?

내가 오류 다음 무엇입니까 연설

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 

별표 시스템 응용 프로그램에서이 스크립트를 사용하려면이 스크립트에서 직접 자격 증명을 제공하고 싶습니다.

는 UPDATE : 는 작업을 잘 내 현재 로그인 사용자의 현재 내용

아래
[default] 
aws_access_key_id=XXXXXXXX 
aws_secret_access_key=YYYYYYYYYYY 

가진 파일 ~/.aws/자격 증명을 만들었지 만 별표 PBX를 위해 작동하지 않습니다.

답변

2

코드가 완벽하게 정상적으로 실행됩니다.

마지막 줄은 말하고있다 :

botocore.exceptions.NoCredentialsError: Unable to locate credentials 

그래서, AWS에 대해 인증 할 수 없습니다.

Amazon EC2 인스턴스에서이 코드를 실행하는 경우 가장 간단한 방법은 인스턴스를 시작할 때 인스턴스에 IAM 역할을 할당하는 것입니다 (나중에 추가 할 수 없음). 이렇게하면 인스턴스에서 실행중인 응용 프로그램에서 사용할 수있는 자격 증명이 자동으로 할당되므로 코드를 변경할 필요가 없습니다.

또는 IAM 사용자의 IAM에서 액세스 키와 비밀 키를 얻어 aws configure 명령을 통해 로컬 파일에 저장할 수 있습니다.

자격 증명이 손상 될 수 있으므로 소스 코드에 자격 증명을 넣는 것은 나쁜 습관입니다.

참조 :

+0

나는 ~/.aws/credentials 파일을 만들고 기본 섹션에 자격 증명을 제공했습니다. 이제는 내 사용자를 위해 일하고 있습니다. 그러나 별표 PBX의 경우 오류가 발생합니다. – rajesh6115

+0

"별표 PBX의 경우 오류가 발생합니다"는 의미는 무엇입니까? PBX가 다른 사용자 계정으로 실행됩니까? 이 경우 해당 사용자의 홈 디렉토리에도 자격 증명 파일을 만듭니다. 최악의 경우에 코드에 자격 증명을 넣을 수 있습니다 ('client()를 만들 때 aws_access_key_id = ACCESS_KEY, aws_secret_access_key = SECRET_KEY' 사용). 매우 안전하지 않은 방법입니다. –

+0

파이썬의 사용자 구성 파일에 감사 드리며 설정 파일에 자격 증명을 보관합니다. 또한 별표 PBX와도 성공적으로 통합되었습니다. – rajesh6115

0

주의 사항은, 별표 PBX는 일반적으로 별표 사용자로 실행합니다.

그래서 루트가 아닌 해당 사용자에 대한 인증을 입력했습니다.