Połącz
Połącz AWS z terminala. Podaj --help, aby zobaczyć flagi, które AWS przyjmuje, plus --no-browser dla środowisk headless.
polylane cloud connect --provider awsStack CloudFormation, który tworzy rolę IAM tylko do odczytu.
Łączenie AWS to zautomatyzowany przepływ oparty na szablonie CloudFormation. Polylane nigdy nie dostaje dostępu do zapisu w twojej infrastrukturze: stack nadaje tylko rolę tylko do odczytu, którą Polylane przyjmuje między kontami.
Konfiguracja
- Wpisz swój 12-cyfrowy AWS Account ID.
- Wybierz AWS Region do połączenia.
- Kliknij Deploy stack on AWS. Zostaniesz przekierowany do konsoli CloudFormation z wstępnie załadowanym szablonem.
- Przejrzyj szablon i kliknij Create stack.
- Stack tworzy rolę IAM z dostępem tylko do odczytu, którą Polylane przyjmuje.
- Wróć do Polylane. W ciągu kilku minut twoje zasoby zaczną się synchronizować.
Szablon CloudFormation jest otwarty: możesz sprawdzić dokładnie, jakie uprawnienia są nadawane, zanim utworzysz stack.
Uprawnienia
Rola IAM jest ściśle tylko do odczytu:
- Zarządzana przez AWS polityka
ReadOnlyAccess - Brak uprawnień do zapisu, usuwania lub modyfikacji
- Wyłącznie przyjmowanie między kontami, z konta AWS Polylane
Badanie alarmów
Podczas łączenia możesz pozwolić Polylane subskrybować alarmy CloudWatch na koncie. Gdy alarm się uruchomi, Polylane go podchwytuje i bada automatycznie. To jest opcjonalne i można to później zmienić.
Odłączanie
Usuń stack CloudFormation na swoim koncie AWS. To usuwa rolę IAM i każdy inny zasób utworzony przez stack. Możesz też odłączyć konto od Polylane, co zatrzymuje całą synchronizację.
Połącz AWS z zadania CI lub dowolnego innego środowiska bez przeglądarki.
Prowadzony przepływ kończy się linkiem szybkiego tworzenia CloudFormation, który ktoś otwiera w konsoli AWS. Jeśli twoje konta AWS zmieniają się wyłącznie przez przegląd kodu i pipeline, nie ma kto go kliknąć. To samo połączenie mieści się w całości w zadaniu CI: jedno wywołanie API tworzy połączenie i generuje szablon CloudFormation, twoje własne narzędzia wdrażają szablon, a stack sam rejestruje konto w Polylane.
Jeśli chcesz tylko YAML szablonu, okno łączenia w konsoli pokazuje go też w treści w Advanced, z przyciskami Copy i Download. Poniższy przepływ w ogóle nie potrzebuje konsoli.
Wymagania wstępne
- Klucz API Polylane z zakresami
cloud_accounts:writeicloud_accounts:read. Zobacz Klucze API i OAuth. - Identyfikator twojego obszaru roboczego, zaczynający się od
ws_. Odczytaj go zGET /v1/workspacestym samym kluczem. - Poświadczenia AWS w pipeline, które mogą wdrażać stacki CloudFormation i tworzyć role IAM na łączonym koncie.
Utwórz połączenie
curl -X POST https://api.polylane.com/v1/cloud_accounts \
-H "x-api-key: $POLYLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "aws",
"workspaceId": "ws_0abc123",
"account": "123456789012",
"regions": ["us-east-1", "eu-west-1"]
}'
account to 12-cyfrowy identyfikator konta AWS. regions wymienia regiony, które Polylane skanuje przy każdej synchronizacji; przekaż null, aby skanować każdy region włączony na koncie, rozwiązywany przy każdej synchronizacji. Dwie opcjonalne wartości logiczne, createMonitoringAlarms i subscribeToAlarms, sterują zachowaniem alertów opisanym w Chmurach i domyślnie mają wartość true.
Odpowiedź niesie wszystko, czego potrzebuje reszta przepływu:
{
"success": true,
"result": {
"provider": "aws",
"url": "https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create/review?...",
"s3Url": "https://....s3.amazonaws.com/...?X-Amz-Expires=3600&...",
"region": "us-east-1",
"templateBody": "Description: This template creates the resources necessary for Polylane to observe your AWS Account\n..."
}
}
result.templateBodyto szablon CloudFormation wygenerowany dla tego połączenia, w treści, więc zadanie może zapisać go prosto do pliku.result.s3Urlto podpisany link do tego samego szablonu. Wygasa po godzinie.result.regionto region, w którym należy wdrożyć stack. Szablon jest generowany dokładnie dla tego regionu.result.urlto link szybkiego tworzenia w konsoli, którego używa prowadzony przepływ. Tutaj go zignoruj.
409 oznacza, że konto jest już połączone. Regiony istniejącego połączenia zmieniaj przez PATCH /v1/cloud_accounts/{workspaceId}/{id} zamiast łączyć ponownie.
Zapisz szablon do pliku
Zapisz result.templateBody do pliku albo pobierz podpisany link:
curl -o polylane-connector.yaml "<result.s3Url>"
Szablon przychodzi gotowy do wdrożenia. Jego parametr ExternalParameter domyślnie ma zewnętrzny identyfikator wygenerowany dla tego połączenia: staje się on warunkiem sts:ExternalId na roli tworzonej przez stack, a Polylane przedstawia ten sam identyfikator za każdym razem, gdy przyjmuje tę rolę. Wdróż plik dokładnie tak, jak został wygenerowany, i zostaw domyślne wartości parametrów w spokoju. Stack ze zmienionym zewnętrznym identyfikatorem wdraża się bez problemu, ale nigdy nie może się zarejestrować.
Ten zewnętrzny identyfikator jest też powodem, dla którego plik zasługuje na traktowanie jak poświadczenie: trzymaj go wewnątrz przebiegu pipeline, zamiast go commitować albo publikować jako artefakt buildu.
Jeśli podpisany link wygaśnie przed wdrożeniem, wywołaj ponownie punkt końcowy łączenia po świeży szablon. Powtarzanie wywołania jest bezpieczne, dopóki konto się nie zarejestruje; potem zwraca 409.
Wdróż stack
aws cloudformation deploy \
--stack-name PolylaneConnector \
--template-file polylane-connector.yaml \
--capabilities CAPABILITY_IAM \
--region us-east-1
Użyj region z kroku 1. CAPABILITY_IAM potwierdza rolę IAM tworzoną przez stack; sama rola jest nienazwana, a nazwana polityka inline nie wymaga CAPABILITY_NAMED_IAM, więc CAPABILITY_IAM wystarcza.
Stack tworzy rolę, którą przyjmuje Polylane (dostęp tylko do odczytu plus operacje na zasobach z prefiksem polylane), jej politykę inline, trail CloudTrail piszący do nowego bucketu S3, temat SNS dla powiadomień trailu i alarmów oraz własny zasób reportera. Reporter jest tym, co rejestruje połączenie: przekazuje Polylane ARN roli w trakcie tworzenia stacku, więc nie ma callbacku do konfigurowania ani nic innego do uruchamiania.
To samo wdrożenie z Terraform:
resource "aws_cloudformation_stack" "polylane_connector" {
name = "PolylaneConnector"
template_body = file("${path.module}/polylane-connector.yaml")
capabilities = ["CAPABILITY_IAM"]
}
Skieruj providera, albo jego alias, na region z kroku 1. Odwołaj się do zapisanego pliku przez template_body zamiast przekazywać s3Url do template_url: podpisany link nie przeżyje ani godziny, ani twojego następnego planu, więc pobierz szablon w tym samym przebiegu, który go stosuje.
Obserwuj, jak konto pojawia się online
Konto pojawia się, gdy reporter stacku dotrze do Polylane, zwykle chwilę po zakończeniu stacku. Odpytuj je po kluczu naturalnym, który zwraca 404, dopóki rejestracja nie dotrze, a potem 200:
until curl -sf "https://api.polylane.com/v1/cloud_accounts/ws_0abc123/aws/123456789012/us-east-1" \
-H "x-api-key: $POLYLANE_API_KEY" > /dev/null; do
sleep 15
done
Daj pętli termin, aby nieudane wdrożenie kończyło zadanie błędem zamiast je zawieszać. Gdy konto istnieje, jego pole status śledzi pierwszą synchronizację: new po rejestracji, syncing w trakcie napływu zasobów, ready po zakończeniu pierwszej synchronizacji.
curl -s "https://api.polylane.com/v1/cloud_accounts/ws_0abc123/aws/123456789012/us-east-1" \
-H "x-api-key: $POLYLANE_API_KEY" | jq -r '.result.status'
Od tego miejsca konto zachowuje się dokładnie jak połączone z konsoli: zasoby synchronizują się do topologii, Polylane samo uruchamia pierwszą kontrolę, a strona konta się wypełnia.
Odłącz przez API
Usunięcie połączenia usuwa też stack CloudFormation na twoim koncie. Wywołanie wymaga zakresu cloud_accounts:delete:
curl -X DELETE https://api.polylane.com/v1/cloud_accounts/ws_0abc123/<cloud-account-id> \
-H "x-api-key: $POLYLANE_API_KEY"
Rola, jej polityka i bucket S3 CloudTrail mają DeletionPolicy: Retain, więc przeżywają usunięcie stacku. Usuń je samodzielnie, jeśli chcesz, aby konto AWS było całkowicie czyste.
Odłącz
Odłączenie zatrzymuje każdą synchronizację i kontrolę oraz usuwa poświadczenia, które Polylane przechowywało. Polylane usuwa to, na co pozwala API AWS. Poniższe elementy zostają, dopóki sam ich nie usuniesz:
- PolylaneEnvironmentRole (DeletionPolicy Retain)
- PolylaneEnvironmentPolicies (Retain)
- PolylaneS3Bucket (Retain)
- EKS access entries
polylane cloud disconnect <id>Narzędzia
11Operacje, które agenci mogą wykonywać w wątkach.
Obsługiwane zasoby
75Typy zasobów, które pojawiają się w grafie twojej infrastruktury.