AWSパートナー 電話番号 電話番号 お問い合わせ

受付時間 平日10:00~18:00

TOP

資料ダウンロードはこちら >>

ロゴ

AWSやシステム・アプリ開発の最新情報|クロスパワーブログ

Lambda + API Gateway入門。CSVやCORS

キーボードとノート

前回はほぼLambdaだけでREST APIを作成してみました。

その応用でCSVファイルのダウンロードとクロスサイトスクリプトの対応例を紹介します。

 

前回のLambdaを使いまわしますので、先にそちらを参照してください。

 

Lambda + API Gateway入門。Rest API作成

 

CSVファイルをダウンロード

 

exports.handler = async (event) => {
    return {
        "statusCode": 200,
        "headers": {
            "Content-Disposition": 'attachment;filename="aaa.csv"',
            "Content-Type": 'text/csv'
        },
        "body": 'Hello,from,Lambda!'
    };
};

 

“headers”でファイル名やファイルの形式を指定します。

“filename”の部分を変更すればファイル名を動的に変更することができます。

API Gatewayでヘッダーを作成するとファイル名を動的に変更できないため、Lambdaで指定するやり方ならではだと言えます。

 

前回作成したURLを開けばダウンロードが始まります。

 

クロスサイトスクリプト(XSS/CORS)対応

exports.handler = async (event) => {
    return {
        "statusCode": 200,
        "headers": {
            "Content-Type": 'application/json',
            "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token",
            "Access-Control-Allow-Methods": "POST",
            "Access-Control-Allow-Origin": "*"
        },
        "body": JSON.stringify({"key1":"val1", "key2":"val2"})
    };
};

 

ヘッダーにCORS用の値を設定します。

AJAXでJSONを扱う場合なんかに大変有効ですね。

 

実際に動いている所を確認するには、下記サービスが便利なので利用させていただきました。

POSTメソッドのテスト

https://so-zou.jp/web-app/network/post/

 

 

まとめ

 

非常によく使う2機能の作り方を紹介しました。

画像や動画、ZIPファイル等をレスポンスにする場合は、API Gatewayの操作も必要になってきてしまいます。

とはいえ、ほぼほぼLambda側だけでできるので、別の機会に紹介できればと思います。