

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Mengonfigurasi otorisasi di tingkat peristiwa, untuk API, jalur, dan metode tertentu.

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

Untuk mendeklarasikan entitas ini dalam template AWS Serverless Application Model (AWS SAM) Anda, gunakan sintaks berikut.

### 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}}
```

## Sifat-sifat
<a name="sam-property-function-apifunctionauth-properties"></a>

 `ApiKeyRequired`   <a name="sam-function-apifunctionauth-apikeyrequired"></a>
Memerlukan kunci API untuk API, jalur, dan metode ini.  
*Tipe*: Boolean  
*Wajib*: Tidak  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `AuthorizationScopes`   <a name="sam-function-apifunctionauth-authorizationscopes"></a>
Cakupan otorisasi yang akan diterapkan ke API, path, dan metode ini.  
Cakupan yang Anda tentukan akan membatalkan setiap cakupan yang diterapkan oleh properti `DefaultAuthorizer` jika Anda telah menentukannya.  
*Tipe*: Daftar  
*Wajib*: Tidak  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `Authorizer`   <a name="sam-function-apifunctionauth-authorizer"></a>
`Authorizer`Untuk fungsi tertentu.  
Jika Anda memiliki otorisasi global yang ditentukan untuk `AWS::Serverless::Api` sumber daya Anda, Anda dapat mengganti otorisasi dengan menyetelnya. `Authorizer` `NONE` Sebagai contoh, lihat [Ganti otorisasi global untuk REST API Amazon API Gateway](#sam-property-function-apifunctionauth--examples--override).  
Jika Anda menggunakan `DefinitionBody` properti `AWS::Serverless::Api` sumber daya untuk mendeskripsikan API Anda, Anda harus menggunakan `OverrideApiAuth` with `Authorizer` untuk mengganti otorisasi global Anda. Untuk informasi selengkapnya, lihat `OverrideApiAuth`.
*Nilai valid*:`AWS_IAM`,`NONE`, atau ID logis untuk otorisasi apa pun yang ditentukan dalam AWS SAM template Anda.  
*Tipe*: String  
*Wajib*: Tidak  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `InvokeRole`   <a name="sam-function-apifunctionauth-invokerole"></a>
Menentukan `InvokeRole` untuk digunakan untuk otorisasi `AWS_IAM`.  
*Tipe*: String  
*Wajib*: Tidak  
*Default*: `CALLER_CREDENTIALS`  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.  
*Catatan tambahan*: `CALLER_CREDENTIALS` memetakan ke `arn:aws:iam::{{:<user>/}}`, yang menggunakan kredensial pemanggil untuk memanggil titik akhir.

`OverrideApiAuth`  <a name="sam-function-apifunctionauth-overrideapiauth"></a>
Tentukan `true` untuk mengganti konfigurasi otorisasi global sumber daya Anda`AWS::Serverless::Api`. Properti ini hanya diperlukan jika Anda menentukan otorisasi global dan menggunakan `DefinitionBody` properti `AWS::Serverless::Api` sumber daya untuk mendeskripsikan API Anda.  
Saat Anda menentukan `OverrideApiAuth` sebagai`true`, AWS SAM akan mengganti otorisasi global Anda dengan nilai apa pun yang disediakan untuk`ApiKeyRequired`,`Authorizer`, atau. `ResourcePolicy` Oleh karena itu, setidaknya satu dari properti ini juga harus ditentukan saat menggunakan`OverrideApiAuth`. Sebagai contoh, lihat [Ganti otorisasi global saat DefinitionBody for ditentukan AWS::Serverless::Api](#sam-property-function-apifunctionauth--examples--override2).
*Tipe*: Boolean  
*Wajib*: Tidak  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

 `ResourcePolicy`   <a name="sam-function-apifunctionauth-resourcepolicy"></a>
Mengonfigurasi Kebijakan Sumber Daya untuk jalur ini pada API.  
*Jenis*: [ResourcePolicyStatement](sam-property-function-resourcepolicystatement.md)  
*Wajib*: Tidak  
*CloudFormation kompatibilitas*: Properti ini unik AWS SAM dan tidak memiliki CloudFormation padanan.

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

### Function-Auth
<a name="sam-property-function-apifunctionauth--examples--function-auth"></a>

Contoh berikut menentukan otorisasi pada tingkat fungsi.

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

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

### Ganti otorisasi global untuk REST API Amazon API Gateway
<a name="sam-property-function-apifunctionauth--examples--override"></a>

Anda dapat menentukan otorisasi global untuk `AWS::Serverless::Api` sumber daya Anda. Berikut ini adalah contoh yang mengkonfigurasi otorisasi default global:

```
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
```

Untuk mengganti authorizer default untuk AWS Lambda fungsi Anda, Anda dapat menentukan `Authorizer` sebagai. `NONE` Berikut ini adalah contohnya:

```
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
```

### Ganti otorisasi global saat DefinitionBody for ditentukan AWS::Serverless::Api
<a name="sam-property-function-apifunctionauth--examples--override2"></a>

Saat menggunakan `DefinitionBody` properti untuk mendeskripsikan `AWS::Serverless::Api` sumber daya Anda, metode penggantian sebelumnya tidak berfungsi. Berikut ini adalah contoh penggunaan `DefinitionBody` properti untuk sumber `AWS::Serverless::Api` daya:

```
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
```

Untuk mengganti otorisasi global, gunakan properti. `OverrideApiAuth` Berikut ini adalah contoh yang digunakan `OverrideApiAuth` untuk mengganti otorisasi global dengan nilai yang disediakan untuk: `Authorizer`

```
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
```