# Installation och konfiguration

## Förutsättningar

För att framgångsrikt integrera med Netacea behöver du:

1. Ett AWS-konto med administrativa behörigheter för Lambda och CloudFront.
2. En fungerande Amazon CloudFront-distribution.
3. Lambda-kodfil (.zip) - tillhandahålls av Netacea<mark style="color:green;">\*</mark>
4. Information om relevanta API- och hemliga nycklar samt en Kinesis-slutpunkt - tillhandahålls av Netacea.

{% hint style="info" %} <mark style="color:green;">\*</mark>.zip-filen som Netacea har delat med dig innehåller kodberoenden, de tre Lambda-funktionerna och konfigurationsfilen NetaceaConfig.js som ska fyllas i med information om din integration med Netacea.
{% endhint %}

## Skapa Lambda-funktionerna

För att börja skapa Lambda-funktionerna, logga först in på AWS-konsolen och navigera till 'Lambda'-applikationen. Detta kan göras genom att söka efter 'Lambda' i användargränssnittet.

Väl där, kontrollera att din plats/region är inställd på `us-east-1.` Om inte, ändra till detta. Lambda-funktioner måste skapas i AWS-regionen `us-east-1`, annars kommer de inte vara tillgängliga för användning med CloudFront.

### Skapa funktion

Netacea kräver 3 Lambda-funktioner för denna integration och detta kan slutföras genom att följa stegen som beskrivs nedan. Du måste upprepa denna process för varje Lambda-funktion.

#### Skapa funktionen

För att börja skapa funktionen, klicka på knappen Skapa funktion, som finns i det övre högra hörnet av användargränssnittet

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-1392ab3897c71e301291c828ca22a2658924fbbd%2Fimage%20(128).png?alt=media" alt=""><figcaption></figcaption></figure>

När du har gjort detta kommer du att se skärmen nedan.

Välj 'Skapa från grunden' och namnge sedan funktionen. Netacea rekommenderar att varje funktion namnges efter respektive funktionstyp, med prefixet 'netacea\_'. Exempel på dessa finns nedan:

* netacea\_origin\_response
* netacea\_viewer\_request
* netacea\_viewer\_response

Varje funktion ska skapas med standardinställningarna under "Grundläggande information"

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-0a71ffad38010a1bfe6816e41895946e06d0afd5%2Fimage%20(56).png?alt=media" alt=""><figcaption><p>Create Function Example Screenshot</p></figcaption></figure>

#### Behörigheter

När du skapar Lambda-funktionerna är det viktigt att säkerställa att de har rätt **standardexekveringsroll**. Policyn den ska innehålla är **Basic Lambda\@Edge permissions (for CloudFront trigger)**. Om det inte finns någon roll med denna policy måste en skapas. Se nedan:

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-ea450178c417c9cd0f6fb53e474b591a15f726fc%2FLambdaPermissions.png?alt=media" alt=""><figcaption><p>Permissions Example Screenshot</p></figcaption></figure>

#### Ladda upp zip-filen

När Lambda-funktionen har skapats måste Netacea-koden läggas till genom att ladda upp den medföljande zip-filen. Denna kan laddas ner från Netacea Admin Portal.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-1134026692fb18f30f2ddd0f42b5fb5113bcd42e%2Fimage%20(55).png?alt=media" alt=""><figcaption></figcaption></figure>

Ladda upp den av Netacea tillhandahållna zip-filen.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-efc9ec3dac9e7d9ac2df87cdb7a7fe64ed5052d5%2Fimage%20(66).png?alt=media" alt=""><figcaption><p>Upload the zip file</p></figcaption></figure>

När filen har laddats upp till funktionen, öppna `NetaceaConfig.json` från kodkällans användargränssnitt och fyll i den med informationen som Netacea har tillhandahållit.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-f078b5871303806e4b4f039818c0cfcd0dfa2197%2Fimage%20(58).png?alt=media" alt=""><figcaption></figcaption></figure>

