0

AWSでいくつかのLambdaを作成し、Aurora RDS(公的に入手可能)を作成しました。私はラムダを実行することができませんでした(経由でcall mysql.lambda_async)。オーロラRDSストアドプロシージャの権限からAWS Lambdaに電話する問題

私が試みたとき、私はエラーERROR 1873: 1873: Lambda API returned error: Missing Credentials: Cannot instantiate Lambda Clientを得ました。

私は、RLDとLambdasへの完全なアクセスとこれらのサービス間の信頼関係を設定するところで、aurora-lambdasという名前のIAMロールを付けようとしましたが、さまざまな設定を試した後でも問題は残ります。

誰かがRDSのAWSラムダを正常に実行しましたか?ありがとう:)

+0

IAMロールには、(RDSのコンソールではなく、IAMコンソール)のfuctionを呼び出しています特定のオーロラクラスターに接続する必要がありました。あなたはそれをしましたか? –

+0

IAM Role ARNをRDS DB Cluseter Parameter Groupの設定に追加して、この問題を解決しました。 ARNを 'aws_default_lambda_role'キーに追加しました。 – lu1s

答えて

1

ハードな調査を行った後、IAMロールARNを値としてaws_default_lambda_roleキーをRDS DBクラスタパラメータグループ構成ファイルに追加しました。いったんこれを実行すると、適切な権限を持つRoleがRDSによってmysql lambda APIを正常に呼び出すことができます。

2

パラメータ・キーaws_default_lambda_roleは、ロールの完全なARN値パスを持つ必要があります。このパスは、Auroraクラスタに接続されており、関連する正しいラムダ・アクセス・ポリシーを持っています。

まず、IAM DB Authentication Enabledを有効にします。これは、データベースのユーザー資格情報をAWS IAMのユーザーとロールで管理できることを意味します。

ポリシーの作成、ロールの作成、ロールへのポリシーのアタッチ、Auroraクラスタへのロールの関連付けは次の手順で行います。 ARNに関連するAWSサービスのためのクラスタ・レベル・パラメータ・キーを設定

Create a IAM Policy to Access AWS Lambda Resources.

Create IAM Role to Allow Amazon Aurora to Access AWS Services with Policy attached.

Associate IAM Role with an Amazon Aurora MySQL DB Cluster that needs to use Lambda.

関連するIAMの役割について上記のウェブリンク3のステップ10を使用してください。ステップ10ではaws_default_s3_roleと記載されていますが、aws_default_lambda_roleを探すだけです。

5.ゴーパラメータグループ

7.クリッククリック

RDS Dashboard

Steps 5, 6, 7 in picture.

パラメータグループを作成します。 210

8.選択パラメータグループファミリーaurora5.6

9。

someName56として、テキストボックス、所望の構成 グループ名タイプ DB Cluster Parameter Group

タイプを選択し

を作成し、パラメータの編集

ルックパラメータ名aws_default_lambda_roleとARを入力上記の手順4で作成したIAMロールのN Step 12 with aws_default_lambda_role

簡単な説明

それが原因関与抽象化層で、IAMユーザー、ロール、およびポリシーの分離があることを覚えておくことが重要です。ポリシーをユーザーまたは役割に割り当てることができます。 EC2やRDSなどの実行中のインスタンスとは関連付けることはできません。ローカルコンピュータに書き込まれたコードにS3またはラムダのアクセス権を付与するには、適切なポリシーを適用したIAMユーザーを使用する必要があります。 Amazon内部サービスへのアクセスをアタッチするには、IAMロールを割り当てる必要があります。たとえば、CALL mysql.lambda_asyncプロシージャを使用してRDS Aurora Cluster DBトリガーLambdaを許可する必要があります。 RDSインスタンスはAWSの内部であるため、ラムダ関数をトリガする役割を持つため、IAMロールを割り当てる必要があります。これ以上の必要がない限り、RDS仮想マシンに直接アクセスせずに構成ファイルを変更する方法は、アクセスを最小限に抑えることです。したがって、仮想マシンに直接接続することなく、DBソフトウェアの構成変更を行うために、パラメータグループ値を変更する必要があります。 SSHまたは直接接続ソフトウェアを使用する従来の方法よりも簡単に設計されています。これはまた、abstactionレイヤ、すなわちAWSコンソールがユーザ活動を追跡して、ユーザ/サービスがLambdaトリガのアクションをコミットして問題を特定するのを助けることができるので、より大きな説明責任を可能にする。私はAWS上の完全な把握ので、私は私の手順や説明のいずれかでミスを犯している可能性を持っていないよう

私は専門家ではないので、私の説明を修正してください。しかし、これが私の特定の問題を解決するためにしたものです。

EDIT:(投稿後の議事録)

私の特定の問題:私はSQLでの直接呼び出しを行った

が、それは私のステップに私を導いた、次のエラー出力を与えたIこの問題を解決するために概要が説明されています。

MySQLの> CALL mysql.lambda_async('arn:aws:lambda:us-region-1:02020202020:function:FuncSomeNameLambdaFunc', CONCAT('{ "subject" : "', 'subject contents', '", "message" : "', 'Message Contents', '" }'));

ERROR 1873 (HY000): Lambda API returned error: Missing designated IAM role (aws_default_lambda_role)

関連する問題