Siapkan IAM izin dan peran untuk Lambda @Edge - Amazon CloudFront

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

Siapkan IAM izin dan peran untuk Lambda @Edge

Untuk mengonfigurasi Lambda @Edge, Anda harus memiliki IAM izin dan peran berikut untuk: AWS Lambda

IAMizin yang diperlukan untuk mengaitkan fungsi Lambda @Edge dengan distribusi CloudFront

Selain IAM izin yang Anda butuhkan untuk Lambda, Anda memerlukan izin berikut untuk mengaitkan fungsi Lambda dengan distribusi: CloudFront

  • lambda:GetFunction— Memberikan izin untuk mendapatkan informasi konfigurasi untuk fungsi Lambda Anda dan URL presigned untuk men-download file .zip yang berisi fungsi.

  • lambda:EnableReplication*— Memberikan izin ke kebijakan sumber daya sehingga layanan replikasi Lambda bisa mendapatkan kode fungsi dan konfigurasi.

  • lambda:DisableReplication*— Memberikan izin untuk kebijakan sumber daya sehingga layanan replikasi Lambda dapat menghapus fungsi.

    penting

    Anda harus menambahkan tanda bintang (*) di akhir lambda:EnableReplication* dan lambda:DisableReplication* tindakan.

  • Untuk sumber daya, tentukan versi fungsi yang ingin Anda jalankan saat CloudFront peristiwa terjadi, seperti contoh berikut: ARN

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • iam:CreateServiceLinkedRole— Memberikan izin untuk membuat peran terkait layanan yang digunakan Lambda @Edge untuk mereplikasi fungsi Lambda. CloudFront Setelah Anda mengonfigurasi Lambda @Edge untuk pertama kalinya, peran terkait layanan akan dibuat secara otomatis untuk Anda. Anda tidak perlu menambahkan izin ini ke distribusi lain yang menggunakan Lambda @Edge.

  • cloudfront:UpdateDistributionatau cloudfront:CreateDistribution — Memberikan izin untuk memperbarui atau membuat distribusi.

Untuk informasi selengkapnya, lihat topik berikut.

Peran eksekusi fungsi untuk prinsipal layanan

Anda harus membuat IAM peran yang dapat diasumsikan oleh kepala sekolah lambda.amazonaws.com dan edgelambda.amazonaws.com layanan ketika mereka menjalankan fungsi Anda.

Tip

Saat membuat fungsi di konsol Lambda, Anda dapat memilih untuk membuat peran eksekusi baru dengan menggunakan templat AWS kebijakan. Langkah ini secara otomatis menambahkan izin Lambda @Edge yang diperlukan untuk menjalankan fungsi Anda. Lihat Langkah 5 dalam Tutorial: Membuat fungsi Lambda @Edge sederhana.

Untuk informasi selengkapnya tentang membuat IAM peran secara manual, lihat Membuat peran dan melampirkan kebijakan (konsol) di Panduan IAM Pengguna.

contoh Contoh: Kebijakan kepercayaan peran

Anda dapat menambahkan peran ini di bawah tab Trust Relationship di IAM konsol. Jangan tambahkan kebijakan ini di bawah tab Izin.

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

Untuk informasi selengkapnya tentang izin yang perlu Anda berikan ke peran eksekusi, lihat Izin akses sumber daya Lambda di AWS Lambda Panduan Pengembang.

Catatan
  • Secara default, setiap kali CloudFront peristiwa memicu fungsi Lambda, data ditulis CloudWatch ke Log. Jika Anda ingin menggunakan log ini, peran eksekusi memerlukan izin untuk menulis data ke CloudWatch Log. Anda dapat menggunakan yang telah ditentukan AWSLambdaBasicExecutionRole untuk memberikan izin untuk peran eksekusi.

    Untuk informasi selengkapnya tentang CloudWatch Log, lihatLog fungsi tepi.

  • Jika kode fungsi Lambda Anda mengakses AWS sumber daya lain, seperti membaca objek dari bucket S3, peran eksekusi memerlukan izin untuk melakukan tindakan tersebut.

