

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# ApiFunctionAuth
<a name="sam-property-function-apifunctionauth"></a>

특정 API, 경로 및 메서드에 대해 이벤트 수준에서 권한 부여를 구성합니다.

## 구문
<a name="sam-property-function-apifunctionauth-syntax"></a>

 AWS Serverless Application Model (AWS SAM) 템플릿에서이 개체를 선언하려면 다음 구문을 사용합니다.

### YAML
<a name="sam-property-function-apifunctionauth-syntax.yaml"></a>

```
  [ApiKeyRequired](#sam-function-apifunctionauth-apikeyrequired): {{Boolean}}
  [AuthorizationScopes](#sam-function-apifunctionauth-authorizationscopes): {{List}}
  [Authorizer](#sam-function-apifunctionauth-authorizer): {{String}}
  [InvokeRole](#sam-function-apifunctionauth-invokerole): {{String}}
  OverrideApiAuth: {{Boolean}}
  [ResourcePolicy](#sam-function-apifunctionauth-resourcepolicy): {{ResourcePolicyStatement}}
```

## 속성
<a name="sam-property-function-apifunctionauth-properties"></a>

 `ApiKeyRequired`   <a name="sam-function-apifunctionauth-apikeyrequired"></a>
이 API, 경로 및 메서드에 대한 API 키가 필요합니다.  
*유형*: 부울  
*필수 항목 여부*: 아니요  
*CloudFormation 호환성*:이 속성은에 AWS SAM 고유하며 CloudFormation 동등한 속성이 없습니다.

 `AuthorizationScopes`   <a name="sam-function-apifunctionauth-authorizationscopes"></a>
이 API, 경로 및 메서드에 적용할 수 있는 권한 부여 범위.  
지정한 범위는 해당 속성을 지정한 경우 `DefaultAuthorizer` 속성에서 적용한 모든 범위를 재정의합니다.  
*유형*: 목록  
*필수 항목 여부*: 아니요  
*CloudFormation 호환성*:이 속성은에 AWS SAM 고유하며 CloudFormation 동등한 속성이 없습니다.

 `Authorizer`   <a name="sam-function-apifunctionauth-authorizer"></a>
