AWS - API Gateway Enum
API Gateway
Temel Bilgiler
AWS API Gateway, geliştiricilerin büyük ölçekte API'ler oluşturmasına, yayınlamasına ve denetlemesine olanak tanıyan Amazon Web Services (AWS) tarafından sunulan kapsamlı bir hizmettir. Bir uygulamanın giriş noktası olarak işlev görerek, geliştiricilere belirli verilere veya işlevselliklere dış kullanıcıların erişimini düzenlemelerine olanak tanır.
API Gateway, API'lerinize gelen isteklerin nasıl ele alınması gerektiğini tanımlamanıza olanak tanır ve belirli yöntemlere (örneğin, GET, POST, PUT, DELETE) ve kaynaklara özgü özel API uç noktaları oluşturabilir. Ayrıca, geliştiricilerin uygulamalarından API'lerinizi çağırmayı kolaylaştırmak için istemci SDK'ları (Yazılım Geliştirme Kiti) oluşturabilir.
API Gateway Türleri
HTTP API: Dahili özellikler (OIDC ve OAuth2 gibi) ve yerleşik CORS desteği gibi özelliklere sahip düşük gecikmeli ve maliyet etkin REST API'leri oluşturun. Aşağıdaki ile çalışır: Lambda, HTTP arka uçlar.
WebSocket API: Sohbet uygulamaları veya panolar gibi gerçek zamanlı kullanım durumları için kalıcı bağlantılar kullanarak bir WebSocket API'si oluşturun. Aşağıdaki ile çalışır: Lambda, HTTP, AWS Hizmetleri.
REST API: Talep ve yanıt üzerinde tam kontrol sağladığınız REST API'si geliştirin ve API yönetimi yeteneklerine sahip olun. Aşağıdaki ile çalışır: Lambda, HTTP, AWS Hizmetleri.
REST API Private: Yalnızca bir VPC içinden erişilebilen bir REST API oluşturun.
API Gateway Ana Bileşenleri
Kaynaklar: API Gateway'de kaynaklar, API'nızın yapısını oluşturan bileşenlerdir. API'nızın farklı yollarını veya uç noktalarını temsil eder ve API'nızın desteklediği çeşitli işlemlere karşılık gelir. Bir kaynak, her yolun (/, veya /kullanıcılar, veya /kullanıcı/{id}) içindeki her yöntemdir (örneğin, GET, POST, PUT, DELETE).
Aşamalar: API Gateway'deki aşamalar, geliştirme, aşama veya üretim gibi API'nızın farklı sürümlerini veya ortamlarını temsil eder. Aşamaları kullanarak API'nızın çoklu sürümlerini eş zamanlı olarak yönetebilir ve dağıtabilirsiniz, böylece yeni özellikleri veya hata düzeltmelerini test edebilir ve üretim ortamını etkilemeden deneyebilirsiniz. Aşamalar ayrıca, API'nızın mevcut aşamaya bağlı olarak davranışını yapılandırmak için kullanılabilecek anahtar-değer çiftleri olan aşama değişkenlerini destekler. Örneğin, aşama değişkenlerini kullanarak API isteklerini farklı Lambda işlevlerine veya diğer arka uç hizmetlerine yönlendirebilirsiniz.
Aşama, API Gateway uç noktasının URL'sinin başında belirtilir.
Yetkilendiriciler: API Gateway'deki yetkilendiriciler, isteğin devam etmesine izin vermeden önce çağrıyı yapanın kimliğini doğrulayarak API'nıza erişimi kontrol eden bileşenlerdir. AWS Lambda işlevlerini özel yetkilendiriciler olarak kullanabilirsiniz, bu da kendi kimlik doğrulama ve yetkilendirme mantığınızı uygulamanıza olanak tanır. Bir istek geldiğinde, API Gateway isteğin yetkilendirme belirtecini Lambda yetkilendiriciye ileterek, belirteci işler ve arayanın hangi işlemleri gerçekleştirmesine izin verildiğini belirleyen bir IAM politikası döndürür. API Gateway ayrıca, AWS Kimlik ve Erişim Yönetimi (IAM) ve Amazon Cognito gibi yerleşik yetkilendiricileri destekler.
Kaynak Politikası: API Gateway'deki bir kaynak politikası, API'nıza erişim izinlerini tanımlayan bir JSON belgesidir. Bir IAM politikası gibi ancak özel olarak API Gateway için uyarlanmıştır. Bir kaynak politikasını kullanarak API'nıza kimlerin erişebileceğini, hangi yöntemleri çağırabileceğini ve hangi IP adreslerinden veya VPC'lerden bağlanabileceğini kontrol edebilirsiniz. Kaynak politikaları, API'nıza ince ayrıntılı erişim kontrolü sağlamak için yetkilendiricilerle birlikte kullanılabilir.
Kaynak politikası değiştirildikten sonra etkili olması için API'nın yeniden dağıtılması gerekir.
Günlükleme
Varsayılan olarak, CloudWatch Günlükleri kapalı, Erişim Günlüğü kapalı ve X-Ray izleme de kapalıdır.
Numaralandırma
Her iki AWS API'sında (apigateway
ve apigatewayv2
) kaynakları numaralandırmak için ihtiyacınız olan tek izin ve verilebilecek tek okuma izni apigateway:GET
ile, bununla her şeyi numaralandırabilirsiniz.
AWS API Gateway v2 Enumerations
Supported Protocols
HTTP
WEBSOCKET
Integration Types
AWS
HTTP
MOCK
HTTP_PROXY
AWS_PROXY
Payload Encoding
JSON
VTL
TEXT
Route Key Types
METHOD
PATH
CONNECTIVITY_ID
MESSAGE_HEADER
MULTI_VALUE_HEADER
QUERY_STRING
SOURCE_IP
USER_AGENT
REQUESTED_ROUTE
AUTHORIZATION
AUTHORIZATION_SCOPES
AUTHORIZATION_CLAIMS -json
CUSTOM
Security Types
NONE
AWS_IAM
CUSTOM
Connection Types
INTERNET
VPC_LINK
Route Selection Expressions
$request.method
$request.path
$request.querystring
$request.header -json
$request.body
$context.authorizer.claims
$context.authorizer.scopes
$context.authorizer.principalId
$context.identity.sourceIp
$context.identity.userAgent
$context.routeKey
$context.stage
$context.requestId
$context.apiId
$context.domainName
$context.domainPrefix
$context.connectionId
$context.messageDirection
$context.error.message
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
$context.error.responseType
$context.error.statusCode
$context.error.messageString
$context.error.messageString
API Gateway uç noktalarına erişim için Farklı Yetkilendirmeler
Kaynak Politikası
API uç noktalarını kimin çağırabileceğini tanımlamak için kaynak politikalarını kullanmak mümkündür.
Aşağıdaki örnekte, belirtilen IP'nin GET üzerinden /resource_policy
uç noktasını arayamayacağını görebilirsiniz.
IAM Yetkilendirici
Bir yol içindeki (bir kaynak) yöntemlerin, onu çağırmak için IAM kimlik doğrulaması gerektirdiği şekilde ayarlamak mümkündür.
Bu ayarlandığında, yetkilendirme olmadan uç noktaya ulaşmaya çalıştığınızda {"message":"Missing Authentication Token"}
hatasını alırsınız.
Beklenen belirteci uygulama tarafından oluşturmanın kolay bir yolu, Postman içinde AWS Signature
türündeki Authorization
'ı kullanmaktır.
Kullanmak istediğiniz hesabın accessKey ve SecretKey'ini ayarlayın ve API uç noktasına karşı kimlik doğrulaması yapabilirsiniz.
Aşağıdaki gibi bir Yetkilendirme başlığı oluşturacaktır:
Python Kullanarak İstek İmzalama
Özel Lambda Yetkilendirme
Verilen bir belirteçe dayalı olarak bir IAM politikası döndürecek bir lambda kullanmak mümkündür, böylece kullanıcının API uç noktasını çağırma yetkisine sahip olup olmadığını belirtebilirsiniz. Yetkilendirmeyi kullanacak her kaynak yöntemini ayarlayabilirsiniz.
Last updated