見出し画像

AWS Lambda Python S3へファイルアップロードで別のS3にその暗号化ファイルをアップロード(2/3)

<AWS Lambda(1/3)より続き>


(8)右上の「テストイベントの設定」ボタンを押します。

画像1

(9)画面のようなテストイベントが作成されると思いますので、3ヶ所、修正して下さい。

「"s3":の"bucket":の"name":の『example-bucket』を、先程作成して頂きました『read用のバケット名』に」

「"bucket":の"arn":の『example-bucket』を、先程作成して頂きました『read用のバケット名』に」

「"object":の"key":の『』に、アップロード予定のファイル(何でも良いのでとりあえずpngファイル名前)を入力し」

それぞれ、変更・保存して下さい。

※尚、S3バケットにpngファイルをアップロードしましたら、大文字の拡張子「PNG」が自動でくっついて来るので、アップロードする画像ファイルは、拡張子無しで保存してから、S3バケットにアップロードしないと、あとでエラーになります。

※テスト前に、read用のバケットに、同名の画像をアップロードしておいて下さい。

※テストイベントの"key":に入力するファイル名は、大文字と小文字が区別されますので、「***.PNG」と入力しておいて下さい。

画像2

(10)右上のテストボタンを押して下さい。

(11)テストが成功か失敗か、結果が画面に表示されます。もし、失敗だった場合は、画面真ん中の下の方の「ここをクリックし」というリンクをクリックして、ログを読んでみて下さい。確認頂きたいのは、「/tmp/」ディレクトリに画像ファイルが入っているかどうか。画像ファイルが入っていれば、read用S3バケットのファイルが/tmp/フォルダに入ったことになるので、今度はwrite用のS3バケットに、画像ファイルが入ったかどうかで、どこに問題があるのか解ります。

【ググる時の注意】基本的には、エラーや不具合の内容をそのまんま、検索窓に入力しググれば、見つかることは多いですが、単語の順番を変えたり、言葉や検索の仕方、英語での検索等、本命の結果が出るまで、骨が折れることもございますが、「諦めないで『見つかるまで』ググることが重要」です。

【重要】まずは、write用のS3バケットに、テストイベントで、「確実に画像ファイルがアップロードされるまで」確認してから、次に進んで下さい

5. pyminizipというファイル暗号圧縮ライブラリのLambda関数へのデプロイ

(1)write用のS3バケットへの画像ファイルアップロードが確認出来ましたら、Lambda関数のコードを、こちらの画面のコードに置き換え、保存して下さい。

画像3

(2)Lambda関数をアップロードします。右上の「アクション」から「.zipファイルをアップロード」を選択して下さい。

画像4

(3)アップロードしたら、保存して下さい。

画像5

(4)アップロードしたzipファイルは、WindowsのDownloadsフォルダに格納されます。そこから、仮想環境にアップロードしたzipを移動します。

a.FileZillaを起動し、WindowsからEC2環境に接続します。詳細は「FileZillaを使ったSFTP接続」とググれば表示されます。


画像6

b. 先程アップロードしました、WindowsのDownloadsフォルダに格納されました、lambda_function-***************.zipをEC2環境内の、***(作成済venv環境名)/env/lib/python3.7/site-packagesのフォルダの中にアップロードします。

c. FileZillaを閉じます。

(5)TeraTermを起動し、前回同様にEC2に接続します。

(6)仮想環境に入ります。

[ec2-user ~]$ source ~/***/env/bin/activate 

プロンプトが次のようになります。

(env)[ec2-user ~]$ 

lsコマンドやcdコマンド等使いながら、

***/env/lib/python3.7/site-packagesまでディレクトリ移動します。

(7)デプロイ作業を行います。

その前に、lambda_function-*************.zipを解凍します。

<AWS Lambda(3/3)へ続く>

いいなと思ったら応援しよう!