ปรับใช้คอนเทนเนอร์แบบไร้เซิร์ฟเวอร์บนคลาวด์จากบรรทัดคำสั่งของคุณ
fargate เป็นอินเทอร์เฟซบรรทัดคำสั่งเพื่อปรับใช้คอนเทนเนอร์กับ AWS Fargate การใช้ Fargate ช่วยให้นักพัฒนาสามารถใช้บริการ Fargate ได้อย่างง่ายดาย รวมถึงสิ่งต่างๆ เช่น การปรับใช้แอปพลิเคชัน (อิมเมจและตัวแปรสภาพแวดล้อม) การตรวจสอบการปรับใช้งาน การดูบันทึกคอนเทนเนอร์ การรีสตาร์ท และการปรับขนาด
คุณสามารถติดตั้ง CLI ที่เสถียรล่าสุดด้วยสคริปต์ยูทิลิตี้ curl หรือโดยการดาวน์โหลดไบนารี่จากหน้าเผยแพร่ เมื่อติดตั้งแล้วจะได้คำสั่ง fargate
curl -s get-fargate.turnerlabs.io | sh
หากคุณต้องการติดตั้งเวอร์ชันก่อนเผยแพร่ล่าสุด ให้ใช้คำสั่งนี้:
curl -s get-fargate.turnerlabs.io | RELEASE=develop sh
ตามค่าเริ่มต้น Fargate จะใช้ us-east-1 เนื่องจากเป็นภูมิภาคเดียวที่ AWS Fargate พร้อมใช้งาน CLI ยอมรับพารามิเตอร์ --region สำหรับการใช้งานในอนาคต และจะยอมรับการตั้งค่าสภาพแวดล้อม AWS_REGION และ AWS_DEFAULT_REGION โปรดทราบว่าการระบุภูมิภาคที่ไม่มีบริการที่จำเป็นทั้งหมดจะส่งคืนข้อผิดพลาด
ดูตารางภูมิภาคเพื่อดูรายละเอียดบริการต่างๆ ที่มีให้บริการในภูมิภาคต่างๆ
Fargate สร้างขึ้นโดยใช้ AWS SDK for Go ซึ่งจะค้นหาข้อมูลประจำตัวในตำแหน่งต่อไปนี้:
ตัวแปรสภาพแวดล้อม
ไฟล์ข้อมูลรับรองที่ใช้ร่วมกัน
โปรไฟล์อินสแตนซ์ EC2
สำหรับข้อมูลเพิ่มเติม โปรดดูการระบุข้อมูลรับรองในเอกสารประกอบ AWS SDK for Go
มีหลายวิธีในการระบุพารามิเตอร์ แต่ละรายการจะมีความสำคัญเหนือรายการด้านล่าง:
อาร์กิวเมนต์ CLI (เช่น --cluster my-cluster
)
ตัวแปรสภาพแวดล้อม (เช่น FARGATE_CLUSTER=my-cluster
)
fargate.yml
(เช่นด้านล่าง)
cluster : my-cluster
service : my-service
task : my-task
rule : my-event-rule
verbose : false
nocolor : true
ธง | สั้น | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
--กลุ่ม | -ค | ชื่อคลัสเตอร์ ECS | |
--ภูมิภาค | เรา-ตะวันออก-1 | ภูมิภาค AWS | |
--ไม่มีสี | เท็จ | ปิดใช้งานเอาต์พุตสี | |
--รายละเอียด | -v | เท็จ | เอาต์พุตแบบละเอียด |
บริการจัดการอินสแตนซ์ที่มีอายุการใช้งานยาวนานของคอนเทนเนอร์ของคุณที่ทำงานบน AWS Fargate หากคอนเทนเนอร์ของคุณออกด้วยเหตุผลใดก็ตาม ตัวกำหนดตารางเวลาบริการจะรีสตาร์ทคอนเทนเนอร์ของคุณ และให้แน่ใจว่าบริการของคุณมีงานที่ทำงานอยู่ตามจำนวนที่ต้องการ สามารถใช้บริการร่วมกับโหลดบาลานเซอร์เพื่อกระจายการรับส่งข้อมูลระหว่างงานในบริการของคุณได้
ธง | สั้น | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
--บริการ | -ส | ชื่อบริการ ECS |
fargate service list
รายการบริการ
fargate service deploy [--image <docker-image>]
ปรับใช้อิมเมจใหม่เพื่อให้บริการ
อิมเมจคอนเทนเนอร์ Docker ที่จะใช้ในบริการสามารถระบุได้ผ่านแฟล็ก --image
fargate service deploy [--file docker-compose.yml]
ปรับใช้อิมเมจ ตัวแปรสภาพแวดล้อม และความลับที่กำหนดไว้ในไฟล์เขียนนักเทียบท่าเพื่อให้บริการ
ปรับใช้อิมเมจนักเทียบท่าและตัวแปรสภาพแวดล้อมที่กำหนดไว้ในไฟล์เขียนนักเทียบท่าร่วมกันเป็นหน่วยเดียว โปรดทราบว่าตัวแปรสภาพแวดล้อมและข้อมูลลับจะถูกแทนที่ด้วยสิ่งที่อยู่ในไฟล์เขียน
ข้อมูลลับสามารถกำหนดเป็นคู่คีย์-ค่าภายใต้ช่องนามสกุลไฟล์นักเทียบท่าเขียน x-fargate-secrets
หากต้องการใช้ช่องส่วนขยาย เวอร์ชันไฟล์เขียนต้องมีอย่างน้อย 2.4
สำหรับซีรีส์ 2.x หรืออย่างน้อย 3.7
สำหรับซีรีส์ 3.x
สิ่งนี้ทำให้คุณสามารถเรียกใช้ docker-compose up
ภายในเครื่องเพื่อเรียกใช้แอปของคุณในลักษณะเดียวกับที่จะทำงานใน AWS โปรดทราบว่าแม้ว่าการกำหนดค่า yaml ที่เขียนโดยนักเทียบท่าจะรองรับตัวเลือกมากมาย แต่มีเพียงตัวแปรรูปภาพและสภาพแวดล้อมเท่านั้นที่จะปรับใช้เพื่อฟาร์เกต หากไฟล์เขียนนักเทียบท่ากำหนดคอนเทนเนอร์มากกว่าหนึ่งรายการ คุณสามารถใช้ป้ายกำกับ aws.ecs.fargate.deploy: 1
เพื่อระบุว่าคุณต้องการปรับใช้คอนเทนเนอร์ใด ตัวอย่างเช่น:
version : " 3.7 "
services :
web :
build : .
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-service:0.1.0
ports :
- 80:5000
environment :
FOO : bar
BAZ : bam
env_file :
- hidden.env
x-fargate-secrets :
QUX : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : 1
redis :
image : redis
fargate service info
ตรวจสอบการบริการ
แสดงข้อมูลเพิ่มเติมสำหรับบริการ รวมถึงการกำหนดค่าตัวจัดสรรภาระงาน การปรับใช้ที่ใช้งานอยู่ ตัวแปรสภาพแวดล้อม และความลับ
การปรับใช้จะแสดงบริการเวอร์ชันที่ใช้งานอยู่ซึ่งกำลังทำงานอยู่ การปรับใช้หลายครั้งจะแสดงขึ้นหากบริการกำลังเปลี่ยนเนื่องจากการปรับใช้หรือการอัปเดตการกำหนดค่า เช่น CPU, หน่วยความจำ หรือตัวแปรสภาพแวดล้อม
fargate service logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--time] [--no-prefix]
แสดงบันทึกจากงานในบริการ
ส่งคืนส่วนเฉพาะของบันทึกบริการหรือบันทึกส่วนท้ายแบบเรียลไทม์โดยใช้ตัวเลือก --follow บันทึกจะมีคำนำหน้าด้วยชื่อสตรีมบันทึกซึ่งอยู่ในรูปแบบ "fargate/<service-name>/<task-id>"
ติดตามจะทำงานต่อไปและส่งคืนบันทึกจนกว่า Control-C จะขัดจังหวะ หากผ่าน --follow --end ไม่สามารถระบุได้
บันทึกสามารถส่งคืนสำหรับงานเฉพาะภายในบริการได้โดยส่ง ID งานผ่านแฟล็ก --task ส่งผ่าน --task ด้วยรหัสงานหลายครั้งเพื่อดึงบันทึกจากงานเฉพาะหลายงาน
สามารถขอหน้าต่างบันทึกเฉพาะได้โดยส่งตัวเลือก --start และ --end พร้อมนิพจน์เวลา นิพจน์เวลาอาจเป็นได้ทั้งระยะเวลาหรือการประทับเวลา:
คุณสามารถกรองบันทึกสำหรับคำเฉพาะได้โดยส่งนิพจน์ตัวกรองผ่านแฟล็ก --filter ส่งคำเดียวเพื่อค้นหาคำนั้น ส่งหลายคำเพื่อค้นหาข้อความบันทึกที่รวมคำทั้งหมด ดูเอกสาร CloudWatch Logs สำหรับรายละเอียดเพิ่มเติม
--time รวมถึงการประทับเวลาบันทึกในเอาต์พุต
--no-prefix แยกคำนำหน้าสตรีมบันทึกออกจากเอาต์พุต
fargate service ps
แสดงรายการงานที่รันอยู่สำหรับบริการ
fargate service scale <scale-expression>
ปรับขนาดจำนวนงานในบริการ
เปลี่ยนจำนวนงานที่ต้องการให้รันในบริการตามนิพจน์มาตราส่วนที่กำหนด นิพจน์มาตราส่วนอาจเป็นตัวเลขสัมบูรณ์หรือเดลต้าที่ระบุด้วยเครื่องหมาย เช่น +5 หรือ -2
fargate service env set [--env <key=value>] [--file <pathname>]
[--secret <key=valueFrom>] [--secret-file <pathname>]
ตั้งค่าตัวแปรสภาพแวดล้อมและความลับ
ต้องระบุตัวแปรสภาพแวดล้อมหรือข้อมูลลับอย่างน้อยหนึ่งรายการผ่านแฟล็ก --env, --file, --secret หรือ --secret-file คุณสามารถระบุตัวแปรจำนวนเท่าใดก็ได้บนบรรทัดคำสั่งโดยการทำซ้ำ --env ก่อนแต่ละตัว หรือมิฉะนั้น วางตัวแปรหลายตัวในไฟล์ข้อความ หนึ่งตัวต่อบรรทัด และระบุชื่อไฟล์ด้วย --file และ/หรือ --secret-file .
สตริงหรือบรรทัดพารามิเตอร์ --env และ --secret แต่ละบรรทัดในไฟล์ต้องอยู่ในรูปแบบ "key=value" โดยไม่มีเครื่องหมายคำพูดและไม่มีช่องว่างรอบๆ "=" เว้นแต่คุณต้องการให้ช่องว่างนำหน้าตามตัวอักษรในค่า นอกจากนี้ ด้าน "คีย์" จะต้องเป็นตัวระบุเชลล์ทางกฎหมาย ซึ่งหมายความว่าจะต้องขึ้นต้นด้วยตัวอักษร ASCII AZ หรือขีดล่าง และประกอบด้วยตัวอักษร ตัวเลข และขีดล่างเท่านั้น
"value" ใน "key=value" สำหรับแต่ละแฟล็ก --secret ควรอ้างอิง ARN ไปยังข้อมูลลับของ AWS Secrets Manager หรือพารามิเตอร์ที่เก็บพารามิเตอร์ AWS Systems Manager
fargate service env unset --key <key-name>
ยกเลิกการตั้งค่าตัวแปรสภาพแวดล้อมและข้อมูลลับ
ยกเลิกการตั้งค่าตัวแปรสภาพแวดล้อมหรือข้อมูลลับที่ระบุผ่านแฟล็ก --key ระบุ --key ด้วยชื่อคีย์หลายครั้งเพื่อยกเลิกการตั้งค่าตัวแปรหลายตัว
fargate service env list
แสดงตัวแปรสภาพแวดล้อม
ธง | สั้น | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
--ซีพียู | จำนวนหน่วย cpu ที่จะจัดสรรสำหรับแต่ละงาน | ||
--หน่วยความจำ | -ม | จำนวน MiB ที่จะจัดสรรสำหรับแต่ละงาน |
fargate service update [--cpu <cpu-units>] [--memory <MiB>]
อัปเดตการกำหนดค่าบริการ
การตั้งค่า CPU และหน่วยความจำระบุเป็นหน่วย CPU และเมบิไบต์ตามลำดับโดยใช้แฟล็ก --cpu และ --memory CPU ทุกๆ 1,024 ยูนิตจะเทียบเท่ากับ vCPU เดียว AWS Fargate รองรับการกำหนดค่า CPU และหน่วยความจำร่วมกันบางรายการเท่านั้น:
ซีพียู (หน่วยซีพียู) | หน่วยความจำ (MiB) |
---|---|
256 | 512, 1024 หรือ 2048 |
512 | 1024 ถึง 4096 โดยเพิ่มขึ้นทีละ 1GiB |
1,024 | 2048 ถึง 8192 โดยเพิ่มขึ้นทีละ 1GiB |
2048 | 4096 ถึง 16384 โดยเพิ่มขึ้นทีละ 1GiB |
4096 | 8192 ถึง 30720 โดยเพิ่มขึ้นทีละ 1GiB |
ต้องระบุ --cpu หรือ --memory อย่างน้อยหนึ่งรายการ
fargate service restart
เริ่มบริการใหม่
สร้างชุดงานใหม่สำหรับบริการและหยุดงานก่อนหน้านี้ สิ่งนี้มีประโยชน์หากบริการของคุณจำเป็นต้องโหลดข้อมูลที่แคชจากแหล่งภายนอกซ้ำ เป็นต้น
ธง | สั้น | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
--งาน | -ที | ครอบครัวคำจำกัดความของงาน |
งานคือการดำเนินการคอนเทนเนอร์ของคุณเพียงครั้งเดียว อินสแตนซ์ของงานของคุณจะถูกรันจนกว่าคุณจะหยุดงานด้วยตนเองผ่าน AWS API, AWS Management Console หรือจนกว่างานจะถูกขัดจังหวะไม่ว่าด้วยเหตุผลใดก็ตาม
fargate task register [--image <docker-image>]
[-e KEY=value -e KEY2=value] [--env-file dev.env]
[--secret KEY3=valueFrom] [--secret-file secrets.env]
ลงทะเบียนคำจำกัดความของงานใหม่สำหรับอิมเมจนักเทียบท่าที่ระบุ ตัวแปรสภาพแวดล้อม หรือข้อมูลลับตามการแก้ไขล่าสุดของตระกูลงาน และส่งคืนหมายเลขการแก้ไขใหม่
อิมเมจคอนเทนเนอร์ Docker ที่จะใช้ในคำจำกัดความงานใหม่สามารถระบุได้ผ่านแฟล็ก --image
ตัวแปรสภาพแวดล้อมสามารถระบุได้โดยใช้แฟล็ก --env
หนึ่งรายการหรือหลายรายการ หรือแฟล็ก --env-file
ข้อมูลลับสามารถระบุได้โดยใช้แฟล็ก --secret
หนึ่งรายการหรือหลายรายการ หรือแฟล็ก --secret-file
fargate task register [--file docker-compose.yml]
ลงทะเบียนคำจำกัดความของงานใหม่โดยใช้รูปภาพ ตัวแปรสภาพแวดล้อม และข้อมูลลับที่กำหนดไว้ในไฟล์เขียนของนักเทียบท่า โปรดทราบว่าตัวแปรสภาพแวดล้อมจะถูกแทนที่ด้วยสิ่งที่อยู่ในไฟล์เขียน
ข้อมูลลับสามารถกำหนดเป็นคู่คีย์-ค่าภายใต้ช่องนามสกุลไฟล์นักเทียบท่าเขียน x-fargate-secrets
หากต้องการใช้ช่องส่วนขยาย เวอร์ชันไฟล์เขียนต้องมีอย่างน้อย 2.4
สำหรับซีรีส์ 2.x หรืออย่างน้อย 3.7
สำหรับซีรีส์ 3.x
หากไฟล์เขียนนักเทียบท่ากำหนดคอนเทนเนอร์มากกว่าหนึ่งรายการ คุณสามารถใช้ป้ายกำกับ aws.ecs.fargate.deploy: 1
เพื่อระบุว่าคุณต้องการปรับใช้คอนเทนเนอร์ใด
fargate task describe
คำสั่งอธิบายจะอธิบายคำจำกัดความของงานในรูปแบบ Docker Compose อิมเมจนักเทียบท่า ตัวแปรสภาพแวดล้อม ข้อมูลลับ และพอร์ตเป้าหมายเป็นองค์ประกอบที่แมป
คำสั่งนี้มีประโยชน์สำหรับการดูการเปลี่ยนแปลงที่ทำโดย task register
, service deploy
หรือ service env set
Command นอกจากนี้ยังอาจเป็นประโยชน์สำหรับการรันข้อกำหนดงานภายในเครื่องเพื่อวัตถุประสงค์ในการตรวจแก้จุดบกพร่องหรือการแก้ไขปัญหา
fargate task describe -t my-app > docker-compose.yml
docker-compose up
คุณสามารถระบุกลุ่มข้อกำหนดของงานได้โดยใช้ไฟล์ fargate.yml
, FARGATE_TASK
envvar หรือใช้แฟล็ก -t
รวมถึงหมายเลขการแก้ไขเผื่อเลือก
fargate task describe -t my-app
fargate task describe -t my-app:42
ตัวอย่างผลลัพธ์:
version : " 3.7 "
services :
app :
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-app:1.0
ports :
- published : 8080
target : 8080
environment :
AWS_REGION : us-east-1
ENVIRONMENT : dev
FOO : bar
x-fargate-secrets :
KEY : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : " 1 "
fargate task logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--container-name] [--time] [--no-prefix]
แสดงบันทึกจากงาน
สมมติว่ากลุ่มบันทึก cloudwatch มีรูปแบบต่อไปนี้: fargate/task/<task>
โดยที่ task
ถูกระบุผ่าน --task
หรือ fargate.yml หรือตัวเลือกตัวแปรสภาพแวดล้อม
ส่งคืนส่วนเฉพาะของบันทึกงานหรือบันทึกส่วนท้ายแบบเรียลไทม์โดยใช้ตัวเลือก --follow บันทึกจะนำหน้าด้วยชื่อสตรีมบันทึกซึ่งอยู่ในรูปแบบ fargate/<container-name>/<task-id>.
--container-name
ช่วยให้คุณสามารถระบุคอนเทนเนอร์ภายในคำจำกัดความของงานเพื่อรับบันทึก (ค่าเริ่มต้นคือ app
)
ติดตามจะทำงานต่อไปและส่งคืนบันทึกจนกว่า Control-C จะขัดจังหวะ หากผ่าน --follow
--end
ไม่สามารถระบุได้
บันทึกสามารถส่งคืนสำหรับงานเฉพาะได้โดยส่ง ID งานผ่านแฟล็ก --task
ส่งผ่าน --task
ด้วยรหัสงานหลายครั้งเพื่อดึงบันทึกจากงานเฉพาะหลายงาน
สามารถขอหน้าต่างบันทึกเฉพาะได้โดยส่งตัวเลือก --start
และ --end
พร้อมนิพจน์เวลา นิพจน์เวลาอาจเป็นได้ทั้งระยะเวลาหรือการประทับเวลา:
คุณสามารถกรองบันทึกสำหรับคำเฉพาะได้โดยส่งนิพจน์ตัวกรองผ่านแฟล็ก --filter
ส่งคำเดียวเพื่อค้นหาคำนั้น ส่งหลายคำเพื่อค้นหาข้อความบันทึกที่รวมคำทั้งหมด
--time
รวมถึงการประทับเวลาบันทึกในเอาต์พุต
--no-prefix
แยกคำนำหน้าสตรีมบันทึกออกจากเอาต์พุต
ธง | สั้น | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
--กฎ | -ร | กฎเหตุการณ์ CloudWatch |
คำสั่ง events
จัดเตรียมคำสั่งย่อยสำหรับการทำงานกับ CloudWatch Events (งานที่กำหนดเวลาไว้ ฯลฯ)
fargate events target --revision <revision>
"ปรับใช้" (ทำให้การเรียกใช้กฎเหตุการณ์ถัดไปเรียกใช้เวอร์ชันใหม่) การแก้ไขข้อกำหนดงานเป็นกฎเหตุการณ์ CloudWatch โดยการอัปเดต EcsParameters.TaskDefinitionArn
ของเป้าหมายกฎ
ระบบ CI/CD ทั่วไปอาจทำหน้าที่ดังนี้:
REVISION=$(fargate task register -i 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:${VERSION}-${CIRCLE_BUILD_NUM} -e FOO=bar)
fargate events target -r ${REVISION}