För mer information om varje attribut i konfigurationsfilen, se nedan:

Kodavsnittet nedan visar filen `NetaceaConfig.json` som diskuterats ovan. Denna måste fyllas i med de uppgifter som Netacea har tillhandahållit för din organisation. Detta kan kopieras och klistras in med alla relevanta uppgifter från Netacea Admin-portalen.

<pre class="language-json"><code class="lang-json">{
    "mitigationType": "CHOSEN-MITIGATION-TYPE",
    "apiKey": "API-KEY-PROVIDED-BY-NETACEA",
    "cookieEncryptionKey": "ENCRYPTION-KEY-PROVIDED-BY-NETACEA",
    "secretKey": "SECRET-KEY-PROVIDED-BY-NETACEA",
    "mitigationServiceUrl": "PROVIDED-BY-NETACEA",
    "ingestType": "KINESIS",
    "kinesis": {
<strong>        "kinesisStreamName": "NAME-PROVIDED-BY-NETACEA",
</strong>        "kinesisAccessKey": "KEY-PROVIDED-BY-NETACEA",
        "kinesisSecretKey": "KEY-PROVIDED-BY-NETACEA",
        "logBatchSize": 20,
        "maxLogAgeSeconds": 5
    },
    "netaceaCookieName": "_cookieName",
    "netaceaCookieAttributes": "HttpOnly; Secure",
    "netaceaCaptchaCookieName": "_captchaCookieName",
    "netaceaCaptchaCookieAttributes": "HttpOnly; Secure"
} 
</code></pre>

{% hint style="info" %}
Attributet `mitigationType` används för att bestämma integrationens läge. Detta kan vara ett av tre värden:

* "**INGEST**" - Detta integrationsläge är endast för övervakning, vilket innebär att inga begränsningsåtgärder kommer att utföras. Detta rekommenderas under POC:er.
* "**MITIGATE**" - Detta är det "normala" integrationsläget, vilket innebär att Netacea-lösningen kommer att övervaka och aktivt begränsa förfrågningar.
* "**INJECT**" - Detta läge används i anpassade lösningar där begränsningsåtgärden från Netacea endast kommer att vara en rekommendation med hjälp av HTTP-headers som läggs till i förfrågan.
  {% endhint %}

{% hint style="danger" %}
De tre sista konfigurationsvariablerna används för att öka säkerheten genom att dölja Netaceas standardnamn och värden för cookies från offentlig insyn.
{% endhint %}

När `NetaceaConfig.json`-koden har uppdaterats, klicka på knappen **Deploy** för att spara dina ändringar.

#### Redigera körningsinställningar

Körningsinställningarna måste uppdateras.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-51845614bf736420753eb773c15e92f5fc7c7ccf%2Fimage%20(65).png?alt=media" alt=""><figcaption><p>Edit Runtime Settings</p></figcaption></figure>

Scrolla nedanför Code Source till avsnittet Runtime settings och klicka på knappen **Edit**.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-263680f56b0a813f2dea33f116341eba7d7fec2f%2Fimage%20(62).png?alt=media" alt=""><figcaption></figcaption></figure>

Här ändrar du standardhanteraren från `index.handler` till den relevanta funktionens namn som du skapar (t.ex. använd `OriginResponse.handler` för funktionen *netacea\_origin\_response*). Använd listan nedan för att korrelera funktionsnamnet med rätt hanterarfunktion:

* netacea\_origin\_response -> `OriginResponse.handler`
* netacea\_viewer\_request -> `ViewerRequest.handler`
* netacea\_viewer\_response -> `ViewerResponse.handler`

När rätt hanterare har angetts, klicka på **Save**.

#### Lägga till triggers

När ändringarna har sparats och distribuerats måste en CloudFront-trigger läggas till Lambda-funktionen. Detta gör det möjligt för CloudFront-distributionen att exekvera Lambda-funktionen.\
\
Längst ned till vänster i avsnittet **Function overview**, klicka på Add Trigger.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-098b656b17d674bacf00535c3cfabb102138afc1%2FFunction.png?alt=media" alt=""><figcaption></figcaption></figure>