특정 함수를 위한 `Authorizer`  
귀하의 `AWS::Serverless::Api` 리소스에 글로벌 권한 부여자가 지정된 경우, `Authorizer`를 `NONE`으로 설정하여 권한 부여자를 재정의할 수 있습니다. 예제는 [Amazon API Gateway REST API에 대한 글로벌 권한 부여자 재정의](#sam-property-function-apifunctionauth--examples--override) 섹션을 참조하세요.  
`AWS::Serverless::Api` 리소스의 `DefinitionBody` 속성을 사용하여 API를 설명하는 경우 `Authorizer`와 함께 `OverrideApiAuth`을 사용하여 귀하의 글로벌 권한 부여자를 재정의해야 합니다. 자세한 정보는 `OverrideApiAuth`을 참조하세요
*유효한 값*: 템플릿에 정의된 권한 부여자의 `AWS_IAM``NONE`, 또는 논리적 ID입니다 AWS SAM .  
*유형*: 문자열  
*필수 항목 여부*: 아니요  
*CloudFormation 호환성*:이 속성은에 AWS SAM 고유하며 CloudFormation 동등한 속성이 없습니다.

 `InvokeRole`   <a name="sam-function-apifunctionauth-invokerole"></a>
`AWS_IAM` 권한 부여에 사용할 `InvokeRole`를 지정합니다.  
*유형*: 문자열  
*필수 항목 여부*: 아니요  
*기본값*: `CALLER_CREDENTIALS`  
*CloudFormation 호환성*:이 속성은에 AWS SAM 고유하며 CloudFormation 동등한 속성이 없습니다.  
*추가 참고 사항*: `CALLER_CREDENTIALS`는 `arn:aws:iam::{{:<user>/}}`을 매핑하며, 이는 호출자 보안 인증을 사용하여 엔드포인트를 호출합니다.

`OverrideApiAuth`  <a name="sam-function-apifunctionauth-overrideapiauth"></a>
귀하의 `AWS::Serverless::Api`리소스의 글로벌 권한 부여자 구성을 재정의하도록 `true`을 지정합니다. 이 속성은 글로벌 권한 부여자를 지정하고 `AWS::Serverless::Api` 리소스의 `DefinitionBody` 속성을 사용하여 API를 설명하는 경우에만 필요합니다.  
를 `OverrideApiAuth`로 지정하면 AWS SAM `true`는 글로벌 권한 부여자를 `ApiKeyRequired`, `Authorizer`또는에 제공된 값으로 재정의합니다`ResourcePolicy`. 따라서 `OverrideApiAuth`를 사용할 때 이러한 속성들 중에서 적어도 하나가 지정되어야 합니다. 예시는 [AWS::서버리스::Api용 DefinitionBody가 지정된 경우 글로벌 권한 부여자를 재정의합니다.](#sam-property-function-apifunctionauth--examples--override2) 섹션을 참조하세요.
*유형*: 부울  
*필수 항목 여부*: 아니요  
*CloudFormation 호환성*:이 속성은에 고유 AWS SAM 하며 CloudFormation 동등한 속성이 없습니다.

 `ResourcePolicy`   <a name="sam-function-apifunctionauth-resourcepolicy"></a>
API에서 이 경로에 대한 리소스 정책을 구성합니다.  
*유형*: [리소스 정책 설명](sam-property-function-resourcepolicystatement.md)  
*필수 항목 여부*: 아니요  
*CloudFormation 호환성*:이 속성은에 AWS SAM 고유하며 CloudFormation 동등한 속성이 없습니다.

## 예제
<a name="sam-property-function-apifunctionauth--examples"></a>

### 함수-권한 부여
<a name="sam-property-function-apifunctionauth--examples--function-auth"></a>

다음 예제에서는 함수 수준에서 권한 부여를 지정합니다.

#### YAML
<a name="sam-property-function-apifunctionauth--examples--function-auth--yaml"></a>

```
Auth:
  ApiKeyRequired: true
  Authorizer: NONE
```

### Amazon API Gateway REST API에 대한 글로벌 권한 부여자 재정의
<a name="sam-property-function-apifunctionauth--examples--override"></a>

`AWS::Serverless::Api` 리소스의 글로벌 권한 부여자를 지정할 수 있습니다. 다음은 글로벌 기본 권한 부여자를 구성하는 예입니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyApiWithLambdaRequestAuth:
    Type: AWS::Serverless::Api
    Properties:
      ...
      Auth:
        Authorizers:
          MyLambdaRequestAuth:
            FunctionArn: !GetAtt MyAuthFn.Arn
        DefaultAuthorizer: MyLambdaRequestAuth
```

 AWS Lambda 함수의 기본 권한 부여자를 재정의하려면를 `Authorizer`로 지정할 수 있습니다`NONE`. 다음은 예제입니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  ...
  MyFn:
    Type: AWS::Serverless::Function
    Properties:
      ...
      Events:
        LambdaRequest:
          Type: Api
          Properties:
            RestApiId: !Ref MyApiWithLambdaRequestAuth
            Method: GET
            Auth:
              Authorizer: NONE
```

### AWS::서버리스::Api용 DefinitionBody가 지정된 경우 글로벌 권한 부여자를 재정의합니다.
<a name="sam-property-function-apifunctionauth--examples--override2"></a>

`DefinitionBody`속성을 사용하여 `AWS::Serverless::Api` 리소스를 설명하는 경우 이전 재정의 방법이 작동하지 않습니다. 다음은 `AWS::Serverless::Api` 리소스에 `DefinitionBody` 속성을 사용하는 예제입니다.

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyApiWithLambdaRequestAuth:
    Type: AWS::Serverless::Api
    Properties:
      ...
      DefinitionBody:
        swagger: 2.0
        ...
        paths:
          /lambda-request:
            ...
      Auth:
        Authorizers:
          MyLambdaRequestAuth:
            FunctionArn: !GetAtt MyAuthFn.Arn
        DefaultAuthorizer: MyLambdaRequestAuth
```

글로벌 권한 부여자를 재정의하려면 `OverrideApiAuth` 속성을 사용합니다. 다음은 `Authorizer`에 제공된 값으로 글로벌 권한 부여자를 재정의하는 데 `OverrideApiAuth`을 사용하는 예제입니다. 

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyApiWithLambdaRequestAuth:
    Type: AWS::Serverless::Api
    Properties:
      ...
      DefinitionBody:
        swagger: 2-0
        ...
        paths:
          /lambda-request:
            ...
      Auth:
        Authorizers:
          MyLambdaRequestAuth:
            FunctionArn: !GetAtt MyAuthFn.Arn
        DefaultAuthorizer: MyLambdaRequestAuth
    
    MyAuthFn:
      Type: AWS::Serverless::Function
      ...
    
    MyFn:
      Type: AWS::Serverless::Function
        Properties:
          ...
          Events:
            LambdaRequest:
              Type: Api
              Properties:
                RestApiId: !Ref MyApiWithLambdaRequestAuth
                Method: GET
                Auth:
                  Authorizer: NONE
                  OverrideApiAuth: true
                Path: /lambda-token
```