เชื่อมต่อ
เชื่อมต่อ AWS จากเทอร์มินัล ส่ง --help เพื่อดูแฟล็กที่ AWS รับ รวมถึง --no-browser สำหรับสภาพแวดล้อมที่ไม่มีหน้าจอ
polylane cloud connect --provider awsสแต็ก CloudFormation ที่สร้าง IAM role แบบอ่านอย่างเดียว
การเชื่อมต่อ AWS เป็นขั้นตอนอัตโนมัติที่อิงกับเทมเพลต CloudFormation Polylane ไม่มีทางได้สิทธิ์เขียนโครงสร้างพื้นฐานของคุณ: สแต็กให้เพียง role แบบอ่านอย่างเดียวที่ Polylane assume ข้ามบัญชี
การตั้งค่า
- ป้อน AWS Account ID 12 หลักของคุณ
- เลือก AWS Region ที่จะเชื่อมต่อ
- คลิก Deploy stack on AWS คุณจะถูก redirect ไปยังคอนโซล CloudFormation พร้อมเทมเพลตที่โหลดไว้แล้ว
- ตรวจทานเทมเพลตแล้วคลิก Create stack
- สแต็กสร้าง IAM role ที่มีสิทธิ์อ่านอย่างเดียวซึ่ง Polylane จะ assume
- กลับมาที่ Polylane ภายในไม่กี่นาทีทรัพยากรของคุณจะเริ่มซิงก์
เทมเพลต CloudFormation เปิดเผย: คุณตรวจทานได้ว่าให้สิทธิ์อะไรบ้างอย่างแน่ชัดก่อนสร้างสแต็ก
สิทธิ์
IAM role เป็นแบบอ่านอย่างเดียวอย่างเข้มงวด:
- นโยบาย
ReadOnlyAccessที่ AWS จัดการ - ไม่มีสิทธิ์เขียน ลบ หรือแก้ไข
- assume ข้ามบัญชีเท่านั้น จากบัญชี AWS ของ Polylane
สืบสวน alarm
ขณะเชื่อมต่อคุณให้ Polylane สมัครรับ CloudWatch Alarms ในบัญชีได้ เมื่อ alarm ทำงาน Polylane จะรับมันไปและสืบสวนอัตโนมัติ ข้อนี้เป็นทางเลือกและเปลี่ยนภายหลังได้
การยกเลิกการเชื่อมต่อ
ลบสแต็ก CloudFormation ในบัญชี AWS ของคุณ นั่นจะลบ IAM role และทุกทรัพยากรอื่นที่สแต็กสร้าง คุณยังยกเลิกการเชื่อมต่อบัญชีจาก Polylane ได้ ซึ่งหยุดการซิงก์ทั้งหมด
เชื่อมต่อ AWS จากงาน CI หรือสภาพแวดล้อมอื่นใดที่ไม่มีเบราว์เซอร์
ขั้นตอนแบบมีคำแนะนำจบด้วยลิงก์ quick-create ของ CloudFormation ที่ใครสักคนเปิดในคอนโซล AWS หากบัญชี AWS ของคุณเปลี่ยนแปลงผ่านการตรวจทานโค้ดและ pipeline เท่านั้น ก็ไม่มีใครอยู่ตรงนั้นเพื่อคลิกมัน การเชื่อมต่อเดียวกันอยู่ในงาน CI ได้ทั้งหมด: การเรียก API หนึ่งครั้งสร้างการเชื่อมต่อและสร้างเทมเพลต CloudFormation เครื่องมือของคุณเอง deploy เทมเพลต และสแต็กลงทะเบียนบัญชีกับ Polylane ด้วยตัวเอง
หากคุณต้องการเพียง YAML ของเทมเพลต กล่องโต้ตอบเชื่อมต่อของคอนโซลก็แสดงมันแบบ inline ใต้ Advanced พร้อมปุ่ม Copy และ Download ขั้นตอนด้านล่างไม่ต้องใช้คอนโซลเลย
สิ่งที่ต้องมีก่อน
- คีย์ API ของ Polylane ที่มีสโคป
cloud_accounts:writeและcloud_accounts:readดูคีย์ API และ OAuth - ID ของ workspace ของคุณ ซึ่งเริ่มด้วย
ws_อ่านจากGET /v1/workspacesด้วยคีย์เดียวกัน - ข้อมูลรับรอง AWS ใน pipeline ที่ deploy สแต็ก CloudFormation และสร้าง IAM role ในบัญชีที่คุณกำลังเชื่อมต่อได้
สร้างการเชื่อมต่อ
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 คือ ID บัญชี AWS 12 หลัก regions แสดงรายการ region ที่ Polylane สแกนในแต่ละการซิงก์ ส่ง null เพื่อสแกนทุก region ที่เปิดใช้บนบัญชี โดย resolve ในแต่ละการซิงก์ boolean ที่ใส่หรือไม่ก็ได้สองตัว createMonitoringAlarms และ subscribeToAlarms ควบคุมพฤติกรรม alert ที่อธิบายในคลาวด์ และมีค่าเริ่มต้นเป็น 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 ที่สร้างสำหรับการเชื่อมต่อนี้ แบบ inline งานจึงเขียนมันลงไฟล์ได้ตรงๆresult.s3Urlคือลิงก์ presigned ไปยังเทมเพลตเดียวกัน หมดอายุหลังหนึ่งชั่วโมงresult.regionคือ region ที่จะ deploy สแต็ก เทมเพลตถูกสร้างสำหรับ region นี้พอดีresult.urlคือลิงก์ quick-create ของคอนโซลที่ขั้นตอนแบบมีคำแนะนำใช้ ละเว้นมันที่นี่
409 หมายถึงบัญชีเชื่อมต่ออยู่แล้ว เปลี่ยน region ของการเชื่อมต่อที่มีอยู่ด้วย PATCH /v1/cloud_accounts/{workspaceId}/{id} แทนการเชื่อมต่อใหม่
เขียนเทมเพลตลงไฟล์
เขียน result.templateBody ลงไฟล์ หรือดาวน์โหลดลิงก์ presigned:
curl -o polylane-connector.yaml "<result.s3Url>"
เทมเพลตมาถึงพร้อม deploy พารามิเตอร์ ExternalParameter ของมันมีค่าเริ่มต้นเป็น external ID ที่สร้างสำหรับการเชื่อมต่อนี้: มันกลายเป็นเงื่อนไข sts:ExternalId บน role ที่สแต็กสร้าง และ Polylane แสดง ID เดียวกันทุกครั้งที่ assume role นั้น deploy ไฟล์ตามที่สร้างมาทุกประการและอย่าแตะค่าเริ่มต้นของพารามิเตอร์ สแต็กที่แก้ external ID จะ deploy ได้ปกติแต่ไม่มีทางลงทะเบียนได้
external ID นั้นก็เป็นเหตุที่ไฟล์นี้สมควรได้รับการจัดการแบบข้อมูลรับรอง: เก็บมันไว้ภายในการรัน pipeline แทนการ commit หรือเผยแพร่เป็น build artifact
หากลิงก์ presigned หมดอายุก่อนที่คุณจะ deploy ให้เรียก endpoint เชื่อมต่ออีกครั้งเพื่อรับเทมเพลตใหม่ การเรียกซ้ำปลอดภัยจนกว่าบัญชีจะลงทะเบียน หลังจากนั้นมันคืน 409
Deploy สแต็ก
aws cloudformation deploy \
--stack-name PolylaneConnector \
--template-file polylane-connector.yaml \
--capabilities CAPABILITY_IAM \
--region us-east-1
ใช้ region จากขั้นตอนที่ 1 CAPABILITY_IAM รับรู้ IAM role ที่สแต็กสร้าง ตัว role ไม่มีชื่อ และ inline policy ที่มีชื่อไม่ต้องใช้ CAPABILITY_NAMED_IAM ดังนั้น CAPABILITY_IAM ก็เพียงพอ
สแต็กสร้าง role ที่ Polylane assume (สิทธิ์อ่านอย่างเดียวรวมถึงการดำเนินการบนทรัพยากรที่มีคำนำหน้า polylane) inline policy ของมัน CloudTrail trail ที่เขียนลง S3 bucket ใหม่ SNS topic สำหรับการแจ้งเตือนของ trail และ alarm และ reporter custom resource reporter คือสิ่งที่ลงทะเบียนการเชื่อมต่อ: มันส่ง ARN ของ role ให้ Polylane ขณะสแต็กกำลังถูกสร้าง จึงไม่มี callback ให้กำหนดค่าและไม่มีอะไรอื่นให้รัน
deploy เดียวกันจาก Terraform:
resource "aws_cloudformation_stack" "polylane_connector" {
name = "PolylaneConnector"
template_body = file("${path.module}/polylane-connector.yaml")
capabilities = ["CAPABILITY_IAM"]
}
ชี้ provider หรือ provider alias ไปยัง region จากขั้นตอนที่ 1 อ้างอิงไฟล์ที่บันทึกไว้ด้วย template_body แทนการส่ง s3Url ให้ template_url: ลิงก์ presigned อยู่ไม่ถึงหนึ่งชั่วโมงและไม่ถึง plan ครั้งถัดไปของคุณ ดังนั้นดึงเทมเพลตในการรันเดียวกับที่ apply มัน
ดูบัญชีออนไลน์
บัญชีปรากฏเมื่อ reporter ของสแต็กถึง Polylane โดยปกติไม่นานหลังสแต็กเสร็จ poll มันด้วย natural key ซึ่งคืน 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
ให้ loop มีเส้นตายเพื่อให้ deploy ที่ล้มเหลวทำให้งานล้มเหลวแทนที่จะค้าง เมื่อบัญชีมีอยู่แล้ว ฟิลด์ 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"
role, policy ของมัน และ S3 bucket ของ CloudTrail มี DeletionPolicy: Retain จึงอยู่รอดจากการลบสแต็ก ลบมันด้วยตัวเองหากคุณต้องการให้บัญชี AWS สะอาดทั้งหมด
ยกเลิกการเชื่อมต่อ
การยกเลิกการเชื่อมต่อหยุดทุกการซิงก์และการตรวจสอบ และลบข้อมูลรับรองที่ Polylane เก็บไว้ Polylane ลบสิ่งที่ API ของ AWS อนุญาตให้ลบ สิ่งต่อไปนี้ยังคงอยู่จนกว่าคุณจะลบด้วยตัวเอง:
- PolylaneEnvironmentRole (DeletionPolicy Retain)
- PolylaneEnvironmentPolicies (Retain)
- PolylaneS3Bucket (Retain)
- EKS access entries
polylane cloud disconnect <id>เครื่องมือ
11การดำเนินการที่เอเจนต์ทำได้ในเธรด
ทรัพยากรที่รองรับ
75ประเภททรัพยากรที่ปรากฏในกราฟโครงสร้างพื้นฐานของคุณ