AWS Lambda Identity and Access のトラブルシューティング
次の情報は、Lambda と IAM の使用に伴い発生する可能性のある、一般的な問題の診断や修復に役立ちます。
トピック
Lambda でアクションを実行する権限がない
AWS Management Console から、アクションを実行する権限がないと通知された場合、管理者に問い合わせ、サポートを依頼する必要があります。お客様のユーザー名とパスワードを発行したのが、担当の管理者です。
以下の例のエラーは、mateojackson
IAM ユーザーがコンソールを使用して、関数の詳細を表示しようとしているが、lambda:GetFunction
アクセス許可がない場合に発生します。
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: lambda:GetFunction on resource: my-function
この場合、Mateo は、my-function
アクションを使用して lambda:GetFunction
リソースにアクセスできるように、ポリシーの更新を管理者に依頼します。
iam:PassRole を実行する権限がない
iam:PassRole
アクションを実行する権限がないというエラーが表示された場合、管理者に問い合わせ、サポートを依頼する必要があります。お客様のユーザー名とパスワードを発行したのが、担当の管理者です。管理者に、Lambda にロールを渡すことを許可するようにポリシーを更新することを要請します。
一部の AWS のサービスでは、新しいサービスロールまたはサービスにリンクされたロールを作成せずに、既存のロールをサービスに渡すことができます。そのためには、サービスにロールを渡すアクセス許可が必要です。
以下の例のエラーは、marymajor
という IAM ユーザーがコンソールを使用して Lambda でアクションを実行しようすると、発生します。ただし、アクションでは、サービスロールによって付与された許可がサービスにある必要があります。Mary には、ロールをサービスに渡すアクセス許可がありません。
User: arn:aws:iam::123456789012:user/
marymajor
is not authorized to perform: iam:PassRole
この場合、メアリーは担当の管理者に iam:PassRole
アクションを実行できるようにポリシーの更新を依頼します。
アクセスキーを表示する場合
IAM ユーザーアクセスキーを作成した後は、いつでもアクセスキー ID を表示できます。ただし、シークレットアクセスキーをもう一度表示することはできません。シークレットアクセスキーを紛失した場合は、新しいキーペアを作成する必要があります。
アクセスキーは、アクセスキー ID (例:AKIAIOSFODNN7EXAMPLE
) とシークレットアクセスキー (例:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
) の 2 つの部分から構成されます。ユーザー名とパスワードと同様に、リクエストを認証するために、アクセスキー ID とシークレットアクセスキーの両方を使用する必要があります。ユーザー名とパスワードと同様に、アクセスキーをしっかり管理してください。
正規ユーザー ID を確認するためであっても、アクセスキーをサードパーティーに提供しないでください。提供すると、第三者がアカウントへの永続的アクセスを取得する場合があります。
アクセスキーペアを作成する場合、アクセスキー ID とシークレットアクセスキーを安全な場所に保存するように求めるプロンプトが表示されます。このシークレットアクセスキーは、作成時にのみ使用できます。シークレットアクセスキーを紛失した場合、新しいアクセスキーを IAM ユーザーに追加する必要があります。最大 2 つのアクセスキーを持つことができます。すでに 2 つある場合は、新しいキーペアを作成する前に、いずれかを削除する必要があります。手順を表示するには、IAM ユーザーガイドの「アクセスキーの管理」を参照してください。
管理者として Lambda へのアクセスを他のユーザーに許可したい
Lambda へのアクセスを他のユーザーに許可するには、アクセスを必要とする人またはアプリケーションの IAM エンティティ (ユーザーまたはロール) を作成する必要があります。ユーザーは、このエンティティの認証情報を使用して にアクセスしますAWS 次に、Lambda の適切なアクセス許可を付与するポリシーを、そのエンティティにアタッチする必要があります。
すぐに開始するには、IAM ユーザーガイドの「IAM が委任した最初のユーザーおよびグループの作成」を参照してください。
私は管理者ですが、非推奨になる、Lambda の AWS マネージドポリシーから移行したいと考えています。
2021 年 3 月 1 日を過ぎると、AWS マネージドポリシーである AWSLambdaReadOnlyAccess と AWSLambdaFullAccess は非推奨となり、新しい IAM ユーザーにアタッチできなくなります。ポリシーの非推奨に関する詳細は、IAM ユーザーガイドの非推奨の AWS マネージドポリシーを参照してください。
Lambda に、新しい 2 つの AWS マネージドポリシーが導入されました。
-
AWSLambda_ReadOnlyAccess ポリシーは、Lambda、Lambda のコンソール機能、およびその他関連する AWS サービスへの読み取り専用のアクセスを許可します。このポリシーは、以前のポリシー AWSLambdaReadOnlyAccess をスコープダウンすることによって作成されました。
-
AWSLambda_FullAccess ポリシーは、Lambda、Lambda のコンソール機能、およびその他関連する AWS サービスへの完全なアクセスを許可します。このポリシーは、以前のポリシー AWSLambdaFullAccess をスコープダウンすることによって作成されました。
AWS 管理ポリシーの使用
新たに導入された管理ポリシーを使用して、Lambda にユーザー、グループ、およびロールへのアクセス権を付与することをお勧めします。ただし、ポリシーで付与されたアクセス許可を確認し、要件が満たされていることを確認してください。
-
AWSLambda_ReadOnlyAccess ポリシーのアクセス許可を確認するには、IAM コンソールの AWSLambda_ReadOnlyAccess
ポリシーページを参照してください。 -
AWSLambda_FullAccess ポリシーのアクセス許可を確認するには、IAM コンソールの AWSLambda_FullAccess
ポリシーページを参照してください。
アクセス許可を確認したら、IAM ID(グループ、ユーザー、ロール)にポリシーをアタッチできます。AWS マネージドポリシーをアタッチする方法については、IAM ユーザーガイドの IAM ID アクセス権限の追加と削除を参照してください。
カスタマー管理ポリシーの使用
より詳細なアクセス制御が必要な場合、またはアクセス許可を追加する場合は、独自の カスタマー管理ポリシー を作成できます。詳細については、IAM ユーザーガイド の JSON タブでのポリシーの作成を参照してください。
自分の AWS アカウント以外のユーザーに Lambda リソースへのアクセスを許可したい
他のアカウントのユーザーや組織外のユーザーが、リソースへのアクセスに使用できるロールを作成できます。ロールを引き受けるように信頼されたユーザーを指定することができます。リソースベースのポリシーまたはアクセス制御リスト (ACL) をサポートするサービスの場合、それらのポリシーを使用して、リソースへのアクセスを付与できます。
詳細については、以下を参照してください。
-
Lambda でこれらの機能がサポートされるかどうかを確認するには、AWS Lambda で IAM を使用する方法 を参照してください。
-
所有している AWS アカウント全体のリソースへのアクセス権を提供する方法については、IAM ユーザーガイドの「所有している別の AWS アカウント アカウントへのアクセス権を IAM ユーザーに提供」を参照してください。
-
サードパーティーの AWS アカウント にリソースへのアクセス権を提供する方法については、『IAM ユーザーガイド』の「第三者が所有する AWS アカウント アカウントへのアクセス権を付与する」を参照してください。
-
ID フェデレーションを介してアクセスを提供する方法については、『IAM ユーザーガイド』の「外部で認証されたユーザー (ID フェデレーション) へのアクセスの許可」を参照してください。
-
クロスアカウントアクセスでのロールとリソースベースのポリシーの使用の違いの詳細については、「IAM ユーザーガイド」 の 「IAM ロールとリソースベースのポリシーとの相違点」 を参照してください。