Peran terkait layanan untuk Lambda @Edge

Lambda @Edge menggunakan peran terkait IAM layanan. Peran terkait layanan adalah jenis peran unik yang IAM ditautkan langsung ke layanan. Peran yang ditautkan dengan layanan ditentukan sebelumnya oleh layanan dan mencakup semua izin yang diperlukan layanan untuk menghubungi layanan AWS lainnya atas nama Anda.

Lambda @Edge menggunakan peran terkait IAM layanan berikut:

  • AWSServiceRoleForLambdaReplicator— Lambda @Edge menggunakan peran ini untuk memungkinkan Lambda @Edge mereplikasi fungsi ke. Wilayah AWS

    Saat Anda pertama kali menambahkan pemicu Lambda @Edge CloudFront, peran bernama AWSServiceRoleForLambdaReplicator dibuat secara otomatis untuk memungkinkan Lambda @Edge mereplikasi fungsi ke. Wilayah AWS Peran ini diperlukan untuk menggunakan fungsi Lambda @Edge. ARNUntuk AWSServiceRoleForLambdaReplicator peran terlihat seperti contoh berikut:

    arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

  • AWSServiceRoleForCloudFrontLogger— CloudFront menggunakan peran ini untuk mendorong file log ke dalam CloudWatch. Anda dapat menggunakan file log untuk men-debug kesalahan validasi Lambda @Edge.

    Bagian AWSServiceRoleForCloudFrontLogger peran dibuat secara otomatis saat Anda menambahkan asosiasi fungsi Lambda @Edge CloudFront untuk memungkinkan mendorong file log kesalahan Lambda @Edge ke. CloudWatch ARNUntuk AWSServiceRoleForCloudFrontLogger peran terlihat seperti ini:

    arn:aws:iam::account_number:role/aws-service-role/logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger

Peran yang terhubung dengan layanan memudahkan pengaturan dan penggunaan Lambda@Edge karena Anda tidak perlu menambahkan izin yang diperlukan secara manual. Lambda@Edge mendefinisikan izin peran yang terhubung ke layanan, dan hanya Lambda@Edge yang dapat memegang peran tersebut. Izin yang ditentukan mencakup kebijakan kepercayaan dan kebijakan izin. Anda tidak dapat melampirkan kebijakan izin ke IAM entitas lain.

Anda harus menghapus sumber daya terkait CloudFront atau Lambda @Edge sebelum dapat menghapus peran terkait layanan. Ini membantu melindungi sumber daya Lambda @Edge Anda sehingga Anda tidak menghapus peran terkait layanan yang masih diperlukan untuk mengakses sumber daya aktif.

Untuk mengetahui informasi selengkapnya tentang peran terkait layanan, lihat Peran terkait layanan untuk CloudFront.

Izin peran terkait layanan untuk Lambda @Edge

Lambda @Edge menggunakan dua peran terkait layanan, bernama AWSServiceRoleForLambdaReplicator dan AWSServiceRoleForCloudFrontLogger. Bagian berikut menjelaskan izin untuk masing-masing peran ini.

Izin peran terkait layanan untuk replikator Lambda

Peran terkait layanan ini memungkinkan Lambda mereplikasi fungsi Lambda @Edge. Wilayah AWS

Bagian AWSServiceRoleForLambdaReplicator peran terkait layanan mempercayai replicator.lambda.amazonaws.com layanan untuk mengambil peran.

Kebijakan izin peran memungkinkan Lambda@Edge menyelesaikan tindakan berikut pada sumber daya yang ditentukan:

  • lambda:CreateFunction pada arn:aws:lambda:*:*:function:*

  • lambda:DeleteFunction pada arn:aws:lambda:*:*:function:*

  • lambda:DisableReplication pada arn:aws:lambda:*:*:function:*

  • iam:PassRole pada all AWS resources

  • cloudfront:ListDistributionsByLambdaFunction pada all AWS resources

Izin peran terkait layanan untuk logger CloudFront

