

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

# Memberikan fungsi Lambda akses ke sumber daya di VPC Amazon
<a name="configuration-vpc"></a>

Dengan Amazon Virtual Private Cloud (Amazon VPC), Anda dapat membuat jaringan pribadi di sumber daya host Anda seperti Akun AWS instans Amazon Elastic Compute Cloud (Amazon EC2), instans Amazon Relational Database Service (Amazon RDS), dan instans Amazon. ElastiCache Anda dapat memberikan akses fungsi Lambda ke sumber daya yang dihosting di VPC Amazon dengan melampirkan fungsi Anda ke VPC melalui subnet pribadi yang berisi sumber daya. Ikuti petunjuk di bagian berikut untuk melampirkan fungsi Lambda ke VPC Amazon menggunakan konsol Lambda, (), atau. AWS Command Line Interface AWS CLI AWS SAM

**catatan**  
Setiap fungsi Lambda berjalan di dalam VPC yang dimiliki dan dikelola oleh layanan Lambda. Ini VPCs dikelola secara otomatis oleh Lambda dan tidak terlihat oleh pelanggan. Mengonfigurasi fungsi Anda untuk mengakses AWS sumber daya lain di VPC Amazon tidak berpengaruh pada VPC yang dikelola Lambda yang dijalankan fungsi Anda di dalamnya.

