

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

# Mendefinisikan izin fungsi Lambda dengan peran pelaksanaan
<a name="lambda-intro-execution-role"></a>

Peran eksekusi fungsi Lambda adalah peran AWS Identity and Access Management (IAM) yang memberikan izin fungsi untuk mengakses dan sumber daya. Layanan AWS Misalnya, Anda dapat membuat peran eksekusi yang memiliki izin untuk mengirim log ke Amazon CloudWatch dan mengunggah data pelacakan AWS X-Ray. Halaman ini memberikan informasi tentang cara membuat, melihat, dan mengelola peran eksekusi fungsi Lambda.

Lambda secara otomatis mengasumsikan peran eksekusi Anda ketika Anda memanggil fungsi Anda. Anda harus menghindari panggilan manual `sts:AssumeRole` untuk mengambil peran eksekusi dalam kode fungsi Anda. Jika kasus penggunaan Anda mengharuskan peran tersebut mengasumsikan dirinya sendiri, Anda harus memasukkan peran itu sendiri sebagai prinsipal tepercaya dalam kebijakan kepercayaan peran Anda. Untuk informasi selengkapnya tentang cara mengubah kebijakan kepercayaan peran, lihat [Memodifikasi kebijakan kepercayaan peran (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy) di Panduan Pengguna IAM.

Agar Lambda dapat mengambil peran eksekusi Anda dengan benar, [kebijakan kepercayaan](#permissions-executionrole-api) peran harus menentukan prinsip layanan Lambda (`lambda.amazonaws.com`) sebagai layanan tepercaya.

**Topics**
+ [

## Membuat peran eksekusi di konsol IAM
](#permissions-executionrole-console)
+ [

## Menciptakan dan mengelola peran dengan AWS CLI
](#permissions-executionrole-api)
+ [

## Berikan akses hak istimewa paling rendah ke peran eksekusi Lambda Anda
](#permissions-executionrole-least-privilege)
+ [

# Melihat dan memperbarui izin dalam peran eksekusi
](permissions-executionrole-update.md)
+ [

# Bekerja dengan kebijakan AWS terkelola dalam peran eksekusi
](permissions-managed-policies.md)
+ [

# Menggunakan fungsi sumber ARN untuk mengontrol perilaku akses fungsi
](permissions-source-function-arn.md)

## Membuat peran eksekusi di konsol IAM
<a name="permissions-executionrole-console"></a>

Secara default, Lambda membuat peran eksekusi dengan izin minimal saat Anda [membuat fungsi di konsol Lambda](getting-started.md#getting-started-create-function). Secara khusus, peran eksekusi ini mencakup [kebijakan `AWSLambdaBasicExecutionRole` terkelola](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html), yang memberikan izin dasar fungsi Anda untuk mencatat peristiwa ke Amazon CloudWatch Logs. Anda dapat memilih **Buat peran default** di bagian **Izin**.

Anda dapat memilih peran yang ada dengan memilih **Gunakan peran lain** di bagian **Izin**. Jika fungsi Lambda Anda memerlukan izin tambahan untuk melakukan tugas seperti memperbarui entri dalam database Amazon DynamoDB sebagai respons terhadap peristiwa, Anda dapat membuat peran eksekusi kustom dengan izin yang diperlukan. Untuk melakukan ini, pilih **Gunakan peran lain** di bagian **Izin**, yang membuka laci tempat Anda dapat menyesuaikan izin Anda.

**Untuk mengonfigurasi peran eksekusi dari Konsol**

1. Masukkan **nama peran** di bagian Rincian peran.

1. Di bagian **Kebijakan**, pilih **Gunakan kebijakan yang ada**.

1. Pilih kebijakan AWS terkelola yang ingin dilampirkan ke peran Anda. Misalnya, jika fungsi Anda perlu mengakses DynamoDB, pilih kebijakan yang dikelola Dynamo **AWSLambdaDBExecutionRole**.

1. Pilih **Buat peran**.

Atau, saat Anda [membuat fungsi di konsol Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function), Anda dapat melampirkan peran eksekusi apa pun yang sebelumnya Anda buat ke fungsi tersebut. Jika Anda ingin melampirkan peran eksekusi baru ke fungsi yang ada, ikuti langkah-langkah dalam [Memperbarui peran eksekusi fungsi](permissions-executionrole-update.md).

## Menciptakan dan mengelola peran dengan AWS CLI
<a name="permissions-executionrole-api"></a>

Untuk membuat peran eksekusi dengan AWS Command Line Interface (AWS CLI), gunakan **create-role** perintah. Saat menggunakan perintah ini, Anda dapat menentukan kebijakan kepercayaan sebaris. Kebijakan kepercayaan peran memberikan izin kepada prinsipal yang ditentukan untuk mengambil peran tersebut. Dalam contoh berikut, Anda memberikan izin kepada kepala layanan Lambda untuk mengambil peran Anda. Perhatikan bahwa persyaratan untuk menghindari tanda kutip dalam string JSON dapat bervariasi tergantung pada shell Anda.

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
```

Anda juga dapat menentukan kebijakan kepercayaan untuk peran tersebut menggunakan file JSON terpisah. Dalam contoh berikut, `trust-policy.json` adalah file dalam direktori saat ini.

**Example trust-policy.json**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

```
aws iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document file://trust-policy.json
```

Untuk menambahkan izin peran, gunakan perintah **attach-policy-to-role**. Perintah berikut menambahkan kebijakan `AWSLambdaBasicExecutionRole` terkelola ke peran `lambda-ex` eksekusi.

```
aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
```

Setelah Anda membuat peran eksekusi, lampirkan ke fungsi Anda. Saat Anda [membuat fungsi di konsol Lambda](getting-started.md#getting-started-create-function), Anda dapat melampirkan peran eksekusi apa pun yang sebelumnya Anda buat ke fungsi tersebut. Jika Anda ingin melampirkan peran eksekusi baru ke fungsi yang ada, ikuti langkah-langkahnya[Memperbarui peran eksekusi fungsi](permissions-executionrole-update.md#update-execution-role).

## Berikan akses hak istimewa paling rendah ke peran eksekusi Lambda Anda
<a name="permissions-executionrole-least-privilege"></a>

Ketika Anda pertama kali membuat IAM role untuk fungsi Lambda Anda selama tahap pengembangan, Anda mungkin terkadang memberikan izin di luar apa yang diperlukan. Sebelum memublikasikan fungsi Anda di lingkungan produksi, sebagai praktik terbaik, sesuaikan kebijakan agar hanya menyertakan izin yang diperlukan. *Untuk informasi selengkapnya, lihat [Menerapkan izin hak istimewa terkecil di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) IAM.*

Menggunakan IAM Access Analyzer untuk membantu mengidentifikasi izin yang diperlukan untuk kebijakan peran eksekusi IAM. IAM Access Analyzer meninjau AWS CloudTrail log Anda selama rentang tanggal yang Anda tentukan dan menghasilkan templat kebijakan hanya dengan izin yang digunakan fungsi selama waktu tersebut. Anda dapat menggunakan templat untuk membuat kebijakan terkelola dengan izin terperinci, lalu melampirkannya ke IAM role. Dengan begitu, Anda hanya memberikan izin yang diperlukan peran untuk berinteraksi dengan AWS sumber daya untuk kasus penggunaan spesifik Anda.

Untuk informasi selengkapnya, lihat [Menghasilkan kebijakan berdasarkan aktivitas akses](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_generate-policy.html) di *Panduan Pengguna IAM*.

# Melihat dan memperbarui izin dalam peran eksekusi
<a name="permissions-executionrole-update"></a>

Topik ini mencakup bagaimana Anda dapat melihat dan memperbarui [peran eksekusi](lambda-intro-execution-role.md) fungsi Anda.

**Topics**
+ [

## Melihat peran eksekusi fungsi
](#view-execution-role)
+ [

## Memperbarui peran eksekusi fungsi
](#update-execution-role)

## Melihat peran eksekusi fungsi
<a name="view-execution-role"></a>

Untuk melihat peran eksekusi fungsi, gunakan konsol Lambda.

**Untuk melihat peran eksekusi fungsi (konsol)**

1. Buka [Halaman fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih nama sebuah fungsi.

1. Pilih **Konfigurasi**, lalu pilih **Izin**.

1. Di bawah **Peran eksekusi**, Anda dapat melihat peran yang saat ini digunakan sebagai peran eksekusi fungsi. Untuk kenyamanan, Anda dapat melihat semua sumber daya dan tindakan yang dapat diakses fungsi di bawah bagian **Ringkasan sumber daya**. Anda juga dapat memilih layanan dari daftar dropdown untuk melihat semua izin yang terkait dengan layanan tersebut.

## Memperbarui peran eksekusi fungsi
<a name="update-execution-role"></a>

Anda dapat menambahkan atau menghapus izin dari peran eksekusi fungsi kapan saja, atau mengonfigurasi fungsi Anda untuk menggunakan peran yang berbeda. Jika fungsi Anda memerlukan akses ke layanan atau sumber daya lain, Anda harus menambahkan izin yang diperlukan ke peran eksekusi.

Saat Anda menambahkan izin ke fungsi Anda, lakukan pembaruan sepele ke kode atau konfigurasinya juga. Ini memaksa instance menjalankan fungsi Anda, yang memiliki kredensialnya yang sudah ketinggalan zaman, untuk berhenti dan diganti.

Untuk memperbarui peran eksekusi fungsi, Anda dapat menggunakan konsol Lambda.

**Untuk memperbarui peran eksekusi fungsi (konsol)**

1. Buka [Halaman fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih nama sebuah fungsi.

1. Pilih **Konfigurasi**, lalu pilih **Izin**.

1. Di bawah **Peran eksekusi**, pilih **Edit**.

1. Jika Anda ingin memperbarui fungsi Anda untuk menggunakan peran yang berbeda sebagai peran eksekusi, pilih peran baru di menu tarik-turun di bawah Peran **yang ada**.
**catatan**  
Jika Anda ingin memperbarui izin dalam peran eksekusi yang ada, Anda hanya dapat melakukannya di konsol AWS Identity and Access Management (IAM).

   Jika Anda ingin membuat peran baru untuk digunakan sebagai peran eksekusi, pilih **Buat peran baru dari templat AWS kebijakan** di bawah **Peran eksekusi**. Kemudian, masukkan nama untuk peran baru Anda di bawah **Nama peran**, dan tentukan kebijakan apa pun yang ingin Anda lampirkan ke peran baru di bawah **Templat kebijakan**.

1. Pilih **Simpan**.

# Bekerja dengan kebijakan AWS terkelola dalam peran eksekusi
<a name="permissions-managed-policies"></a>

Kebijakan AWS terkelola berikut memberikan izin yang diperlukan untuk menggunakan fitur Lambda.


| Perubahan | Deskripsi | Tanggal | 
| --- | --- | --- | 
|  **[ AWSLambdaMSKExecutionPeran](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaMSKExecutionRole)** — Lambda menambahkan izin [kafka: DescribeCluster V2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html#v2-clusters-clusterarnget) ke kebijakan ini.  |  `AWSLambdaMSKExecutionRole`memberikan izin untuk membaca dan mengakses catatan dari kluster Amazon Managed Streaming for Apache Kafka (Amazon MSK), mengelola antarmuka ENIs jaringan elastis (), dan menulis ke Log. CloudWatch   |  Juni 17, 2022  | 
|  **[ AWSLambdaBasicExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaBasicExecutionRole`memberikan izin untuk mengunggah log ke. CloudWatch  |  14 Februari 2022  | 
|  **[ AWSLambdaDBExecutionPeran Dynamo](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole)** — Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaDynamoDBExecutionRole`memberikan izin untuk membaca catatan dari aliran Amazon DynamoDB dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaKinesisExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaKinesisExecutionRole`memberikan izin untuk membaca peristiwa dari aliran data Amazon Kinesis dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaMSKExecutionPeran](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaMSKExecutionRole)** — Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaMSKExecutionRole`memberikan izin untuk membaca dan mengakses catatan dari kluster Amazon Managed Streaming for Apache Kafka (Amazon MSK), mengelola antarmuka ENIs jaringan elastis (), dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaSQSQueueExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaSQSQueueExecutionRole`memberikan izin untuk membaca pesan dari antrian Amazon Simple Queue Service (Amazon SQS) dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSLambdaVPCAccessExecutionRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSLambdaVPCAccessExecutionRole`memberikan izin untuk mengelola ENIs dalam VPC Amazon dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 
|  **[ AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `AWSXRayDaemonWriteAccess`memberikan izin untuk mengunggah data jejak ke X-Ray.  |  14 Februari 2022  | 
|  **[ CloudWatchLambdaInsightsExecutionRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy)**— Lambda mulai melacak perubahan pada kebijakan ini.  |  `CloudWatchLambdaInsightsExecutionRolePolicy`memberikan izin untuk menulis metrik runtime ke Lambda Insights. CloudWatch   |  14 Februari 2022  | 
|  **[AmazonS3 - ObjectLambdaExecutionRolePolicy](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy)** Lambda mulai melacak perubahan pada kebijakan ini.  |  `AmazonS3ObjectLambdaExecutionRolePolicy`memberikan izin untuk berinteraksi dengan objek Amazon Simple Storage Service (Amazon S3) Lambda dan menulis ke Log. CloudWatch   |  14 Februari 2022  | 

Untuk beberapa fitur, konsol Lambda mencoba menambahkan izin yang hilang ke peran eksekusi Anda dalam kebijakan yang dikelola pelanggan. Kebijakan ini dapat menjadi beberapa. Untuk menghindari pembuatan kebijakan tambahan, tambahkan kebijakan yang dikelola AWS yang relevan ke peran eksekusi Anda sebelum mengaktifkan fitur.

Saat Anda menggunakan [pemetaan sumber peristiwa](invocation-eventsourcemapping.md) untuk mengaktifkan fungsi Anda, Lambda menggunakan peran eksekusi untuk membaca data peristiwa. Misalnya, pemetaan sumber peristiwa untuk Kinesis membaca peristiwa dari aliran data dan mengirimnya ke fungsi Anda dalam beberapa batch. 

Saat layanan mengambil peran di akun Anda, Anda dapat menyertakan kunci konteks kondisi `aws:SourceArn` global `aws:SourceAccount` dan global dalam kebijakan kepercayaan peran untuk membatasi akses ke peran hanya pada permintaan yang dihasilkan oleh sumber daya yang diharapkan. Untuk informasi lebih lanjut, lihat [Pencegahan wakil kebingungan lintas layanan untuk AWS Security Token Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html#cross-service-confused-deputy-prevention).

Selain kebijakan AWS terkelola, konsol Lambda menyediakan templat untuk membuat kebijakan khusus dengan izin untuk kasus penggunaan tambahan. Saat Anda membuat fungsi di konsol Lambda, Anda dapat memilih untuk membuat peran eksekusi baru dengan izin dari satu templat atau lebih. Templat ini juga diterapkan secara otomatis ketika Anda membuat fungsi dari cetak biru, atau ketika Anda mengonfigurasi opsi yang memerlukan akses ke layanan lain. Contoh templat tersedia dalam [repositori GitHub](https://github.com/awsdocs/aws-lambda-developer-guide/tree/master/iam-policies) panduan ini.

# Menggunakan fungsi sumber ARN untuk mengontrol perilaku akses fungsi
<a name="permissions-source-function-arn"></a>

Biasanya kode fungsi Lambda Anda membuat permintaan API ke yang lain. Layanan AWS Untuk membuat permintaan ini, Lambda menghasilkan seperangkat kredensyal singkat dengan mengasumsikan peran eksekusi fungsi Anda. Kredensyal ini tersedia sebagai variabel lingkungan selama pemanggilan fungsi Anda. Saat bekerja dengan AWS SDKs, Anda tidak perlu memberikan kredensyal untuk SDK secara langsung dalam kode. Secara default, rantai penyedia kredensyal secara berurutan memeriksa setiap tempat di mana Anda dapat menyetel kredensyal dan memilih yang pertama tersedia—biasanya variabel lingkungan (,, dan). `AWS_ACCESS_KEY_ID` `AWS_SECRET_ACCESS_KEY` `AWS_SESSION_TOKEN`

Lambda menyuntikkan ARN fungsi sumber ke dalam konteks kredensyal jika permintaan tersebut adalah permintaan AWS API yang berasal dari dalam lingkungan eksekusi Anda. Lambda juga menyuntikkan ARN fungsi sumber untuk AWS permintaan API berikut yang dibuat Lambda atas nama Anda di luar lingkungan eksekusi Anda:


| Layanan | Tindakan | Alasan | 
| --- | --- | --- | 
| CloudWatch Log | CreateLogGroup, CreateLogStream, PutLogEvents |  Untuk menyimpan log ke dalam grup CloudWatch log Log  | 
| X-Ray | PutTraceSegments |  Untuk mengirim data jejak ke X-Ray  | 
| Amazon EFS | ClientMount |  Untuk menghubungkan fungsi Anda ke sistem file Amazon Elastic File System (Amazon EFS)  | 

Panggilan AWS API lain yang dilakukan Lambda di luar lingkungan eksekusi Anda atas nama Anda menggunakan peran eksekusi yang sama tidak mengandung ARN fungsi sumber. Contoh panggilan API tersebut di luar lingkungan eksekusi meliputi:
+ Panggilan ke AWS Key Management Service (AWS KMS) untuk mengenkripsi dan mendekripsi variabel lingkungan Anda secara otomatis.
+ Panggilan ke Amazon Elastic Compute Cloud (Amazon EC2) untuk membuat antarmuka ENIs jaringan elastis () untuk fungsi berkemampuan VPC.
+ [Panggilan ke Layanan AWS, seperti Amazon Simple Queue Service (Amazon SQS), untuk membaca dari sumber peristiwa yang disiapkan sebagai pemetaan sumber peristiwa.](invocation-eventsourcemapping.md)

Dengan fungsi sumber ARN dalam konteks kredensyal, Anda dapat memverifikasi apakah panggilan ke sumber daya Anda berasal dari kode fungsi Lambda tertentu. Untuk memverifikasi ini, gunakan kunci `lambda:SourceFunctionArn` kondisi dalam kebijakan berbasis identitas IAM atau [kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCP).

**catatan**  
Anda tidak dapat menggunakan kunci `lambda:SourceFunctionArn` kondisi dalam kebijakan berbasis sumber daya.

Dengan kunci kondisi ini dalam kebijakan berbasis identitas Anda atau SCPs, Anda dapat menerapkan kontrol keamanan untuk tindakan API yang dibuat kode fungsi Anda ke yang lain. Layanan AWS Ini memiliki beberapa aplikasi keamanan utama, seperti membantu Anda mengidentifikasi sumber kebocoran kredensyal.

**catatan**  
Kunci `lambda:SourceFunctionArn` kondisi berbeda dari tombol `lambda:FunctionArn` dan `aws:SourceArn` kondisi. Kunci `lambda:FunctionArn` kondisi hanya berlaku untuk [pemetaan sumber peristiwa](invocation-eventsourcemapping.md) dan membantu menentukan fungsi mana yang dapat dipanggil sumber acara Anda. Kunci `aws:SourceArn` kondisi hanya berlaku untuk kebijakan di mana fungsi Lambda Anda adalah sumber daya target, dan membantu menentukan sumber lain Layanan AWS dan sumber daya mana yang dapat menjalankan fungsi tersebut. Kunci `lambda:SourceFunctionArn` kondisi dapat diterapkan pada kebijakan berbasis identitas atau SCP apa pun untuk menentukan fungsi Lambda tertentu yang memiliki izin untuk melakukan panggilan API tertentu ke sumber daya lain. AWS 

Untuk digunakan `lambda:SourceFunctionArn` dalam polis Anda, sertakan sebagai syarat dengan salah satu operator [kondisi ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN). Nilai kunci harus berupa ARN yang valid.

Misalnya, misalkan kode fungsi Lambda Anda membuat `s3:PutObject` panggilan yang menargetkan bucket Amazon S3 tertentu. Anda mungkin ingin mengizinkan hanya satu fungsi Lambda tertentu untuk `s3:PutObject` mengakses bucket itu. Dalam hal ini, peran eksekusi fungsi Anda harus memiliki kebijakan yang dilampirkan yang terlihat seperti ini:

**Example kebijakan yang memberikan akses fungsi Lambda tertentu ke sumber daya Amazon S3**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ExampleSourceFunctionArn",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::lambda_bucket/*",
            "Condition": {
                "ArnEquals": {
                    "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda"
                }
            }
        }
    ]
}
```

Kebijakan ini hanya mengizinkan `s3:PutObject` akses jika sumbernya adalah fungsi Lambda dengan ARN. `arn:aws:lambda:us-east-1:123456789012:function:source_lambda` Kebijakan ini tidak mengizinkan `s3:PutObject` akses ke identitas panggilan lainnya. Ini benar bahkan jika fungsi atau entitas yang berbeda membuat `s3:PutObject` panggilan dengan peran eksekusi yang sama.

**catatan**  
Kunci `lambda:SourceFunctionARN` kondisi tidak mendukung versi fungsi Lambda atau alias fungsi. Jika Anda menggunakan ARN untuk versi atau alias fungsi tertentu, fungsi Anda tidak akan memiliki izin untuk mengambil tindakan yang Anda tentukan. Pastikan untuk menggunakan ARN yang tidak memenuhi syarat untuk fungsi Anda tanpa versi atau akhiran alias.

Anda juga dapat menggunakan `lambda:SourceFunctionArn` dalam SCPs. Misalnya, Anda ingin membatasi akses ke bucket ke kode fungsi Lambda tunggal atau panggilan dari Amazon Virtual Private Cloud (VPC) tertentu. SCP berikut menggambarkan hal ini.

**Example kebijakan yang menolak akses ke Amazon S3 dalam kondisi tertentu**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Resource": "arn:aws:s3:::lambda_bucket/*",
            "Effect": "Deny",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:SourceVpc": [
                        "vpc-12345678"
                    ]
                }
            }
        },
        {
            "Action": [
                "s3:*"
            ],
            "Resource": "arn:aws:s3:::lambda_bucket/*",
            "Effect": "Deny",
            "Condition": {
                "ArnNotEqualsIfExists": {
                    "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda"
                }
            }
        }
    ]
}
```

Kebijakan ini menolak semua tindakan S3 kecuali berasal dari fungsi Lambda tertentu dengan ARN`arn:aws:lambda:*:123456789012:function:source_lambda`, atau kecuali berasal dari VPC yang ditentukan. `StringNotEqualsIfExists`Operator memberitahu IAM untuk memproses kondisi ini hanya jika `aws:SourceVpc` kunci ada dalam permintaan. Demikian pula, IAM menganggap `ArnNotEqualsIfExists` operator hanya jika `lambda:SourceFunctionArn` ada.