

# AddPermission
<a name="API_AddPermission"></a>

AWS 서비스, AWS 계정 또는 AWS 조직에 함수를 사용할 권한을 부여합니다. 함수 수준에서 정책을 적용하거나, 단일 버전 또는 별칭에 대한 액세스를 제한하도록 한정자를 지정할 수 있습니다. 한정자를 사용하는 경우, 호출자는 해당 버전 또는 별칭의 전체 Amazon 리소스 이름(ARN)을 사용하여 함수를 호출해야 합니다. 참고: Lambda는 \$1LATEST 버전에 정책 추가를 지원하지 않습니다.

다른 계정에 권한을 부여하려면 계정 ID를 `Principal`로 지정합니다. AWS Organizations에서 정의된 조직에 권한을 부여하려면 조직 ID를 `PrincipalOrgID`로 지정합니다. AWS 서비스의 경우, 보안 주체는 `s3.amazonaws.com` 또는 `sns.amazonaws.com`과 같이 서비스에서 정의한 도메인 스타일 식별자입니다. AWS 서비스의 경우, 연결된 리소스의 ARN을 `SourceArn`으로 지정할 수도 있습니다. 소스를 지정하지 않고 서비스 보안 주체에 권한을 부여하면, 다른 계정이 Lambda 함수를 호출하도록 계정의 리소스를 구성할 수 있습니다.

이 작업은 함수의 리소스 기반 권한 정책에 문을 추가합니다. 함수 정책에 대한 자세한 내용은 [Lambda에 리소스 기반 정책 사용](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)을 참조하세요.

## Request Syntax
<a name="API_AddPermission_RequestSyntax"></a>

```
POST /2015-03-31/functions/FunctionName/policy?Qualifier=Qualifier HTTP/1.1
Content-type: application/json

{
   "Action": "string",
   "EventSourceToken": "string",
   "FunctionUrlAuthType": "string",
   "Principal": "string",
   "PrincipalOrgID": "string",
   "RevisionId": "string",
   "SourceAccount": "string",
   "SourceArn": "string",
   "StatementId": "string"
}
```

## URI 요청 파라미터
<a name="API_AddPermission_RequestParameters"></a>

