2016-07-13 5 views
10

SMS를 통해 문제를 사용자에게 알리기 위해 boto3 게시 메소드를 사용하여 AWS 람다 함수에서 SMS 메시지를 보내고 싶습니다. 내 람다 함수는 파이썬으로 작성되었으며 boto3 모듈을 사용하고 있습니다. 내 람다 함수는 SNS에 대한 완전한 권리를 가지고 있습니다. 나는 boto3 documentation, 방법은 다음과 같은 매개 변수를 사용할 수 게시에 따르면이 코드,AWS Lambda 함수에서 boto3을 사용하여 AWS SNS를 통해 SMS 메시지를 보내려면 어떻게해야합니까?

sns = boto3.client('sns') 
sns.publish(
    PhoneNumber = '+11234567890', 
    Message = 'Simple text message' 
) 

response = client.publish(
    TopicArn='string', 
    TargetArn='string', 
    PhoneNumber='string', 
    Message='string', 
    Subject='string', 
    MessageStructure='string', 
    MessageAttributes={ 
     'string': { 
      'DataType': 'string', 
      'StringValue': 'string', 
      'BinaryValue': b'bytes' 
     } 
    } 
) 

에 설명 된대로 그것은 "메시지"매개 변수와 다음 세 가지 매개 변수 중 하나가 필요합니다 docs :

TopicArn (문자열) - 게시 할 주제입니다.

TopicArn 매개 변수에 값을 지정하지 않은 경우PhoneNumber 또는 TargetArn 매개 변수의 값을 지정해야합니다.

TargetArn (문자열) - TopicArn 또는 EndpointArn 중 하나만 사용할 수 있지만 둘 다 사용할 수는 없습니다.

TargetArn 매개 변수의 값을 지정하지 않은 경우 PhoneNumber 또는 TopicArn 매개 변수의 값을 지정해야합니다.

PhoneNumber (문자열) - 전달할 전화 번호 SMS 메시지. E.164 형식을 사용하십시오.

PhoneNumber 매개 변수의 값을 지정하지 않으면 TargetArn 또는 TopicArn 매개 변수의 값을 지정해야합니다.

내 코드가 실행되면 매개 변수 유효성 검사 오류가 반환됩니다. 그것은 상태

입력에

알 수없는 매개 변수 : "PHONENUMBER"중 하나 여야합니다 "TopicArn, TargetArn> 메시지, 주제, MessageStructure, MessageAttributes을

그래서 설명서를 나타내는 것으로 보인다. PhoneNumber는 유효한 매개 변수이지만 사용하면 오류가 발생하고 PhoneNumber가 가능한 매개 변수가 아니라는 오류 메시지가 표시됩니다. 분명하고 단순한 내용이 누락 된 것으로 보이지만 도움이 필요합니다.

I em과 같은 SMS 메시지를 보낼 수있는 다른 방법이 있다는 것을 알고 있습니다. Ail 게이트웨이 및 Twilio와 같은 다른 공급 업체의 솔루션을 제공하지만 SNS 기반 경로를 추구하고 어디에서 잘못되었는지 이해하고 싶습니다.

+0

이것이 궁극적으로 효과가 있습니까? 귀하의 호출은 나를 위해 일한 것처럼, 바로 보인다 – Atifm

답변

16

실제로보기가 옳습니다. 여기 내가 시도한 것입니다

import boto3 
sns = boto3.client('sns') 
number = '+17702233322' 
sns.publish(PhoneNumber = number, Message='example text message') 

매력처럼 작동합니다. 우선 root 계정 자격 증명으로 구성된 awscli를 사용하고 테스트 드라이브 용 코드를 가져 오는 것이 좋습니다. 작업이 끝나면 필요한 권한을 가진 새로운 사용자를 만들거나 인스턴스 역할에 적용합니다.

SNS를 허용하는 정책을 만들어야합니다. 리소스 게시 : * (모든 사용자에게 문자 메시지 허용) 또는 리소스 : '+17702233322'(텍스트에 특정 번호 허용).

+1

나는 내 코드를 전혀 수정하지 못했습니다; 그것은 그대로 작동했습니다. 잘못된 매개 변수 오류를 가져 오는 데 사용하는 곳에서 더 이상 아무것도받을 수 없기 때문에 boto3 업데이트가 필요합니다. 이 기능을 사용하려면 코드를 다시 보내 주셔서 감사합니다. – kelflanagan

+1

걱정할 필요가 없습니다. 그래, 내가 당신의 코드를 시도했을 때, 그것은 잘 작동했기 때문에 나는 다른 것이 그 문제 일 것이라고 생각했다. 그것이 결국 효과적이기 때문에 다행. – Atifm

+0

안녕하세요 @atifm이 코드를 사용해 보았습니다. 응답 코드는 200입니다. 그러나 문자 메시지를받지 못했습니다. 가능한 이유를 제시하거나 해결할 수 있습니까? – Naveen

관련 문제