AWS
연결
터미널에서 AWS을 연결하세요. AWS이 받는 플래그는 --help로 확인할 수 있고, 헤드리스 환경에서는 --no-browser를 함께 사용하세요.
polylane cloud connect --provider aws읽기 전용 IAM 역할을 만드는 CloudFormation 스택입니다.
AWS 연결은 CloudFormation 템플릿에 기반한 자동화된 흐름입니다. Polylane은 인프라에 대한 쓰기 권한을 절대 얻지 않습니다: 스택은 Polylane이 크로스 계정으로 맡는 읽기 전용 역할만 부여합니다.
설정
- 12자리 AWS Account ID를 입력합니다.
- 연결할 AWS Region을 선택합니다.
- Deploy stack on AWS를 클릭합니다. 템플릿이 미리 로드된 CloudFormation 콘솔로 리디렉션됩니다.
- 템플릿을 검토하고 Create stack을 클릭합니다.
- 스택이 Polylane이 맡는 읽기 전용 접근 권한의 IAM 역할을 만듭니다.
- Polylane으로 돌아옵니다. 몇 분 안에 리소스가 동기화되기 시작합니다.
CloudFormation 템플릿은 공개되어 있습니다: 스택을 만들기 전에 정확히 어떤 권한이 부여되는지 검토할 수 있습니다.
권한
IAM 역할은 엄격하게 읽기 전용입니다:
- AWS 관리형
ReadOnlyAccess정책 - 쓰기, 삭제, 수정 권한 없음
- Polylane의 AWS 계정에서만 크로스 계정으로 맡을 수 있음
알람 조사
연결할 때 Polylane이 계정의 CloudWatch Alarms를 구독하도록 허용할 수 있습니다. 알람이 발생하면 Polylane이 이를 받아 자동으로 조사합니다. 이 옵션은 선택 사항이며 나중에 바꿀 수 있습니다.
연결 해제
AWS 계정에서 CloudFormation 스택을 삭제하세요. 그러면 IAM 역할과 스택이 만든 다른 모든 리소스가 제거됩니다. Polylane에서 계정의 연결을 해제할 수도 있으며, 그러면 모든 동기화가 중단됩니다.
CI 작업이나 브라우저가 없는 다른 환경에서 AWS을 연결하세요.
안내형 흐름은 누군가 AWS 콘솔에서 여는 CloudFormation 빠른 생성 링크로 끝납니다. AWS 계정이 코드 검토와 파이프라인을 통해서만 바뀐다면, 그 링크를 클릭할 사람이 없습니다. 같은 연결을 CI 작업 안에 완전히 담을 수 있습니다: API 호출 하나가 연결을 만들고 CloudFormation 템플릿을 생성하고, 사용자의 도구가 템플릿을 배포하고, 스택이 스스로 계정을 Polylane에 등록합니다.
템플릿 YAML만 필요하다면, 콘솔의 연결 대화 상자에서도 Advanced 아래에 Copy와 Download 버튼과 함께 인라인으로 표시됩니다. 아래 흐름에는 콘솔이 전혀 필요하지 않습니다.
사전 요구 사항
cloud_accounts:write와cloud_accounts:read스코프를 가진 Polylane API 키. API 키와 OAuth를 참고하세요.ws_로 시작하는 워크스페이스 ID. 같은 키로GET /v1/workspaces에서 읽을 수 있습니다.- 연결하는 계정에서 CloudFormation 스택을 배포하고 IAM 역할을 만들 수 있는 파이프라인의 AWS 자격 증명.
연결 만들기
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는 12자리 AWS 계정 ID입니다. regions는 Polylane이 매 동기화마다 스캔하는 리전을 나열합니다. null을 전달하면 계정에서 활성화된 모든 리전을 매 동기화 시점에 해석하여 스캔합니다. 두 개의 선택적 불리언 createMonitoringAlarms와 subscribeToAlarms는 Clouds에 설명된 경보 동작을 제어하며 기본값은 true입니다.
응답에는 나머지 흐름에 필요한 모든 것이 담겨 있습니다:
{
"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.templateBody는 이 연결을 위해 생성된 CloudFormation 템플릿이며 인라인으로 제공되므로, 작업이 바로 파일로 쓸 수 있습니다.result.s3Url은 같은 템플릿에 대한 미리 서명된 링크입니다. 한 시간 후 만료됩니다.result.region은 스택을 배포할 리전입니다. 템플릿은 정확히 이 리전을 위해 생성됩니다.result.url은 안내형 흐름이 사용하는 콘솔 빠른 생성 링크입니다. 여기서는 무시하세요.
409는 계정이 이미 연결되어 있다는 뜻입니다. 기존 연결의 리전은 다시 연결하는 대신 PATCH /v1/cloud_accounts/{workspaceId}/{id}로 바꾸세요.
템플릿을 파일로 쓰기
result.templateBody를 파일로 쓰거나, 미리 서명된 링크를 내려받으세요:
curl -o polylane-connector.yaml "<result.s3Url>"
템플릿은 바로 배포할 수 있는 상태로 도착합니다. ExternalParameter 매개변수의 기본값은 이 연결을 위해 생성된 외부 ID입니다: 스택이 만드는 역할의 sts:ExternalId 조건이 되며, Polylane은 그 역할을 맡을 때마다 같은 ID를 제시합니다. 생성된 그대로 파일을 배포하고 매개변수 기본값은 그대로 두세요. 외부 ID가 편집된 스택은 배포는 되지만 절대 등록될 수 없습니다.
그 외부 ID 때문에 이 파일은 자격 증명처럼 다뤄야 합니다: 커밋하거나 빌드 아티팩트로 게시하지 말고 파이프라인 실행 안에만 두세요.
배포 전에 미리 서명된 링크가 만료되면 연결 엔드포인트를 다시 호출해 새 템플릿을 받으세요. 계정이 등록되기 전까지는 호출을 반복해도 안전합니다. 등록 후에는 409를 반환합니다.
스택 배포
aws cloudformation deploy \
--stack-name PolylaneConnector \
--template-file polylane-connector.yaml \
--capabilities CAPABILITY_IAM \
--region us-east-1
1단계의 region을 사용하세요. CAPABILITY_IAM은 스택이 만드는 IAM 역할을 승인합니다. 역할 자체는 이름이 없고, 이름이 있는 인라인 정책은 CAPABILITY_NAMED_IAM을 요구하지 않으므로 CAPABILITY_IAM으로 충분합니다.
스택은 Polylane이 맡는 역할(읽기 전용 접근과 polylane 접두사 리소스에 대한 작업), 그 인라인 정책, 새 S3 버킷에 기록하는 CloudTrail 트레일, 트레일과 알람 알림용 SNS 토픽, 그리고 리포터 사용자 정의 리소스를 만듭니다. 리포터가 연결을 등록하는 주체입니다: 스택이 생성되는 동안 Polylane에 역할 ARN을 전달하므로, 구성할 콜백도 실행할 다른 것도 없습니다.
Terraform에서 같은 배포:
resource "aws_cloudformation_stack" "polylane_connector" {
name = "PolylaneConnector"
template_body = file("${path.module}/polylane-connector.yaml")
capabilities = ["CAPABILITY_IAM"]
}
제공자 또는 제공자 별칭을 1단계의 region으로 향하게 하세요. s3Url을 template_url에 넘기는 대신 저장한 파일을 template_body로 참조하세요: 미리 서명된 링크는 한 시간도, 다음 plan도 넘기지 못하므로, 적용하는 같은 실행에서 템플릿을 가져오세요.
계정이 온라인이 되는 것 지켜보기
계정은 스택의 리포터가 Polylane에 도달하면 나타나며, 보통 스택이 완료된 직후입니다. 자연 키로 폴링하세요. 등록이 도착하기 전까지는 404, 그 후에는 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
실패한 배포가 작업을 멈추게 하는 대신 실패시키도록 루프에 기한을 두세요. 계정이 존재하면 status 필드가 첫 동기화를 추적합니다: 등록 시 new, 리소스가 들어오는 동안 syncing, 첫 동기화가 완료되면 ready입니다.
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'
여기서부터 계정은 콘솔에서 연결한 것과 정확히 같이 동작합니다: 리소스가 토폴로지로 동기화되고, Polylane이 스스로 첫 검사를 실행하고, 계정 페이지가 채워집니다.
API에서 연결 해제
연결을 삭제하면 계정의 CloudFormation 스택도 삭제됩니다. 호출에는 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"
역할, 그 정책, CloudTrail S3 버킷은 DeletionPolicy: Retain을 갖고 있어 스택 삭제 후에도 남습니다. AWS 계정을 완전히 깨끗하게 하려면 직접 제거하세요.
연결 해제
연결을 해제하면 모든 동기화와 검사가 중단되고 Polylane이 보관하던 자격 증명이 삭제됩니다. Polylane은 AWS의 API가 허용하는 범위에서 제거합니다. 다음은 직접 제거하기 전까지 남습니다:
- PolylaneEnvironmentRole (DeletionPolicy Retain)
- PolylaneEnvironmentPolicies (Retain)
- PolylaneS3Bucket (Retain)
- EKS access entries
polylane cloud disconnect <id>도구
11에이전트가 스레드에서 수행할 수 있는 작업입니다.
지원 리소스
75인프라 그래프에 표시되는 리소스 유형입니다.