

# Lambda 함수에 다른 계정에 대한 액세스 권한 부여
<a name="permissions-function-cross-account"></a>

함수를 다른 AWS 계정와 공유하려면 함수의 [리소스 기반 정책](access-control-resource-based.md)에 교차 계정 권한 문을 추가합니다. [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) 명령을 실행하고 계정 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를 사용할 수 있는 해당 [사용자 권한](access-control-identity-based.md)이 있어야 합니다.

사용자 또는 다른 계정의 역할에 대한 액세스 제한을 위해서는 ID의 전체 ARN을 보안 주체로 지정합니다. 예: `arn:aws:iam::123456789012:user/developer`.

[별칭](configuration-aliases.md)은 다른 계정에서 간접 호출할 수 있는 버전을 제한합니다. 다른 계정에서 함수 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 역할](access-control-identity-based.md)을 사용하는 것이 좋습니다.