คำถามติดแท็ก amazon-cloudformation

Amazon Web Services CloudFormation เป็นระบบเทมเพลตที่ใช้ JSON หรือ YAML ที่สามารถใช้เพื่อสร้างและจัดการชุดทรัพยากร AWS ที่เกี่ยวข้องจัดเตรียมและอัปเดตอย่างเป็นระเบียบและคาดการณ์ได้ คุณสามารถคิดว่ามันเป็น 'โครงสร้างพื้นฐานเป็นรหัส'

3
ฉันจะใช้ทรัพยากรที่มีอยู่ใน CloudFormation อีกครั้งได้อย่างไร
ฉันมี S3 bucket เป็นทรัพยากรในเทมเพลต CloudFormation ของฉัน ด้วยการกำหนดให้DeletionPolicy Retainวิธีนี้ทำงานได้ตามที่คาดไว้เมื่อลบสแต็ก อย่างไรก็ตามเมื่อฉันพยายามที่จะสร้างสแต็คอีกครั้งการสร้างล้มเหลวในขณะที่พยายามสร้างที่เก็บข้อมูลเดียวกันอีกครั้งโดยมีข้อความแสดงข้อผิดพลาดบ่นว่ามีอยู่แล้ว ฉันต้องเพิ่มอะไรในเทมเพลต CloudFormation ของฉันเพื่อไม่ให้ลองสร้างทรัพยากรที่มีอยู่แล้ว? เทมเพลตของฉันที่เกี่ยวข้องมีดังนี้: "Resources": { "SomeS3Bucket" : { "Type" : "AWS::S3::Bucket", "DeletionPolicy" : "Retain", "Properties": { "BucketName": "SomeS3Bucket" } }

1
ใช้ CloudFormation กับที่ฝากข้อมูล S3 ที่มีอยู่
ใช้ CloudFormation ฉันต้องการตั้งค่าคุณสมบัติบางอย่างในAWS :: S3 :: Bucketบนฝากข้อมูลที่มีอยู่ กล่าวอีกนัยหนึ่งฉันไม่ต้องการสร้างที่เก็บข้อมูลฉันเพียงต้องการบังคับใช้การตั้งค่าบางอย่าง นี่เป็นตัวอย่างของ JSON ของฉัน "websitePreviewBucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead", "VersioningConfiguration": { "Status": "Suspended" }, "BucketName": "preview.website.com", "WebsiteConfiguration": { "IndexDocument": "index.html", "ErrorDocument": "error.html" } } }, ไม่น่าแปลกใจที่สิ่งนี้ล้มเหลวในคอนโซลของ cloudformation: The following resource(s) failed to create: [websitePreviewBucket]. preview.website.com already exists ฉันสร้าง bucket preview.website.com …


5
AWS CloudFormation - ตัวแปรที่กำหนดเองในแม่แบบ
มีวิธีใดบ้างในการกำหนดทางลัดสำหรับค่าที่ใช้บ่อยซึ่งได้มาจากพารามิเตอร์เทมเพลต CloudFormation ยกตัวอย่างเช่น - ฉันมีสคริปต์ที่สร้างสแต็ค Multi-AZ โครงการที่มีชื่อ ELB projectและสองกรณีที่อยู่เบื้องหลัง ELB เรียกว่าและproject-1 project-2ฉันส่งELBHostNameพารามิเตอร์ไปที่เทมเพลตและใช้ในภายหลังเพื่อสร้าง: "Fn::Join": [ ".", [ { "Fn::Join": [ "", [ { "Ref": "ELBHostName" }, "-1" ] ] }, { "Ref": "EnvironmentVersioned" }, { "Ref": "HostedZone" } ] ] โครงสร้างนี้หรือคล้ายกันซ้ำหลายครั้งตลอดทั้งเทมเพลต - เพื่อสร้างชื่อโฮสต์ EC2, บันทึก Route53 เป็นต้น แทนที่จะทำซ้ำไปเรื่อย ๆ ฉันอยากจะกำหนดเอาท์พุทของสิ่งนั้นFn::Joinให้กับตัวแปรของการเรียงลำดับบางอย่างและอ้างถึงสิ่งนั้นเช่นเดียวกับที่ฉันทำได้ด้วย"Ref":คำสั่ง นึกคิดบางอย่างเช่น: …

