Lambda 함수에 다른 계정에 대한 액세스 권한 부여
함수를 다른 AWS 계정와 공유하려면 함수의 리소스 기반 정책에 교차 계정 권한 문을 추가합니다. add-permissionprincipal
로 지정합니다. 다음 예제는 111122223333
별칭을 가진 my-function
을 호출할 수 있는 권한을 prod
계정에 부여합니다.
aws lambda add-permission \ --function-name my-function:
prod
\ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal111122223333
\ --output text
다음 결과가 표시됩니다:
{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
리소스 기반 정책은 다른 계정에서 함수에 액세스할 수 있는 권한을 부여하지만, 해당 계정의 사용자가 권한을 초과하도록 허용하지 않습니다. 다른 계정의 사용자는 Lambda API를 사용할 수 있는 해당 사용자 권한이 있어야 합니다.
사용자 또는 다른 계정의 역할에 대한 액세스 제한을 위해서는 ID의 전체 ARN을 보안 주체로 지정합니다. 예: arn:aws:iam::123456789012:user/developer
.
별칭은 다른 계정에서 호출할 수 있는 버전을 제한합니다. 다른 계정에서 함수 ARN에 별칭을 포함시켜야 합니다.
aws lambda invoke \ --function-name arn:aws:lambda:us-east-2:123456789012:function:my-function:prod out
다음 결과가 표시됩니다:
{ "StatusCode": 200, "ExecutedVersion": "1" }
그러면 함수 소유자는 호출자가 함수를 호출하는 방법을 변경할 필요없이 새 버전을 가리키도록 별칭을 업데이트할 수 있습니다. 이렇게 하면 다른 계정은 새 버전을 사용하기 위해 코드를 변경할 필요가 없으며, 별칭과 연결된 함수 버전을 호출할 수 있는 권한만 갖습니다.
기존 함수에서 작업을 수행하는 대부분의 API 작업에 대해 교차 계정 액세스 권한을 부여할 수 있습니다. 예를 들어 계정에서 별칭 목록을 확인할 수 있게 하려면 lambda:ListAliases
에 대한 액세스를 부여하고, 함수 코드를 다운로드할 수 있게 하려면 lambda:GetFunction
에 대한 액세스를 부여할 수 있습니다. 각 권한을 별도로 추가하거나, lambda:*
를 사용하여 특정 함수에 대한 모든 작업에 대한 액세스를 부여합니다.
여러 함수에 대한 권한 또는 함수에서 작업을 수행하지 않는 작업에 대한 권한을 다른 계정에 부여하려면 IAM 역할을 사용하는 것이 좋습니다.