API àdáni ń dáhùn nínú aṣàwákiri rẹ ní àkókò tí kọ̀mpútà bá darapọ̀ mọ́ VPN, nítorí náà ìsopọ̀ yẹn yẹ kí ó ṣiṣẹ́. Kò ṣiṣẹ́, nítorí kóòdù tí ń ṣe ìpè náà ń ṣiṣẹ́ ní ibòmíràn pátápátá. Apex ń ṣiṣẹ́ lórí àwọn sáfà ohun-èlò Salesforce, ìgbòkègbodò ẹ̀gbẹ́ sáfà nínú Marketing Cloud sì ń ṣiṣẹ́ nínú àyíká ìṣiṣẹ́ ti ọjà yẹn. Kò sí ọ̀kan nínú wọn tí ó jogún ọ̀nà abẹ́lẹ̀ kọ̀mpútà rẹ. Ṣe èyí gẹ́gẹ́ bí ìlànà kúkúrú: dámọ̀ olùpè, yan ẹnubodè tí olùpè yẹn lè dé, so ọ̀nà náà pọ̀ láti bẹ̀rẹ̀ dé ìparí, lẹ́yìn náà ṣàyẹ̀wò láti inú àyíká ìṣiṣẹ́ fúnra rẹ̀.

Kọ káàdì olùpè kí ó tó di ìyípadà nẹ́tíwọ́kì èyíkéyìí

Kún àwọn pápá márùn-ún kí o sì kọ̀ láti dí èyíkéyìí nínú wọn. Ọjà ìṣiṣẹ́ àti ipò ń pinnu ohun gbogbo tó tẹ̀le, nítorí náà bẹ̀rẹ̀ níbẹ̀ kì í ṣe ní odi iná sáfà.

FieldWhat it must answer
RuntimeWhich product and execution context issues the request?
EndpointWhich hostname must that runtime resolve, and to what?
PathWhich supported public entry or private connection carries it?
IdentityWhich credential and which operation is the API asked to authorize?
FailureHow do responses return, and what happens when the path is down?

Tábì aṣàwákiri àti ìpè Apex jẹ́ àwọn oníbàárà méjì ọ̀tọ̀ọ̀tọ̀, aṣàwákiri tí ń ṣiṣẹ́ ń fi kìkì pé ọ̀nà wà láti orí tábìlì rẹ. Bí pápá àyíká ìṣiṣẹ́ bá sọ Apex, ìbéèrè tó yẹ ni pé àwọn àdírẹ́sì wo ni Salesforce ń jáde láti, kì í ṣe àwọn àdírẹ́sì wo ni kọ̀mpútà rẹ ní. Ìdí nìyẹn tí ọ̀nà abẹ́lẹ̀ tí ń jẹ́ kí API kó nínú aṣàwákiri lè fi ìsopọ̀ náà sílẹ̀ ní ìkùnà pẹ̀lú àkókò ìdúró kan náà bí ti tẹ́lẹ̀. Káàdì olùpè wà kí ó lè dá àṣìṣe yẹn dúró kí ẹnikẹ́ni tó ṣàtúnṣe odi iná.

Yan ẹnubodè tí olùpè lè lò ní ti gidi

Àwọn àpẹẹrẹ méjèèjì tọ́, wọ́n sì ń yanjú àwọn ìṣòro ọ̀tọ̀ọ̀tọ̀. Èkíni jẹ́ ẹnubodè gbogbogbò tí a mọ̀ọ́mọ̀ ṣe: ẹnubodè API HTTPS tàbí iṣẹ́ ìsopọ̀ tí ń ṣe ìjẹ́rìí olùpè, tí ń fi àwọn àṣẹ tóóró sílò, tí ó sì ń di ìsopọ̀ tí a dáàbò bo mọ́ backend àdáni. Ìyẹn kì í ṣe ohun kan náà pẹ̀lú fífi gbogbo iṣẹ́ backend hàn tàbí fífi ẹnu-ọ̀nà ìṣàkóso ránṣẹ́ sí íńtánẹ́ẹ̀tì.

Èkejì ni ìsopọ̀ àdáni tó yẹ. Ìwé Private Connect ìjáde ti Salesforce ṣàlàyé bí a ṣe ń darí àwọn ìpè tí a ṣe àtìlẹ́yìn fún nípasẹ̀ Outbound Network Connection tí a so mọ́ ẹ̀rí tí a dárúkọ, lórí ètò AWS PrivateLink tí a ti ṣàlàyé. Ẹ̀yà yìí ní àwọn ààlà ẹ̀dà, ìwé àṣẹ àti ọjà, nítorí náà jẹ́rìí pé àjọ náà yẹ kí o tó ṣe àpẹẹrẹ yí ká.

