Chalice — AWS için Python Serverless Microframework

Chalice hızlıca ve kolayca backend uygulamaları kodlamanıza imkan sağlayan, özellikle AWS Lambda ve AWS API Gateway’i ve daha başka AWS kaynaklarını kullanan bir serverless (servis olarak fonksiyonlar) microframework’dür.

Genel olarak sağladığı özellikler:

  • Uygulamanızı oluşturmak, yönetmek ve deploy etmek için kullanılan bir komut satırı aracı sağlar.
  • View’leri python kodunda bildirmek için kolay kullanımlı bir API sunar.
  • Otomatik IAM policy oluşturmanızı sağlar.

Chalice’i ‘pip’ kullanarak aşağıdaki şekilde kolayca yükleyebilirsiniz.

$ pip install chalice

Chalice : Öne çıkan özellikleri

  • API Backend Oluşturmak

Chalice’ın ana özelliği, java’daki annotation’lara benzer bir şekilde fonksiyonu tanımlayarak, bu fonksiyonu otomatik olarak AWS Lambda’ya deploy eder ve fonksiyonu AWS API Gateway’deki bir route’a bağlar.

Tek route’lu bir Chalice uygulaması örneği:

from chalice import Chalice

app = Chalice(app_name='helloworld')


@app.route('/')
def index():
return {'hello': 'world'}

Bu kodu komut satırından kolayca deploy edebilirsiniz:

$ chalice deploy
...
Initial creation of lambda function.
Creating role
Creating deployment package.
Initiating first time deployment...
Deploying to: dev
https://.execute-api.us-west-2.amazonaws.com/api/

Tamamlandıktan sonra size verdiği url’e istek atarak cevap görülebilir.

$ curl https://.execute-api.us-west-2.amazonaws.com/api/
{"hello": "world"}
  • Dependency Packaging

Chalice, kendi otomatik oluşturduğu requirements.txt dosyasında belirtilen proje gereksinimlerini indirmeye veya build etmeye ve Lambda’ya yüklenen kod paketine eklemeye çalışacaktır.

  • Pure Lambda Fonksiyonları

Bu fonksiyonlar API Gateway’e bağlanmadan tanımlanan Lambda fonksiyonlarıdır. Chalice’ın sadece deploy ve paketleme özelliklerini kullanmak isterseniz bu özellik işinize yarayabilir.

Dikkat edilmesi gereken bir nokta var. Pure lambda fonksiyonu tanımlayabilirmek için en az bir app.route dekoratörü tanımlamanız gerekmektedir.

app = chalice.Chalice(app_name='foo')

@app.lambda_function()
def custom_lambda_function(event, context):
# Anything you want here.
return {}

@app.lambda_function(name='MyFunction')
def other_lambda_function(event, context):
# Anything you want here.
return {}

@app.route('/')
def index():
return {'hello': 'world'}
  • Planlanmış Event’ler

Planlanmış (scheduled) event’ler, AWS Cloud Watch event’lerini kullanan handler fonksiyonları tanımlamanızı sağlar.

@app.schedule(Rate(5, unit=Rate.MINUTES))
def handler(event):
backup_logs()
  • Otomatik Policy Güncelleme

Chalice kodunuzu AWS çağrıları için tarar ve Lambda’nın çalışması için gerekli minimum policy setini tanımlayan IAM policy’sini otomatik olarak tanımlar. Bu özellik istenirse iptal edilebilir.

  • AWS IAM Yetkilendiricisi

IAM yetkilendiricisi API Gateway’e ulaşımda size bir kontrol mekanizması sağlar. Chalice’de IAM yetkilendiricisini bir route ile ilişkilendirmek için IAMAUthorizer sınıfını kullanmalısınız.

from chalice import IAMAuthorizer

authorizer = IAMAuthorizer()

@app.route('/iam-auth', methods=['GET'], authorizer=authorizer)
def authenticated():
return {"success": True}

Kaynaklar