
AWS Lambda Python S3へファイルアップロードで別のS3にその暗号化ファイルをアップロード(3/3)
<AWS Lambda(2/3)より続き>
(env)[ec2-user ~]$ unzip lambda_function-************.zip
これで、lambda_function.pyを抽出出来ます。
(env)[ec2-user ~]$ zip lambda_function.zip lambda_function.py
(env)[ec2-user ~]$ zip lambda_function.zip pyminizip.cpython-37m-x86_64-linux-gnu.so
6.デプロイ済のlambda_function.zipをLambdaに上げる。
(1)デプロイした「lambda_function.zip」を、FileZillaを使い、site-packagesからWindowsのDownloadsフォルダにダウンロードします。

(2)Lambdaコンソールを開き、「アクション」「関数のエクスポート」を選択します。

(3)「デプロイパッケージのダウンロード」を選択します。

(4)一旦、read用、write用それぞれのS3バケットを空にして、read用S3バケットにファイルをアップロードしたタイミングで、write用S3バケットにそのファイルがアップロードされるかどうかテストして、アップロードされれば、成功です。
7.AWS料金節約の為、使用済みS3バケットとEC2インスタンスの削除
(1)AWSリソースの削除の順番は、作った時と逆、ということですので、先にS3バケットを削除します。まず、「バケットを空にする」を選択します。(バケット名入力要)

(2)「バケットを削除する」を選択します(バケット名入力要)
read用、write用共に削除です。

(3)EC2インスタンスの削除。「アクション」「インスタンスの状態」「終了」を選択します。

Appendix A
「IAMロール」とは一体、何か。ルート権限とは何か。例えば、ルート権限は、「社長の権限」だと仮定します。社長のパソコンを、社員が、自由に好き勝手に使ったりは出来ませんよね。それで、社長が、与えられたタスクを成す為の権限として、「IAMロールのパソコン」を与えてくれたと仮定します。それで、余程のことが無ければ、社長のパソコンではなく、「IAMロールのパソコンで」業務を遂行することになります。
そして、EC2やS3、Lambdaのロールとは何か。皆が皆のパソコンやらネットやらを自由に使うことになると、大変なセキュリティの問題になります。例えば、Lambdaから、S3にアクセスする為の権限を、Lambdaに与える。例えば、AというLambdaの関数は、S3バケットBからの「読み込み」しか出来ない。という風に、細かく、それぞれの権限を最低限に小さく分割し与えたり与えなかったりすることで、悪意のある人間からの、データやソフトウェア等の安全性を強化するものです。
そして、例えば私のように、Lambda開発に興味がある場合、Lambdaの権限として、下記のような、ロールをLambdaに与えております。

※今回のLambda関数につきまして、強力に安全性を重視する場合。
例えば今回の関数で、read用S3バケットには、「GetObject」、write用S3バケットには、「PutObject」等細かく最低限度の権限を与えることにより、堅牢性が強化されます。
※まずは、一通り、今回のLambda関数を動かす為に、テストとして「AmazonS3FullAccess」を今回のLambda関数に与えて、S3にアクセス出来るように設定します。

Appendix B
アクセスコントロールの設定で、読み書きの許可・不許可を指定します。
(1) S3バケット名の左のチェックボックスをクリックしたら、右半分に新しいボックスが出て来るので、「アクセス権限」をクリックします。

(2)「アクセスコントロールリスト」を選択します。

(3)「バケット所有者のアクセス権」で左上の丸チェックをクリックすると、右半分にボックスが表示されます。

(4)読み書き全てチェックを確認し、保存ボタンを選択します。

【各画面から、AWSコンソールに戻るには】
様々な操作をし、メインのAWSコンソール画面に戻るには、左上の「AWS」のマークをクリックします。

以上です。