Lambda でのリソースベースの IAM ポリシーの使用 - AWS Lambda

Lambda でのリソースベースの IAM ポリシーの使用

Lambda では、Lambda 関数およびレイヤーのための、リソースベースのアクセス許可ポリシーをサポートしています。リソースベースのポリシーを使用して、他の AWS アカウント組織、またはサービスへのアクセスを許可できます。リソースベースのポリシーは、1 つの関数、バージョン、エイリアス、レイヤーバージョンに適用されます。

Console
関数のリソースベースのポリシーを表示するには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 関数を選択します。

  3. [設定] を選択して、[アクセス許可] を選択します。

  4. [リソースベースのポリシー] まで下にスクロールし、[View policy document (ポリシードキュメントの表示)] を選択します。リソースベースのポリシーには、別のアカウントまたは AWS のサービスが関数にアクセスしようとしたときに適用されるアクセス許可が表示されます。次の例は、アカウント 123456789012amzn-s3-demo-bucket という名前のバケットに対して my-function という名前の関数を呼び出すことを Amazon S3 に許可するステートメントを示しています。

    例 リソースベースのポリシー
    { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "lambda-allow-s3-my-function", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnLike": { "AWS:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
AWS CLI

関数のリソースベースのポリシーを表示するには、get-policy コマンドを使用します。

aws lambda get-policy \ --function-name my-function \ --output text

次のような出力が表示されます。

{"Version":"2012-10-17","Id":"default","Statement":[{"Sid":"sns","Effect":"Allow","Principal":{"Service":"s3.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2:123456789012:function:my-function","Condition":{"ArnLike":{"AWS:SourceArn":"arn:aws:sns:us-east-2:123456789012:lambda*"}}}]} 7c681fc9-b791-4e91-acdf-eb847fdaa0f0

バージョンおよびエイリアスでは、バージョン番号またはエイリアスを関数名に追加します。

aws lambda get-policy --function-name my-function:PROD

関数からアクセス許可を削除するには、remove-permission を使用します。

aws lambda remove-permission \ --function-name example \ --statement-id sns

レイヤーでのアクセス許可を表示するには、get-layer-version-policy コマンドを使用します。

aws lambda get-layer-version-policy \ --layer-name my-layer \ --version-number 3 \ --output text

次のような出力が表示されます。

b0cd9796-d4eb-4564-939f-de7fe0b42236    {"Sid":"engineering-org","Effect":"Allow","Principal":"*","Action":"lambda:GetLayerVersion","Resource":"arn:aws:lambda:us-west-2:123456789012:layer:my-layer:3","Condition":{"StringEquals":{"aws:PrincipalOrgID":"o-t194hfs8cz"}}}"

remove-layer-version-permission を使用して、ポリシーからステートメントを削除します。

aws lambda remove-layer-version-permission --layer-name my-layer --version-number 3 --statement-id engineering-org

サポートされている API アクション

次の Lambda API アクションは、リソースベースのポリシーをサポートしています。