クロスアカウントラムダトリガを持つSQSキュー


AWS SQSは、SQS待ち行列がつくられる同じアカウントに属していたAWS Lambda functionsトリガーに制限されました.最近の発表で、我々はtrigger Lambda functions from a different accountです.

AWSの新機能
@ awsWhatsnew

AWSラムダは、Amazonの単純なキューサービス(Amazon SQS)キューから別のAWSアカウントにある機能をトリガすることができます.はじめにaws.amazon.com/about-aws/what…
午後19時46分- 2021年9月30日

建築
クロスアカウントラムダトリガのアーキテクチャは、既存のラムダ関数を持つSQSキューを持つアカウント1と同じアカウントでトリガされます.現在、ラムタム関数arnでトリガ2としてアカウント2のラムダ関数を追加できます.


ラムダ関数トリガの設定
SQSコンソールに移動し、ラムダトリガの下でキューを選択し、設定ラムダ関数トリガをクリックします

オプション2を選択します.


SQSキューへのアクセスとアクセス
アカウント2トリガーラムダ関数の実行ロールはAWSマネージポリシーAWSLambdaSQSQueueExecutionRoleでアカウント1でSQSアクセスを提供するように変更される必要があります
ラムダ関数実行機能.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ReceiveMessage",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}
キューアクセスポリシー
{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__owner_statement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account1:root"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:us-east-1:account1:demo"
    },
    {
      "Sid": "demo_cross_account",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account2:role/lambdaExecutionRole",
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:us-east-1:account1:demo"
    }
  ]
}
ただし、AWSLambdaSQSQueueExecutionRoleと24579142との間では、Crossアカウントのアクセス権は"Action": "SQS:*""Effect": "Allow"AddPermissionCreateQueueDeleteQueueListQueueListQueueTagsRemovePermissionSetQueueAttributes sqsアクションにアクセスできません.クロスアカウントラムダトリガの唯一の制約は、両方のSQSとラムダ関数は、同じAWS領域にある必要があります.

からのメッセージの送受信
コンソールから、あなたはメッセージを送るのをクリックして、メッセージボタンを受け取って、あなたのメッセージをタイプして、メッセージを送るのをクリックすることができます.

メッセージがSQSキューに送信されると、SQSメッセージレコードを使用して設定されたラムダ関数をトリガします.メッセージはCloudWatch実行ログで記録されます.

この実装はCLIでテストすることもできます.
tutorial
結論
最も古いサービスの1つであるSQSはラムダ関数トリガーとの統合を容易にしました、そして、現在、それはこれを実装するために働いている大部分の開発者のために統合プロセスを緩和したクロスアカウントラムダ関数でレベル調整されました.