3
เป็นไปได้ไหมที่จะบังคับให้สร้าง EC2 :: Instance หรือ RDS :: DBInstance ใหม่อีกครั้งในรูปแบบคลาวด์ amazon?
เป็นไปได้ไหมที่จะบังคับให้สร้างอินสแตนซ์ EC2 หรือ RDS ขึ้นอีกครั้งโดยใช้กลุ่มของโครงสร้างคลาวด์ สแต็คของฉันติดอยู่ในจุดที่ทำลายและการสร้างทรัพยากรจะแก้ไขได้แทนที่จะต้องลบสแต็กทั้งหมดเพื่อทำงานต่อไป แก้ไข: ปัญหานี้ตีฉันสองครั้ง ก่อนอื่นฉันสร้าง AWS :: RDS :: อินสแตนซ์ด้วยค่าเริ่มต้นแล้วลองปรับลดรุ่นเป็น "EngineVersion": "5.5" การเปลี่ยนแปลงสิ่งนี้จะเกิดขึ้นกับการขัดจังหวะบางส่วน แต่อินสแตนซ์ mysql ไม่สามารถลดระดับจาก 5.6 เป็น 5.5 ได้ดังนั้นสแต็กจึงถูกปล่อยให้อยู่ในสถานะ UPDATE_FAILED และฉันไม่สามารถสร้าง RDS ใหม่ได้โดยไม่ต้องมีเคล็ดลับที่น่ารังเกียจ อีกเหตุการณ์หนึ่งคือฉันมี "AWS :: EC2 :: Instance" หลายรายการซึ่งดาวน์โหลดและเรียกใช้สคริปต์จาก "UserData" โดยชัดแจ้งหาก Y เปลี่ยนสคริปต์ที่ดาวน์โหลดมาฉันจะต้องดำเนินการต่อและไม่ต้องทำเช่นนั้นอีก อีกครั้งฉันใช้เคล็ดลับที่น่ารังเกียจเดียวกันเพื่อให้เครื่องสร้างขึ้นมาใหม่ เคล็ดลับที่น่ารังเกียจ: แทนที่จะใช้กลุ่มการวนอัตโนมัติของเครื่องหนึ่งฉันแก้ปัญหาทั้งสองอย่างที่เปลี่ยนเขตความพร้อมใช้งานในคุณสมบัติ ... แต่ทำให้ฉันมีรสนิยมแย่

