Connecter
Connecte AWS depuis le terminal. Passe --help pour les options que AWS accepte, plus --no-browser pour les environnements sans interface graphique.
polylane cloud connect --provider awsStack CloudFormation qui crée un rôle IAM en lecture seule.
Connecter AWS est un flux automatisé basé sur un modèle CloudFormation. Polylane n'obtient jamais d'accès en écriture à ton infrastructure : la stack n'accorde qu'un rôle en lecture seule que Polylane endosse entre comptes.
Configuration
- Saisis ton AWS Account ID à 12 chiffres.
- Sélectionne la AWS Region à connecter.
- Clique sur Deploy stack on AWS. Tu es redirigé vers la console CloudFormation avec le modèle préchargé.
- Relis le modèle et clique sur Create stack.
- La stack crée un rôle IAM avec accès en lecture seule que Polylane endosse.
- Reviens dans Polylane. En quelques minutes, tes ressources commencent à se synchroniser.
Le modèle CloudFormation est ouvert : tu peux vérifier exactement quelles permissions sont accordées avant de créer la stack.
Permissions
Le rôle IAM est strictement en lecture seule :
- La politique
ReadOnlyAccessgérée par AWS - Aucune permission d'écriture, de suppression ou de modification
- Endossement entre comptes uniquement, depuis le compte AWS de Polylane
Investiguer les alarmes
Lors de la connexion, tu peux laisser Polylane s'abonner aux CloudWatch Alarms du compte. Quand une alarme se déclenche, Polylane la reprend et l'investigue automatiquement. C'est facultatif et modifiable plus tard.
Déconnexion
Supprime la stack CloudFormation dans ton compte AWS. Cela retire le rôle IAM et toute autre ressource que la stack a créée. Tu peux aussi déconnecter le compte depuis Polylane, ce qui arrête toute synchronisation.
Connecte AWS depuis un job de CI ou tout autre environnement sans navigateur.
Le flux guidé se termine par un lien de création rapide CloudFormation que quelqu'un ouvre dans la console AWS. Si tes comptes AWS ne changent que par revue de code et par un pipeline, personne n'est là pour cliquer dessus. La même connexion tient entièrement dans un job de CI : un appel API crée la connexion et génère un modèle CloudFormation, ton propre outillage déploie le modèle, et la stack enregistre le compte auprès de Polylane d'elle-même.
Si tu veux seulement le YAML du modèle, la boîte de dialogue de connexion de la console l'affiche aussi en ligne sous Advanced, avec des boutons Copy et Download. Le flux ci-dessous n'a besoin d'aucune console.
Prérequis
- Une clé API Polylane avec les scopes
cloud_accounts:writeetcloud_accounts:read. Voir Clés API et OAuth. - L'identifiant de ton espace de travail, qui commence par
ws_. Lis-le depuisGET /v1/workspacesavec la même clé. - Des identifiants AWS dans le pipeline capables de déployer des stacks CloudFormation et de créer des rôles IAM dans le compte que tu connectes.
Créer la connexion
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 est l'identifiant de compte AWS à 12 chiffres. regions liste les régions que Polylane balaie à chaque synchronisation ; passe null pour balayer chaque région activée sur le compte, résolue à chaque synchronisation. Deux booléens facultatifs, createMonitoringAlarms et subscribeToAlarms, contrôlent le comportement d'alerte décrit sur Clouds et valent true par défaut.
La réponse porte tout ce dont le reste du flux a besoin :
{
"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.templateBodyest le modèle CloudFormation généré pour cette connexion, en ligne, pour qu'un job puisse l'écrire directement dans un fichier.result.s3Urlest un lien présigné vers le même modèle. Il expire après une heure.result.regionest la région dans laquelle déployer la stack. Le modèle est généré pour exactement cette région.result.urlest le lien de création rapide de la console qu'utilise le flux guidé. Ignore-le ici.
Un 409 signifie que le compte est déjà connecté. Change les régions d'une connexion existante avec PATCH /v1/cloud_accounts/{workspaceId}/{id} au lieu de reconnecter.
Écrire le modèle dans un fichier
Écris result.templateBody dans un fichier, ou télécharge le lien présigné :
curl -o polylane-connector.yaml "<result.s3Url>"
Le modèle arrive prêt à déployer. Son paramètre ExternalParameter vaut par défaut un identifiant externe généré pour cette connexion : il devient la condition sts:ExternalId sur le rôle que la stack crée, et Polylane présente le même identifiant chaque fois qu'il endosse ce rôle. Déploie le fichier exactement tel qu'il a été généré et laisse les valeurs par défaut des paramètres tranquilles. Une stack avec un identifiant externe modifié se déploie très bien mais ne peut jamais s'enregistrer.
Cet identifiant externe est aussi la raison pour laquelle le fichier mérite d'être traité comme un identifiant de connexion : garde-le à l'intérieur de l'exécution du pipeline plutôt que de le committer ou de le publier comme artefact de build.
Si le lien présigné expire avant que tu déploies, rappelle le point d'accès de connexion pour obtenir un nouveau modèle. Répéter l'appel est sans risque jusqu'à ce que le compte s'enregistre ; ensuite il renvoie un 409.
Déployer la stack
aws cloudformation deploy \
--stack-name PolylaneConnector \
--template-file polylane-connector.yaml \
--capabilities CAPABILITY_IAM \
--region us-east-1
Utilise la region de l'étape 1. CAPABILITY_IAM reconnaît le rôle IAM que la stack crée ; le rôle lui-même n'a pas de nom, et une politique en ligne nommée ne nécessite pas CAPABILITY_NAMED_IAM, donc CAPABILITY_IAM suffit.
La stack crée le rôle que Polylane endosse (accès en lecture seule plus les opérations sur les ressources préfixées polylane), sa politique en ligne, un trail CloudTrail qui écrit dans un nouveau bucket S3, un sujet SNS pour les notifications de trail et d'alarme, et une ressource personnalisée de rapport. Le rapporteur est ce qui enregistre la connexion : il transmet à Polylane l'ARN du rôle pendant la création de la stack, donc il n'y a aucun callback à configurer et rien d'autre à exécuter.
Le même déploiement depuis Terraform :
resource "aws_cloudformation_stack" "polylane_connector" {
name = "PolylaneConnector"
template_body = file("${path.module}/polylane-connector.yaml")
capabilities = ["CAPABILITY_IAM"]
}
Pointe le provider, ou un alias de provider, vers la region de l'étape 1. Référence le fichier enregistré avec template_body plutôt que de donner s3Url à template_url : le lien présigné ne survit ni à l'heure ni à ton prochain plan, donc récupère le modèle dans la même exécution que celle qui l'applique.
Regarder le compte se connecter
Le compte apparaît une fois que le rapporteur de la stack atteint Polylane, normalement quelques instants après la fin de la stack. Interroge-le par sa clé naturelle, qui renvoie 404 jusqu'à ce que l'enregistrement arrive et 200 ensuite :
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
Donne une échéance à la boucle pour qu'un déploiement échoué fasse échouer le job au lieu de le bloquer. Une fois que le compte existe, son champ status suit la première synchronisation : new à l'enregistrement, syncing pendant que les ressources arrivent, ready quand la première synchronisation se termine.
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'
À partir de là, le compte se comporte exactement comme un compte connecté depuis la console : les ressources se synchronisent dans la topologie, Polylane exécute sa première vérification de lui-même, et la page du compte se remplit.
Déconnecter depuis l'API
Supprimer la connexion supprime aussi la stack CloudFormation dans ton compte. L'appel nécessite le scope 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"
Le rôle, sa politique et le bucket S3 CloudTrail portent DeletionPolicy: Retain, donc ils survivent à la suppression de la stack. Retire-les toi-même si tu veux un compte AWS entièrement propre.
Déconnecter
La déconnexion arrête chaque synchronisation et chaque vérification et supprime les identifiants que Polylane détenait. Polylane retire ce que l'API de AWS lui permet de retirer. Ce qui suit reste jusqu'à ce que tu le retires toi-même :
- PolylaneEnvironmentRole (DeletionPolicy Retain)
- PolylaneEnvironmentPolicies (Retain)
- PolylaneS3Bucket (Retain)
- EKS access entries
polylane cloud disconnect <id>Outils
11Les opérations que les agents peuvent effectuer dans les threads.
Ressources prises en charge
75Les types de ressources qui apparaissent dans ton graphe d'infrastructure.