BBH
-Biz Branding Hub-
投稿日 : 
2020/05/05
更新日 : 
2020/05/05

【AWS】APIGatewayのLambda統合でCORSを有効にする

APIGatewayのLambda統合でCORS(オリジン間リソース共有)を有効にする方法を解説していきます。

APIGatewayのLambda統合でCORSを有効にする

APIGatewayのLambda統合でCORSを有効にするにはAPIGateway側とLambda側で設定を入れる必要があります。

APIGateway側設定

APIGatewayからCORSを有効にしたいリソースを選択します。
「アクション」を選択し、「CORSの有効化」を選択します。
APIGateway Lambda統合

CORSの有効化設定画面の「Access-Control-Allow-Origin*」にCORSを許可したいオリジンを記入します。
下の例では「*」なので、すべてのオリジンを許可しています。
「sample.com」のように入力することで特定のオリジンを許可することも可能です。
APIGateway Lambda統合

設定を終えたら、APIをデプロイしましょう。
APIGateway Lambda統合

Lambda側設定

Lambda側では、レスポンスのヘッダーに「Access-Control-Allow-Origin」を設定する必要があります。

APIGatewayのLambda統合でCORSを有効にする

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を有効化できます。

全てのオリジンでCORSを有効化

"headers" : {"Access-Control-Allow-Origin" : "*"},

これで許可したオリジンからAPIGateway経由でLambdaを呼び出すことが可能になります。

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend