

# AWS 서비스에 대한 액세스 권한을 Lambda 함수에 부여
<a name="permissions-function-services"></a>

[AWS 서비스를 사용해 함수를 간접 호출](lambda-services.md)하는 경우 리소스 기반 정책의 문에서 권한을 부여하십시오. 전체 함수에 문을 적용하거나, 문을 단일 버전 또는 별칭으로 제한할 수 있습니다.

**참고**  
Lambda 콘솔을 사용하여 함수에 트리거를 추가하는 경우, 콘솔은 함수의 리소스 기반 정책을 업데이트하여 서비스가 함수를 간접 호출할 수 있도록 합니다. Lambda 콘솔에서 사용할 수 없는 다른 계정이나 서비스에 권한을 부여하기 위해 AWS CLI를 사용할 수 있습니다.

[add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) 명령을 사용하여 문을 추가합니다. 가장 간단한 리소스 기반 정책 구문은 서비스가 함수를 간접 호출할 수 있도록 허용합니다. 다음 명령은 `my-function`이라는 함수를 간접 호출할 수 있는 권한을 Amazon Simple Notification Service에 부여합니다.

```
aws lambda add-permission \
  --function-name my-function \
  --action lambda:InvokeFunction \
  --statement-id sns \
  --principal sns.amazonaws.com \
  --output text
```

다음 결과가 표시됩니다.

```
{"Sid":"sns","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2:123456789012:function:my-function"}
```

이렇게 하면 Amazon SNS가 함수에 대한 [간접 호출](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html) API 작업을 간접 호출하지만, 간접 호출을 트리거하는 Amazon SNS 주제를 제한하지는 않습니다. 함수를 특정 리소스에서만 간접 호출하도록 하려면, `source-arn` 옵션을 사용하여 리소스의 Amazon 리소스 이름(ARN)을 지정합니다. 다음 명령은 Amazon SNS가 `my-topic`이라는 주제 구독에 대해서만 함수를 간접 호출할 수 있도록 허용합니다.

```
aws lambda add-permission \
  --function-name my-function \
  --action lambda:InvokeFunction \
  --statement-id sns-my-topic \
  --principal sns.amazonaws.com \
  --source-arn arn:aws:sns:us-east-2:123456789012:my-topic
```

일부 서비스는 다른 계정의 함수를 간접 호출할 수 있습니다. 해당 계정 ID를 소유하는 소스 ARN을 지정하면 문제가 되지 않습니다. 하지만 Amazon S3의 경우 소스는 ARN에 버킷의 계정 ID가 포함되지 않은 버킷입니다. 버킷을 삭제하고, 다른 계정에서 동일한 이름으로 버킷을 생성할 수 있습니다. 계정의 리소스만 함수를 간접 호출할 수 있게 하려면 계정 ID와 함께 `source-account` 옵션을 사용합니다.

```
aws lambda add-permission \
  --function-name my-function \
  --action lambda:InvokeFunction \
  --statement-id s3-account \
  --principal s3.amazonaws.com \
  --source-arn arn:aws:s3:::amzn-s3-demo-bucket \
  --source-account 123456789012
```