APIGatewayのLambda統合でCORS(オリジン間リソース共有)を有効にする方法を解説していきます。
APIGatewayのLambda統合でCORSを有効にする
APIGatewayのLambda統合でCORSを有効にするにはAPIGateway側とLambda側で設定を入れる必要があります。
APIGateway側設定
APIGatewayからCORSを有効にしたいリソースを選択します。
「アクション」を選択し、「CORSの有効化」を選択します。
CORSの有効化設定画面の「Access-Control-Allow-Origin*」にCORSを許可したいオリジンを記入します。
下の例では「*」なので、すべてのオリジンを許可しています。
「sample.com」のように入力することで特定のオリジンを許可することも可能です。
設定を終えたら、APIをデプロイしましょう。
Lambda側設定
Lambda側では、レスポンスのヘッダーに「Access-Control-Allow-Origin」を設定する必要があります。
import json def lambda_handler(event, context): body = { "key1" : "val1", "key2" : "val2", "key3" : "val3" } # APIGatewayでハンドルできる形式に変換 res = { "isBase64Encoded" : 'false', "statusCode" : 200, # CORSを有効にする "headers" : {"Access-Control-Allow-Origin" : "sample.com"}, "body" : json.dumps(body) } return res
「*」を設定することで、全てのオリジンでCORSを有効化できます。
"headers" : {"Access-Control-Allow-Origin" : "*"},
これで許可したオリジンからAPIGateway経由でLambdaを呼び出すことが可能になります。