2
AWS CloudFormation: กลุ่มความปลอดภัยเริ่มต้นของ VPC
ฉันมี cfn stack ที่ (เหนือสิ่งอื่นใด) สร้าง VPC กลุ่มความปลอดภัยหลายกลุ่มและอินสแตนซ์ EC2 จำนวนหนึ่ง เป็นเรื่องเล็กน้อยที่จะกำหนดกลุ่มความปลอดภัยที่สร้างขึ้นภายในสแต็กให้กับอินสแตนซ์ที่สร้างโดยสแต็กด้วย อย่างไรก็ตามฉันสนใจ VPC SG ที่เป็นค่าเริ่มต้น เมื่อ VPC ถูกสร้างขึ้น (ไม่ว่าจะด้วยตนเองแม้ว่า GUI โดยการคลาวด์หรือวิธีการอื่น ๆ ) AWS จะสร้างกลุ่มความปลอดภัยเริ่มต้นด้วยกฎ "อนุญาตทั้งหมด" สำหรับอินสแตนซ์ใด ๆ ในกลุ่มนั้น สิ่งที่ฉันพยายามทำคือกำหนดกลุ่มความปลอดภัยเริ่มต้นนี้พร้อมกับ SGs อื่น ๆ ให้กับอินสแตนซ์ที่สร้างโดยสแต็ก นี่เป็นการพิสูจน์ว่ายากกว่าที่ฉันคาดไว้มาก นี่คือตัวอย่างบางส่วนที่แสดงสิ่งที่ฉันเกิดขึ้น: "AllowSSHSecGroup":{ "Type":"AWS::EC2::SecurityGroup", "Properties":{ "GroupDescription":"Allow SSH from anywhere", "VpcId":{ "Ref":"DevVPC" }, "SecurityGroupIngress":[ { "IpProtocol":"tcp", "FromPort":"22", …

4
ใน cloudformation เป็นไปได้หรือไม่ที่จะสร้างสตริงที่ใช้ซ้ำได้?
ฉันมีสตริงที่ถูกสร้างขึ้นจากตัวแปรจำนวนหนึ่งที่ฉันใช้สำหรับสิ่งต่าง ๆ เช่นแท็กและชื่อโฮสต์ มีวิธีสร้างสตริงที่ใช้ซ้ำได้ซึ่งฉันสามารถอ้างอิงถึงแม้ว่าเทมเพลตได้หรือไม่ ความคิดใด ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชมมาก แก้ไข: ตัวอย่างจะผ่านใน 2 พารามิเตอร์เช่น ProjectName และสภาพแวดล้อมที่เข้าร่วมพวกเขา "Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ] และใช้ผลลัพธ์ในหลาย ๆ ที่

4
ทำไมการก่อตัวของเมฆ aws ไม่ติดตั้งแพคเกจที่ฉันระบุ?
ฉันใหม่มากสำหรับบริการ AWS ฉันพยายามใช้การก่อตัวของเมฆ AWS และฉันสร้างเทมเพลต แม่แบบนั้นไม่มีข้อผิดพลาดและฉันสามารถสร้างเครื่องโดยใช้สิ่งนั้นได้ แต่ฉันได้เพิ่มการตั้งค่าบางอย่างในเทมเพลตเพื่อให้ติดตั้ง tomcat, git และสิ่งอื่น ๆ ในระหว่างการเริ่มต้น แต่นั่นไม่ได้เกิดขึ้นกับฉัน นี่เป็นส่วนหนึ่งของรหัสที่ฉันใช้ในการติดตั้ง tomcat: "Resources": { "Tomcat": { "Type": "AWS::EC2::Instance", "Metadata": { "AWS::CloudFormation::Init": { "config": { "packages": { "apt": { "tomcat6": [], "git": [], } } } } }, แต่เมื่อฉันเข้าสู่เครื่องค่าtomcatมิได้gitมีการติดตั้ง! ขอบคุณล่วงหน้า.

4
AWS CloudFormation ที่ส่งคืน“ คำขอไม่ถูกต้อง” เมื่อพยายามสร้าง AWS :: Route53 :: RecordSet
ฉันกำลังขาดทุนอยู่ 99% ของเวลาที่ CloudFormation ค่อนข้างดีที่ให้คุณแก้ปัญหาข้อความบางอย่างที่คุณสามารถทำงานได้ แต่"คำขอไม่ถูกต้อง"ทำให้ฉันต้องนิ่งงันโดยเฉพาะเมื่อทรัพยากรเริ่มต้นค่อนข้างง่าย นี่คือทรัพยากรที่กล่าวถึงปัญหาของฉัน (เทมเพลตที่สร้างโดย Ansible ดังนั้นเครื่องหมาย {{... }}) "DatabaseDNSRecord": { "Type": "AWS::Route53::RecordSet", "Properties": { "HostedZoneId": "HOSTED_ZONE_ID", "Name": "db.{{ item.env_name|lower }}v2.<DOMAIN>.com.", "ResourceRecords": [ { "Fn::GetAtt": [ "Database", "Endpoint.Address" ] } ], "Type": "CNAME" }, "DependsOn": "Database" } จากสิ่งที่ฉันสามารถบอกได้จากเอกสารทุกอย่างที่จำเป็นต้องมีอยู่ถูกต้องและในรูปแบบที่ถูกต้อง สิ่งเดียวที่ฉันคิดได้ก็คือฉันเพิ่มทรัพยากรนี้ลงในสแต็ค CloudFormation ที่มีอยู่ที่ฉันสร้างไว้ก่อนหน้านี้ซึ่งสร้างDatabaseทรัพยากรไว้แล้วซึ่งสำหรับการบันทึกนั้นคือAWS::RDS::DBInstance(ยินดีที่จะโพสต์เทมเพลตทรัพยากรสำหรับสิ่งนั้นด้วย . ความคิดใดที่ทำให้ฉันได้รับ "คำขอไม่ถูกต้อง"? ขอบคุณ แก้ไข:ฉันลองสิ่งนี้โดยมีและไม่มีTTLข้อผิดพลาดเดียวกัน

1
ฉันจะตั้งค่า Route 53 ให้ชี้ไปที่ Api Gateway ได้อย่างไร
ฉันกำลังเขียนไฟล์กำหนดค่า Cloudformation เพื่อสร้างเว็บไซต์ทั้งหมดในครั้งเดียว ซึ่งรวมถึงการสร้างฟังก์ชั่นแลมบ์ดาการสร้างเกตเวย์ API การตั้งค่า S3 Bucket การสร้างโซนเส้นทาง 53 และบันทึก จนถึงตอนนี้: การสร้างฟังก์ชั่นแลมบ์ดาและบทบาท (การทำงาน) การสร้างเกตเวย์ API เป็นการปรับใช้และบทบาท (ใช้ได้) สร้าง S3 bucket และเป็นนโยบาย (ใช้ได้) การสร้างเรคคอร์ด Route 53 และ DNS สำหรับไซต์ (ใช้งานได้) สร้างโดเมนสำหรับ API เกตเวย์ (ไม่รู้เลยว่าฉันกำลังทำอะไรอยู่) ดังนั้นdomain.comให้บริการไฟล์ในที่ฝากข้อมูล S3 โดยไม่มีปัญหา การใช้ AWS URI สำหรับ API เกตเวย์ทำงานได้https://trydsoonjc.execute-api.us-west-2.amazonaws.com/app/path/hereโดยไม่มีปัญหา สิ่งที่ฉันต้องการตั้งค่าคือการapi.domain.comชี้ไปที่เกตเวย์ API เพื่อเข้าถึง API ของเซิร์ฟเวอร์ ฉันจะเชื่อมต่อ Route …

3
AWS Cloudformation และการเปลี่ยนแปลงด้วยตนเอง
ฉันไม่สามารถหาเอกสารเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณยุ่งกับวัตถุของ Cloudformation ด้วยตนเอง ฉันเห็นมันติดแท็กวัตถุ แต่มันจะกู้คืนถ้าพูดว่ามีคนลบกฎการกำหนดเส้นทางหรือไม่ แก้ไข : เพิ่งได้รับคำตอบที่ขัดแย้งกันสองคำ ฉันต้องการขอเอกสาร / หลักฐานเนื่องจากฉันต้องตัดสินใจว่าฉันให้เพื่อนร่วมงานเกี่ยวกับการปรับเปลี่ยนทรัพยากรเหล่านี้อย่างไร

2
คุณสมบัติตามเงื่อนไขใน AWS CloudFormation
เรามีเทมเพลต AWS CloudFormation สำหรับสร้างอินสแตนซ์ EC2 บางตัว อย่างไรก็ตามผู้ใช้บางรายจำเป็นต้องระบุอย่างเฉพาะเจาะจงPrivateIpAddressและฉันพยายามหาวิธีรวมสิ่งนั้นเข้ากับเทมเพลต สำหรับตอนนี้ฉันมีพารามิเตอร์แม่แบบและการสร้างเงื่อนไขPrivateIP RequestedPrivateIPจนถึงตอนนี้ดีมาก อย่างไรก็ตามฉันไม่สามารถหาวิธีรวมเข้ากับAWS::EC2::Instanceข้อมูลจำเพาะของทรัพยากรได้ ฉันลองสิ่งนี้: "PrivateIpAddress": { "Fn::If": [ "RequestedPrivateIP", { "Ref": "PrivateIP" }, "" <-- This doesn't work ] }, แต่นั่นล้มเหลวเมื่อRequestedPrivateIPเป็นเท็จด้วย CREATE_FAILED AWS::EC2::Instance NodeInstance Invalid addresses: [] ความคิดใด ๆ วิธีกำหนดทางเลือกคง IP ส่วนตัวคงที่และหากไม่ได้ระบุไว้ให้ AWS ตั้งค่าแบบไดนามิก?

1
AWS CloudFormation สามารถสร้าง KeyPair เพื่อใช้ในภายหลังเมื่อเริ่มต้นอินสแตนซ์ได้หรือไม่
ฉันต้องการเปิดสแต็คของฉันโดยใช้รหัสคู่ที่สร้างขึ้นเป็นส่วนหนึ่งของ CloudFormation เป็นไปได้ไหม .... "Resources": { "ReverseProxyKeyPair": { "Type": "AWS::EC2::KeyPair", "Properties": { "KeyName": "reverse_proxy" } }, .... เดาได้ แต่ไม่ได้ผล ฉันไม่ได้ติดตาม schema สำหรับ CloudFormation เพื่อบอกว่าเป็นไปไม่ได้ ตัวอย่างส่วนใหญ่ถือว่า KeyPair ได้ถูกสร้างขึ้นแล้ว - ฉันถือว่าเนื่องจากมีโอกาสเดียวที่จะดาวน์โหลดในเวลาสร้าง แต่ฉันต้องการสร้างแบบไดนามิกจากนั้นใช้มันเป็นเอาท์พุตแล้วทิ้งมันลงใน S3 (พูด) หรือนี่เป็นความคิดที่งี่เง่าหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.