요청은 다음 URI 파라미터를 사용합니다.

 ** [FunctionName](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-FunctionName"></a>
Lambda 함수, 버전 또는 별칭의 이름입니다.  

**이름 형식**
+  **함수 이름** - `my-function`(이름만), `my-function:v1`(별칭 포함).
+  **함수 ARN** - `arn:aws:lambda:us-west-2:123456789012:function:my-function`.
+  **부분적 ARN** - `123456789012:function:my-function`.
모든 형식에 버전 번호 또는 별칭을 추가할 수 있습니다. 길이 제한은 전체 ARN에만 적용됩니다. 함수 이름만 지정하는 경우, 길이가 64자로 제한됩니다.  
길이 제약: 최소 길이는 1입니다. 최대 길이는 140입니다.  
Pattern: `(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?`   
필수 항목 여부: 예

 ** [Qualifier](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Qualifier"></a>
함수의 게시된 버전에 권한을 추가할 버전 또는 별칭을 지정합니다.  
길이 제약: 최소 길이는 1입니다. 최대 길이 128.  
Pattern: `(|[a-zA-Z0-9$_-]+)` 

## 요청 본문
<a name="API_AddPermission_RequestBody"></a>

요청은 JSON 형식으로 다음 데이터를 받습니다.

 ** [Action](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Action"></a>
보안 주체가 함수에서 사용할 수 있는 작업입니다. 예: `lambda:InvokeFunction` 또는 `lambda:GetFunction`.  
유형: 문자열  
패턴: `(lambda:[*]|lambda:[a-zA-Z]+|[*])`   
필수 항목 여부: 예

 ** [EventSourceToken](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-EventSourceToken"></a>
Alexa Smart Home 함수의 경우 호출자가 제공해야 하는 토큰입니다.  
유형: 문자열  
길이 제약: 최소 길이는 0. 최대 길이는 256입니다.  
패턴: `[a-zA-Z0-9._\-]+`   
필수 항목 여부: 아니요

 ** [FunctionUrlAuthType](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-FunctionUrlAuthType"></a>
함수 URL에서 사용하는 인증 유형입니다. 액세스 권한을 인증된 사용자로 제한하려면 `AWS_IAM`으로 설정합니다. 퍼블릭 엔드포인트를 생성하기 위해 IAM 인증을 우회하려면 `NONE`으로 설정합니다. 자세한 내용은 [Lambda 함수 URL에 대한 보안 및 인증 모델](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html) 섹션을 참조하세요.  
유형: 문자열  
유효 값: `NONE | AWS_IAM`   
필수 항목 여부: 아니요

 ** [Principal](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-Principal"></a>
함수를 호출하는 AWS 서비스 또는 AWS 계정입니다. 서비스를 지정하는 경우, `SourceArn` 또는 `SourceAccount`를 사용하여 해당 서비스를 통해 함수를 호출할 수 있는 사람을 제한합니다.  
유형: 문자열  
패턴: `[^\s]+`   
필수 항목 여부: 예

 ** [PrincipalOrgID](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-PrincipalOrgID"></a>
AWS Organizations에서 조직의 식별자입니다. 이 조직의 모든 AWS 계정에 권한을 부여하려면 이 식별자를 사용합니다.  
유형: 문자열  
길이 제약: 최소 길이는 12자입니다. 최대 길이는 34자입니다.  
패턴: `^o-[a-z0-9]{10,32}$`   
필수 항목 여부: 아니요

 ** [RevisionId](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-RevisionId"></a>
개정 ID가 지정된 ID와 일치하는 경우에만 정책을 업데이트합니다. 마지막으로 정책을 읽은 후 변경된 정책이 수정되지 않도록 하려면 이 옵션을 사용합니다.  
유형: 문자열  
필수 항목 여부: 아니요

 ** [SourceAccount](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-SourceAccount"></a>
AWS 서비스의 경우 리소스를 소유한 AWS 계정의 ID입니다. `SourceArn`과 함께 사용하여 지정된 계정이 리소스를 소유하는지 확인합니다. Amazon S3 버킷을 소유자가 삭제하고 다른 계정에서 다시 생성할 수 있습니다.  
유형: 문자열  
길이 제약: 최대 길이는 12입니다.  
Pattern: `\d{12}`   
필수 항목 여부: 아니요

 ** [SourceArn](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-SourceArn"></a>
AWS 서비스의 경우 함수를 호출하는 AWS 리소스의 ARN입니다. 예를 들어 Amazon S3 버킷 또는 Amazon SNS 주제입니다.  
Lambda는 `StringLike` 연산자를 사용하여 비교를 구성합니다.  
유형: 문자열  
패턴: `arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)`   
필수 항목 여부: 아니요

 ** [StatementId](#API_AddPermission_RequestSyntax) **   <a name="lambda-AddPermission-request-StatementId"></a>
명령문을 동일한 정책의 다른 명령문과 구별하는 명령문 식별자입니다.  
유형: 문자열  
길이 제약: 최소 길이는 1. 최대 길이는 100.  
패턴: `([a-zA-Z0-9-_]+)`   
필수 항목 여부: 예

## 응답 구문
<a name="API_AddPermission_ResponseSyntax"></a>

```
HTTP/1.1 201
Content-type: application/json

{
   "Statement": "string"
}
```

## 응답 요소
<a name="API_AddPermission_ResponseElements"></a>

작업이 성공하면 서비스가 HTTP 201 응답을 다시 전송합니다.

다음 데이터는 서비스에 의해 JSON 형식으로 반환됩니다.

 ** [Statement](#API_AddPermission_ResponseSyntax) **   <a name="lambda-AddPermission-response-Statement"></a>
함수 정책에 추가되는 권한 문입니다.  
유형: 문자열

## Errors
<a name="API_AddPermission_Errors"></a>

모든 작업에서 발생하는 일반적인 오류에 대한 자세한 내용은 [일반적인 오류](CommonErrors.md) 섹션을 참조하세요.

 ** InvalidParameterValueException **   
요청의 파라미터 중 하나가 유효하지 않습니다.  
HTTP 상태 코드: 400

 ** PolicyLengthExceededException **   
리소스에 대한 권한 정책이 너무 큽니다. 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)을 참조하세요.  
HTTP 상태 코드: 400

 ** PreconditionFailedException **   
제공된 RevisionId가 Lambda 함수 또는 별칭에 대한 최신 RevisionId와 일치하지 않습니다. 리소스의 최신 RevisionId를 검색하려면 `GetFunction` 또는 `GetAlias` API 작업을 호출합니다.  
HTTP 상태 코드: 412

 ** ResourceConflictException **   
리소스가 이미 있거나 다른 작업이 진행 중입니다.  
HTTP 상태 코드: 409

 ** ResourceNotFoundException **   
요청에 지정된 리소스가 없습니다.  
HTTP 상태 코드: 404

 ** ServiceException **   
AWS Lambda 서비스에 내부 오류가 발생했습니다.  
HTTP 상태 코드: 500

 ** TooManyRequestsException **   
요청 처리량 제한을 초과했습니다. 자세한 내용은 [Lambda 할당량](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html#api-requests)을 참조하세요.  
HTTP Status Code: 429

## 참고
<a name="API_AddPermission_SeeAlso"></a>

이 API를 언어별 AWS SDK 중 하나로 사용하는 방법에 대한 자세한 설명은 다음을 참조하세요.
+  [AWS Command Line Interface](https://docs.aws.amazon.com/goto/aws-cli/lambda-2015-03-31/AddPermission) 
+  [AWS SDK for .NET](https://docs.aws.amazon.com/goto/DotNetSDKV3/lambda-2015-03-31/AddPermission) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/lambda-2015-03-31/AddPermission) 
+  [AWS SDK for Go](https://docs.aws.amazon.com/goto/SdkForGoV1/lambda-2015-03-31/AddPermission) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/lambda-2015-03-31/AddPermission) 
+  [JavaScript V3용 AWS SDK](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/lambda-2015-03-31/AddPermission) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/lambda-2015-03-31/AddPermission) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/lambda-2015-03-31/AddPermission) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/lambda-2015-03-31/AddPermission) 