Přejít k navigační liště

Zdroják » Různé » Moje garáž, můj hrad – posíláme dotaz do garáže

Moje garáž, můj hrad – posíláme dotaz do garáže

Články Různé

V tomto díle vytvoříme webovou stránku hostovanou na službě S3, která nám umožní poslat dotaz do garáže, zda je volná nebo ne. Použijeme k tomu knihovnu AWS SDK for JavaScript in the Browser, která umožňuje přímý přístup k AWS API z webového prohlížeče. Přístup zabezpečíme pomocí externího poskytovatele identity. V tomto příkladu použijeme Google+, ale můžete použít něco jiného.

Nálepky:

S3 pro statické weby

Než začneme vytvářet vlastní webovou stránku, tak si nejdříve vytvoříme prostor pro její hostování na službě Amazon Simple Storage Service (S3). Tato služba je primárně určena pro ukládání a distribuci velkých objemů dat, ale funguje i pro hostování statických webových stránek. Mohli bychom samozřejmě na straně serveru spustit EC2 instanci a hostovat dynamické webové stránky tam, ale přijde mi to naprosto zbytečné, když může být celá logika na straně klienta. Navíc je cena za S3 v porovnání s EC2 naprosto zanedbatelná.

Nejdříve je potřeba vytvořit tzv. Bucket. Název pro Bucket musí být unikátní v rámci služby S3, i když při vytvoření specifikujete region.

image1

Po vytvoření Bucket je třeba nastavit konfiguraci pro statické hostování webových stránek.

image2

V tuto chvíli je prostor pro statické webové stránky připravený, ale není nastaven pro veřejný přístup. Pokud nyní nahrajete webovou stránku a pokusíte se na ni přistoupit, tak server vrátí chybu. V Properties otevřete sekci Permissions a vyberte Edit bucket policy.

image3

Povolte anonymní přístup.

{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "PublicReadGetObject",
   "Effect": "Allow",
   "Principal": "*",
   "Action": "s3:GetObject",
   "Resource": "arn:aws:s3:::stepanb-garage/*"
  }
 ]
}

V rámci jednoho Bucket můžete vytvářet adresářovou strukturu a povolit přístup jen k některému adresáři, viz vlastnost Resource.

Přihlašování pomocí Google+

Přihlašování přes Google+ jsem si vybral kvůli snadné konfiguraci a kvůli akci DevFest pořádané GUG, kde jsem o tomto projektu přednášel. Pro jednoduchost jsem zvolil vložení HTML tlačítka pro přihlášení do webové stránky. Při registraci vaší aplikace (Project) je třeba v sekci APIs & auth povolit API pro Google+.

image4

V sekci Credentials přidejte Client ID a nastavte JAVASCRIPT ORIGINS na URLK vašeho Bucket.

image5

Client ID budeme potřebovat pro v nastavení AWS IAM. Pro vlastní vložení tlačítka do stránky a zpracování odpovědi postupujete podle návodu.

Propojení AWS s účtem Google

Pokud potřebujete pro práci s AWS použít externího poskytovatele identity (federace přihlášení), tak musíte v IAM vytvořit roli, která bude tohoto uživatele „zastupovat“ v rámci AWS.

image6

V prvním kroku roli pojmenujete a pak je třeba nastavit, že se má propojit s externím poskytovatelem identity.

image7

V dalším kroku nastavíme propojení s Google. Budete potřebovat Client ID (hodnota Audience) a unikátní Google Id (accounts.google.com:sub) uživatelů, kteří mají mít práva k této roli. Pokud nebudete specifikovat uživatele Google, tak bude stav garáže schopný zjistit kdokoliv, pokud nepoužijete jiný způsob ověření.

image8

Nastavení práv role je stejné jako u vytvoření skupiny. Bohužel roli nejde do skupiny přiřadit. Práva pro roli mohou být dokonce více omezená. Role nepotřebuje práva na zjištění URL SQS. URL SQS budeme do kódu zadávat natvrdo. Nezapomínejte přiřazovat rolím nebo skupinám jen naprosto nezbytně nutná práva.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1414573330000",
      "Effect": "Allow",
      "Action": [
        "sqs:DeleteMessage",
        "sqs:SendMessage",
        "sqs:ReceiveMessage"
      ],
      "Resource": [
        "arn:aws:sqs:eu-central-1:350128058472:garage"
      ]
    }
  ]
}

