2016-11-25 15 views
0

boto(または他のpython | perlライブラリ)を使用してAWS SNS経由で携帯電話番号に直接SMSを送信するにはどうすればよいですか?botoを使用してAWS SNS経由でSMSを送信するスクリプト

制約:AWS SNSを使用してNagiosのからSMSアラートを送信使用してAWS SMS:

  • AWSラムダ関数を使用せずに
  • の携帯電話番号に直接

私のユースケースを購読するSNSのトピックを使用せずエンドポイントプロトコルとして使用します。

+0

あなたはラムダやSNSのトピックを必要としない、との例では、ドキュメントであり、それはJavaでなく、翻訳することは非常に簡単です参照してください。 – polku

答えて

7

ここに、boto3を使用してSNS経由で電話番号に直接公開するコードがあります。 PhoneNumberパラメータに関するエラーが発生した場合は、バージョンbotoをアップグレードする必要があります。 SNSは現在、電話番号(PhoneNumber)またはプッシュ通知エンドポイント(targetArn)へのダイレクトパブリッシュをサポートしていることを覚えておくことが重要です。また、TopicArn、PhoneNumber、およびTargetArnは相互に排他的であるため、パブリッシュごとにこれらのいずれかを指定することができます。

import boto3 

sns_client = boto3.client('sns') 

response = sns_client.publish(
    PhoneNumber='+12065551212', 
    Message='This is a test SMS message', 
    #TopicArn='string', (Optional - can't be used with PhoneNumer) 
    #TargetArn='string', (Optional - can't be used with PhoneNumer) 
    #Subject='string', (Optional - not used with PhoneNumer) 
    #MessageStructure='string' (Optional) 
) 

print(response) 
+0

ありがとう、Dennis! –

+0

こんにちはデニス、 私はあなたのコードを試してみましたが、次のエラーになってしまった: 昇給error_class(parsed_response、operation_name_Input_operation_parameter_nameここで、operation_name) botocore.exceptions.ClientError:エラーが発生した(OptInRequired)公開の操作を呼び出す:AWSアクセスキーIdはサービスのサブスクリプションを必要とします –

+0

私はいくつかの許可を逃していることを知っていますが、私はすでにこのユーザーに対してSNSFullアクセス許可を追加しています。これに加えて何かが必要ですか? –

0
#!/usr/bin/python 
#sns to sms notification script. 
import datetime 
import boto3 
import sys 
body=[] 
log_file="/var/log/sns2sms.log" 
logf=open(log_file,"a") 
mobile_number=str(sys.argv[1]) 
subject=str(sys.argv[2]) 
body.append(subject) 
for line in sys.stdin: 
body.append(line) 
message_body="\n".join(body) 
now = str(datetime.datetime.now()) 
log_string=now+" "+mobile_number+" "+message_body+" " 
client = boto3.client('sns') 
client.publish(
PhoneNumber = mobile_number, 
Message = message_body 
) 
logf.write(log_string) 
logf.write("\n") 
logf.close() 
0

ちょうどあなたがこの作業を取得し、必要なフィールドに置き換えます。複数の連絡先に送信するため

import boto3 
# Create an SNS client 
client = boto3.client(
    "sns", 
    aws_access_key_id="your_access_key_id", 
    aws_secret_access_key="you_secret_access_key", 
    region_name="us-east-1" 
) 

# Send your sms message. 
client.publish(
    PhoneNumber="your_phone_number", 
    Message="Hello World!" 
) 

here

関連する問題