Switch Roleしたアカウントから別アカウントのSQSのキューにメッセージをおくってみる

Switch Roleしたアカウントから別アカウントのSQSのキューにメッセージを送るという場面に遭遇したので、Switch Roleしたアカウントからのアクセスを許可する方法について記載します。
2018.08.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも!大阪オフィスの西村祐二です。

AWS LambdaがSQSをイベントソースとしてサポートしたことで、 SQSを使う機会がありました。

そのとき、Switch Roleしたアカウントから別アカウントのSQSのキューにメッセージを送るという状況だったので、Switch Roleしたアカウントからのアクセスを許可する方法について記載したいとおもいます。

SQSの設定

Switch Roleしたアカウントからのアクセスを許可するためにマネージメントコンソールから、キューの設定変更を行います。

▼「アクセス許可の追加」をクリックします。

▼Switch Roleした対象ロールを追加

下記のようなSwitch Roleするためのロールを指定するだけでOKです。とても簡単ですね。

arn:aws:iam::0000000000:role/xxxxxxxx

動作確認

Switch Roleしたアカウントで下記pythonスクリプトを実行すると、スクリプトで指定した別アカウントのSQSキューに対して、メッセージが送られます。

import boto3
import json

# SQS
SQS = boto3.resource('sqs')
QUEUE = SQS.Queue('url')
# アクセスを許可した別アカウントのSQSキューを指定
URL = 'https://sqs.ap-northeast-1.amazonaws.com/00000000/xxxxxx'


def put_sqs(item):
    resp = QUEUE.send_message(
        MessageBody=item,
        QueueUrl=URL
    )
    print(resp)

put_sqs('test')

さいごに

いかがだったでしょうか。

Switch Roleしたアカウントから別のアカウントのSQSのキューにメッセージをおくってみました。

とても簡単に別アカウントからのアクセスを許可したり、拒否したり制御ができるのでとてもいいなと感じました。これからどんどん使っていきたいと思います。

誰かのお役に立てたら幸いです。

付録

別のアカウントの Amazon SQS キューへの Amazon SNS メッセージの送信