U nově vytvořené role nás bude opět potřebovat ARN.

image9

Nyní máme propojeného uživatele Google s rolí AWS.

AWS SDK for JavaScript in the Browser

AWS SDK for JavaScript in the Browser je knihovna určení pro běh ve webovém prohlížeči a přímý přístup k AWS API.

Po přihlášení pomocí účtu Google získáte autorizační informace, které předáte AWS SDK. Pak už můžete volat jednotlivá API. Funkce signinCallback je vyvolána přihlašovacím tlačítkem. Pokud je uživatel v pořádku přihlášen, tak je jeho autorizační klíč předán AWS SDK a proběhne další ověření na straně AWS. Objekt gapi je globální objekt knihovny Google.

function signinCallback(authResult) {
   if (authResult['status']['signed_in']) {
     logedin();
   } else {
     error();
   }
  }
function logedin() {
   AWS.config.credentials = new AWS.WebIdentityCredentials({
     RoleArn: 'arn:aws:iam::350128058472:role/stepanb-google',
     ProviderId: null, // this is null for Google
     WebIdentityToken: gapi.auth.getToken().id_token
    });
   AWS.config.region = 'eu-central-1';    
   AWS.config.credentials.refresh(function (err) {
     if (err) {
         console.log("Error logging into application", JSON.stringify(err));
     } else {
         console.log("Logged");
     }
    });
  }

Po úspěšném ověření na straně AWS můžete začít používat API jednotlivých služeb AWS.

  function askGarage() {
   var sqs = new AWS.SQS();
   msg = {MessageBody: "Chaloupko, chaloupko, kdo v tobě přebývá?", QueueUrl: "https://sqs.eu-central-1.amazonaws.com/350128058472/garage" };
   sqs.sendMessage(msg, function(err, data) {
     if (err) {
      console.log(err, err.stack); // an error occurred
     } else {
      console.log(data);
     }
    });
  }

Závěr

I když je propojení AWS s jinými identitami trochu složitější na nastavení, tak dostáváte možnost vytvářet aplikace propojené s AWS bez nutnosti je hostovat jako dynamický web. V dalším díle sestavíme hardware pro detekování přítomnosti auta v garáži.

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Nejvíce hlasů

WP2Shell: Kritická hrozba pro samotné jádro WordPressu. Útočníci mohou získat kontrolu nad webem

Zranitelnost ve WordPressu není žádná novinka. Kdo provozuje weby postavené na této platformě, ví, že bezpečnostní záplaty chodí prakticky pořád. O to větší pozornost by měla vzbudit chyba, u které nic z toho neplatí. A přesně takový je případ zranitelnosti, která dostala přezdívku wp2shell. potřeb. Zranitelný kontaktní formulář, děravý e-shopový plugin, opomenutá kontrola oprávnění v nějaké obskurní rozšiřující knihovně – to je denní chleba každého, kdo sleduje bezpečnostní feedy. Zpráva „nová chyba ve WordPress pluginu“ má tak nízkou informační hodnotu, že ji většina lidí přejde bez mrknutí oka.

Mýtus jedné aplikace: proč PWA nenahradí vývoj pro každou platformu

PWA mohou webu přidat ikonu na ploše, fungování bez připojení, notifikace a některé systémové funkce. Nejsou ale cestou k jednomu klientu pro všechny platformy. Vyplatí se tam, kde se lidé k webu vracejí a ocení okamžitý vstup z odkazu. Jakmile aplikace musí spolehlivě běžet na pozadí nebo fungovat stejně na každém zařízení, bývá vhodnější nativní řešení.

Anthropic vydává Claude Opus 5

AI
Komentáře: 0
Anthropic vydal Claude Opus 5 — model, který se má výkonem blížit špičkovému Fable 5 za poloviční cenu a míří hlavně na agentické kódování. Cena zůstává na 5/25 USD za milion tokenů, přibývají API novinky jako mid-conversation tool changes a automatické fallbacky.