PythonでBoto3を用いてAmazon SQSを使用しキューを作成する

スポンサーリンク

PythonでBoto3を用いてAmazon SQSを使用しキューを作成してみます。

Amazon SQS(AWS SQS)は、Simple Queue Service(メッセージキューサービス)で、ソフトウェアコンポーネント間でメッセージを交換して保存することができるものです。

今回は、Boto3を用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■クレデンシャル(資格情報)などの設定

今回、Boto3を用いてAmazon SQSを使用しキューを作成するわけですが、その前にクレデンシャル(資格情報)の設定を行います。

設定するために、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に「.aws」というディレクトリを作成し、その中に「credits」というファイルを作成します。

[default]
aws_access_key_id = YOUR_KEY
aws_secret_access_key = YOUR_SECRET

ファイルの中身は、上記の内容になります。「aws_access_key_id」と「aws_secret_access_key」は、Amazonのawsのコンソールにログインします。

ログイン後、コンソールのhome画面の右上にある「ユーザー名」をクリックすると、プルダウンメニューが表示され、「セキュリティ認証情報」をクリックします。

クリックすると、「セキュリティ認証情報(https://us-east-1.console.aws.amazon.com/iam/home)」のページが表示されますので、ページ内の項目に「アクセスキー (アクセスキー ID とシークレットアクセスキー)」がありますので、こちらをクリックします。

クリックすると、「新しいアクセスキーの作成」ボタンがあるので、こちらをクリックすると、「aws_access_key_id」と「aws_secret_access_key」が発行されますので、先程の「credits」ファイルの「YOUR_KEY」と「YOUR_SECRET」を発行されたアクセスキーに書き換えます。

書き換え後、デフォルトのリージョン(地域)を設定するために、「.aws」というディレクトリの中に「config」というファイルを作成します。

[default]
region=us-east-1

ファイルの中身は、上記の内容になります。今回は「region」を「us-east-1」(地域)としています。

これで資格情報等の設定は完了です。

■Boto3を用いてAmazon SQSを使用しキューを作成する

完了後、Boto3を用いてAmazon SQSを使用しキューを作成、表示するスクリプトを書いていきます。

■コード

import boto3

sqs = boto3.resource('sqs')

queue = sqs.create_queue(QueueName='test',Attributes={'DelaySeconds': '5'})

print(queue.url)
print(queue.attributes.get('DelaySeconds'))

importでboto3モジュールを呼び出します。その後、sqsという変数を定義し、その中でboto3.resource()を用いて、括弧内に引数,パラメータとして、リソースであるsqsを渡します。

その後、queueという変数を定義し、create_queue()を用います。括弧内には、引数,パラメーターとして、QueueName(キューの名前)とAttributes(属性)を渡します。今回は、QueueNameはtestで、Attributesは、DelaySeconds(遅延キュー)を5とします。これで新しい標準、またはFIFOキューが作成されます。

作成後、キューのURLと、属性として指定したDelaySeconds(遅延キュー)をprint()関数で出力してみます。

■実行・検証

このスクリプトを「q_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、作成したキューのURLと、属性として指定したDelaySeconds(遅延キュー)を出力させることができました。

コメント

タイトルとURLをコピーしました