**Topics**
+ [Izin IAM yang diperlukan](#configuration-vpc-permissions)
+ [Melampirkan fungsi Lambda ke VPC Amazon di Akun AWS](#configuration-vpc-attaching)
+ [Akses internet saat dilampirkan ke VPC](#configuration-vpc-internet-access)
+ [IPv6 dukungan](#configuration-vpc-ipv6)
+ [Praktik terbaik untuk menggunakan Lambda dengan Amazon VPCs](#configuration-vpc-best-practice)
+ [Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs](#configuration-vpc-enis)
+ [Menggunakan kunci syarat IAM untuk pengaturan VPC](#vpc-conditions)
+ [Tutorial VPC](#vpc-tutorials)

## Izin IAM yang diperlukan
<a name="configuration-vpc-permissions"></a>

Untuk melampirkan fungsi Lambda ke VPC Amazon di Anda, Akun AWS Lambda memerlukan izin untuk membuat dan mengelola antarmuka jaringan yang digunakannya untuk memberikan akses fungsi Anda ke sumber daya di VPC.

Antarmuka jaringan yang dibuat Lambda dikenal sebagai Hyperplane Elastic Network Interfaces, atau Hyperplane. ENIs Untuk mempelajari lebih lanjut tentang antarmuka jaringan ini, lihat[Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs](#configuration-vpc-enis).

Anda dapat memberikan fungsi izin yang dibutuhkan dengan melampirkan kebijakan AWS terkelola [AWSLambdaVPCAccessExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html)ke peran eksekusi fungsi Anda. Saat Anda membuat fungsi baru di konsol Lambda dan melampirkannya ke VPC, Lambda secara otomatis menambahkan kebijakan izin ini untuk Anda.

Jika Anda lebih suka membuat kebijakan izin IAM Anda sendiri, pastikan untuk menambahkan semua izin berikut dan mengizinkannya di semua sumber daya (): `"Resource": "*"`
+ EC2: CreateNetworkInterface
+ EC2: DescribeNetworkInterfaces
+ EC2: DescribeSubnets
+ EC2: DeleteNetworkInterface
+ EC2: AssignPrivateIpAddresses
+ EC2: UnassignPrivateIpAddresses

Perhatikan bahwa peran fungsi Anda hanya memerlukan izin ini untuk membuat antarmuka jaringan, bukan untuk memanggil fungsi Anda. Anda masih dapat menjalankan fungsi dengan sukses saat dilampirkan ke VPC Amazon, meskipun Anda menghapus izin ini dari peran eksekusi fungsi Anda. 

Untuk melampirkan fungsi Anda ke VPC, Lambda juga perlu memverifikasi sumber daya jaringan menggunakan peran pengguna IAM Anda. Pastikan peran pengguna Anda memiliki izin IAM berikut:
+ **EC2: DescribeSecurityGroups**
+ **EC2: DescribeSubnets**
+ **EC2: DescribeVpcs**
+ **EC2: GetSecurityGroupsForVpc**

**catatan**  
Izin Amazon EC2 yang Anda berikan ke peran eksekusi fungsi Anda digunakan oleh layanan Lambda untuk melampirkan fungsi Anda ke VPC. Namun, Anda juga secara implisit memberikan izin ini ke kode fungsi Anda. Ini berarti bahwa kode fungsi Anda dapat membuat panggilan API Amazon EC2 ini. Untuk saran tentang mengikuti praktik terbaik keamanan, lihat[Praktik terbaik keamanan](#configuration-vpc-best-practice-security).

## Melampirkan fungsi Lambda ke VPC Amazon di Akun AWS
<a name="configuration-vpc-attaching"></a>

Lampirkan fungsi Anda ke VPC Amazon di Anda Akun AWS dengan menggunakan konsol Lambda, atau. AWS CLI AWS SAM Jika Anda menggunakan AWS CLI atau AWS SAM, atau melampirkan fungsi yang ada ke VPC menggunakan konsol Lambda, pastikan bahwa peran eksekusi fungsi Anda memiliki izin yang diperlukan yang tercantum di bagian sebelumnya.

Fungsi Lambda tidak dapat terhubung langsung ke VPC dengan [ tenancy instans khusus](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html). Untuk terhubung ke sumber daya dalam VPC khusus, [sambungkan ke VPC kedua dengan penyewaan default](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-dedicated-vpc/).

------
#### [ Lambda console ]

**Untuk melampirkan fungsi ke VPC Amazon saat Anda membuatnya**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) konsol Lambda dan pilih **Buat** fungsi.

1. Di bawah **Informasi Dasar**, untuk **Nama fungsi**, masukkan nama untuk fungsi Anda.

1. Konfigurasikan pengaturan VPC untuk fungsi dengan melakukan hal berikut:

   1. Perluas **Pengaturan lanjutan**.

   1. Pilih **Aktifkan VPC**, lalu pilih VPC yang ingin Anda lampirkan fungsinya.

   1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**.

   1. Pilih subnet dan grup keamanan untuk membuat antarmuka jaringan. Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 
**catatan**  
Untuk mengakses sumber daya privat, sambungkan fungsi Anda ke subnet privat. Jika fungsi Anda membutuhkan akses internet, lihat[Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC](configuration-vpc-internet.md). Menghubungkan fungsi ke subnet publik tidak memberikan akses internet atau alamat IP publik. 

1. Pilih **Buat fungsi**.

**Untuk melampirkan fungsi yang ada ke VPC Amazon**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) konsol Lambda dan pilih fungsi Anda.

1. Pilih tab **Konfigurasi**, lalu pilih **VPC**.

1. Pilih **Edit**.

1. Di bawah **VPC**, pilih VPC Amazon yang ingin Anda lampirkan fungsinya.

1. (Opsional) Untuk mengizinkan [ IPv6 lalu lintas keluar](#configuration-vpc-ipv6), pilih **Izinkan lalu IPv6 lintas untuk subnet dual-stack**. 

1. Pilih subnet dan grup keamanan untuk membuat antarmuka jaringan. Jika Anda memilih **Izinkan IPv6 lalu lintas untuk subnet dual-stack, semua subnet** yang dipilih harus memiliki blok CIDR dan blok IPv4 CIDR. IPv6 
**catatan**  
Untuk mengakses sumber daya privat, sambungkan fungsi Anda ke subnet privat. Jika fungsi Anda membutuhkan akses internet, lihat[Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC](configuration-vpc-internet.md). Menghubungkan fungsi ke subnet publik tidak memberikan akses internet atau alamat IP publik. 

1. Pilih **Simpan**.

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

**Untuk melampirkan fungsi ke VPC Amazon saat Anda membuatnya**
+ Untuk membuat fungsi Lambda dan melampirkannya ke VPC, jalankan perintah CLI berikut. `create-function`

  ```
  aws lambda create-function --function-name my-function \
  --runtime nodejs24.x --handler index.js --zip-file fileb://function.zip \
  --role arn:aws:iam::123456789012:role/lambda-role \
  --vpc-config Ipv6AllowedForDualStack=true,SubnetIds=subnet-071f712345678e7c8,subnet-07fd123456788a036,SecurityGroupIds=sg-085912345678492fb
  ```

  Tentukan subnet dan grup keamanan Anda sendiri dan atur `Ipv6AllowedForDualStack` ke `true` atau `false` sesuai dengan kasus penggunaan Anda.

**Untuk melampirkan fungsi yang ada ke VPC Amazon**
+ Untuk melampirkan fungsi yang ada ke VPC, jalankan perintah CLI berikut. `update-function-configuration`

  ```
  aws lambda update-function-configuration --function-name my-function \
  --vpc-config Ipv6AllowedForDualStack=true, SubnetIds=subnet-071f712345678e7c8,subnet-07fd123456788a036,SecurityGroupIds=sg-085912345678492fb
  ```

**Untuk melepaskan fungsi Anda dari VPC**
+ Untuk melepaskan fungsi Anda dari VPC, jalankan perintah `update-function-configuration` CLI berikut dengan daftar kosong subnet VPC dan grup keamanan.

  ```
  aws lambda update-function-configuration --function-name my-function \
  --vpc-config SubnetIds=[],SecurityGroupIds=[]
  ```

------
#### [ AWS SAM ]

**Untuk melampirkan fungsi Anda ke VPC**
+ Untuk melampirkan fungsi Lambda ke VPC Amazon, tambahkan `VpcConfig` properti ke definisi fungsi Anda seperti yang ditunjukkan pada contoh template berikut. Untuk informasi selengkapnya tentang properti ini, lihat [AWS: :Lambda: :Function VpcConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html) di *Panduan CloudFormation Pengguna* ( AWS SAM `VpcConfig`properti diteruskan langsung ke `VpcConfig` properti sumber daya). CloudFormation `AWS::Lambda::Function`

  ```
  AWSTemplateFormatVersion: '2010-09-09'
  Transform: AWS::Serverless-2016-10-31
  
  Resources:
    MyFunction:
      Type: AWS::Serverless::Function
      Properties:
        CodeUri: ./lambda_function/
        Handler: lambda_function.handler
        Runtime: python3.12
        VpcConfig:
          SecurityGroupIds:
            - !Ref MySecurityGroup
          SubnetIds:
            - !Ref MySubnet1
            - !Ref MySubnet2
        Policies:
          - AWSLambdaVPCAccessExecutionRole
  
    MySecurityGroup:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: Security group for Lambda function
        VpcId: !Ref MyVPC
  
    MySubnet1:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref MyVPC
        CidrBlock: 10.0.1.0/24
  
    MySubnet2:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref MyVPC
        CidrBlock: 10.0.2.0/24
  
    MyVPC:
      Type: AWS::EC2::VPC
      Properties:
        CidrBlock: 10.0.0.0/16
  ```

  *Untuk informasi selengkapnya tentang mengonfigurasi VPC Anda, [AWS lihat: :EC2: :VPC AWS SAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html) di Panduan Pengguna.CloudFormation *

------

## Akses internet saat dilampirkan ke VPC
<a name="configuration-vpc-internet-access"></a>

Secara default, fungsi Lambda memiliki akses ke internet publik. Ketika Anda melampirkan fungsi Anda ke VPC, itu hanya dapat mengakses sumber daya yang tersedia dalam VPC itu. Untuk memberikan akses fungsi Anda ke internet, Anda juga perlu mengkonfigurasi VPC untuk memiliki akses internet. Untuk mempelajari selengkapnya, lihat [Aktifkan akses internet untuk fungsi Lambda yang terhubung dengan VPC](configuration-vpc-internet.md).

## IPv6 dukungan
<a name="configuration-vpc-ipv6"></a>

Fungsi Anda dapat terhubung ke sumber daya di subnet VPC dual-stack. IPv6 Opsi ini dimatikan secara default. Untuk mengizinkan IPv6 lalu lintas keluar, gunakan konsol atau `--vpc-config Ipv6AllowedForDualStack=true` opsi dengan fungsi atau [perintah buat. [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html)

**catatan**  
Untuk memungkinkan IPv6 lalu lintas keluar di VPC, semua subnet yang terhubung ke fungsi harus subnet dual-stack. Lambda tidak mendukung IPv6 koneksi keluar untuk subnet IPv6 -only di VPC atau koneksi IPv6 keluar untuk fungsi yang tidak terhubung ke VPC.

Anda dapat memperbarui kode fungsi Anda untuk secara eksplisit terhubung ke sumber daya subnet. IPv6 Contoh Python berikut membuka soket dan menghubungkan ke server. IPv6 

**Example — Connect ke IPv6 server**  

```
def connect_to_server(event, context):
    server_address = event['host']
    server_port = event['port']
    message = event['message']
    run_connect_to_server(server_address, server_port, message)

def run_connect_to_server(server_address, server_port, message):
    sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM, 0)
    try:
        # Send data
        sock.connect((server_address, int(server_port), 0, 0))
        sock.sendall(message.encode())
        BUFF_SIZE = 4096
        data = b''
        while True:
            segment = sock.recv(BUFF_SIZE)
            data += segment
            # Either 0 or end of data
            if len(segment) < BUFF_SIZE:
                break
        return data
    finally:
        sock.close()
```

## Praktik terbaik untuk menggunakan Lambda dengan Amazon VPCs
<a name="configuration-vpc-best-practice"></a>

Untuk memastikan bahwa konfigurasi VPC Lambda Anda memenuhi pedoman praktik terbaik, ikuti saran di bagian berikut.

### Praktik terbaik keamanan
<a name="configuration-vpc-best-practice-security"></a>

Untuk melampirkan fungsi Lambda Anda ke VPC, Anda harus memberikan peran eksekusi fungsi Anda sejumlah izin Amazon EC2. Izin ini diperlukan untuk membuat antarmuka jaringan yang digunakan fungsi Anda untuk mengakses sumber daya di VPC. Namun, izin ini juga secara implisit diberikan ke kode fungsi Anda. Ini berarti bahwa kode fungsi Anda memiliki izin untuk melakukan panggilan API Amazon EC2 ini.

Untuk mengikuti prinsip akses hak istimewa paling rendah, tambahkan kebijakan penolakan seperti contoh berikut ke peran eksekusi fungsi Anda. Kebijakan ini mencegah kode fungsi Anda melakukan panggilan ke Amazon EC2 APIs, sambil tetap mengizinkan layanan Lambda mengelola sumber daya VPC atas nama Anda. Kebijakan menggunakan kunci `lambda:SourceFunctionArn` kondisi, yang hanya berlaku untuk panggilan API yang dibuat oleh kode fungsi Anda selama eksekusi. Untuk informasi selengkapnya, lihat [Menggunakan fungsi sumber ARN untuk mengontrol perilaku akses fungsi](permissions-source-function-arn.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [ 
                 "ec2:CreateNetworkInterface",
                 "ec2:DeleteNetworkInterface",
                 "ec2:DescribeNetworkInterfaces",
                 "ec2:DescribeSubnets",
                 "ec2:DetachNetworkInterface",
                 "ec2:AssignPrivateIpAddresses",
                 "ec2:UnassignPrivateIpAddresses"
            ],
            "Resource": [ "*" ],
            "Condition": {
                "ArnEquals": {
                    "lambda:SourceFunctionArn": [
                        "arn:aws:lambda:us-west-2:123456789012:function:my_function"
                    ]
                }
            }
        }
    ]
}
```

------

AWS menyediakan *[grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)* dan *[Daftar Kontrol Akses jaringan (ACLs)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)* untuk meningkatkan keamanan di VPC Anda. Grup keamanan mengontrol lalu lintas masuk dan keluar untuk sumber daya Anda, dan jaringan ACLs mengontrol lalu lintas masuk dan keluar untuk subnet Anda. Grup keamanan menyediakan kontrol akses yang cukup untuk sebagian besar subnet. Anda dapat menggunakan jaringan ACLs jika Anda menginginkan lapisan keamanan tambahan untuk VPC Anda. Untuk panduan umum tentang praktik terbaik keamanan saat menggunakan Amazon VPCs, lihat [Praktik terbaik keamanan untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html) di *Panduan Pengguna Amazon Virtual Private Cloud*.

### Praktik terbaik kinerja
<a name="configuration-vpc-best-practice-performance"></a>

Ketika Anda melampirkan fungsi Anda ke VPC, Lambda memeriksa untuk melihat apakah ada sumber daya jaringan yang tersedia (Hyperplane ENI) yang dapat digunakan untuk terhubung. Hyperplane ENIs dikaitkan dengan kombinasi tertentu dari kelompok keamanan dan subnet VPC. Jika Anda telah melampirkan satu fungsi ke VPC, menentukan subnet dan grup keamanan yang sama saat Anda melampirkan fungsi lain berarti Lambda dapat berbagi sumber daya jaringan dan menghindari kebutuhan untuk membuat ENI Hyperplane baru. Untuk informasi selengkapnya tentang Hyperplane ENIs dan siklus hidupnya, lihat. [Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs](#configuration-vpc-enis)

## Memahami Antarmuka Jaringan Elastis Hyperplane () ENIs
<a name="configuration-vpc-enis"></a>

Hyperplane ENI adalah sumber daya terkelola yang bertindak sebagai antarmuka jaringan antara fungsi Lambda Anda dan sumber daya yang Anda inginkan untuk terhubung ke fungsi Anda. Layanan Lambda membuat dan mengelola ini ENIs secara otomatis ketika Anda melampirkan fungsi Anda ke VPC.

Hyperplane ENIs tidak langsung terlihat oleh Anda, dan Anda tidak perlu mengkonfigurasi atau mengelolanya. Namun, mengetahui cara kerjanya dapat membantu Anda memahami perilaku fungsi Anda saat Anda melampirkannya ke VPC.

Pertama kali Anda melampirkan fungsi ke VPC menggunakan subnet tertentu dan kombinasi grup keamanan, Lambda membuat Hyperplane ENI. Fungsi lain di akun Anda yang menggunakan kombinasi subnet dan grup keamanan yang sama juga dapat menggunakan ENI ini. Jika memungkinkan, Lambda menggunakan kembali yang ada ENIs untuk mengoptimalkan pemanfaatan sumber daya dan meminimalkan pembuatan yang baru. ENIs Setiap Hyperplane ENI mendukung hingga 65.000 koneksi/port. Jika jumlah koneksi melebihi batas ini, Lambda menskalakan jumlah secara ENIs otomatis berdasarkan lalu lintas jaringan dan persyaratan konkurensi.

Untuk fungsi baru, saat Lambda membuat ENI Hyperplane, fungsi Anda tetap dalam status Pending dan Anda tidak dapat memanggilnya. Fungsi Anda beralih ke status Aktif hanya ketika Hyperplane ENI siap, yang dapat memakan waktu beberapa menit. Untuk fungsi yang ada, Anda tidak dapat melakukan operasi tambahan yang menargetkan fungsi, seperti membuat versi atau memperbarui kode fungsi, tetapi Anda dapat terus memanggil versi fungsi sebelumnya.

Sebagai bagian dari pengelolaan siklus hidup ENI, Lambda dapat menghapus dan membuat ulang ENIs untuk memuat lalu lintas jaringan keseimbangan di seluruh ENIs atau untuk mengatasi masalah yang ditemukan dalam pemeriksaan kesehatan ENI. Selain itu, jika fungsi Lambda tetap menganggur selama 14 hari, Lambda merebut kembali Hyperplane yang tidak digunakan dan menyetel status fungsi ke. ENIs `Inactive` Upaya pemanggilan berikutnya akan gagal, dan fungsi memasuki kembali status Pending hingga Lambda menyelesaikan pembuatan atau alokasi ENI Hyperplane. Kami menyarankan agar desain Anda tidak bergantung pada kegigihan. ENIs

Saat Anda memperbarui fungsi untuk menghapus konfigurasi VPC-nya, Lambda membutuhkan waktu hingga 20 menit untuk menghapus Hyperplane ENI yang terpasang. Lambda hanya menghapus ENI jika tidak ada fungsi lain (atau versi fungsi yang diterbitkan) yang menggunakan Hyperplane ENI itu. 

Lambda mengandalkan izin dalam [peran eksekusi](lambda-intro-execution-role.md) fungsi untuk menghapus ENI Hyperplane. Jika Anda menghapus peran eksekusi sebelum Lambda menghapus ENI Hyperplane, Lambda tidak akan dapat menghapus ENI Hyperplane. Anda dapat melakukan penghapusan secara manual.

## Menggunakan kunci syarat IAM untuk pengaturan VPC
<a name="vpc-conditions"></a>

Anda dapat menggunakan kunci syarat khusus Lambda untuk pengaturan VPC guna memberikan kontrol izin tambahan untuk fungsi Lambda Anda. Misalnya, Anda dapat meminta semua fungsi dalam organisasi Anda terhubung ke VPC. Anda juga dapat menentukan subnet dan grup keamanan yang dapat dan tidak dapat digunakan oleh pengguna fungsi.

Lambda mendukung kunci syarat berikut dalam kebijakan IAM:
+ **lambda: VpcIds** — Izinkan atau tolak satu atau lebih VPCs.
+ **lambda: SubnetIds** — Izinkan atau tolak satu atau lebih subnet.
+ **lambda: SecurityGroupIds** — Izinkan atau tolak satu atau lebih grup keamanan.

Operasi API Lambda [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html) dan [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html) mendukung kunci kondisi ini. Untuk informasi selengkapnya tentang penggunaan kunci syarat dalam kebijakan IAM, lihat [elemen kebijakan IAM JSON: Syarat](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di *Panduan Pengguna IAM*.

**Tip**  
Jika fungsi Anda sudah mencakup konfigurasi VPC dari permintaan API sebelumnya, Anda dapat mengirim permintaan `UpdateFunctionConfiguration` tanpa konfigurasi VPC.

### Contoh kebijakan dengan kunci syarat untuk pengaturan VPC
<a name="vpc-condition-examples"></a>

Contoh-contoh berikut ini menunjukkan cara menggunakan kunci syarat untuk pengaturan VPC. Setelah Anda membuat pernyataan kebijakan dengan batasan yang diinginkan, tambahkan pernyataan kebijakan untuk pengguna atau peran target.

#### Pastikan pengguna hanya men-deploy fungsi yang terhubung dengan VPC
<a name="vpc-condition-example-1"></a>

Untuk memastikan semua pengguna hanya men-deploy fungsi yang terhubung dengan VPC, Anda dapat menolak operasi pembuatan dan pembaruan fungsi yang tidak mencakup ID VPC yang valid. 

Perhatikan bahwa ID VPC bukan parameter input ke `CreateFunction` atau permintaan `UpdateFunctionConfiguration`. Lambda mengambil nilai ID VPC berdasarkan parameter subnet dan grup keamanan.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceVPCFunction",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "Null": {
           "lambda:VpcIds": "true"
        }
      }
    }
  ]
}
```

------

#### Menolak akses pengguna ke grup tertentu VPCs, subnet, atau keamanan
<a name="vpc-condition-example-2"></a>

Untuk menolak akses pengguna ke spesifik VPCs, gunakan `StringEquals` untuk memeriksa nilai `lambda:VpcIds` kondisi. Contoh berikut menolak akses pengguna ke `vpc-1` dan `vpc-2`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnforceOutOfVPC",
            "Action": [
                "lambda:CreateFunction",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "lambda:VpcIds": [
                        "vpc-1",
                        "vpc-2"
                    ]
                }
            }
        }
    ]
}
```

------

Untuk menolak akses pengguna ke subnet tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SubnetIds`. Contoh berikut menolak akses pengguna ke `subnet-1` dan `subnet-2`.

```
{
      "Sid": "EnforceOutOfSubnet",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
            "lambda:SubnetIds": ["subnet-1", "subnet-2"]
        }
      }
    }
```

Untuk menolak akses pengguna ke grup keamanan tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SecurityGroupIds`. Contoh berikut menolak akses pengguna ke `sg-1` dan `sg-2`.

```
{
      "Sid": "EnforceOutOfSecurityGroups",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
            "lambda:SecurityGroupIds": ["sg-1", "sg-2"]
        }
      }
    }
  ]
}
```

#### Mengizinkan pengguna untuk membuat dan memperbarui fungsi dengan pengaturan VPC tertentu
<a name="vpc-condition-example-3"></a>

Untuk memungkinkan pengguna mengakses spesifik VPCs, gunakan `StringEquals` untuk memeriksa nilai `lambda:VpcIds` kondisi. Contoh berikut mengizinkan pengguna mengakses `vpc-1` dan `vpc-2`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnforceStayInSpecificVpc",
            "Action": [
                "lambda:CreateFunction",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "lambda:VpcIds": [
                        "vpc-1",
                        "vpc-2"
                    ]
                }
            }
        }
    ]
}
```

