Làm cách nào tôi có thể sử dụng lại các tài nguyên hiện có trong CloudFormation?


32

Tôi đã có nhóm S3 làm tài nguyên trong mẫu CloudFormation của mình. Với DeletionPolicythiết lập thành Retain. Điều này hoạt động như mong đợi, khi xóa ngăn xếp, nó thực sự giữ lại thùng. Tuy nhiên, khi tôi cố gắng tạo lại ngăn xếp, việc tạo lại thất bại trong khi cố gắng tạo lại cùng một nhóm, với thông báo lỗi phàn nàn rằng nó đã tồn tại.

Tôi cần thêm gì vào mẫu CloudFormation của mình để khiến nó không thử tạo lại tài nguyên đã tồn tại?

Đoạn có liên quan của mẫu của tôi như sau:

  "Resources": {
    "SomeS3Bucket" : {
      "Type" : "AWS::S3::Bucket",
      "DeletionPolicy" : "Retain",
      "Properties": {
          "BucketName": "SomeS3Bucket"
          }
      }

Không quan tâm, cái xô dùng để làm gì? Có lẽ có một cách khác xung quanh nó tùy thuộc vào những gì bạn đang cố gắng làm.
Drew Khoury

Câu trả lời:


15

Một cách tiếp cận là thêm một tham số đầu vào vào mẫu CloudFormation để chỉ ra rằng nên sử dụng một nhóm hiện có.

Sử dụng mệnh đề điều kiện trong mẫu để tạo thùng chỉ khi tham số cho biết là cần thiết.


4
+1 cho đến nay đây là cách duy nhất tôi đã thấy. Mặc dù không đánh dấu nó là câu trả lời, bởi vì tôi thực sự đang tìm cách tự động hóa điều đó.
vartec

1
Nên có một cách, nếu không: "CloudFormer" hoạt động như thế nào?
jgomo3

7

CloudFormation sử dụng các thẻ có tiền tố "aws:" để theo dõi những tài nguyên nào được liên kết với các mục trong ngăn xếp - đó là trạng thái "sống" mà nó sử dụng để so sánh với mẫu trước khi quyết định thêm / xóa / cập nhật.

Là người dùng, bạn không thể thêm, chỉnh sửa hoặc xóa các thẻ đó.

Vì vậy, nếu tài nguyên hiện tại của bạn không có các thẻ này hoặc không có giá trị chính xác cho các thẻ đó, thì chúng không được coi là một phần của ngăn xếp mới và tôi không thấy cách nào để thay đổi điều đó.


2

Tôi cũng đang cố gắng tự động hóa việc này, vì dường như không thể thực hiện được chỉ với mẫu Cloudform. Quá trình tôi đang nghĩ sẽ:

  1. tạo một cái xô tạm thời khác temp-$originalbucketname
  2. sao chép tất cả nội dung có xô sang xô để tiết kiệm thời gian
  3. xóa tất cả nội dung khỏi $originalbucketname
  4. xóa $ gốcbucketname ngay bây giờ khi nó trống
  5. tạo ngăn xếp Cloudform (sẽ tạo lại nhóm)
  6. sao chép lại nội dung
  7. tẩy temp-$originalbucketname

Đó là một quá trình rất liên quan, tùy thuộc vào kích thước thùng, nó có thể dễ dàng mất hàng giờ vì hầu hết các bước là O (n) với số lượng phím.

Bạn sẽ nghĩ Cloudform là lớp cơ bản của tự động hóa AWS, nhưng tôi nghĩ rằng nó chỉ là một con quái vật (khá hạn chế) kết hợp các API byzantine với nhau cho tất cả các dịch vụ của họ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.