AWS Lambda Python S3へファイルアップロードで別のS3にその暗号化ファイルをアップロード(2/3)
<AWS Lambda(1/3)より続き>
(8)右上の「テストイベントの設定」ボタンを押します。
(9)画面のようなテストイベントが作成されると思いますので、3ヶ所、修正して下さい。
「"s3":の"bucket":の"name":の『example-bucket』を、先程作成して頂きました『read用のバケット名』に」
「"bucket":の"arn":の『example-bucket』を、先程作成して頂きました『read用のバケット名』に」
「"object":の"key":の『』に、アップロード予定のファイル(何でも良いのでとりあえずpngファイル名前)を入力し」
それぞれ、変更・保存して下さい。
※尚、S3バケットにpngファイルをアップロードしましたら、大文字の拡張子「PNG」が自動でくっついて来るので、アップロードする画像ファイルは、拡張子無しで保存してから、S3バケットにアップロードしないと、あとでエラーになります。
※テスト前に、read用のバケットに、同名の画像をアップロードしておいて下さい。
※テストイベントの"key":に入力するファイル名は、大文字と小文字が区別されますので、「***.PNG」と入力しておいて下さい。
(10)右上のテストボタンを押して下さい。
(11)テストが成功か失敗か、結果が画面に表示されます。もし、失敗だった場合は、画面真ん中の下の方の「ここをクリックし」というリンクをクリックして、ログを読んでみて下さい。確認頂きたいのは、「/tmp/」ディレクトリに画像ファイルが入っているかどうか。画像ファイルが入っていれば、read用S3バケットのファイルが/tmp/フォルダに入ったことになるので、今度はwrite用のS3バケットに、画像ファイルが入ったかどうかで、どこに問題があるのか解ります。
【ググる時の注意】基本的には、エラーや不具合の内容をそのまんま、検索窓に入力しググれば、見つかることは多いですが、単語の順番を変えたり、言葉や検索の仕方、英語での検索等、本命の結果が出るまで、骨が折れることもございますが、「諦めないで『見つかるまで』ググることが重要」です。
【重要】まずは、write用のS3バケットに、テストイベントで、「確実に画像ファイルがアップロードされるまで」確認してから、次に進んで下さい
5. pyminizipというファイル暗号圧縮ライブラリのLambda関数へのデプロイ
(1)write用のS3バケットへの画像ファイルアップロードが確認出来ましたら、Lambda関数のコードを、こちらの画面のコードに置き換え、保存して下さい。
(2)Lambda関数をアップロードします。右上の「アクション」から「.zipファイルをアップロード」を選択して下さい。
(3)アップロードしたら、保存して下さい。
(4)アップロードしたzipファイルは、WindowsのDownloadsフォルダに格納されます。そこから、仮想環境にアップロードしたzipを移動します。
a.FileZillaを起動し、WindowsからEC2環境に接続します。詳細は「FileZillaを使ったSFTP接続」とググれば表示されます。
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を解凍します。