

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

# Membuat dan melampirkan kebijakan sumber daya API Gateway ke API
<a name="apigateway-resource-policies-create-attach"></a>

Agar pengguna dapat mengakses API Anda dengan memanggil layanan eksekusi API, Anda harus membuat kebijakan sumber daya API Gateway dan melampirkan kebijakan tersebut ke API. Saat Anda melampirkan kebijakan ke API Anda, kebijakan tersebut menerapkan izin dalam kebijakan ke metode di API. Jika memperbarui kebijakan sumber daya, Anda harus menerapkan API.

**Topics**
+ [Prasyarat](#apigateway-resource-policies-prerequisites)
+ [Melampirkan kebijakan sumber daya ke API Gateway API](#apigateway-resource-policies-create-attach-procedure)
+ [Memecahkan masalah kebijakan sumber daya Anda](#apigateway-resource-policies-troubleshoot)

## Prasyarat
<a name="apigateway-resource-policies-prerequisites"></a>

 Untuk memperbarui kebijakan sumber daya API Gateway, Anda memerlukan `apigateway:UpdateRestApiPolicy` izin dan `apigateway:PATCH` izin.

Untuk API Regional atau yang dioptimalkan tepi, Anda dapat melampirkan kebijakan sumber daya ke API saat Anda membuatnya, atau setelah diterapkan. Untuk API pribadi, Anda tidak dapat menerapkan API tanpa kebijakan sumber daya. Untuk informasi selengkapnya, lihat [REST pribadi APIs di API Gateway](apigateway-private-apis.md).

## Melampirkan kebijakan sumber daya ke API Gateway API
<a name="apigateway-resource-policies-create-attach-procedure"></a>

Prosedur berikut menunjukkan cara melampirkan kebijakan sumber daya ke API Gateway API.

------
#### [ Konsol Manajemen AWS ]

**Untuk melampirkan kebijakan sumber daya ke API Gateway API**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih REST API.

1. Di panel navigasi utama, pilih **Kebijakan sumber daya**.

1. Pilih **Buat kebijakan**.

1. (Opsional) **Pilih templat** untuk menghasilkan contoh kebijakan.

   Dalam contoh kebijakan, placeholder dilampirkan dalam double curly braces (). `"{{placeholder}}"` Ganti masing-masing placeholder, termasuk kawat gigi keriting, dengan informasi yang diperlukan.

1. Jika Anda tidak menggunakan salah satu contoh templat, masukkan kebijakan sumber daya Anda.

1. Pilih **Simpan perubahan**.

Jika API telah digunakan sebelumnya di konsol API Gateway, Anda harus menerapkannya kembali agar kebijakan sumber daya diterapkan.

------
#### [ AWS CLI ]

Untuk menggunakan AWS CLI untuk membuat API baru dan melampirkan kebijakan sumber daya ke dalamnya, gunakan [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)perintah berikut:

```
aws apigateway create-rest-api \
    --name "api-name" \
    --policy "{\"jsonEscapedPolicyDocument\"}"
```

Untuk menggunakan AWS CLI untuk melampirkan kebijakan sumber daya ke API yang ada, gunakan [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)perintah berikut: 

```
aws apigateway update-rest-api \
    --rest-api-id api-id \
    --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
```

Anda juga dapat melampirkan kebijakan sumber daya Anda sebagai `policy.json` file terpisah dan memasukkannya ke dalam [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)perintah Anda. [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)Perintah berikut membuat API baru dengan kebijakan sumber daya:

```
aws apigateway create-rest-api \
    --name "api-name" \
    --policy file://policy.json
```

`policy.json`adalah kebijakan sumber daya API Gateway, seperti[Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example).

------
#### [ AWS CloudFormation ]

Anda dapat menggunakan CloudFormation untuk membuat API dengan kebijakan sumber daya. Contoh berikut membuat REST API dengan contoh kebijakan sumber daya,[Contoh: Tolak lalu lintas API berdasarkan alamat atau rentang IP sumber](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example). 

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  Api:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: testapi
      Policy:
        Statement:
          - Action: 'execute-api:Invoke'
            Effect: Allow
            Principal: '*'
            Resource: 'execute-api:/*'
          - Action: 'execute-api:Invoke'
            Effect: Deny
            Principal: '*'
            Resource: 'execute-api:/*'
            Condition:
              IpAddress: 
                'aws:SourceIp': ["192.0.2.0/24", "198.51.100.0/24" ]
        Version: 2012-10-17		 	 	 
  Resource:
    Type: 'AWS::ApiGateway::Resource'
    Properties:
      RestApiId: !Ref Api
      ParentId: !GetAtt Api.RootResourceId
      PathPart: 'helloworld'
  MethodGet:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref Resource
      HttpMethod: GET
      ApiKeyRequired: false
      AuthorizationType: NONE
      Integration:
        Type: MOCK
        RequestTemplates:
          application/json: '{"statusCode": 200}'
        IntegrationResponses:
          - StatusCode: 200
            ResponseTemplates:
              application/json: '{}'
      MethodResponses:
        - StatusCode: 200
          ResponseModels:
            application/json: 'Empty'
  ApiDeployment:
    Type: 'AWS::ApiGateway::Deployment'
    DependsOn:
      - MethodGet
    Properties:
      RestApiId: !Ref Api
      StageName: test
```

------

## Memecahkan masalah kebijakan sumber daya Anda
<a name="apigateway-resource-policies-troubleshoot"></a>

Panduan pemecahan masalah berikut dapat membantu menyelesaikan masalah dengan kebijakan sumber daya Anda.

### API saya mengembalikan \$1"Message” :"User: anonymous tidak diizinkan untuk melakukan: execute-api:invoke on resource: arn:aws:execute-api:us-east-1: \$1\$1\$1\$1\$1\$1\$1\$1/\$1\$1\$1\$1/\$1\$1\$1\$1/ "\$1
<a name="apigateway-resource-policies-troubleshoot-auth"></a>

Dalam kebijakan sumber daya Anda, jika Anda menetapkan Principal ke AWS prinsipal, seperti berikut ini:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111111111111:role/developer",
                    "arn:aws:iam::111111111111:role/Admin"
                ]
            },
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/stage/GET/pets"
            ]
        }
    ]
}
```

------

Anda harus menggunakan `AWS_IAM` otorisasi untuk setiap metode di API Anda, atau API Anda mengembalikan pesan kesalahan sebelumnya. Untuk petunjuk selengkapnya tentang cara mengaktifkan `AWS_IAM` otorisasi untuk suatu metode, lihat[Metode untuk REST APIs di API Gateway](how-to-method-settings.md).

### Kebijakan sumber daya saya tidak diperbarui
<a name="apigateway-resource-policies-troubleshoot-deploy"></a>

 Jika memperbarui kebijakan sumber daya setelah API dibuat, Anda harus menerapkan API untuk menyebarkan perubahan setelah Anda melampirkan kebijakan yang diperbarui. Memperbarui atau menyimpan kebijakan saja tidak akan mengubah perilaku runtime API. Untuk informasi selengkapnya tentang penerapan API Anda, lihat[Menerapkan REST APIs di API Gateway](how-to-deploy-api.md). 

### Kebijakan sumber daya saya mengembalikan kesalahan berikut: Dokumen kebijakan tidak valid. Silakan periksa sintaks kebijakan dan pastikan bahwa Prinsipal valid.
<a name="apigateway-resource-policies-troubleshoot-invalid-principal"></a>

Untuk mengatasi masalah kesalahan ini, sebaiknya periksa sintaks kebijakan terlebih dahulu. Untuk informasi selengkapnya, lihat [Mengakses ikhtisar bahasa kebijakan untuk Amazon API Gateway](apigateway-control-access-policy-language-overview.md). Kami juga menyarankan Anda memeriksa bahwa semua prinsipal yang ditentukan valid dan belum dihapus.

Selain itu, jika API Anda berada di [Wilayah keikutsertaan](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#optinregion), verifikasi bahwa semua akun dalam kebijakan sumber daya mengaktifkan Region. 