AWS Emulator er et gratis verktøy som etterligner AWS-API-er lokalt. Det gir utviklere og kodeagenter mulighet til å teste hvordan apper samhandler med AWS-tjenester på egen maskin eller en utviklingsserver, i stedet for å sende hvert testkall til skyen. AWS oppgir at emulatoren dekker over 200 tjenester og er bygget på mer enn 400 API-modeller. Det betyr likevel ikke at alle tjenestene oppfører seg akkurat som AWS.
9
10
41
Hva kan AWS Emulator brukes til?
Emulatoren tilbyr et lokalt HTTPS-endepunkt som AWS CLI-kommandoer og apper med AWS SDK-er kan sende forespørsler til. Dermed kan utviklere teste støttede arbeidsflyter under lokal utvikling eller i kontinuerlig integrasjon, uten å opprette skyressurser for hver testrunde.
21
39
AWS beskriver verktøyet som gratis, uten en egen avgift for selve emulatoren. Ressurser som senere tas i bruk i den faktiske AWS-skyen, kan fortsatt medføre kostnader.
41
50
Mange API-er betyr ikke full likhet
API-modellene beskriver hvilke operasjoner og dataformer emulatoren kan håndtere. Men at en tjeneste eller operasjon er representert, er ingen garanti for at oppførselen samsvarer med AWS i alle situasjoner. AWS publiserer fidelitetsscorer for hver tjeneste, og den offentlige evalueringspakken tester hvor godt emulatorens oppførsel stemmer med AWS.
10
21
22
Verktøyet viser også noen mangler tydelig: Ifølge AWS gir en operasjon som ennå ikke er implementert, HTTP 501 – «Not Implemented». Da feiler testen i stedet for at resultatet ser ut til å være vellykket.
39 Det gir nyttig beskjed om at funksjonen mangler, men team bør likevel undersøke de nyeste fidelitetsscorene for tjenestene og operasjonene de er avhengige av.
21
Sikkerhet og kontoer må testes i AWS
AWS Emulator bør ikke brukes til å bekrefte at sikkerhetskontroller i skyen fungerer som de skal. AWS’ sikkerhetsveiledning fraråder å teste IAM-policyer, tilgangsgrenser, ressursbaserte policyer, KMS-nøkkelpolicyer og andre sikkerhetskontroller i emulatoren.
48
Også håndtering av kontoer og regioner er begrenset. Veiledningen beskriver en modell med én konto, uten støtte for atferd på tvers av AWS-kontoer eller regioner.
46
48 En test som lykkes lokalt, viser derfor ikke at tilgangsstyring eller arbeidsflyter med flere kontoer vil fungere på samme måte i AWS. Slike scenarioer bør valideres i det faktiske miljøet.
48
Kode skrevet og testet av agenter
AWS sier at autonome agenter skrev og testet koden til emulatoren, uten at prosjektteamet selv skrev eller gjennomgikk den.
9
10 I prosjektbeskrivelsen forteller AWS at agenter tester emulatoren mot den virkelige AWS-tjenesten, undersøker avvik og jobber med å rette dem. Endringer går gjennom en automatisert godkjenningsport før de slås sammen.
9
10
Det er en uvanlig utviklingsmodell, men den endrer ikke hva utviklere bør gjøre i praksis: Sjekk hvor godt emulatoren støtter funksjonene dere bruker, behandle operasjoner som ikke er implementert som reelle mangler, og test sikkerhetskritisk oppførsel mot AWS.
Når er AWS Emulator nyttig?
AWS Emulator kan gi raskere tilbakemelding når du utvikler arbeidsflyter som er avhengige av AWS-tjenester emulatoren støtter. Bruk gjerne vanlige mocker til logikk du selv kontrollerer, og se på tjenestenes publiserte scorer og evalueringspakken før du baserer deg på at en lokal test bekrefter kompatibilitet.
21
22
46
Før produksjonssetting er lokal testing bare ett ledd i testingen – ikke en erstatning for å kontrollere den distribuerte appen, tilgangene dens og eventuell bruk på tvers av kontoer eller regioner i AWS.
46
48