Lambda 함수에 다른 계정에 대한 액세스 권한 부여 - AWS Lambda

Lambda 함수에 다른 계정에 대한 액세스 권한 부여

함수를 다른 AWS 계정와 공유하려면 함수의 리소스 기반 정책에 교차 계정 권한 문을 추가합니다. add-permission 명령을 실행하고 계정 ID를 principal로 지정합니다. 다음 예제는 111122223333 별칭을 가진 my-function을 호출할 수 있는 권한을 prod 계정에 부여합니다.

aws lambda add-permission \ --function-name my-function:prod \ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal 111122223333 \ --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 역할을 사용하는 것이 좋습니다.