Buat integrasi AWS layanan untuk HTTP APIs di API Gateway - APIGerbang Amazon

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

Buat integrasi AWS layanan untuk HTTP APIs di API Gateway

Anda dapat mengintegrasikan AWS layanan Anda HTTP API dengan menggunakan integrasi kelas satu. Integrasi kelas satu menghubungkan HTTP API rute ke AWS layananAPI. Ketika klien memanggil rute yang didukung oleh integrasi kelas satu, API Gateway memanggil AWS layanan API untuk Anda. Misalnya, Anda dapat menggunakan integrasi kelas satu untuk mengirim pesan ke antrean Amazon Simple Queue Service, atau untuk memulai mesin status. AWS Step Functions Untuk tindakan layanan yang didukung, lihatReferensi subtipe integrasi.

Parameter permintaan pemetaan

Integrasi kelas satu memiliki parameter yang diperlukan dan opsional. Anda harus mengkonfigurasi semua parameter yang diperlukan untuk membuat integrasi. Anda dapat menggunakan nilai statis atau parameter peta yang dievaluasi secara dinamis saat runtime. Untuk daftar lengkap integrasi dan parameter yang didukung, lihatReferensi subtipe integrasi.

Tabel berikut menjelaskan parameter permintaan pemetaan yang didukung.

Tipe Contoh Catatan
Nilai header $ request.header.name Nama header tidak peka huruf besar/kecil. APIGateway menggabungkan beberapa nilai header dengan koma, misalnya"header1": "value1,value2".
Nilai string kueri $request.querystring.name Nama string kueri peka huruf besar/kecil. APIGateway menggabungkan beberapa nilai dengan koma, misalnya"querystring1": "Value1,Value2".
Parameter jalur $request.path.name Nilai parameter jalur dalam permintaan. Misalnya jika rutenya/pets/{petId}, Anda dapat memetakan petId parameter dari permintaan dengan $request.path.petId.
Minta passthrough tubuh $ request.body APIGateway melewati seluruh badan permintaan.
Isi permintaan $ request.body.name Ekspresi JSON jalur. Descent rekursif ($request.body..name) dan ekspresi filter (?(expression)) tidak didukung.
catatan

Saat Anda menentukan JSON jalur, API Gateway memotong badan permintaan pada 100 KB dan kemudian menerapkan ekspresi pemilihan. Untuk mengirim muatan yang lebih besar dari 100 KB, tentukan$request.body.

Variabel konteks $ konteks.variableName Nilai variabel konteks yang didukung.
Variabel tahap $stageVariables.variableName Nilai variabel tahap.
Nilai statis string Nilai konstan.

Buat integrasi kelas satu

Sebelum membuat integrasi kelas satu, Anda harus membuat IAM peran yang memberikan izin API Gateway untuk menjalankan tindakan AWS layanan yang Anda integrasikan. Untuk mempelajari lebih lanjut, lihat Membuat peran untuk AWS layanan.

Untuk membuat integrasi kelas satu, pilih tindakan AWS layanan yang didukung, sepertiSQS-SendMessage, konfigurasikan parameter permintaan, dan berikan peran yang memberikan izin API Gateway untuk memanggil layanan terintegrasi. AWS API Tergantung pada subtipe integrasi, parameter permintaan yang berbeda diperlukan. Untuk mempelajari selengkapnya, lihat Referensi subtipe integrasi.

AWS CLI Perintah berikut membuat integrasi yang mengirimkan SQS pesan Amazon.

aws apigatewayv2 create-integration \ --api-id abcdef123 \ --integration-subtype SQS-SendMessage \ --integration-type AWS_PROXY \ --payload-format-version 1.0 \ --credentials-arn arn:aws:iam::123456789012:role/apigateway-sqs \ --request-parameters '{"QueueUrl": "$request.header.queueUrl", "MessageBody": "$request.body.message"}'

Buat integrasi kelas satu menggunakan AWS CloudFormation

Contoh berikut menunjukkan AWS CloudFormation cuplikan yang membuat /{source}/{detailType} rute dengan integrasi kelas satu dengan Amazon. EventBridge

SourceParameter dipetakan ke parameter {source} jalur, DetailType dipetakan ke parameter {DetailType} jalur, dan Detail parameter dipetakan ke badan permintaan.

Cuplikan tidak menampilkan bus acara atau IAM peran yang memberikan izin API Gateway untuk menjalankan tindakan. PutEvents

Route: Type: AWS::ApiGatewayV2::Route Properties: ApiId: !Ref HttpApi AuthorizationType: None RouteKey: 'POST /{source}/{detailType}' Target: !Join - / - - integrations - !Ref Integration Integration: Type: AWS::ApiGatewayV2::Integration Properties: ApiId: !Ref HttpApi IntegrationType: AWS_PROXY IntegrationSubtype: EventBridge-PutEvents CredentialsArn: !GetAtt EventBridgeRole.Arn RequestParameters: Source: $request.path.source DetailType: $request.path.detailType Detail: $request.body EventBusName: !GetAtt EventBus.Arn PayloadFormatVersion: "1.0"