Lambda에서 리소스 기반 IAM 정책 작업 - AWS Lambda

Lambda에서 리소스 기반 IAM 정책 작업

Lambda는 Lambda 함수 및 계층에 대해 리소스 기반 권한 정책을 지원합니다. 리소스 기반 정책을 사용하여 다른 AWS 계정, 조직 또는 서비스에 대한 액세스 권한을 부여할 수 있습니다. 리소스 기반 정책은 한 버전의 함수, 버전, 별칭 또는 계층에 적용됩니다.

Console
함수의 리소스 기반 정책을 보려면
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 구성(Configuration)을 선택한 다음 권한(Permissions)을 선택합니다.

  4. 리소스 기반 정책(Resource-based policy)까지 아래로 스크롤한 다음 정책 문서 보기(View policy document)를 선택합니다. 리소스 기반 정책에는 다른 계정 또는 AWS 서비스가 해당 함수에 액세스하려고 할 때 적용되는 권한이 표시됩니다. 다음 예제에서는 Amazon S3가 123456789012 계정에서 amzn-s3-demo-bucket 버킷의 my-function이라는 함수를 호출할 수 있도록 허용하는 명령문을 보여 줍니다.

    예 리소스 기반 정책
    { "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 작업은 리소스 기반 정책을 지원합니다.