------

Untuk mengizinkan pengguna mengakses subnet tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SubnetIds`. Contoh berikut mengizinkan pengguna mengakses `subnet-1` dan `subnet-2`.

```
{
      "Sid": "EnforceStayInSpecificSubnets",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
            "lambda:SubnetIds": ["subnet-1", "subnet-2"]
        }
      }
    }
```

Untuk mengizinkan pengguna mengakses grup keamanan tertentu, gunakan `StringEquals` untuk memeriksa nilai syarat `lambda:SecurityGroupIds`. Contoh berikut mengizinkan pengguna mengakses `sg-1` dan `sg-2`.

```
{
      "Sid": "EnforceStayInSpecificSecurityGroup",
      "Action": [
          "lambda:CreateFunction",
          "lambda:UpdateFunctionConfiguration"
       ],
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
            "lambda:SecurityGroupIds": ["sg-1", "sg-2"]
        }
      }
    }
  ]
}
```

## Tutorial VPC
<a name="vpc-tutorials"></a>

Dalam tutorial berikut, Anda menghubungkan fungsi Lambda ke sumber daya di VPC Anda.
+ [Tutorial: Menggunakan fungsi Lambda untuk mengakses Amazon RDS di Amazon VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-lambda-tutorial.html)
+ [Tutorial: Mengonfigurasi fungsi Lambda untuk mengakses Amazon di ElastiCache VPC Amazon](https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/LambdaRedis.html)