Peran terkait layanan ini memungkinkan CloudFront untuk mendorong file log CloudWatch sehingga Anda dapat men-debug kesalahan validasi Lambda @Edge.

Bagian AWSServiceRoleForCloudFrontLogger peran terkait layanan mempercayai logger.cloudfront.amazonaws.com layanan untuk mengambil peran.

Kebijakan izin peran memungkinkan Lambda @Edge menyelesaikan tindakan berikut pada sumber daya yang ditentukan: arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:PutLogEvents

Anda harus mengonfigurasi izin untuk mengizinkan IAM entitas (seperti pengguna, grup, atau peran) menghapus peran terkait layanan Lambda @Edge. Untuk informasi selengkapnya, lihat Izin peran terkait layanan di Panduan Pengguna. IAM

Membuat peran terkait layanan untuk Lambda @Edge

Anda biasanya tidak membuat peran terkait layanan secara manual untuk Lambda@Edge. Layanan ini membuat peran untuk Anda secara otomatis dalam skenario berikut:

  • Saat Anda pertama kali membuat pemicu, layanan membuat AWSServiceRoleForLambdaReplicator peran (jika belum ada). Peran ini memungkinkan Lambda untuk mereplikasi fungsi Lambda @Edge ke. Wilayah AWS

    Jika Anda menghapus peran layanan yang ditautkan, peran tersebut akan dibuat lagi saat Anda menambahkan pemicu baru untuk Lambda@Edge dalam distribusi.

  • Saat Anda memperbarui atau membuat CloudFront distribusi yang memiliki asosiasi Lambda @Edge, layanan akan membuat AWSServiceRoleForCloudFrontLogger peran (jika peran tersebut belum ada). Peran ini memungkinkan CloudFront untuk mendorong file log Anda ke CloudWatch.

    Jika Anda menghapus peran terkait layanan, peran akan dibuat lagi saat Anda memperbarui atau membuat CloudFront distribusi yang memiliki asosiasi Lambda @Edge.

Untuk membuat peran terkait layanan ini secara manual, Anda dapat menjalankan perintah AWS Command Line Interface (AWS CLI) berikut:

Untuk membuat AWSServiceRoleForLambdaReplicator peran
  • Jalankan perintah berikut.

    aws iam create-service-linked-role --aws-service-name replicator.lambda.amazonaws.com
Untuk membuat AWSServiceRoleForCloudFrontLogger peran
  • Jalankan perintah berikut.

    aws iam create-service-linked-role --aws-service-name logger.cloudfront.amazonaws.com

Mengedit peran terkait layanan Lambda @Edge

Lambda @Edge tidak mengizinkan Anda untuk mengedit AWSServiceRoleForLambdaReplicator atau AWSServiceRoleForCloudFrontLogger peran terkait layanan. Setelah layanan membuat peran terkait layanan, Anda tidak dapat mengubah nama peran karena berbagai entitas mungkin mereferensikan peran tersebut. Namun, Anda dapat menggunakan IAM untuk mengedit deskripsi peran. Untuk informasi selengkapnya, lihat Mengedit peran terkait layanan di IAMPanduan Pengguna.

Didukung Wilayah AWS untuk CloudFront peran terkait layanan

CloudFront mendukung penggunaan peran terkait layanan untuk Lambda @Edge sebagai berikut: Wilayah AWS

  • AS Timur (Virginia Utara)–us-east-1

  • AS Timur (Ohio)–us-east-2

  • AS Barat (California Utara)–us-west-1

  • AS Barat (Oregon)–us-west-2

  • Asia Pasifik (Mumbai)–ap-south-1

  • Asia Pasifik (Seoul)–ap-northeast-2

  • Asia Pasifik (Singapura)–ap-southeast-1

  • Asia Pasifik (Sydney)–ap-southeast-2

  • Asia Pasifik (Tokyo) – ap-northeast-1

  • Eropa (Frankfurt) – eu-central-1

  • Eropa (Irlandia)–eu-west-1

  • Eropa (London) – eu-west-2

  • Amerika Selatan (São Paulo) – sa-east-1