Lambda 関数の実行ロール許可と呼び出し許可はどのように異なりますか?

最終更新日: 2022 年 3 月 9 日

AWS Lambda 関数の実行ロール許可と呼び出し許可の違いを理解したいと考えています。Lambda の 2 種類の AWS Identity and Access Management (IAM) 許可にはどのような違いがありますか?

解決方法

重要: IAM ポリシーを作成するときは、特定のタスクの実行に必要な許可のみを付与することがベストプラクティスです。詳細については、IAM ユーザーガイドの「最小特権を認める」を参照してください。

Lambda 関数の実行ロール許可

Lambda 実行ロール許可は、特定の AWS クラウドサービスおよびリソースにアクセスするための Lambda 関数許可を付与する IAM 許可です。AWS クラウドサービスまたはリソース用の関数の実行ロール許可を付与しない場合、関数はそのサービスまたはリソースにアクセスできません。

重要: 他の AWS クラウドサービスをポーリングする Lambda 関数については、関数がそれらのサービスからレコードを取得できるようにする実行ロール許可が必要です。

実行ロール許可が付与される方法

Lambda 実行ロール許可は、特定の API アクション識別子 (s3:GetObject など) の形式で付与されます。これらのアクション識別子は、IAM ポリシーステートメント[Action] (アクション) 要素にリストされます。ポリシーは、Lambda 関数が呼び出されるたびに引き受ける実行ロールと呼ばれる IAM ロールにアタッチされます。

キューまたはデータストリームを生成するサービスについては、Lambda がキューまたはデータストリームをポーリングするようにイベントソースマッピングを設定する必要があります。イベントソースマッピングでは、関数の実行ロールの許可を使用して、イベントソース内の項目を読み取り、管理します。

注: 許可、イベント構造、設定、およびポーリング動作は、イベントソースによって異なります。Lambda ポーリング許可を含む IAM ポリシーの例については、「AWS Lambda 関数による DynamoDB Streams レコードへのアクセスを許可する IAM ポリシー」を参照してください。

Lambda 関数の呼び出し許可

Lambda 関数の呼び出し許可は、Lambda 関数を呼び出すための許可を特定の AWS クラウドサービスまたはリソースに付与する IAM 許可です。サービスまたはリソースに Lambda 関数の呼び出し許可を付与しない場合、そのサービスまたはリソースは関数を呼び出すことができません。

重要: イベントソースを関数にプッシュする AWS クラウドサービスによって呼び出される Lambda 関数については、呼び出し許可が必要です。

呼び出し許可が付与される方法

Lambda 呼び出し許可は、特定の API アクション識別子である lambda:InvokeFunction の形式で付与されます。このアクション識別子は、Lambda 関数の IAM リソースベースのポリシーステートメントの [Action] (アクション) 要素にリストされます。Lambda 関数のリソースベースのポリシーは、関数の実行ロールとは別に設定されます。

注: これは、アクション識別子 (lambda:InvokeFunction) が API オペレーション (Invoke) と異なる特殊なケースです。その他のアクションについては、アクション識別子は lambda: のプレフィックスが付いたオペレーション名です。

Lambda コンソールを使用して関数にトリガーを追加すると、必要な呼び出し許可が関数のリソースベースのポリシーに自動的に追加されます。コンソールで使用できないアカウントまたはサービスに許可を付与するには、Lambda AddPermission API アクションを使用する必要があります。

詳細については、「AWS のサービスへのアクセス権を関数に付与する」を参照してください。


AWS Lambda 許可

Applying the principles of least privilege (最小特権の原則の適用) (Lambda オペレーターガイド)

この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?