Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Hubungi pihak ketiga APIs dalam alur kerja Step Functions
HTTPTugas adalah jenis Status alur kerja tugas status yang memungkinkan Anda memanggil publik, pihak ketigaAPI, seperti Salesforce dan Stripe, dalam alur kerja Anda. Untuk memanggil pihak ketigaAPI, gunakan status Tugas dengan arn:aws:states:::http:invoke
sumber daya. Kemudian, berikan detail konfigurasi API titik akhir, seperti, metode yang ingin Anda gunakan APIURL, dan detail otentikasi.
Jika Anda menggunakan Workflow Studio untuk membangun mesin status yang berisi HTTP Tugas, Workflow Studio secara otomatis menghasilkan peran eksekusi dengan IAM kebijakan untuk HTTP tugas tersebut. Untuk informasi selengkapnya, lihat Peran untuk menguji HTTP Tugas di Workflow Studio.
Topik
HTTPDefinisi tugas
ASLDefinisi tersebut mewakili HTTP Tugas dengan http:invoke
sumber daya. Definisi HTTP Tugas berikut memanggil Stripe API yang mengembalikan daftar semua pelanggan.
"Call third-party API": {
"Type": "Task",
"Resource": "arn:aws:states:::http:invoke",
"Parameters": {
"ApiEndpoint": "https://api.stripe.com/v1/customers",
"Authentication": {
"ConnectionArn": "arn:aws:events:us-east-2
:123456789012
:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac"
},
"Method": "GET"
},
"End": true
}
HTTPBidang tugas
HTTPTugas mencakup bidang-bidang berikut dalam definisinya.
Resource
(Wajib)-
Untuk menentukan jenis tugas, berikan ARN di
Resource
bidang. Untuk HTTP Tugas, Anda menentukanResource
bidang sebagai berikut."Resource": "arn:aws:states:::http:invoke"
Parameters
(Wajib)-
Berisi
ApiEndpoint
,Method
, danConnectionArn
bidang yang memberikan informasi tentang pihak ketiga yang ingin API Anda hubungi.Parameters
juga berisi bidang opsional, sepertiHeaders
danQueryParameters
.Anda dapat menentukan kombinasi statis JSON dan JsonPath
sintaks seperti Parameters
diParameters
lapangan. Untuk informasi selengkapnya, lihat Meneruskan parameter ke layanan API di Step Functions.ApiEndpoint
(Diperlukan)-
Menentukan pihak URL ketiga yang ingin API Anda panggil. Untuk menambahkan parameter kueri keURL, gunakan
QueryParameters
bidang. Contoh berikut menunjukkan bagaimana Anda dapat memanggil Stripe API untuk mengambil daftar semua pelanggan."ApiEndpoint":"https://api.stripe.com/v1/customers"
Anda juga dapat menentukan jalur referensi menggunakan JsonPath
sintaks untuk memilih JSON node yang berisi pihak ketiga APIURL. Misalnya, Anda ingin memanggil salah satu Stripe APIs menggunakan ID pelanggan tertentu. Bayangkan Anda telah memberikan masukan status berikut. { "customer_id": "1234567890", "name": "John Doe" }
Untuk mengambil rincian ID pelanggan ini menggunakan StripeAPI, tentukan
ApiEndpoint
seperti yang ditunjukkan pada contoh berikut. Contoh ini menggunakan fungsi intrinsik dan jalur referensi."ApiEndpoint.$":"States.Format('https://api.stripe.com/v1/customers/{}', $.customer_id)"
Saat runtime, Step Functions menyelesaikan nilai sebagai berikut.
ApiEndpoint
https://api.stripe.com/v1/customers/
1234567890
Method
(Diperlukan)-
Menentukan HTTP metode yang ingin Anda gunakan untuk memanggil pihak ketigaAPI. Anda dapat menentukan salah satu metode ini di HTTP Tugas Anda:GET,POST,PUT,DELETE,PATCH,OPTIONS, atauHEAD.
Misalnya, untuk menggunakan GET metode ini, tentukan
Method
bidang sebagai berikut."Method": "GET"
Anda juga dapat menggunakan jalur referensi untuk menentukan metode saat runtime. Misalnya,
"Method.$": "$.myHTTPMethod"
. Authentication
(Diperlukan)-
Berisi
ConnectionArn
bidang yang menentukan cara mengautentikasi panggilan pihak ketigaAPI. Step Functions mendukung otentikasi untuk yang ditentukanApiEndpoint
menggunakan sumber daya koneksi Amazon EventBridge.ConnectionArn
(Diperlukan)-
Menentukan EventBridge koneksiARN.
HTTPTugas memerlukan EventBridge koneksi, yang mengelola kredensi otentikasi penyedia dengan aman. API Koneksi menentukan jenis otorisasi dan kredensi yang akan digunakan untuk mengotorisasi pihak ketiga. API Menggunakan koneksi membantu Anda menghindari rahasia hard-coding, seperti API kunci, ke dalam definisi mesin negara Anda. Dalam koneksi, Anda juga dapat menentukan
Headers
,QueryParameters
, danRequestBody
parameter.Saat Anda membuat EventBridge koneksi, Anda memberikan detail otentikasi Anda. Untuk informasi selengkapnya tentang cara kerja autentikasi untuk HTTP Tugas, lihatOtentikasi untuk Tugas HTTP.
Contoh berikut menunjukkan bagaimana Anda dapat menentukan
Authentication
bidang dalam definisi HTTP Tugas Anda."Authentication": { "ConnectionArn": "arn:aws:events:us-east-2:
123456789012
:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" } Headers
(Opsional)-
Menyediakan konteks dan metadata tambahan ke titik akhir. API Anda dapat menentukan header sebagai string atau JSON array.
Anda dapat menentukan header di EventBridge koneksi dan
Headers
bidang dalam HTTP Tugas. Kami menyarankan Anda untuk tidak menyertakan detail otentikasi ke API penyedia Anda diHeaders
lapangan. Kami menyarankan Anda memasukkan detail ini ke dalam EventBridge koneksi.Step Functions menambahkan header yang Anda tentukan di EventBridge koneksi ke header yang Anda tentukan dalam definisi HTTP Tugas. Jika tombol header yang sama hadir dalam definisi dan koneksi, Step Functions menggunakan nilai yang sesuai yang ditentukan dalam EventBridge koneksi untuk header tersebut. Untuk informasi lebih lanjut tentang caranya Step Functions melakukan penggabungan data, lihatPenggabungan EventBridge koneksi dan data definisi HTTP Tugas.
Contoh berikut menentukan header yang akan disertakan dalam API panggilan pihak ketiga:
content-type
."Headers": { "content-type": "application/json" }
Anda juga dapat menggunakan jalur referensi untuk menentukan header saat runtime. Misalnya,
"Headers.$": "$.myHTTPHeaders"
.Step Functions menetapkan
User-Agent
,Range
, danHost
header. Step Functions menetapkan nilaiHost
header berdasarkan panggilan API Anda. Berikut ini adalah contoh dari header ini.User-Agent: Amazon|StepFunctions|HttpInvoke|
us-east-1
, Range: bytes=0-262144, Host: api.stripe.comAnda tidak dapat menggunakan header berikut dalam definisi HTTP Tugas Anda. Jika Anda menggunakan header ini, HTTP Tugas gagal dengan
States.Runtime
kesalahan.-
A-IM
-
Terima-Charset
-
Terima-Datetime
-
Terima-Pengenkodean
-
Kontrol Cache
-
Koneksi
-
Pengkodean Konten
-
Konten- MD5
-
Tanggal
-
Harapkan
-
Diteruskan
-
Dari
-
Host
-
HTTP2-Pengaturan
-
Jika-Pertandingan
-
Jika-Modifikasi-Sejak
-
Jika-Tidak Pertandingan
-
Jika-Rentang
-
Jika-Tidak Dimodifikasi-Sejak
-
Max-Maju
-
Asal
-
Pragma
-
Otorisasi Proksi
-
Perujuk
-
Server
-
TE
-
Trailer
-
Transfer-Encoding
-
Peningkatan
-
Melalui
-
Peringatan
-
x-diteruskan-*
-
x-amz-*
-
x-amzn-*
-
QueryParameters
(Opsional)-
Menyisipkan pasangan kunci-nilai di akhir file. API URL Anda dapat menentukan parameter kueri sebagai string, JSON array, atau JSON objek. Step Functions secara otomatis URL -menyandikan parameter kueri saat memanggil pihak ketiga. API
Misalnya, katakan bahwa Anda ingin menelepon Stripe API untuk mencari pelanggan yang melakukan transaksi mereka dalam dolar AS (USD). Bayangkan Anda telah memberikan yang berikut ini
QueryParameters
sebagai input status."QueryParameters": { "currency": "usd" }
Saat runtime, Step Functions menambahkan
QueryParameters
ke API URL sebagai berikut.https://api.stripe.com/v1/customers/search?currency=usd
Anda juga dapat menggunakan jalur referensi untuk menentukan parameter kueri saat runtime. Misalnya,
"QueryParameters.$": "$.myQueryParameters"
.Jika Anda telah menentukan parameter kueri di EventBridge koneksi, Step Functions menambahkan parameter kueri ini ke parameter kueri yang Anda tentukan dalam definisi HTTP Tugas. Jika kunci parameter kueri yang sama hadir dalam definisi dan koneksi, Step Functions menggunakan nilai yang sesuai yang ditentukan dalam EventBridge koneksi untuk header tersebut. Untuk informasi lebih lanjut tentang caranya Step Functions melakukan penggabungan data, lihatPenggabungan EventBridge koneksi dan data definisi HTTP Tugas.
Transform
(Opsional)-
Berisi
RequestBodyEncoding
danRequestEncodingOptions
bidang. Secara default, Step Functions mengirimkan badan permintaan sebagai JSON data ke API titik akhir.Jika API penyedia Anda menerima badan
form-urlencoded
permintaan, gunakanTransform
bidang untuk menentukan URL -encoding untuk badan permintaan. Anda juga harus menentukancontent-type
header sebagaiapplication/x-www-form-urlencoded
. Step Functions kemudian secara otomatis URL -mengkodekan badan permintaan Anda.RequestBodyEncoding
-
Menentukan URL -encoding dari badan permintaan Anda. Anda dapat menentukan satu nilai ini:
NONE
atauURL_ENCODED
.-
NONE
— Badan HTTP permintaan akan menjadi serial JSONRequestBody
lapangan. Ini adalah nilai default. -
URL_ENCODED
— Badan HTTP permintaan akan menjadi data formulir yang URL dikodekan dari bidang tersebut.RequestBody
-
RequestEncodingOptions
-
Menentukan opsi pengkodean yang akan digunakan untuk array di badan permintaan Anda jika Anda menyetel
RequestBodyEncoding
ke.URL_ENCODED
Step Functions mendukung opsi pengkodean array berikut. Untuk informasi selengkapnya tentang opsi ini dan contohnya, lihatMenerapkan URL -encoding pada badan permintaan.
-
INDICES
— Mengkodekan array menggunakan nilai indeks elemen array. Secara default, Step Functions menggunakan opsi pengkodean ini. -
REPEAT
— Mengulangi kunci untuk setiap item dalam array. -
COMMAS
— Mengkodekan semua nilai dalam kunci sebagai daftar nilai yang dibatasi koma. -
BRACKETS
— Mengulangi kunci untuk setiap item dalam array dan menambahkan braket, [], ke kunci untuk menunjukkan bahwa itu adalah array.
-
Contoh berikut menetapkan URL -encoding untuk data badan permintaan. Ini juga menentukan untuk menggunakan opsi
COMMAS
pengkodean untuk array di badan permintaan."Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "COMMAS" } }
RequestBody
(Opsional)-
Menerima JSON data yang Anda berikan dalam input status. Di
RequestBody
, Anda dapat menentukan kombinasi statis JSON dan JsonPathsintaks. Misalnya, katakan bahwa Anda memberikan masukan status berikut: { "CardNumber": "1234567890", "ExpiryDate": "09/25" }
Untuk menggunakan nilai-nilai ini dari
CardNumber
danExpiryDate
dalam badan permintaan Anda saat runtime, Anda dapat menentukan JSON data berikut di badan permintaan Anda."RequestBody": { "Card": { "Number.$": "$.CardNumber", "Expiry.$": "$.ExpiryDate", "Name": "John Doe", "Address": "123 Any Street, Any Town, USA" } }
Jika pihak ketiga yang ingin API Anda panggil memerlukan badan
form-urlencoded
permintaan, Anda harus menentukan URL -encoding untuk data badan permintaan Anda. Untuk informasi selengkapnya, lihat Menerapkan URL -encoding pada badan permintaan.
Otentikasi untuk Tugas HTTP
HTTPTugas memerlukan EventBridge koneksi, yang mengelola kredensi otentikasi penyedia dengan aman. API Koneksi menentukan jenis otorisasi dan kredensi yang akan digunakan untuk mengotorisasi pihak ketiga. API Menggunakan koneksi membantu Anda menghindari rahasia hard-coding, seperti API kunci, ke dalam definisi mesin negara Anda. EventBridge Koneksi mendukung skema otorisasi DasarOAuth,, dan API Kunci.
Saat Anda membuat EventBridge koneksi, Anda memberikan detail otentikasi Anda. Anda juga dapat menyertakan parameter header, body, dan query yang diperlukan untuk otorisasi dengan fileAPI. Anda harus menyertakan koneksi ARN dalam HTTP Tugas apa pun yang memanggil pihak ketigaAPI.
Saat Anda membuat koneksi dan menambahkan parameter otorisasi, EventBridge buat rahasia di AWS Secrets Manager. Dalam rahasia ini, EventBridge menyimpan parameter koneksi dan otorisasi dalam bentuk terenkripsi. Agar berhasil membuat atau memperbarui koneksi, Anda harus menggunakan Secrets Manager Akun AWS yang memiliki izin untuk menggunakan Secrets Manager. Untuk informasi lebih lanjut tentang IAM izin yang dibutuhkan mesin status Anda untuk mengakses EventBridge koneksi, lihatIAMizin untuk menjalankan Tugas HTTP.
Gambar berikut menunjukkan bagaimana Step Functions menangani otentikasi untuk API panggilan pihak ketiga menggunakan EventBridge koneksi. Bagian EventBridge koneksi yang mengelola kredensyal penyedia pihak ketigaAPI. EventBridge Menciptakan sebuah rahasia di Secrets Manager untuk menyimpan parameter koneksi dan otorisasi dalam bentuk terenkripsi.
Penggabungan EventBridge koneksi dan data definisi HTTP Tugas
Saat Anda memanggil HTTP Tugas, Anda dapat menentukan data di EventBridge koneksi dan definisi HTTP Tugas Anda. Data ini mencakupHeaders
,QueryParameters
, dan RequestBody
parameter. Sebelum memanggil pihak ketigaAPI, Step Functions menggabungkan badan permintaan dengan parameter badan koneksi dalam semua kasus kecuali jika badan permintaan Anda adalah string dan parameter badan koneksi tidak kosong. Dalam hal ini, HTTP Tugas gagal dengan States.Runtime
kesalahan.
Jika ada kunci duplikat yang ditentukan dalam definisi HTTP Tugas dan EventBridge koneksi, Step Functions menimpa nilai-nilai dalam HTTP Tugas dengan nilai-nilai dalam koneksi.
Daftar berikut menjelaskan bagaimana Step Functions menggabungkan data sebelum memanggil pihak ketigaAPI:
-
Header - Step Functions menambahkan header apa pun yang Anda tentukan dalam koneksi ke header di
Headers
bidang Tugas. HTTP Jika ada konflik antara tombol header, Step Functions menggunakan nilai yang ditentukan dalam koneksi untuk header tersebut. Misalnya, jika Anda menentukancontent-type
header dalam definisi HTTP Tugas dan EventBridge koneksi, Step Functions menggunakan nilaicontent-type
header yang ditentukan dalam koneksi. -
Parameter kueri — Step Functions menambahkan parameter kueri apa pun yang Anda tentukan dalam koneksi ke parameter kueri di
QueryParameters
bidang HTTP Tugas. Jika ada konflik antara kunci parameter kueri, Step Functions menggunakan nilai yang ditentukan dalam koneksi untuk parameter kueri tersebut. Misalnya, jika Anda menentukan parametermaxItems
kueri dalam definisi HTTP Tugas dan EventBridge koneksi, Step Functions menggunakan nilai parametermaxItems
kueri yang ditentukan dalam koneksi. -
Parameter tubuh
-
Step Functions menambahkan nilai badan permintaan apa pun yang ditentukan dalam koneksi ke badan permintaan di
RequestBody
bidang HTTP Tugas. Jika ada konflik antara kunci badan permintaan, Step Functions menggunakan nilai yang ditentukan dalam koneksi untuk badan permintaan. Misalnya, katakan bahwa Anda menentukanMode
RequestBody
bidang dalam definisi HTTP Tugas dan EventBridge koneksi. Step Functions menggunakan nilaiMode
bidang yang Anda tentukan dalam koneksi. -
Jika Anda menentukan badan permintaan sebagai string, bukan JSON objek, dan EventBridge koneksi juga berisi badan permintaan, Step Functions tidak dapat menggabungkan badan permintaan yang ditentukan di kedua tempat ini. Itu gagal HTTP Tugas dengan
States.Runtime
kesalahan.
Step Functions menerapkan semua transformasi dan membuat serial badan permintaan setelah menyelesaikan penggabungan badan permintaan.
-
Contoh berikut menetapkanHeaders
,QueryParameters
, dan RequestBody
bidang di kedua HTTP Tugas dan EventBridge koneksi.
HTTPDefinisi tugas
{ "Comment": "Data merging example for HTTP Task and EventBridge connection", "StartAt": "ListCustomers", "States": { "ListCustomers": { "Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": { "Authentication": { "ConnectionArn": "arn:aws:events:us-east-1:
123456789012
:connection/Example/81210c42-8af1-456b-9c4a-6ff02fc664ac
" }, "ApiEndpoint": "https:/example.com/path
", "Method": "GET", "Headers": {"Request-Id": "my_request_id", "Header-Param": "state_machine_header_param"
}, "RequestBody": {"Job": "Software Engineer", "Company": "AnyCompany", "BodyParam": "state_machine_body_param"
}, "QueryParameters": {"QueryParam": "state_machine_query_param"
} } } } }
EventBridge koneksi
{ "AuthorizationType": "
API_KEY
", "AuthParameters": { "ApiKeyAuthParameters": { "ApiKeyName": "ApiKey
", "ApiKeyValue": "key_value
" }, "InvocationHttpParameters": { "BodyParameters": [ {"Key": "BodyParam", "Value": "connection_body_param"
} ], "HeaderParameters": [ {"Key": "Header-Param", "Value": "connection_header_param"
} ], "QueryStringParameters": [ {"Key": "QueryParam", "Value": "connection_query_param"
} ] } } }
Dalam contoh ini, kunci duplikat ditentukan dalam HTTP Tugas dan EventBridge koneksi. Oleh karena itu, Step Functions menimpa nilai-nilai dalam HTTP Tugas dengan nilai-nilai dalam koneksi. Cuplikan kode berikut menunjukkan permintaan yang HTTP Step Functions mengirim ke pihak ketigaAPI.
POST /path?QueryParam=connection_query_param HTTP/1.1
Apikey: key_value
Content-Length: 79
Content-Type: application/json; charset=UTF-8
Header-Param: connection_header_param
Host: example.com
Range: bytes=0-262144
Request-Id: my_request_id
User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1
{"Job":"Software Engineer","Company":"AnyCompany","BodyParam":"connection_body_param"}
Menerapkan URL -encoding pada badan permintaan
Secara default, Step Functions mengirimkan badan permintaan sebagai JSON data ke API titik akhir. Jika API penyedia pihak ketiga Anda memerlukan badan form-urlencoded
permintaan, Anda harus menentukan URL -encoding untuk badan permintaan. Step Functions kemudian secara otomatis URL -mengkodekan badan permintaan berdasarkan opsi URL -encoding yang Anda pilih.
Anda menentukan URL -encoding menggunakan bidang. Transform
Bidang ini berisi RequestBodyEncoding
bidang yang menentukan apakah Anda ingin menerapkan URL -encoding untuk badan permintaan Anda atau tidak. Saat Anda menentukan RequestBodyEncoding
bidang, Step Functions mengonversi badan JSON permintaan Anda ke badan form-urlencoded
permintaan sebelum memanggil pihak ketigaAPI. Anda juga harus menentukan content-type
header sebagai application/x-www-form-urlencoded
karena APIs itu menerima URL -encoded data mengharapkan header. content-type
Untuk menyandikan array di badan permintaan Anda, Step Functions menyediakan opsi pengkodean array berikut.
-
INDICES
— Mengulangi kunci untuk setiap item dalam array dan menambahkan braket, [], ke kunci untuk menunjukkan bahwa itu adalah array. Braket ini berisi indeks elemen array. Menambahkan indeks membantu Anda menentukan urutan elemen array. Secara default, Step Functions menggunakan opsi pengkodean ini.Misalnya, jika badan permintaan Anda berisi array berikut.
{"array": ["a","b","c","d"]}
Step Functions mengkodekan array ini ke string berikut.
array[0]=a&array[1]=b&array[2]=c&array[3]=d
-
REPEAT
— Mengulangi kunci untuk setiap item dalam array.Misalnya, jika badan permintaan Anda berisi array berikut.
{"array": ["a","b","c","d"]}
Step Functions mengkodekan array ini ke string berikut.
array=a&array=b&array=c&array=d
-
COMMAS
— Mengkodekan semua nilai dalam kunci sebagai daftar nilai yang dibatasi koma.Misalnya, jika badan permintaan Anda berisi array berikut.
{"array": ["a","b","c","d"]}
Step Functions mengkodekan array ini ke string berikut.
array=a,b,c,d
-
BRACKETS
— Mengulangi kunci untuk setiap item dalam array dan menambahkan braket, [], ke kunci untuk menunjukkan bahwa itu adalah array.Misalnya, jika badan permintaan Anda berisi array berikut.
{"array": ["a","b","c","d"]}
Step Functions mengkodekan array ini ke string berikut.
array[]=a&array[]=b&array[]=c&array[]=d
IAMizin untuk menjalankan Tugas HTTP
Peran eksekusi mesin status Anda harus memiliki states:InvokeHTTPEndpoint
events:RetrieveConnectionCredentials
,secretsmanager:GetSecretValue
,, dan secretsmanager:DescribeSecret
izin untuk HTTP Tugas memanggil pihak ketigaAPI. Contoh IAM kebijakan berikut memberikan hak istimewa paling sedikit yang diperlukan untuk peran mesin status Anda untuk memanggil Stripe. APIs IAMKebijakan ini juga memberikan izin ke peran mesin status untuk mengakses EventBridge koneksi tertentu, termasuk rahasia untuk koneksi ini yang disimpan di Secrets Manager.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "states:InvokeHTTPEndpoint", "Resource": "arn:aws:states:us-east-2:
123456789012
:stateMachine:myStateMachine
", "Condition": { "StringEquals": { "states:HTTPMethod": "GET" }, "StringLike": { "states:HTTPEndpoint": "https://api.stripe.com/*" } } }, { "Sid": "Statement2", "Effect": "Allow", "Action": [ "events:RetrieveConnectionCredentials", ], "Resource": "arn:aws:events:us-east-2:123456789012
:connection/oauth_connection/aeabd89e-d39c-4181-9486-9fe03e6f286a
" }, { "Sid": "Statement3", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:*:*:secret:events!connection/*" } ] }
HTTPContoh tugas
Definisi mesin status berikut menunjukkan HTTP Tugas yang mencakupHeaders
,, QueryParameters
Transform
, dan RequestBody
parameter. HTTPTugas memanggil StripeAPI, https://api.stripe.com/v1/ faktur, untuk menghasilkan faktur. HTTPTugas juga menentukan URL -encoding untuk badan permintaan menggunakan opsi encoding. INDICES
Pastikan bahwa Anda telah membuat EventBridge koneksi. Contoh berikut menunjukkan koneksi yang dibuat menggunakan jenis BASIC auth.
{
"Type": "BASIC",
"AuthParameters": {
"BasicAuthParameters": {
"Password": "myPassword",
"Username": "myUsername"
},
}
}
Ingatlah untuk mengganti italicized
teks dengan informasi spesifik sumber daya Anda.
{ "Comment": "A state machine that uses HTTP Task", "StartAt": "CreateInvoiceAPI", "States": { "CreateInvoiceAPI": { "Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": { "ApiEndpoint": "https://api.stripe.com/v1/invoices", "Method": "POST", "Authentication": { "ConnectionArn": ""arn:aws:events:
us-east-2
:123456789012
:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" }, "Headers": { "Content-Type": "application/x-www-form-urlencoded" }, "RequestBody": { "customer.$": "$.customer_id", "description": "Monthly subscription", "metadata": { "order_details": "monthly report data" } }, "Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "INDICES" } } }, "Retry": [ { "ErrorEquals": [ "States.Http.StatusCode.429", "States.Http.StatusCode.503", "States.Http.StatusCode.504", "States.Http.StatusCode.502" ], "BackoffRate": 2, "IntervalSeconds": 1, "MaxAttempts": 3, "JitterStrategy": "FULL" } ], "Catch": [ { "ErrorEquals": [ "States.Http.StatusCode.404", "States.Http.StatusCode.400", "States.Http.StatusCode.401", "States.Http.StatusCode.409", "States.Http.StatusCode.500" ], "Comment": "Handle all non 200 ", "Next": "HandleInvoiceFailure" } ], "End": true } } }
Untuk menjalankan mesin status ini, berikan ID pelanggan sebagai input seperti yang ditunjukkan pada contoh berikut:
{
"customer_id": "1234567890"
}
Contoh berikut menunjukkan HTTP permintaan bahwa Step Functions mengirim ke StripeAPI.
POST /v1/invoices HTTP/1.1
Authorization: Basic <base64 of username and password>
Content-Type: application/x-www-form-urlencoded
Host: api.stripe.com
Range: bytes=0-262144
Transfer-Encoding: chunked
User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1
description=Monthly%20subscription&metadata%5Border_details%5D=monthly%20report%20data&customer=1234567890
Menguji HTTP Tugas
Anda dapat menggunakan TestStateAPImelalui konsol,SDK, atau AWS CLI untuk menguji HTTP Tugas. Prosedur berikut menjelaskan cara menggunakan TestState API dalam Step Functions konsol. Anda dapat menguji detail API permintaan, respons, dan autentikasi secara berulang hingga HTTP Tugas berfungsi seperti yang diharapkan.
Uji status HTTP Tugas di Step Functions konsol
-
Buka Konsol Step Functions
. -
Pilih Buat mesin status untuk mulai membuat mesin status atau pilih mesin status yang ada yang berisi HTTP Tugas.
Lihat Langkah 4 jika Anda menguji tugas di mesin status yang ada.
-
Di Mode desain Workflow Studio, konfigurasikan HTTP Tugas secara visual. Atau pilih mode Kode untuk menyalin-menempelkan definisi mesin status dari lingkungan pengembangan lokal Anda.
-
Dalam mode Desain, pilih Status uji di Panel Inspector panel Workflow Studio.
-
Dalam kotak dialog Test state, lakukan hal berikut:
-
Untuk peran Eksekusi, pilih peran eksekusi untuk menguji status. Jika Anda tidak memiliki peran dengan izin yang cukup untuk HTTP Tugas, lihat Peran untuk menguji HTTP Tugas di Workflow Studio untuk membuat peran.
-
(Opsional) Berikan JSON masukan apa pun yang dibutuhkan status yang Anda pilih untuk pengujian.
-
Untuk tingkat Inspeksi, pertahankan pilihan default INFO. Level ini menunjukkan status API panggilan dan output status. Ini berguna untuk memeriksa API respons dengan cepat.
-
Pilih Mulai tes.
-
Jika tes berhasil, output status muncul di sisi kanan kotak dialog status Uji. Jika tes gagal, kesalahan muncul.
Di tab Detail negara pada kotak dialog, Anda dapat melihat definisi negara bagian dan tautan ke EventBridge koneksi.
-
Ubah tingkat Inspeksi menjadi TRACE. Level ini menunjukkan HTTP permintaan dan respons mentah, dan berguna untuk memverifikasi header, parameter kueri, dan detail API spesifik lainnya.
-
Pilih kotak centang Reveal Secrets. Dalam kombinasi dengan TRACE, pengaturan ini memungkinkan Anda melihat data sensitif yang EventBridge sisipan koneksi, seperti API kunci. Bagian IAM identitas pengguna yang Anda gunakan untuk mengakses konsol harus memiliki izin untuk melakukan
states:RevealSecrets
tindakan. Tanpa izin ini, Step Functions melempar kesalahan akses ditolak saat Anda memulai pengujian. Sebagai contoh dari sebuah IAM kebijakan yang menetapkanstates:RevealSecrets
izin, lihatIAM izin untuk menggunakan TestState API.Gambar berikut menunjukkan tes untuk HTTP Tugas yang berhasil. Tingkat Inspeksi untuk status ini diatur ke TRACE. Tab HTTPpermintaan & respons pada gambar berikut menunjukkan hasil API panggilan pihak ketiga.
-
Pilih Mulai tes.
-
Jika tes berhasil, Anda dapat melihat HTTP detail Anda di bawah tab HTTPpermintaan & respons.
-
Tanggapan HTTP Tugas yang Tidak Didukung
HTTPTugas gagal dengan States.Runtime
kesalahan jika salah satu kondisi berikut benar untuk respons yang dikembalikan:
-
Respons berisi header tipe konten
application/octet-stream
,,image/*
video/*
, atau.audio/*
-
Respons tidak dapat dibaca sebagai string yang valid. Misalnya, data biner atau gambar.