Python API Gateway からCSVダウンロードする

Python Lambda で作ったカンマ区切り文字列を API Gateway 経由で CSVダウンロードする

API Gateway から Python ( Lambda ) で作成した カンマ文字列を CSV形式でダウンロードできるようにする方法です

Lambda 側で headersを指定して返せば どんなフォーマットでも返すことは可能です

CSVファイルを返す場合 ヘッダーは Content-TypeContent-disposition を使います

Python ( Lambda )コード例 ↓

def lambda_handler(event, context):
    body_str = """column1,column2,column3
"値1","値2","値3"
"""
    return {
        'statusCode': 200,
        "isBase64Encoded": True,
        "headers":{
            "Content-Type": "application/vnd.ms-excel",
            "Content-disposition": "attachment; filename=hoge.csv" # CSVファイル名を指定
        },
        "body": f"\ufeff{body_str}" # BOMを設定
    }

body_strという変数に、 カンマ区切り文字列を代入し

その値をCSVファイルとして ダウンロードできるように返しています

文字列の先頭に \ufeff を入れるのは、 BOMです

API Gateway のURLにアクセスすると、下のようにCSVファイル形式でダウンロードできました

body_str に代入したカンマ区切りの文字列

PowerShell S3 アップロード | ダウンロード | 削除

Write-S3Object Remove-S3Object

AWS.Tools (PowerShell) を使った S3 アップロード・ダウンロード・削除方法。

アップロード Write-S3Object

ローカルに保存した Windowsのスクリーンショットを S3にアップロードする例

Write-S3Object -BucketName Bucket名 -File '.\スクリーンショット 2022-07-18 085309.png' -Key 'screen1.png'
Write-S3Object 例
Write-S3Object 例

アップロードは、 Get-S3Objectコマンドで確認できます。

ダウンロード Copy-S3Object

先程、アップロードした スクショ(screen1.png)をダウンロードする

Copy-S3Object -BucketName Bucket名 -Key 'screen1.png' -LocalFile 'C:\Users\xxx\screen1.png'
Copy-S3Object 例
Copy-S3Object 例

削除 Remove-S3Object

S3 に存在する ファイルを削除するには、 Remove-S3Objectを使います。

Remove-S3Object -BucketName Bucket名 -Key 'screen1.png'
Remove-S3Object 例
Remove-S3Object 例
Are you sure you want to perform this action?
Performing the operation "Remove-S3Object (DeleteObjects)" on target "".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

このアクションを実行しても良いか?聞いてきます。

オプション -WhatIfを つけて 実行すると、 上記の問いは聞かれません。

PowerShell AWS Toolインストールと S3接続

PowerShell S3Bucket取得

PowerShellAWS Toolsモジュールをインストールして S3に接続する方法です。

このPowerShellモジュールを使うと AWS CLIをインストールする必要がありません。

PowerShell 上で、 AWS.Toolsをインストールする

下↓のコマンドを使ってAWS.Toolsをインストールします。

Install-Module -Name AWS.Tools.Installer

実行すると下記↓のように「信頼できないリポジトリ」とでます。

You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

「Y」を入力します。

再インストールしたい場合は、 Install-Moduleに -Forceをつけます。

-Forceオプションは、インストールされたモジュールを一旦削除して再度インストールしてくれます。

NetCore, Tools.S3をインストール

Install-Module -name AWSPowerShell.NetCore
Install-AWSToolsModule AWS.Tools.S3 -CleanUp

Install-AWSToolsModuleを実行したら下↓が表示されます。

Are you sure you want to perform this action?
Performing the operation "Install-AWSToolsModule" on target "AWS Tools version 4.1.125.0".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): 

「Y」を入力後、 インストール完了です。

Installing module AWS.Tools.S3 version 4.1.125.0が入りました。

Credential (AccessKey, SecretKey)の設定

Set-AWSCredential -AccessKey xxxxxxxxx -SecretKey xxxxxxxx -StoreAs default

設定後、 Credentialを確認する場合下記コマンドを使う。

Get-AWSCredential -ListProfileDetail
Credentialを確認する
Credentialを確認

デフォルトのリージョンの設定

下記コマンドで、デフォルトのリージョンを設定します。

Initialize-AWSDefaults -Region ap-northeast-1 -StoredCredentials xxxx

PowerShell S3コマンド

下記コマンドで、Bucket名一覧が取得できます。

Get-S3Bucket -StoredCredentials default

Credentialをdefault設定しているので、 [-StoredCredentials default] ナシても大丈夫です。

下記↓のコマンドで、S3オブジェクトを確認できます。

 Get-S3Object -BucketName Bucket名