5

Mükemmel bir kılavuz (Serverless Stack) takip ettim, bu da bir tepki ön ucuna sahip tipik bir CRUD sunucusuz altyapı oluşturur. AWS için Serverless Framework kullanıyor.Serversız Çerçeve: tam olarak "altyapı olarak altyapı" elde etmek için yollar?

Beğenmediğim şey, kurulumun önyüklenmesi için GUI'lerde (çoğunlukla Amazon'un konsol arabirimi) çok sayıda manuel tıklama vardır. Yani kurulum sürüm kontrollü değildir ve kolayca tekrarlanamaz.

  • AWS Cognito Kullanıcı Havuzu
  • AWS Cognite Kullanıcı Havuz Uygulaması
  • AWS: Aşağıdaki kaynaklar elle ayarlanması gerekir Bu örnekte bir CI/CD süreci vs. ile bunu genişletmek kolay olmaz Cognito Federe Kimlik Havuzu
  • AWS DynamoDB örneği
  • (x3)
  • AWS CloudFront dağılımını
  • AWS S3 kovalar (bu da frontend barındıran)
  • AWS Route53 bölge dosyası

koddan inşa ediliyor sadece kaynaklar Sunucusuz fonksiyonları (lambda'lar) kendileri, hem de API Gateway örnekleridir. Sunucusuz çerçevenin serverless.yml dosyasını kullanması budur. Ancak yukarıdaki kaynakların tümü, otomatik olarak oluşturulan değil . Bazen ARN'lerini kullanarak referenced to olmalıdır, ancak serverless.yml yapılandırması tarafından oluşturulmamaktadırlar. Üretimde böyle bir sistemi yürütmek (GUI'ler aracılığıyla hizmetlerin manuel olarak oluşturulmasına dayanır) riskli görünebilir.

Bunun için bir çözüm Terraform veya Cloudformation kullanmak olacağını düşünmekteyim. Ancak Serverless Framework'ün kendisi, diğer kaynaklar için olmasa da, şimdiden Lambdas kurulumu için Cloudformation kullanıyor. Peki bu açığı nasıl ortadan kaldırabiliriz? Başka bir deyişle, kodun içinde Serverless Stack'da açıklanan kurulumun tamamı nasıl yeniden kurulur?

CloudFormation kurulumu Serverless'a sahip olmak garip ve belki de mümkün değil, bu da lambda'ları kurmak için kendi Cloudformation şablonlarına sahip. Serverless Framework'ü sadece serverless deploy'da oluşturulması gereken işlevleri ve API Ağ Geçitlerini değil, aynı zamanda DynamoDB veya Cognito Kullanıcı Havuzu gibi diğer kaynakları da tanımlamak daha mantıklı olabilir. Bunu zaten yapan insanların örnekleri veya girişimleri var mı?

cevap

3

Bu belgelerin mükemmel bir pull request here olmasını sağlayacağını kabul ediyorum.

serverless'un kapağın altında CloudFormation kullanıyor olduğunu biliyorsunuz. Çerçeve, serverless.yml ürününüzün resources anahtarı ile altta yatan CloudFormation makinesini size ifşa ediyor.

Ben the intent of the framework sen regular old CloudFormation syntax kullanarak, serverless.yml dosyanın resources: bölümünde bu kaynakların geri kalanını (Cognito şeyler, S3, vb) koymak olacağını düşünüyorum.Eğer CloudFormation yeniyseniz

service: aws-nodejs # NOTE: update this with your service name 
provider: 
    name: aws 
    runtime: nodejs6.10 
functions: 
    hello: 
    handler: handler.deletecustomer 
    events: 
     - http: 
      path: /deletecustomer 
      method: post 
      cors: true 
resources: 
    Resources: 
    tablenotes: 
     Type: AWS::DynamoDB::Table 
     Properties: 
     AttributeDefinitions: 
      - AttributeName: noteId 
      AttributeType: S 
      - AttributeName: userId 
      AttributeType: S 
     KeySchema: 
      - AttributeName: userId 
      KeyType: HASH 
      - AttributeName: noteId 
      KeyType: RANGE 
     ProvisionedThroughput: 
      ReadCapacityUnits: '5' 
      WriteCapacityUnits: '5' 
    mysamplebucket: 
     Type: AWS::S3::Bucket 
     Properties: 
     WebsiteConfiguration: 
      IndexDocument: index.html 
      ErrorDocument: error.html 
     AccessControl: Private 
     VersioningConfiguration: 
      Status: Suspended 

, ben de CloudFormer bir göz alarak tavsiye ederim:

Örneğin, bu dosya Sunucusuz fonksiyonuna ek olarak, bir DynamoDB masa ve S3 kova yaratacak .

0

Mike Patrick'ın seçenekleri, sunucusuz çerçeve ve benzeri benzeri sunucusuz odaklama araçlarıyla ilgili bilgilerimi ekliyorum.

Bahsettiğiniz gibi, sunucusuz projeler için çok fazla kaynak var. Onları birleştirmek basit bir iş değildir. Bu yüzden seçim doğru bir araçtır.

Cloudformation ve Terraform için Serverless framework karşılaştırın, Sunucusuz çerçevesi Sunucusuz uzmanı olduğunu Cloudformation ve Terraform GP

Cloudformation ve Terraform tamamen en kaynaklarını kaplı Infrastructure as Code vardır vardır.

Sunucusuz çerçeve, yalnızca sunucuyla ilgili olmayan kaynaklar için yalnızca Cloudformation şablonu oluşturmak için bir orta tabakadır.

Tüm Cloudformation şablonunu doğrudan yazabilirsiniz, ancak şablon dosyası büyük olacak, JSON/Yaml şablonu ile bakımı zor. serverless.yml'da birkaç düzine satırla, sunucusuz çerçeve binlerce veya birkaç bin bulut bilgi şablonu üretebilir. Bulutlaştırma kodlarıyla başa çıkmak için çok zaman harcıyor.

Tüm AWS kaynakları ile sunucusuz çerçeve anlaşmasına izin vermek mantıklı değildir, diğer araçlar zaten çok iyi.

Sunucusuz çerçeve geliştirilmeye devam ediyor, popülaritesi nedeniyle, birçok geliştirici, günlük olarak özellik eklemeye dahil. Belki bir gün ihtiyacınız olanı alabilirsiniz, ancak şimdi Cloudform veya Terraform veya diğer araçlarla sunucu olmayan çerçeveyi bir arada karıştırmalısınız.