のぴぴのメモ

自分用のLinuxとかの技術メモ

Python(boto3)でSNSに通知依頼(Publish)するコード

Python+boto3でPublishするためのサンプルスクリプトです。

前提環境

  • 実行インスタンス
    • OS: Amazon Linux2(amzn2-ami-hvm-2.0.20190110-x86_64-gp)
    • Instance: t2.micro
    • Role:インスタンスSNSをPublishする権限があるRoleをアタッチしていること
  • SNS
    • Publish可能なtopicを準備すること
    • そのtopicのARNを控えておくこと

手順

(1) boto3インストール

sudo yum -y install python2-boto3

(2) AWSのプロファイル作成

$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: ap-northeast-1
Default output format [None]: 
  • 補足説明
    • インスタンスロールを利用し一時クレデンシャルを取得するため、デフォルトリージョンのみ指定します。

(3) pythonプログラム

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import boto3

TOPIC_ARN=u'arn:aws:sns:ap-northeast-1:999999999:TopicName'

def main():
    # Get session
    client = boto3.client('sns')

    request = {
            'TopicArn': TOPIC_ARN,
            'Message':  u'test message',
            'Subject':  u'test'
    }
    response = client.publish(**request)

if __name__ == "__main__":
    sys.exit(main())
  • 補足
    • TOPIC_ARNに、事前準備したTopicのARNを指定する
    • boto3.client('sns')で、認証を行いセッションを確立させます
    • "request = { ・・・"でpublishに必要なパラメータを作成します
    • client.publish(**request)で実行します。