2016-07-13 20 views
10

私はAWS Lambda関数からboto3 publishメソッドを使用してSMSメッセージを送信して、SMS経由で問題をユーザーに通知したいと考えています。私のラムダ関数はPythonで書かれており、私はboto3モジュールを使っています。私のラムダ関数はSNSに対する完全な権利を持っています。私は、このコードを持っているAWS Lambda関数でboto3を使用してAWS SNS経由でSMSメッセージを送信するにはどうすればよいですか?

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

boto3 documentationによると、公開方法は、以下のパラメーターを受け入れ、

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

で説明したように、「メッセージ」パラメータ以下の3つのパラメータのいずれかが必要です。 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が可能なパラメータではないことがエラーからのフィードバックによって示されています。 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

関連する問題