En **Trigger configuration**-sida kommer att visas, där alternativet att välja en trigger från rullgardinsmenyn presenteras för användaren. Som källa, välj CloudFront.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-659e8b7f8a4cd463683e6b65af38d511ac817d70%2Fimage%20(61).png?alt=media" alt=""><figcaption></figcaption></figure>

Välj **Deploy to Lambda\@Edge** och välj rätt distribution samt CloudFront Event, som kommer att ha **samma namn som funktionen du just skapade** (t.ex. Viewer Request).

{% hint style="info" %}
För händelsen baserad på **Netacea\_Viewer\_Request** krävs det att du väljer alternativet **Include Body**.
{% endhint %}

Välj **Confirm deploy to Lambda\@Edge** och klicka sedan på **Deploy.**

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-143e709ab2c747740389d21d3d98917f8baf39fb%2Fimage%20(60).png?alt=media" alt=""><figcaption></figcaption></figure>

När distributionen är klar kommer detta att skapa en ny version av funktionen och associera CloudFront-triggern. Denna funktion kommer att replikeras över alla regioner och den associerade distributionen kommer också att uppdateras.

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-4286ca1cfbad7e8e0a2de50c91daeab940605133%2FFunctionOverview.png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Säkerställ att ovanstående steg för att skapa funktionen och lägga till en trigger har slutförts för varje Lambda\@Edge-funktion (**netacea\_viewer\_response**, **netacea\_viewer\_request** och **netacea\_origin\_response**)
{% endhint %}

### POST-metod

Netacea Lambda-funktionerna kräver också möjligheten att utföra POST-metoder som en del av vår Captcha-utmaning. För att aktivera detta, navigera till CloudFront i användargränssnittet. Detta kan göras genom att söka efter 'CloudFront' i användargränssnittet

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-a0a881d21ece8aabf7eda8df6e75a5840d6f3f2e%2Fimage%20(129).png?alt=media" alt=""><figcaption><p>Search for CloudFront</p></figcaption></figure>

Väl inne i CloudFront-applikationen, välj den distribution som Lambda-funktionerna ska användas med. Välj sedan 'Behaviors'

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-2c66be7feaad4b690dd54f3e6871b533f629695c%2Fimage%20(130).png?alt=media" alt=""><figcaption><p>Behaviors</p></figcaption></figure>

Välj sedan standardbeteendet och klicka på 'Edit'. På denna sida finns ett avsnitt med titeln 'Allowed HTTP methods'. Om det inte redan är valt, klicka på alternativknappen bredvid 'GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE'

<figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-47b0618974f18b45a1a42bdde0d16d06b429ad75%2Fimage%20(131).png?alt=media" alt=""><figcaption><p>HTTP Methods</p></figcaption></figure>

Du bör också kunna se **Function associations** längst ned på denna sida. Detta visar funktionstypen (Viewer request, Viewer response, Origin request) och deras associerade Lambda\@Edge-funktion. Säkerställ att 'Include body' är markerat för 'Viewer request'-funktionen.

Välj sedan 'Save changes'

### Testning

För att testa Lambda-funktionerna, välj fliken **Test** och skapa en ny händelse.

<div align="left"><figure><img src="https://1757243805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYGUMNWETAzwSHwJ2JpW3%2Fuploads%2Fgit-blob-e020cb855a03ec3d2430e537a3f9bc6d8e8b32ea%2FTesting.png?alt=media" alt=""><figcaption></figcaption></figure></div>

### Slutföra

När ovanstående steg har slutförts och funktionerna är distribuerade kommer Netacea-pluginet att vara aktivt.

Kontakta Netacea för att diskutera nästa steg och säkerställa att implementeringen av integrationen med Netacea har varit framgångsrik.