Kò sí ọ̀kan nínú àwọn àpẹẹrẹ náà tí í ṣe oníbàárà OpenVPN tí a fi sínú Salesforce, àti ọ̀rọ̀ àtijọ́ pé gbogbo ìsopọ̀ gbọ́dọ̀ dé backend gbogbogbò gbòòrò jù níbikíbi tí ìsopọ̀ àdáni tí a ṣe àtìlẹ́yìn bá yẹ. Yan èyí tí àyíká ìṣiṣẹ́ ń ṣe àtìlẹ́yìn fún, lẹ́yìn náà parí ọ̀nà náà dé API gidi: ojú ìparí AWS kò mọ ohun àmúṣe ilé rẹ, kò sì jogún ọ̀nà kọ̀mpútà rẹ. DNS, ìdarí backend, ìlànà àǹfààní àti ìrìnàjò ìdáhùn gbogbo wọn gbọ́dọ̀ tẹ̀le ìtòpọ̀ tí o yàn. Ọ̀nà àdáni tí a kọ̀ dẹ́rẹ̀ yóò kùnà ní ọ̀nà tí ó dà bí ìṣòro ìjẹ́rìí gan-an.

So ọ̀nà àdáni pọ̀ láti bẹ̀rẹ̀ dé ìparí

Ṣiṣẹ́ láti API sí ìta kí o sì dúró ní àlàfo àkọ́kọ́. Jẹ́rìí pé backend ń dáhùn níbílẹ̀, lẹ́yìn náà pé ojú ìparí àdáni ń dé ọ̀dọ̀ rẹ̀, lẹ́yìn náà pé ẹ̀rí tí a dárúkọ àti ìsopọ̀ ìjáde rẹ̀ ń dojú kọ ojú ìparí yẹn.

curl -sS -m 5 -o /dev/null -w '%{http_code}\n' http://10.40.8.20:8080/health
dig +short api.partner.example
sf apex run --file scripts/apex/callout-check.apex --target-org integration

Àṣẹ àkọ́kọ́ ń fi hàn pé backend ní ìlera láti inú nẹ́tíwọ́kì àdáni, èkejì ń fi hàn ibi tí orúkọ náà ń yanjú sí, ẹ̀kẹta sì ń ṣe ìpè láti àyíká ìṣiṣẹ́ Salesforce gidi. 200 láti èkíni àti ìkùnà láti ẹ̀kẹta ń ya àlàfo náà sọ́tọ̀ sí ọ̀nà tàbí ẹ̀rí, kì í ṣe sí iṣẹ́ náà.

Jẹ́ kí ìwọ̀n ìdánimọ̀ wà ní pípé nígbà tí o ń sopọ̀. Ẹ̀rí tí a dárúkọ kì í tún ojú ìparí tí kò lè dé ṣe fúnra rẹ̀, nítorí ẹ̀rí àti ìsopọ̀ àdáni jẹ́ ètò tó ní ìbámu pẹ̀lú iṣẹ́ ọ̀tọ̀ọ̀tọ̀. Àkójọ IP tí a gbà láàyè ń dín ìgbàwọlé nẹ́tíwọ́kì kù, kì í sì í ṣe ẹ̀rí API, nítorí náà pa ìjẹ́rìí TLS déédé mọ́ pẹ̀lú ìlànà ìjẹ́rìí àti yíyí iṣẹ́ náà fúnra rẹ̀. Bí ìdánwò bá kọjá kìkì lẹ́yìn tí o ti pa ìṣàyẹ̀wò ìwé-ẹ̀rí, o ti rí ìṣòro orúkọ agbàlejò, kì í ṣe ti ọ̀nà, ìwé-ẹ̀rí sì ṣì gbọ́dọ̀ bára mu.

Ṣàyẹ̀wò láti àyíká ìṣiṣẹ́, lẹ́yìn náà kọ ìpadàsẹ́yìn

Gbà ìbéèrè aláìléwu tí a gbà láàyè láti àyíká ìṣiṣẹ́ ìsopọ̀, kì í ṣe láti ẹ̀rọ rẹ. Kọ orísun tí iṣẹ́ tí ń gbà náà rí, ẹni tí a jẹ́rìí, àbájáde àti ìbéèrè kan tí a mọ̀ọ́mọ̀ kọ̀ tí ó gbọ́dọ̀ kùnà.

curl -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://api.partner.example/v1/ping
curl -sS -o /dev/null -w '%{http_code}\n' -H 'Authorization: Bearer invalid' https://api.partner.example/v1/ping

Ṣe àwọn ìdánwò méjèèjì náà láti nẹ́tíwọ́kì backend fúnra rẹ̀ kí a lè fi orísun tí a rí wé èyí tí àyíká ìṣiṣẹ́ ṣe. 200 lẹ́yìn 401 tàbí 403 ni ìrísí tí o fẹ́; 200 méjì túmọ̀ sí pé ọ̀nà ìkọ̀ kò ní ìmúṣẹ ní ti gidi.

Kọ ìpadàsẹ́yìn kí o tó nílò rẹ̀: èwo ìforúkọsílẹ̀ àkójọ ààyè, ẹ̀rí tí a dárúkọ tàbí ìsopọ̀ ìjáde ni o yí padà, ẹni tí ó ni í àti bí a ṣe lè dá iye àtẹ́lẹ̀ padà. Lẹ́yìn náà pa ìyípo mọ́ nípa dídárúkọ olùpè ojú-ọ̀run àti gbogbo ọ̀nà iṣẹ́ nínú tíkẹ́ẹ̀tì, kí ẹnikẹ́ni má baà tún ṣí ọ̀rọ̀ kan náà gẹ́gẹ́ bí ìṣòro VPN.

Àwọn àpilẹ̀kọ tó jọra